From 6bc2cdb56451a824d225beeaffe05725216cb4a8 Mon Sep 17 00:00:00 2001 From: gineshidalgo99 Date: Mon, 24 Apr 2017 10:12:24 -0400 Subject: [PATCH] OpenPose - 1st commit --- .gitignore | 107 + 3rdparty/Versions.txt | 4 + 3rdparty/caffe/CMakeLists.txt | 122 + 3rdparty/caffe/CONTRIBUTING.md | 30 + 3rdparty/caffe/CONTRIBUTORS.md | 19 + 3rdparty/caffe/INSTALL.md | 7 + 3rdparty/caffe/LICENSE | 44 + 3rdparty/caffe/Makefile | 699 + .../caffe/Makefile.config.Ubuntu14.example | 128 + .../Makefile.config.Ubuntu14_cuda_7.example | 125 + .../caffe/Makefile.config.Ubuntu16.example | 128 + .../Makefile.config.Ubuntu16_cuda_7.example | 125 + 3rdparty/caffe/README.md | 37 + 3rdparty/caffe/caffe.cloc | 53 + 3rdparty/caffe/cmake/ConfigGen.cmake | 56 + 3rdparty/caffe/cmake/Cuda.cmake | 292 + 3rdparty/caffe/cmake/Dependencies.cmake | 203 + 3rdparty/caffe/cmake/External/gflags.cmake | 56 + 3rdparty/caffe/cmake/External/glog.cmake | 57 + 3rdparty/caffe/cmake/Misc.cmake | 52 + 3rdparty/caffe/cmake/Modules/FindAtlas.cmake | 52 + 3rdparty/caffe/cmake/Modules/FindGFlags.cmake | 50 + 3rdparty/caffe/cmake/Modules/FindGlog.cmake | 48 + 3rdparty/caffe/cmake/Modules/FindLAPACK.cmake | 190 + 3rdparty/caffe/cmake/Modules/FindLMDB.cmake | 28 + .../caffe/cmake/Modules/FindLevelDB.cmake | 44 + 3rdparty/caffe/cmake/Modules/FindMKL.cmake | 110 + .../caffe/cmake/Modules/FindMatlabMex.cmake | 48 + 3rdparty/caffe/cmake/Modules/FindNCCL.cmake | 26 + 3rdparty/caffe/cmake/Modules/FindNumPy.cmake | 58 + .../caffe/cmake/Modules/FindOpenBLAS.cmake | 64 + 3rdparty/caffe/cmake/Modules/FindSnappy.cmake | 28 + 3rdparty/caffe/cmake/Modules/FindvecLib.cmake | 35 + 3rdparty/caffe/cmake/ProtoBuf.cmake | 90 + 3rdparty/caffe/cmake/Summary.cmake | 178 + 3rdparty/caffe/cmake/Targets.cmake | 174 + .../cmake/Templates/CaffeConfig.cmake.in | 55 + .../Templates/CaffeConfigVersion.cmake.in | 11 + .../caffe/cmake/Templates/caffe_config.h.in | 12 + 3rdparty/caffe/cmake/Uninstall.cmake.in | 26 + 3rdparty/caffe/cmake/Utils.cmake | 382 + 3rdparty/caffe/cmake/lint.cmake | 50 + 3rdparty/caffe/docker/README.md | 47 + 3rdparty/caffe/docker/cpu/Dockerfile | 46 + 3rdparty/caffe/docker/gpu/Dockerfile | 47 + 3rdparty/caffe/docs/CMakeLists.txt | 106 + 3rdparty/caffe/docs/CNAME | 1 + 3rdparty/caffe/docs/README.md | 5 + 3rdparty/caffe/docs/_config.yml | 7 + 3rdparty/caffe/docs/_layouts/default.html | 62 + 3rdparty/caffe/docs/development.md | 120 + .../caffe/docs/images/GitHub-Mark-64px.png | Bin 0 -> 2625 bytes 3rdparty/caffe/docs/images/caffeine-icon.png | Bin 0 -> 954 bytes 3rdparty/caffe/docs/index.md | 101 + 3rdparty/caffe/docs/install_apt.md | 55 + 3rdparty/caffe/docs/install_apt_debian.md | 161 + 3rdparty/caffe/docs/install_osx.md | 128 + 3rdparty/caffe/docs/install_yum.md | 45 + 3rdparty/caffe/docs/installation.md | 146 + 3rdparty/caffe/docs/model_zoo.md | 72 + 3rdparty/caffe/docs/multigpu.md | 26 + .../caffe/docs/stylesheets/pygment_trac.css | 69 + 3rdparty/caffe/docs/stylesheets/reset.css | 21 + 3rdparty/caffe/docs/stylesheets/styles.css | 348 + 3rdparty/caffe/docs/tutorial/convolution.md | 13 + 3rdparty/caffe/docs/tutorial/data.md | 78 + 3rdparty/caffe/docs/tutorial/fig/.gitignore | 0 3rdparty/caffe/docs/tutorial/fig/backward.jpg | Bin 0 -> 105017 bytes 3rdparty/caffe/docs/tutorial/fig/forward.jpg | Bin 0 -> 71957 bytes .../docs/tutorial/fig/forward_backward.png | Bin 0 -> 57267 bytes 3rdparty/caffe/docs/tutorial/fig/layer.jpg | Bin 0 -> 54757 bytes 3rdparty/caffe/docs/tutorial/fig/logreg.jpg | Bin 0 -> 42966 bytes .../caffe/docs/tutorial/forward_backward.md | 37 + 3rdparty/caffe/docs/tutorial/index.md | 51 + 3rdparty/caffe/docs/tutorial/interfaces.md | 286 + 3rdparty/caffe/docs/tutorial/layers.md | 135 + 3rdparty/caffe/docs/tutorial/layers/absval.md | 22 + .../caffe/docs/tutorial/layers/accuracy.md | 20 + 3rdparty/caffe/docs/tutorial/layers/argmax.md | 18 + .../caffe/docs/tutorial/layers/batchnorm.md | 20 + .../docs/tutorial/layers/batchreindex.md | 16 + 3rdparty/caffe/docs/tutorial/layers/bias.md | 19 + 3rdparty/caffe/docs/tutorial/layers/bnll.md | 25 + 3rdparty/caffe/docs/tutorial/layers/concat.md | 40 + .../docs/tutorial/layers/contrastiveloss.md | 20 + .../caffe/docs/tutorial/layers/convolution.md | 63 + 3rdparty/caffe/docs/tutorial/layers/crop.md | 20 + 3rdparty/caffe/docs/tutorial/layers/data.md | 29 + .../docs/tutorial/layers/deconvolution.md | 22 + .../caffe/docs/tutorial/layers/dropout.md | 20 + .../caffe/docs/tutorial/layers/dummydata.md | 20 + .../caffe/docs/tutorial/layers/eltwise.md | 20 + 3rdparty/caffe/docs/tutorial/layers/elu.md | 25 + 3rdparty/caffe/docs/tutorial/layers/embed.md | 20 + .../docs/tutorial/layers/euclideanloss.md | 16 + 3rdparty/caffe/docs/tutorial/layers/exp.md | 24 + 3rdparty/caffe/docs/tutorial/layers/filter.md | 15 + .../caffe/docs/tutorial/layers/flatten.md | 21 + .../caffe/docs/tutorial/layers/hdf5data.md | 20 + .../caffe/docs/tutorial/layers/hdf5output.md | 25 + .../caffe/docs/tutorial/layers/hingeloss.md | 19 + 3rdparty/caffe/docs/tutorial/layers/im2col.md | 16 + .../caffe/docs/tutorial/layers/imagedata.md | 27 + .../docs/tutorial/layers/infogainloss.md | 23 + .../docs/tutorial/layers/innerproduct.md | 59 + 3rdparty/caffe/docs/tutorial/layers/input.md | 19 + 3rdparty/caffe/docs/tutorial/layers/log.md | 20 + 3rdparty/caffe/docs/tutorial/layers/lrn.md | 28 + 3rdparty/caffe/docs/tutorial/layers/lstm.md | 21 + .../caffe/docs/tutorial/layers/memorydata.md | 25 + .../layers/multinomiallogisticloss.md | 19 + 3rdparty/caffe/docs/tutorial/layers/mvn.md | 20 + .../caffe/docs/tutorial/layers/parameter.md | 21 + .../caffe/docs/tutorial/layers/pooling.md | 47 + 3rdparty/caffe/docs/tutorial/layers/power.md | 46 + 3rdparty/caffe/docs/tutorial/layers/prelu.md | 20 + 3rdparty/caffe/docs/tutorial/layers/python.md | 27 + .../caffe/docs/tutorial/layers/recurrent.md | 20 + .../caffe/docs/tutorial/layers/reduction.md | 20 + 3rdparty/caffe/docs/tutorial/layers/relu.md | 32 + .../caffe/docs/tutorial/layers/reshape.md | 51 + 3rdparty/caffe/docs/tutorial/layers/rnn.md | 19 + 3rdparty/caffe/docs/tutorial/layers/scale.md | 20 + .../caffe/docs/tutorial/layers/sigmoid.md | 30 + .../layers/sigmoidcrossentropyloss.md | 13 + .../caffe/docs/tutorial/layers/silence.md | 17 + 3rdparty/caffe/docs/tutorial/layers/slice.md | 42 + .../caffe/docs/tutorial/layers/softmax.md | 24 + .../docs/tutorial/layers/softmaxwithloss.md | 33 + 3rdparty/caffe/docs/tutorial/layers/split.md | 17 + 3rdparty/caffe/docs/tutorial/layers/spp.md | 20 + 3rdparty/caffe/docs/tutorial/layers/tanh.md | 18 + .../caffe/docs/tutorial/layers/threshold.md | 18 + 3rdparty/caffe/docs/tutorial/layers/tile.md | 20 + .../caffe/docs/tutorial/layers/windowdata.md | 19 + 3rdparty/caffe/docs/tutorial/loss.md | 51 + .../caffe/docs/tutorial/net_layer_blob.md | 168 + 3rdparty/caffe/docs/tutorial/solver.md | 341 + .../caffe/examples/00-classification.ipynb | 780 + .../caffe/examples/01-learning-lenet.ipynb | 1288 + 3rdparty/caffe/examples/02-fine-tuning.ipynb | 1175 + 3rdparty/caffe/examples/CMakeLists.txt | 32 + 3rdparty/caffe/examples/brewing-logreg.ipynb | 1164 + .../examples/cifar10/cifar10_full.prototxt | 155 + .../cifar10_full_sigmoid_solver.prototxt | 28 + .../cifar10_full_sigmoid_solver_bn.prototxt | 28 + .../cifar10_full_sigmoid_train_test.prototxt | 212 + ...ifar10_full_sigmoid_train_test_bn.prototxt | 240 + .../cifar10/cifar10_full_solver.prototxt | 27 + .../cifar10/cifar10_full_solver_lr1.prototxt | 27 + .../cifar10/cifar10_full_solver_lr2.prototxt | 27 + .../cifar10/cifar10_full_train_test.prototxt | 220 + .../examples/cifar10/cifar10_quick.prototxt | 148 + .../cifar10/cifar10_quick_solver.prototxt | 25 + .../cifar10/cifar10_quick_solver_lr1.prototxt | 26 + .../cifar10/cifar10_quick_train_test.prototxt | 222 + .../examples/cifar10/convert_cifar_data.cpp | 110 + .../caffe/examples/cifar10/create_cifar10.sh | 20 + 3rdparty/caffe/examples/cifar10/readme.md | 97 + 3rdparty/caffe/examples/cifar10/train_full.sh | 17 + .../examples/cifar10/train_full_sigmoid.sh | 8 + .../examples/cifar10/train_full_sigmoid_bn.sh | 8 + .../caffe/examples/cifar10/train_quick.sh | 12 + .../cpp_classification/classification.cpp | 265 + .../examples/cpp_classification/readme.md | 77 + 3rdparty/caffe/examples/detection.ipynb | 8392 +++ .../feature_extraction/imagenet_val.prototxt | 238 + .../examples/feature_extraction/readme.md | 74 + .../finetune_flickr_style/assemble_data.py | 98 + .../finetune_flickr_style/flickr_style.csv.gz | Bin 0 -> 2178982 bytes .../examples/finetune_flickr_style/readme.md | 169 + .../finetune_flickr_style/style_names.txt | 20 + .../pascal_finetune_solver.prototxt | 13 + .../pascal_finetune_trainval_test.prototxt | 391 + .../nonlinear_auto_test.prototxt | 54 + .../nonlinear_auto_train.prototxt | 54 + .../nonlinear_train_val.prototxt | 98 + .../hdf5_classification/train_val.prototxt | 68 + .../examples/imagenet/create_imagenet.sh | 58 + .../examples/imagenet/make_imagenet_mean.sh | 12 + 3rdparty/caffe/examples/imagenet/readme.md | 105 + .../examples/imagenet/resume_training.sh | 7 + .../caffe/examples/imagenet/train_caffenet.sh | 5 + 3rdparty/caffe/examples/images/cat gray.jpg | Bin 0 -> 92726 bytes 3rdparty/caffe/examples/images/cat.jpg | Bin 0 -> 140391 bytes 3rdparty/caffe/examples/images/cat_gray.jpg | Bin 0 -> 92726 bytes 3rdparty/caffe/examples/images/fish-bike.jpg | Bin 0 -> 47638 bytes .../examples/mnist/convert_mnist_data.cpp | 147 + 3rdparty/caffe/examples/mnist/create_mnist.sh | 22 + 3rdparty/caffe/examples/mnist/lenet.prototxt | 129 + .../mnist/lenet_adadelta_solver.prototxt | 24 + .../examples/mnist/lenet_auto_solver.prototxt | 24 + .../mnist/lenet_consolidated_solver.prototxt | 263 + .../mnist/lenet_multistep_solver.prototxt | 29 + .../examples/mnist/lenet_solver.prototxt | 25 + .../examples/mnist/lenet_solver_adam.prototxt | 26 + .../mnist/lenet_solver_rmsprop.prototxt | 27 + .../examples/mnist/lenet_train_test.prototxt | 168 + .../examples/mnist/mnist_autoencoder.prototxt | 323 + .../mnist/mnist_autoencoder_solver.prototxt | 19 + ...mnist_autoencoder_solver_adadelta.prototxt | 19 + .../mnist_autoencoder_solver_adagrad.prototxt | 17 + ...mnist_autoencoder_solver_nesterov.prototxt | 20 + 3rdparty/caffe/examples/mnist/readme.md | 289 + 3rdparty/caffe/examples/mnist/train_lenet.sh | 4 + .../caffe/examples/mnist/train_lenet_adam.sh | 4 + .../mnist/train_lenet_consolidated.sh | 5 + .../examples/mnist/train_lenet_docker.sh | 119 + .../examples/mnist/train_lenet_rmsprop.sh | 5 + .../examples/mnist/train_mnist_autoencoder.sh | 5 + .../mnist/train_mnist_autoencoder_adadelta.sh | 5 + .../mnist/train_mnist_autoencoder_adagrad.sh | 5 + .../mnist/train_mnist_autoencoder_nesterov.sh | 5 + 3rdparty/caffe/examples/net_surgery.ipynb | 6901 +++ .../bvlc_caffenet_full_conv.prototxt | 221 + .../caffe/examples/net_surgery/conv.prototxt | 27 + .../pascal-multilabel-with-datalayer.ipynb | 479 + 3rdparty/caffe/examples/pycaffe/caffenet.py | 55 + .../layers/pascal_multilabel_datalayers.py | 216 + .../caffe/examples/pycaffe/layers/pyloss.py | 37 + .../caffe/examples/pycaffe/linreg.prototxt | 60 + 3rdparty/caffe/examples/pycaffe/tools.py | 121 + .../siamese/convert_mnist_siamese_data.cpp | 129 + .../examples/siamese/create_mnist_siamese.sh | 22 + .../examples/siamese/mnist_siamese.ipynb | 1909 + .../examples/siamese/mnist_siamese.prototxt | 116 + .../siamese/mnist_siamese_solver.prototxt | 25 + .../siamese/mnist_siamese_train_test.prototxt | 349 + 3rdparty/caffe/examples/siamese/readme.md | 187 + .../examples/siamese/train_mnist_siamese.sh | 6 + 3rdparty/caffe/examples/web_demo/app.py | 227 + 3rdparty/caffe/examples/web_demo/exifutil.py | 39 + 3rdparty/caffe/examples/web_demo/readme.md | 41 + .../caffe/examples/web_demo/requirements.txt | 7 + .../examples/web_demo/templates/index.html | 138 + 3rdparty/caffe/include/caffe/blob.hpp | 282 + 3rdparty/caffe/include/caffe/caffe.hpp | 21 + 3rdparty/caffe/include/caffe/common.hpp | 193 + .../caffe/include/caffe/data_transformer.hpp | 154 + 3rdparty/caffe/include/caffe/filler.hpp | 295 + .../caffe/include/caffe/internal_thread.hpp | 53 + 3rdparty/caffe/include/caffe/layer.hpp | 477 + .../caffe/include/caffe/layer_factory.hpp | 141 + .../include/caffe/layers/absval_layer.hpp | 68 + .../include/caffe/layers/accuracy_layer.hpp | 95 + .../include/caffe/layers/argmax_layer.hpp | 77 + .../include/caffe/layers/base_conv_layer.hpp | 174 + .../include/caffe/layers/base_data_layer.hpp | 82 + .../include/caffe/layers/batch_norm_layer.hpp | 78 + .../caffe/layers/batch_reindex_layer.hpp | 83 + .../caffe/include/caffe/layers/bias_layer.hpp | 54 + .../caffe/include/caffe/layers/bnll_layer.hpp | 70 + .../include/caffe/layers/concat_layer.hpp | 87 + .../caffe/layers/contrastive_loss_layer.hpp | 101 + .../caffe/include/caffe/layers/conv_layer.hpp | 84 + .../caffe/include/caffe/layers/crop_layer.hpp | 76 + .../include/caffe/layers/cudnn_conv_layer.hpp | 72 + .../include/caffe/layers/cudnn_lcn_layer.hpp | 49 + .../include/caffe/layers/cudnn_lrn_layer.hpp | 44 + .../caffe/layers/cudnn_pooling_layer.hpp | 49 + .../include/caffe/layers/cudnn_relu_layer.hpp | 46 + .../caffe/layers/cudnn_sigmoid_layer.hpp | 46 + .../caffe/layers/cudnn_softmax_layer.hpp | 45 + .../include/caffe/layers/cudnn_tanh_layer.hpp | 46 + .../caffe/include/caffe/layers/data_layer.hpp | 40 + .../include/caffe/layers/deconv_layer.hpp | 51 + .../include/caffe/layers/dropout_layer.hpp | 80 + .../include/caffe/layers/dummy_data_layer.hpp | 47 + .../include/caffe/layers/eltwise_layer.hpp | 51 + .../caffe/include/caffe/layers/elu_layer.hpp | 86 + .../include/caffe/layers/embed_layer.hpp | 52 + .../caffe/layers/euclidean_loss_layer.hpp | 107 + .../caffe/include/caffe/layers/exp_layer.hpp | 80 + .../include/caffe/layers/filter_layer.hpp | 77 + .../include/caffe/layers/flatten_layer.hpp | 61 + .../include/caffe/layers/hdf5_data_layer.hpp | 64 + .../caffe/layers/hdf5_output_layer.hpp | 62 + .../include/caffe/layers/hinge_loss_layer.hpp | 104 + .../include/caffe/layers/im2col_layer.hpp | 65 + .../include/caffe/layers/image_data_layer.hpp | 47 + .../caffe/layers/infogain_loss_layer.hpp | 145 + .../caffe/layers/inner_product_layer.hpp | 52 + .../include/caffe/layers/input_layer.hpp | 42 + .../caffe/include/caffe/layers/log_layer.hpp | 82 + .../caffe/include/caffe/layers/loss_layer.hpp | 53 + .../caffe/include/caffe/layers/lrn_layer.hpp | 94 + .../caffe/include/caffe/layers/lstm_layer.hpp | 154 + .../caffe/layers/memory_data_layer.hpp | 63 + .../multinomial_logistic_loss_layer.hpp | 92 + .../caffe/include/caffe/layers/mvn_layer.hpp | 48 + .../include/caffe/layers/neuron_layer.hpp | 32 + .../include/caffe/layers/parameter_layer.hpp | 45 + .../include/caffe/layers/pooling_layer.hpp | 60 + .../include/caffe/layers/power_layer.hpp | 89 + .../include/caffe/layers/prelu_layer.hpp | 101 + .../include/caffe/layers/python_layer.hpp | 55 + .../include/caffe/layers/recurrent_layer.hpp | 187 + .../include/caffe/layers/reduction_layer.hpp | 59 + .../caffe/include/caffe/layers/relu_layer.hpp | 85 + .../include/caffe/layers/reshape_layer.hpp | 52 + .../caffe/include/caffe/layers/rnn_layer.hpp | 47 + .../include/caffe/layers/scale_layer.hpp | 85 + .../sigmoid_cross_entropy_loss_layer.hpp | 128 + .../include/caffe/layers/sigmoid_layer.hpp | 71 + .../include/caffe/layers/silence_layer.hpp | 43 + .../include/caffe/layers/slice_layer.hpp | 51 + .../include/caffe/layers/softmax_layer.hpp | 50 + .../caffe/layers/softmax_loss_layer.hpp | 130 + .../include/caffe/layers/split_layer.hpp | 45 + .../caffe/include/caffe/layers/spp_layer.hpp | 76 + .../caffe/include/caffe/layers/tanh_layer.hpp | 73 + .../include/caffe/layers/threshold_layer.hpp | 64 + .../caffe/include/caffe/layers/tile_layer.hpp | 43 + .../caffe/layers/window_data_layer.hpp | 56 + 3rdparty/caffe/include/caffe/net.hpp | 345 + 3rdparty/caffe/include/caffe/parallel.hpp | 123 + 3rdparty/caffe/include/caffe/sgd_solvers.hpp | 148 + 3rdparty/caffe/include/caffe/solver.hpp | 137 + .../caffe/include/caffe/solver_factory.hpp | 137 + 3rdparty/caffe/include/caffe/syncedmem.hpp | 95 + .../include/caffe/test/test_caffe_main.hpp | 77 + .../caffe/test/test_gradient_check_util.hpp | 266 + .../caffe/include/caffe/util/benchmark.hpp | 52 + .../include/caffe/util/blocking_queue.hpp | 45 + 3rdparty/caffe/include/caffe/util/cudnn.hpp | 163 + 3rdparty/caffe/include/caffe/util/db.hpp | 54 + .../caffe/include/caffe/util/db_leveldb.hpp | 78 + 3rdparty/caffe/include/caffe/util/db_lmdb.hpp | 96 + .../include/caffe/util/device_alternate.hpp | 96 + 3rdparty/caffe/include/caffe/util/format.hpp | 18 + .../caffe/include/caffe/util/gpu_util.cuh | 35 + 3rdparty/caffe/include/caffe/util/hdf5.hpp | 39 + 3rdparty/caffe/include/caffe/util/im2col.hpp | 60 + .../include/caffe/util/insert_splits.hpp | 26 + 3rdparty/caffe/include/caffe/util/io.hpp | 152 + .../include/caffe/util/math_functions.hpp | 284 + .../include/caffe/util/mkl_alternate.hpp | 103 + 3rdparty/caffe/include/caffe/util/nccl.hpp | 37 + 3rdparty/caffe/include/caffe/util/rng.hpp | 43 + .../caffe/include/caffe/util/signal_handler.h | 24 + .../include/caffe/util/upgrade_proto.hpp | 88 + 3rdparty/caffe/install_caffe.sh | 84 + 3rdparty/caffe/matlab/+caffe/+test/test_io.m | 18 + 3rdparty/caffe/matlab/+caffe/+test/test_net.m | 96 + .../caffe/matlab/+caffe/+test/test_solver.m | 45 + 3rdparty/caffe/matlab/+caffe/Blob.m | 78 + 3rdparty/caffe/matlab/+caffe/Layer.m | 32 + 3rdparty/caffe/matlab/+caffe/Net.m | 136 + 3rdparty/caffe/matlab/+caffe/Solver.m | 59 + 3rdparty/caffe/matlab/+caffe/get_net.m | 37 + 3rdparty/caffe/matlab/+caffe/get_solver.m | 10 + .../+caffe/imagenet/ilsvrc_2012_mean.mat | Bin 0 -> 606799 bytes 3rdparty/caffe/matlab/+caffe/io.m | 41 + 3rdparty/caffe/matlab/+caffe/private/CHECK.m | 7 + .../matlab/+caffe/private/CHECK_FILE_EXIST.m | 7 + .../caffe/matlab/+caffe/private/caffe_.cpp | 605 + .../matlab/+caffe/private/is_valid_handle.m | 27 + 3rdparty/caffe/matlab/+caffe/reset_all.m | 8 + 3rdparty/caffe/matlab/+caffe/run_tests.m | 20 + 3rdparty/caffe/matlab/+caffe/set_device.m | 11 + 3rdparty/caffe/matlab/+caffe/set_mode_cpu.m | 7 + 3rdparty/caffe/matlab/+caffe/set_mode_gpu.m | 7 + 3rdparty/caffe/matlab/+caffe/version.m | 7 + 3rdparty/caffe/matlab/CMakeLists.txt | 72 + .../caffe/matlab/demo/classification_demo.m | 148 + 3rdparty/caffe/matlab/hdf5creation/.gitignore | 2 + 3rdparty/caffe/matlab/hdf5creation/demo.m | 64 + .../caffe/matlab/hdf5creation/store2hdf5.m | 59 + 3rdparty/caffe/python/CMakeLists.txt | 40 + 3rdparty/caffe/python/caffe/_caffe.cpp | 570 + 3rdparty/caffe/python/caffe/classifier.py | 98 + 3rdparty/caffe/python/caffe/coord_map.py | 185 + 3rdparty/caffe/python/caffe/detector.py | 216 + 3rdparty/caffe/python/caffe/draw.py | 244 + .../caffe/imagenet/ilsvrc_2012_mean.npy | Bin 0 -> 1572944 bytes 3rdparty/caffe/python/caffe/io.py | 383 + 3rdparty/caffe/python/caffe/net_spec.py | 230 + 3rdparty/caffe/python/caffe/pycaffe.py | 345 + .../caffe/python/caffe/test/test_coord_map.py | 192 + 3rdparty/caffe/python/caffe/test/test_draw.py | 37 + 3rdparty/caffe/python/caffe/test/test_io.py | 56 + .../python/caffe/test/test_layer_type_list.py | 11 + 3rdparty/caffe/python/caffe/test/test_nccl.py | 19 + 3rdparty/caffe/python/caffe/test/test_net.py | 389 + .../caffe/python/caffe/test/test_net_spec.py | 89 + .../python/caffe/test/test_python_layer.py | 168 + .../test/test_python_layer_with_param_str.py | 61 + .../caffe/python/caffe/test/test_solver.py | 62 + 3rdparty/caffe/python/classify.py | 138 + 3rdparty/caffe/python/detect.py | 173 + 3rdparty/caffe/python/draw_net.py | 58 + 3rdparty/caffe/python/requirements.txt | 17 + 3rdparty/caffe/python/train.py | 100 + 3rdparty/caffe/scripts/build_docs.sh | 23 + 3rdparty/caffe/scripts/caffe | 73 + 3rdparty/caffe/scripts/copy_notebook.py | 32 + 3rdparty/caffe/scripts/cpp_lint.py | 4873 ++ 3rdparty/caffe/scripts/deploy_docs.sh | 50 + .../caffe/scripts/download_model_binary.py | 77 + .../caffe/scripts/download_model_from_gist.sh | 24 + 3rdparty/caffe/scripts/gather_examples.sh | 29 + 3rdparty/caffe/scripts/split_caffe_proto.py | 35 + 3rdparty/caffe/scripts/travis/build.sh | 13 + .../caffe/scripts/travis/configure-cmake.sh | 32 + .../caffe/scripts/travis/configure-make.sh | 36 + 3rdparty/caffe/scripts/travis/configure.sh | 11 + 3rdparty/caffe/scripts/travis/defaults.sh | 10 + 3rdparty/caffe/scripts/travis/install-deps.sh | 112 + .../scripts/travis/install-python-deps.sh | 15 + 3rdparty/caffe/scripts/travis/setup-venv.sh | 18 + 3rdparty/caffe/scripts/travis/test.sh | 19 + .../caffe/scripts/upload_model_to_gist.sh | 38 + 3rdparty/caffe/src/caffe/CMakeLists.txt | 50 + 3rdparty/caffe/src/caffe/blob.cpp | 561 + 3rdparty/caffe/src/caffe/common.cpp | 325 + 3rdparty/caffe/src/caffe/data_transformer.cpp | 545 + 3rdparty/caffe/src/caffe/internal_thread.cpp | 68 + 3rdparty/caffe/src/caffe/layer.cpp | 7 + 3rdparty/caffe/src/caffe/layer_factory.cpp | 267 + .../caffe/src/caffe/layers/absval_layer.cpp | 44 + .../caffe/src/caffe/layers/absval_layer.cu | 32 + .../caffe/src/caffe/layers/accuracy_layer.cpp | 108 + .../caffe/src/caffe/layers/argmax_layer.cpp | 101 + .../src/caffe/layers/base_conv_layer.cpp | 395 + .../src/caffe/layers/base_data_layer.cpp | 136 + .../caffe/src/caffe/layers/base_data_layer.cu | 26 + .../src/caffe/layers/batch_norm_layer.cpp | 251 + .../src/caffe/layers/batch_norm_layer.cu | 171 + .../src/caffe/layers/batch_reindex_layer.cpp | 78 + .../src/caffe/layers/batch_reindex_layer.cu | 106 + .../caffe/src/caffe/layers/bias_layer.cpp | 121 + 3rdparty/caffe/src/caffe/layers/bias_layer.cu | 59 + .../caffe/src/caffe/layers/bnll_layer.cpp | 47 + 3rdparty/caffe/src/caffe/layers/bnll_layer.cu | 59 + .../caffe/src/caffe/layers/concat_layer.cpp | 104 + .../caffe/src/caffe/layers/concat_layer.cu | 73 + .../caffe/layers/contrastive_loss_layer.cpp | 120 + .../caffe/layers/contrastive_loss_layer.cu | 109 + .../caffe/src/caffe/layers/conv_layer.cpp | 81 + 3rdparty/caffe/src/caffe/layers/conv_layer.cu | 60 + .../caffe/src/caffe/layers/crop_layer.cpp | 141 + 3rdparty/caffe/src/caffe/layers/crop_layer.cu | 109 + .../src/caffe/layers/cudnn_conv_layer.cpp | 269 + .../src/caffe/layers/cudnn_conv_layer.cu | 118 + .../src/caffe/layers/cudnn_lcn_layer.cpp | 73 + .../caffe/src/caffe/layers/cudnn_lcn_layer.cu | 46 + .../src/caffe/layers/cudnn_lrn_layer.cpp | 53 + .../caffe/src/caffe/layers/cudnn_lrn_layer.cu | 44 + .../src/caffe/layers/cudnn_pooling_layer.cpp | 46 + .../src/caffe/layers/cudnn_pooling_layer.cu | 41 + .../src/caffe/layers/cudnn_relu_layer.cpp | 46 + .../src/caffe/layers/cudnn_relu_layer.cu | 74 + .../src/caffe/layers/cudnn_sigmoid_layer.cpp | 46 + .../src/caffe/layers/cudnn_sigmoid_layer.cu | 64 + .../src/caffe/layers/cudnn_softmax_layer.cpp | 46 + .../src/caffe/layers/cudnn_softmax_layer.cu | 44 + .../src/caffe/layers/cudnn_tanh_layer.cpp | 45 + .../src/caffe/layers/cudnn_tanh_layer.cu | 65 + .../caffe/src/caffe/layers/data_layer.cpp | 136 + .../caffe/src/caffe/layers/deconv_layer.cpp | 84 + .../caffe/src/caffe/layers/deconv_layer.cu | 61 + .../caffe/src/caffe/layers/dropout_layer.cpp | 75 + .../caffe/src/caffe/layers/dropout_layer.cu | 70 + .../src/caffe/layers/dummy_data_layer.cpp | 114 + .../caffe/src/caffe/layers/eltwise_layer.cpp | 162 + .../caffe/src/caffe/layers/eltwise_layer.cu | 134 + 3rdparty/caffe/src/caffe/layers/elu_layer.cpp | 47 + 3rdparty/caffe/src/caffe/layers/elu_layer.cu | 62 + .../caffe/src/caffe/layers/embed_layer.cpp | 119 + .../caffe/src/caffe/layers/embed_layer.cu | 81 + .../src/caffe/layers/euclidean_loss_layer.cpp | 55 + .../src/caffe/layers/euclidean_loss_layer.cu | 42 + 3rdparty/caffe/src/caffe/layers/exp_layer.cpp | 68 + 3rdparty/caffe/src/caffe/layers/exp_layer.cu | 42 + .../caffe/src/caffe/layers/filter_layer.cpp | 125 + .../caffe/src/caffe/layers/filter_layer.cu | 69 + .../caffe/src/caffe/layers/flatten_layer.cpp | 44 + .../src/caffe/layers/hdf5_data_layer.cpp | 186 + .../caffe/src/caffe/layers/hdf5_data_layer.cu | 36 + .../src/caffe/layers/hdf5_output_layer.cpp | 74 + .../src/caffe/layers/hdf5_output_layer.cu | 39 + .../src/caffe/layers/hinge_loss_layer.cpp | 78 + .../caffe/src/caffe/layers/im2col_layer.cpp | 193 + .../caffe/src/caffe/layers/im2col_layer.cu | 62 + .../src/caffe/layers/image_data_layer.cpp | 179 + .../src/caffe/layers/infogain_loss_layer.cpp | 223 + .../src/caffe/layers/inner_product_layer.cpp | 150 + .../src/caffe/layers/inner_product_layer.cu | 79 + .../caffe/src/caffe/layers/input_layer.cpp | 27 + 3rdparty/caffe/src/caffe/layers/log_layer.cpp | 85 + 3rdparty/caffe/src/caffe/layers/log_layer.cu | 55 + .../caffe/src/caffe/layers/loss_layer.cpp | 27 + 3rdparty/caffe/src/caffe/layers/lrn_layer.cpp | 257 + 3rdparty/caffe/src/caffe/layers/lrn_layer.cu | 202 + .../caffe/src/caffe/layers/lstm_layer.cpp | 244 + .../src/caffe/layers/lstm_unit_layer.cpp | 130 + .../caffe/src/caffe/layers/lstm_unit_layer.cu | 154 + .../src/caffe/layers/memory_data_layer.cpp | 123 + .../multinomial_logistic_loss_layer.cpp | 64 + 3rdparty/caffe/src/caffe/layers/mvn_layer.cpp | 134 + 3rdparty/caffe/src/caffe/layers/mvn_layer.cu | 110 + .../caffe/src/caffe/layers/neuron_layer.cpp | 15 + .../src/caffe/layers/parameter_layer.cpp | 8 + .../caffe/src/caffe/layers/pooling_layer.cpp | 316 + .../caffe/src/caffe/layers/pooling_layer.cu | 386 + .../caffe/src/caffe/layers/power_layer.cpp | 102 + .../caffe/src/caffe/layers/power_layer.cu | 85 + .../caffe/src/caffe/layers/prelu_layer.cpp | 141 + .../caffe/src/caffe/layers/prelu_layer.cu | 128 + .../src/caffe/layers/recurrent_layer.cpp | 295 + .../caffe/src/caffe/layers/recurrent_layer.cu | 44 + .../src/caffe/layers/reduction_layer.cpp | 129 + .../caffe/src/caffe/layers/reduction_layer.cu | 91 + .../caffe/src/caffe/layers/relu_layer.cpp | 45 + 3rdparty/caffe/src/caffe/layers/relu_layer.cu | 64 + .../caffe/src/caffe/layers/reshape_layer.cpp | 96 + 3rdparty/caffe/src/caffe/layers/rnn_layer.cpp | 236 + .../caffe/src/caffe/layers/scale_layer.cpp | 227 + .../caffe/src/caffe/layers/scale_layer.cu | 135 + .../sigmoid_cross_entropy_loss_layer.cpp | 140 + .../sigmoid_cross_entropy_loss_layer.cu | 104 + .../caffe/src/caffe/layers/sigmoid_layer.cpp | 47 + .../caffe/src/caffe/layers/sigmoid_layer.cu | 60 + .../caffe/src/caffe/layers/silence_layer.cpp | 26 + .../caffe/src/caffe/layers/silence_layer.cu | 27 + .../caffe/src/caffe/layers/slice_layer.cpp | 124 + .../caffe/src/caffe/layers/slice_layer.cu | 71 + .../caffe/src/caffe/layers/softmax_layer.cpp | 95 + .../caffe/src/caffe/layers/softmax_layer.cu | 148 + .../src/caffe/layers/softmax_loss_layer.cpp | 158 + .../src/caffe/layers/softmax_loss_layer.cu | 128 + .../caffe/src/caffe/layers/split_layer.cpp | 59 + .../caffe/src/caffe/layers/split_layer.cu | 37 + 3rdparty/caffe/src/caffe/layers/spp_layer.cpp | 228 + .../caffe/src/caffe/layers/tanh_layer.cpp | 44 + 3rdparty/caffe/src/caffe/layers/tanh_layer.cu | 57 + .../src/caffe/layers/threshold_layer.cpp | 32 + .../caffe/src/caffe/layers/threshold_layer.cu | 31 + .../caffe/src/caffe/layers/tile_layer.cpp | 61 + 3rdparty/caffe/src/caffe/layers/tile_layer.cu | 66 + .../src/caffe/layers/window_data_layer.cpp | 476 + 3rdparty/caffe/src/caffe/net.cpp | 981 + 3rdparty/caffe/src/caffe/parallel.cpp | 371 + 3rdparty/caffe/src/caffe/proto/caffe.proto | 1412 + 3rdparty/caffe/src/caffe/solver.cpp | 489 + .../src/caffe/solvers/adadelta_solver.cpp | 112 + .../src/caffe/solvers/adadelta_solver.cu | 30 + .../src/caffe/solvers/adagrad_solver.cpp | 69 + .../caffe/src/caffe/solvers/adagrad_solver.cu | 26 + .../caffe/src/caffe/solvers/adam_solver.cpp | 94 + .../caffe/src/caffe/solvers/adam_solver.cu | 29 + .../src/caffe/solvers/nesterov_solver.cpp | 61 + .../src/caffe/solvers/nesterov_solver.cu | 27 + .../src/caffe/solvers/rmsprop_solver.cpp | 70 + .../caffe/src/caffe/solvers/rmsprop_solver.cu | 28 + .../caffe/src/caffe/solvers/sgd_solver.cpp | 352 + .../caffe/src/caffe/solvers/sgd_solver.cu | 24 + 3rdparty/caffe/src/caffe/syncedmem.cpp | 186 + 3rdparty/caffe/src/caffe/test/CMakeLists.txt | 36 + .../src/caffe/test/test_accuracy_layer.cpp | 336 + .../src/caffe/test/test_argmax_layer.cpp | 295 + .../src/caffe/test/test_batch_norm_layer.cpp | 133 + .../caffe/test/test_batch_reindex_layer.cpp | 118 + .../caffe/src/caffe/test/test_benchmark.cpp | 90 + .../caffe/src/caffe/test/test_bias_layer.cpp | 467 + 3rdparty/caffe/src/caffe/test/test_blob.cpp | 301 + .../caffe/src/caffe/test/test_caffe_main.cpp | 38 + 3rdparty/caffe/src/caffe/test/test_common.cpp | 64 + .../src/caffe/test/test_concat_layer.cpp | 207 + .../test/test_contrastive_loss_layer.cpp | 144 + .../src/caffe/test/test_convolution_layer.cpp | 1086 + .../caffe/src/caffe/test/test_crop_layer.cpp | 283 + .../test/test_data/generate_sample_data.py | 81 + .../src/caffe/test/test_data/sample_data.h5 | Bin 0 -> 11824 bytes .../test/test_data/sample_data_2_gzip.h5 | Bin 0 -> 15446 bytes .../caffe/test/test_data/sample_data_list.txt | 2 + .../src/caffe/test/test_data/solver_data.h5 | Bin 0 -> 11776 bytes .../caffe/test/test_data/solver_data_list.txt | 1 + .../caffe/src/caffe/test/test_data_layer.cpp | 469 + .../src/caffe/test/test_data_transformer.cpp | 344 + 3rdparty/caffe/src/caffe/test/test_db.cpp | 136 + .../caffe/test/test_deconvolution_layer.cpp | 304 + .../src/caffe/test/test_dummy_data_layer.cpp | 193 + .../src/caffe/test/test_eltwise_layer.cpp | 209 + .../caffe/src/caffe/test/test_embed_layer.cpp | 178 + .../caffe/test/test_euclidean_loss_layer.cpp | 89 + 3rdparty/caffe/src/caffe/test/test_filler.cpp | 241 + .../src/caffe/test/test_filter_layer.cpp | 126 + .../src/caffe/test/test_flatten_layer.cpp | 108 + .../caffe/test/test_gradient_based_solver.cpp | 1289 + .../src/caffe/test/test_hdf5_output_layer.cpp | 122 + .../src/caffe/test/test_hdf5data_layer.cpp | 165 + .../src/caffe/test/test_hinge_loss_layer.cpp | 74 + .../src/caffe/test/test_im2col_kernel.cu | 213 + .../src/caffe/test/test_im2col_layer.cpp | 178 + .../src/caffe/test/test_image_data_layer.cpp | 219 + .../caffe/test/test_infogain_loss_layer.cpp | 138 + .../caffe/test/test_inner_product_layer.cpp | 391 + .../src/caffe/test/test_internal_thread.cpp | 53 + 3rdparty/caffe/src/caffe/test/test_io.cpp | 424 + .../src/caffe/test/test_layer_factory.cpp | 51 + .../caffe/src/caffe/test/test_lrn_layer.cpp | 450 + .../caffe/src/caffe/test/test_lstm_layer.cpp | 288 + .../src/caffe/test/test_math_functions.cpp | 203 + .../test/test_maxpool_dropout_layers.cpp | 127 + .../src/caffe/test/test_memory_data_layer.cpp | 299 + .../test_multinomial_logistic_loss_layer.cpp | 58 + .../caffe/src/caffe/test/test_mvn_layer.cpp | 172 + 3rdparty/caffe/src/caffe/test/test_net.cpp | 2604 + .../src/caffe/test/test_neuron_layer.cpp | 941 + .../caffe/src/caffe/test/test_platform.cpp | 57 + .../src/caffe/test/test_pooling_layer.cpp | 1185 + .../caffe/src/caffe/test/test_power_layer.cpp | 170 + .../caffe/src/caffe/test/test_protobuf.cpp | 29 + .../test/test_random_number_generator.cpp | 520 + .../src/caffe/test/test_reduction_layer.cpp | 296 + .../src/caffe/test/test_reshape_layer.cpp | 279 + .../caffe/src/caffe/test/test_rnn_layer.cpp | 217 + .../caffe/src/caffe/test/test_scale_layer.cpp | 507 + .../test_sigmoid_cross_entropy_loss_layer.cpp | 148 + .../caffe/src/caffe/test/test_slice_layer.cpp | 215 + .../src/caffe/test/test_softmax_layer.cpp | 152 + .../test/test_softmax_with_loss_layer.cpp | 108 + 3rdparty/caffe/src/caffe/test/test_solver.cpp | 109 + .../src/caffe/test/test_solver_factory.cpp | 50 + .../caffe/src/caffe/test/test_split_layer.cpp | 983 + .../caffe/src/caffe/test/test_spp_layer.cpp | 134 + .../caffe/test/test_stochastic_pooling.cpp | 175 + .../caffe/src/caffe/test/test_syncedmem.cpp | 125 + .../caffe/src/caffe/test/test_tanh_layer.cpp | 101 + .../src/caffe/test/test_threshold_layer.cpp | 98 + .../caffe/src/caffe/test/test_tile_layer.cpp | 161 + .../src/caffe/test/test_upgrade_proto.cpp | 2989 ++ .../caffe/src/caffe/test/test_util_blas.cpp | 132 + 3rdparty/caffe/src/caffe/util/benchmark.cpp | 169 + .../caffe/src/caffe/util/blocking_queue.cpp | 91 + 3rdparty/caffe/src/caffe/util/cudnn.cpp | 23 + 3rdparty/caffe/src/caffe/util/db.cpp | 41 + 3rdparty/caffe/src/caffe/util/db_leveldb.cpp | 23 + 3rdparty/caffe/src/caffe/util/db_lmdb.cpp | 113 + 3rdparty/caffe/src/caffe/util/hdf5.cpp | 209 + 3rdparty/caffe/src/caffe/util/im2col.cpp | 234 + 3rdparty/caffe/src/caffe/util/im2col.cu | 512 + .../caffe/src/caffe/util/insert_splits.cpp | 126 + 3rdparty/caffe/src/caffe/util/io.cpp | 238 + .../caffe/src/caffe/util/math_functions.cpp | 385 + .../caffe/src/caffe/util/math_functions.cu | 459 + .../caffe/src/caffe/util/signal_handler.cpp | 115 + .../caffe/src/caffe/util/upgrade_proto.cpp | 1106 + 3rdparty/caffe/src/gtest/CMakeLists.txt | 8 + 3rdparty/caffe/src/gtest/gtest-all.cpp | 9117 ++++ 3rdparty/caffe/src/gtest/gtest.h | 19537 +++++++ 3rdparty/caffe/src/gtest/gtest_main.cc | 39 + 3rdparty/caffe/tools/CMakeLists.txt | 30 + 3rdparty/caffe/tools/caffe.cpp | 458 + 3rdparty/caffe/tools/compute_image_mean.cpp | 125 + 3rdparty/caffe/tools/convert_imageset.cpp | 159 + 3rdparty/caffe/tools/device_query.cpp | 7 + 3rdparty/caffe/tools/extra/extract_seconds.py | 72 + .../extra/launch_resize_and_crop_images.sh | 24 + 3rdparty/caffe/tools/extra/parse_log.py | 210 + 3rdparty/caffe/tools/extra/parse_log.sh | 51 + .../tools/extra/plot_log.gnuplot.example | 69 + .../tools/extra/plot_training_log.py.example | 184 + .../tools/extra/resize_and_crop_images.py | 109 + 3rdparty/caffe/tools/extra/summarize.py | 140 + 3rdparty/caffe/tools/extract_features.cpp | 183 + 3rdparty/caffe/tools/finetune_net.cpp | 7 + 3rdparty/caffe/tools/net_speed_benchmark.cpp | 7 + 3rdparty/caffe/tools/test_net.cpp | 7 + 3rdparty/caffe/tools/train_net.cpp | 7 + .../caffe/tools/upgrade_net_proto_binary.cpp | 50 + .../caffe/tools/upgrade_net_proto_text.cpp | 51 + .../caffe/tools/upgrade_solver_proto_text.cpp | 51 + LICENSE | 108 + Makefile | 508 + Makefile.config.Ubuntu14.example | 101 + Makefile.config.Ubuntu14_cuda_7.example | 95 + Makefile.config.Ubuntu16.example | 101 + Makefile.config.Ubuntu16_cuda_7.example | 95 + README.md | 179 + doc/GUI_help/GUI_help.odt | Bin 0 -> 16830 bytes doc/GUI_help/GUI_help.png | Bin 0 -> 101615 bytes doc/UML/1_0_0rc1/UML.mdj | 42282 ++++++++++++++++ doc/UML/1_0_0rc1/UML.pdf | Bin 0 -> 38863 bytes doc/UML/1_0_0rc1/UML.png | Bin 0 -> 103002 bytes doc/demo_overview.md | 68 + doc/doc_autogeneration.doxygen | 2479 + doc/installation.md | 57 + doc/library_add_new_module.md | 48 + doc/library_extend_functionality.md | 20 + doc/library_overview.md | 233 + doc/media/dance.gif | Bin 0 -> 2086052 bytes doc/media/shake.gif | Bin 0 -> 2040076 bytes examples/media/COCO_val2014_000000000192.jpg | Bin 0 -> 230425 bytes examples/media/COCO_val2014_000000000241.jpg | Bin 0 -> 107714 bytes examples/media/COCO_val2014_000000000257.jpg | Bin 0 -> 208764 bytes examples/media/COCO_val2014_000000000294.jpg | Bin 0 -> 75635 bytes examples/media/COCO_val2014_000000000328.jpg | Bin 0 -> 159712 bytes examples/media/COCO_val2014_000000000338.jpg | Bin 0 -> 81713 bytes examples/media/COCO_val2014_000000000357.jpg | Bin 0 -> 131457 bytes examples/media/COCO_val2014_000000000360.jpg | Bin 0 -> 118630 bytes examples/media/COCO_val2014_000000000395.jpg | Bin 0 -> 246526 bytes examples/media/COCO_val2014_000000000415.jpg | Bin 0 -> 118150 bytes examples/media/COCO_val2014_000000000428.jpg | Bin 0 -> 102365 bytes examples/media/COCO_val2014_000000000459.jpg | Bin 0 -> 194898 bytes examples/media/COCO_val2014_000000000474.jpg | Bin 0 -> 131485 bytes examples/media/COCO_val2014_000000000488.jpg | Bin 0 -> 105570 bytes examples/media/COCO_val2014_000000000536.jpg | Bin 0 -> 22611 bytes examples/media/COCO_val2014_000000000544.jpg | Bin 0 -> 188065 bytes examples/media/COCO_val2014_000000000564.jpg | Bin 0 -> 130509 bytes examples/media/COCO_val2014_000000000569.jpg | Bin 0 -> 129689 bytes examples/media/COCO_val2014_000000000589.jpg | Bin 0 -> 96802 bytes examples/media/COCO_val2014_000000000623.jpg | Bin 0 -> 112452 bytes examples/media/video.avi | Bin 0 -> 1395096 bytes examples/openpose/rtpose.cpp | 308 + .../tutorial_pose/1_extract_from_image.cpp | 147 + .../2_extract_pose_or_heatmat_from_image.cpp | 152 + .../1_openpose_read_and_display.cpp | 195 + .../2_user_processing_function.cpp | 237 + .../3_user_input_processing_and_output.cpp | 228 + ...user_input_processing_output_and_datum.cpp | 240 + .../tutorial_wrapper/1_user_asynchronous.cpp | 345 + .../tutorial_wrapper/2_user_synchronous.cpp | 403 + ...ile, try not to modify the CPM source code | 0 include/openpose/core/array.hpp | 366 + include/openpose/core/arrayScaler.hpp | 24 + include/openpose/core/cvMatToOpInput.hpp | 24 + include/openpose/core/cvMatToOpOutput.hpp | 23 + include/openpose/core/datum.hpp | 205 + include/openpose/core/enumClasses.hpp | 24 + include/openpose/core/headers.hpp | 25 + include/openpose/core/net.hpp | 21 + include/openpose/core/netCaffe.hpp | 49 + include/openpose/core/nmsBase.hpp | 15 + include/openpose/core/nmsCaffe.hpp | 43 + include/openpose/core/opOutputToCvMat.hpp | 21 + include/openpose/core/renderer.hpp | 39 + include/openpose/core/resizeAndMergeBase.hpp | 15 + include/openpose/core/resizeAndMergeCaffe.hpp | 45 + include/openpose/core/scalePose.hpp | 15 + include/openpose/core/wArrayScaler.hpp | 82 + include/openpose/core/wCvMatToOpInput.hpp | 83 + include/openpose/core/wCvMatToOpOutput.hpp | 85 + include/openpose/core/wOpOutputToCvMat.hpp | 83 + .../experimental/filestream/headers.hpp | 7 + .../filestream/wPoseJsonCocoSaver.hpp | 108 + .../experimental/hands/enumClasses.hpp | 14 + .../experimental/hands/handsExtractor.hpp | 68 + .../experimental/hands/handsParameters.hpp | 32 + .../experimental/hands/handsRenderGpu.hpp | 12 + .../experimental/hands/handsRenderer.hpp | 33 + .../openpose/experimental/hands/headers.hpp | 13 + .../experimental/hands/wHandsExtractor.hpp | 91 + .../experimental/hands/wHandsRenderer.hpp | 88 + include/openpose/experimental/headers.hpp | 13 + .../experimental/producer/headers.hpp | 7 + .../producer/wPeoplePoseLoader.hpp | 28 + include/openpose/filestream/enumClasses.hpp | 15 + include/openpose/filestream/fileSaver.hpp | 23 + include/openpose/filestream/fileStream.hpp | 33 + include/openpose/filestream/headers.hpp | 21 + include/openpose/filestream/heatMapSaver.hpp | 23 + include/openpose/filestream/imageSaver.hpp | 23 + include/openpose/filestream/jsonOfstream.hpp | 50 + .../openpose/filestream/poseJsonCocoSaver.hpp | 35 + include/openpose/filestream/poseJsonSaver.hpp | 20 + include/openpose/filestream/poseSaver.hpp | 22 + include/openpose/filestream/videoSaver.hpp | 31 + include/openpose/filestream/wHeatMapSaver.hpp | 88 + include/openpose/filestream/wImageSaver.hpp | 88 + .../openpose/filestream/wPoseJsonSaver.hpp | 86 + include/openpose/filestream/wPoseSaver.hpp | 87 + include/openpose/filestream/wVideoSaver.hpp | 87 + include/openpose/gui/enumClasses.hpp | 17 + include/openpose/gui/frameDisplayer.hpp | 50 + include/openpose/gui/gui.hpp | 34 + include/openpose/gui/guiInfoAdder.hpp | 31 + include/openpose/gui/headers.hpp | 12 + include/openpose/gui/wGui.hpp | 90 + include/openpose/gui/wGuiInfoAdder.hpp | 80 + include/openpose/headers.hpp | 31 + .../openpose/pose/bodyPartConnectorBase.hpp | 18 + .../openpose/pose/bodyPartConnectorCaffe.hpp | 63 + include/openpose/pose/enumClasses.hpp | 28 + include/openpose/pose/headers.hpp | 16 + include/openpose/pose/poseExtractor.hpp | 64 + include/openpose/pose/poseExtractorCaffe.hpp | 52 + include/openpose/pose/poseParameters.hpp | 92 + include/openpose/pose/poseRenderGpu.hpp | 22 + include/openpose/pose/poseRenderer.hpp | 66 + include/openpose/pose/wPoseExtractor.hpp | 87 + include/openpose/pose/wPoseRenderer.hpp | 82 + include/openpose/producer/datumProducer.hpp | 126 + include/openpose/producer/enumClasses.hpp | 33 + include/openpose/producer/headers.hpp | 14 + .../producer/imageDirectoryReader.hpp | 63 + include/openpose/producer/producer.hpp | 144 + .../openpose/producer/videoCaptureReader.hpp | 72 + include/openpose/producer/videoReader.hpp | 38 + include/openpose/producer/wDatumProducer.hpp | 84 + include/openpose/producer/webcamReader.hpp | 47 + include/openpose/thread/enumClasses.hpp | 15 + include/openpose/thread/headers.hpp | 22 + include/openpose/thread/priorityQueue.hpp | 83 + include/openpose/thread/queue.hpp | 84 + include/openpose/thread/queueBase.hpp | 508 + include/openpose/thread/subThread.hpp | 160 + include/openpose/thread/subThreadNoQueue.hpp | 54 + include/openpose/thread/subThreadQueueIn.hpp | 73 + .../openpose/thread/subThreadQueueInOut.hpp | 97 + include/openpose/thread/subThreadQueueOut.hpp | 81 + include/openpose/thread/thread.hpp | 240 + include/openpose/thread/threadManager.hpp | 504 + include/openpose/thread/wIdGenerator.hpp | 72 + include/openpose/thread/wQueueOrderer.hpp | 144 + include/openpose/thread/worker.hpp | 76 + include/openpose/thread/workerConsumer.hpp | 40 + include/openpose/thread/workerProducer.hpp | 40 + include/openpose/utilities/check.hpp | 60 + include/openpose/utilities/cuda.hpp | 16 + include/openpose/utilities/cuda.hu | 146 + include/openpose/utilities/enumClasses.hpp | 32 + include/openpose/utilities/errorAndLog.hpp | 83 + include/openpose/utilities/fastMath.hpp | 86 + include/openpose/utilities/fileSystem.hpp | 62 + include/openpose/utilities/headers.hpp | 17 + include/openpose/utilities/macros.hpp | 35 + include/openpose/utilities/openCv.hpp | 23 + .../openpose/utilities/pointerContainer.hpp | 43 + include/openpose/utilities/profiler.hpp | 35 + include/openpose/utilities/string.hpp | 19 + include/openpose/wrapper/enumClasses.hpp | 13 + include/openpose/wrapper/headers.hpp | 8 + include/openpose/wrapper/wrapper.hpp | 887 + install_caffe_and_openpose.sh | 49 + install_openpose.sh | 87 + models/getModels.sh | 23 + models/pose/coco/pose_deploy_linevec.prototxt | 2976 ++ models/pose/mpi/pose_deploy_linevec.prototxt | 2975 ++ ...se_deploy_linevec_faster_4_stages.prototxt | 2081 + src/openpose/core/array.cpp | 428 + src/openpose/core/arrayScaler.cpp | 68 + src/openpose/core/cvMatToOpInput.cpp | 50 + src/openpose/core/cvMatToOpOutput.cpp | 40 + src/openpose/core/datum.cpp | 158 + src/openpose/core/defineTemplates.cpp | 9 + src/openpose/core/netCaffe.cpp | 103 + src/openpose/core/nmsBase.cpp | 67 + src/openpose/core/nmsBase.cu | 182 + src/openpose/core/nmsCaffe.cpp | 133 + src/openpose/core/opOutputToCvMat.cpp | 31 + src/openpose/core/renderer.cpp | 103 + src/openpose/core/resizeAndMergeBase.cpp | 66 + src/openpose/core/resizeAndMergeBase.cu | 103 + src/openpose/core/resizeAndMergeCaffe.cpp | 130 + src/openpose/core/scalePose.cpp | 81 + .../filestream/defineTemplates.cpp | 6 + .../experimental/hands/defineTemplates.cpp | 7 + .../experimental/hands/handsExtractor.cpp | 117 + .../experimental/hands/handsRenderGpu.cu | 18 + .../experimental/hands/handsRenderer.cpp | 48 + src/openpose/filestream/defineTemplates.cpp | 10 + src/openpose/filestream/fileSaver.cpp | 46 + src/openpose/filestream/fileStream.cpp | 222 + src/openpose/filestream/heatMapSaver.cpp | 53 + src/openpose/filestream/imageSaver.cpp | 47 + src/openpose/filestream/jsonOfstream.cpp | 143 + src/openpose/filestream/poseJsonCocoSaver.cpp | 91 + src/openpose/filestream/poseJsonSaver.cpp | 35 + src/openpose/filestream/poseSaver.cpp | 42 + src/openpose/filestream/videoSaver.cpp | 91 + src/openpose/gui/defineTemplates.cpp | 7 + src/openpose/gui/frameDisplayer.cpp | 80 + src/openpose/gui/gui.cpp | 182 + src/openpose/gui/guiInfoAdder.cpp | 94 + src/openpose/pose/bodyPartConnectorBase.cpp | 332 + src/openpose/pose/bodyPartConnectorBase.cu | 40 + src/openpose/pose/bodyPartConnectorCaffe.cpp | 204 + src/openpose/pose/defineTemplates.cpp | 7 + src/openpose/pose/poseExtractor.cpp | 243 + src/openpose/pose/poseExtractorCaffe.cpp | 163 + src/openpose/pose/poseRenderGpu.cu | 681 + src/openpose/pose/poseRenderer.cpp | 289 + src/openpose/producer/defineTemplates.cpp | 7 + .../producer/imageDirectoryReader.cpp | 119 + src/openpose/producer/producer.cpp | 287 + src/openpose/producer/videoCaptureReader.cpp | 121 + src/openpose/producer/videoReader.cpp | 38 + src/openpose/producer/webcamReader.cpp | 133 + src/openpose/thread/defineTemplates.cpp | 21 + src/openpose/utilities/cuda.cpp | 14 + src/openpose/utilities/errorAndLog.cpp | 210 + src/openpose/utilities/fileSystem.cpp | 203 + src/openpose/utilities/openCv.cpp | 178 + src/openpose/utilities/profiler.cpp | 156 + src/openpose/utilities/string.cpp | 50 + src/openpose/wrapper/defineTemplates.cpp | 6 + src/openpose/wrapper/wrapper.cpp | 66 + 899 files changed, 206885 insertions(+) create mode 100644 .gitignore create mode 100644 3rdparty/Versions.txt create mode 100644 3rdparty/caffe/CMakeLists.txt create mode 100644 3rdparty/caffe/CONTRIBUTING.md create mode 100644 3rdparty/caffe/CONTRIBUTORS.md create mode 100644 3rdparty/caffe/INSTALL.md create mode 100644 3rdparty/caffe/LICENSE create mode 100644 3rdparty/caffe/Makefile create mode 100644 3rdparty/caffe/Makefile.config.Ubuntu14.example create mode 100644 3rdparty/caffe/Makefile.config.Ubuntu14_cuda_7.example create mode 100644 3rdparty/caffe/Makefile.config.Ubuntu16.example create mode 100644 3rdparty/caffe/Makefile.config.Ubuntu16_cuda_7.example create mode 100644 3rdparty/caffe/README.md create mode 100644 3rdparty/caffe/caffe.cloc create mode 100644 3rdparty/caffe/cmake/ConfigGen.cmake create mode 100644 3rdparty/caffe/cmake/Cuda.cmake create mode 100644 3rdparty/caffe/cmake/Dependencies.cmake create mode 100644 3rdparty/caffe/cmake/External/gflags.cmake create mode 100644 3rdparty/caffe/cmake/External/glog.cmake create mode 100644 3rdparty/caffe/cmake/Misc.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindAtlas.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindGFlags.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindGlog.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindLAPACK.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindLMDB.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindLevelDB.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindMKL.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindMatlabMex.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindNCCL.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindNumPy.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindOpenBLAS.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindSnappy.cmake create mode 100644 3rdparty/caffe/cmake/Modules/FindvecLib.cmake create mode 100644 3rdparty/caffe/cmake/ProtoBuf.cmake create mode 100644 3rdparty/caffe/cmake/Summary.cmake create mode 100644 3rdparty/caffe/cmake/Targets.cmake create mode 100644 3rdparty/caffe/cmake/Templates/CaffeConfig.cmake.in create mode 100644 3rdparty/caffe/cmake/Templates/CaffeConfigVersion.cmake.in create mode 100644 3rdparty/caffe/cmake/Templates/caffe_config.h.in create mode 100644 3rdparty/caffe/cmake/Uninstall.cmake.in create mode 100644 3rdparty/caffe/cmake/Utils.cmake create mode 100644 3rdparty/caffe/cmake/lint.cmake create mode 100644 3rdparty/caffe/docker/README.md create mode 100644 3rdparty/caffe/docker/cpu/Dockerfile create mode 100644 3rdparty/caffe/docker/gpu/Dockerfile create mode 100644 3rdparty/caffe/docs/CMakeLists.txt create mode 100644 3rdparty/caffe/docs/CNAME create mode 100644 3rdparty/caffe/docs/README.md create mode 100644 3rdparty/caffe/docs/_config.yml create mode 100644 3rdparty/caffe/docs/_layouts/default.html create mode 100644 3rdparty/caffe/docs/development.md create mode 100644 3rdparty/caffe/docs/images/GitHub-Mark-64px.png create mode 100644 3rdparty/caffe/docs/images/caffeine-icon.png create mode 100644 3rdparty/caffe/docs/index.md create mode 100644 3rdparty/caffe/docs/install_apt.md create mode 100644 3rdparty/caffe/docs/install_apt_debian.md create mode 100644 3rdparty/caffe/docs/install_osx.md create mode 100644 3rdparty/caffe/docs/install_yum.md create mode 100644 3rdparty/caffe/docs/installation.md create mode 100644 3rdparty/caffe/docs/model_zoo.md create mode 100644 3rdparty/caffe/docs/multigpu.md create mode 100644 3rdparty/caffe/docs/stylesheets/pygment_trac.css create mode 100644 3rdparty/caffe/docs/stylesheets/reset.css create mode 100644 3rdparty/caffe/docs/stylesheets/styles.css create mode 100644 3rdparty/caffe/docs/tutorial/convolution.md create mode 100644 3rdparty/caffe/docs/tutorial/data.md create mode 100644 3rdparty/caffe/docs/tutorial/fig/.gitignore create mode 100644 3rdparty/caffe/docs/tutorial/fig/backward.jpg create mode 100644 3rdparty/caffe/docs/tutorial/fig/forward.jpg create mode 100644 3rdparty/caffe/docs/tutorial/fig/forward_backward.png create mode 100644 3rdparty/caffe/docs/tutorial/fig/layer.jpg create mode 100644 3rdparty/caffe/docs/tutorial/fig/logreg.jpg create mode 100644 3rdparty/caffe/docs/tutorial/forward_backward.md create mode 100644 3rdparty/caffe/docs/tutorial/index.md create mode 100644 3rdparty/caffe/docs/tutorial/interfaces.md create mode 100644 3rdparty/caffe/docs/tutorial/layers.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/absval.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/accuracy.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/argmax.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/batchnorm.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/batchreindex.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/bias.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/bnll.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/concat.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/contrastiveloss.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/convolution.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/crop.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/data.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/deconvolution.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/dropout.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/dummydata.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/eltwise.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/elu.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/embed.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/euclideanloss.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/exp.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/filter.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/flatten.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/hdf5data.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/hdf5output.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/hingeloss.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/im2col.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/imagedata.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/infogainloss.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/innerproduct.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/input.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/log.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/lrn.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/lstm.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/memorydata.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/multinomiallogisticloss.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/mvn.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/parameter.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/pooling.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/power.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/prelu.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/python.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/recurrent.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/reduction.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/relu.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/reshape.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/rnn.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/scale.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/sigmoid.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/sigmoidcrossentropyloss.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/silence.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/slice.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/softmax.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/softmaxwithloss.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/split.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/spp.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/tanh.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/threshold.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/tile.md create mode 100644 3rdparty/caffe/docs/tutorial/layers/windowdata.md create mode 100644 3rdparty/caffe/docs/tutorial/loss.md create mode 100644 3rdparty/caffe/docs/tutorial/net_layer_blob.md create mode 100644 3rdparty/caffe/docs/tutorial/solver.md create mode 100644 3rdparty/caffe/examples/00-classification.ipynb create mode 100644 3rdparty/caffe/examples/01-learning-lenet.ipynb create mode 100644 3rdparty/caffe/examples/02-fine-tuning.ipynb create mode 100644 3rdparty/caffe/examples/CMakeLists.txt create mode 100644 3rdparty/caffe/examples/brewing-logreg.ipynb create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_solver.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr1.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr2.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_full_train_test.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_quick.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_quick_solver.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_quick_solver_lr1.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/cifar10_quick_train_test.prototxt create mode 100644 3rdparty/caffe/examples/cifar10/convert_cifar_data.cpp create mode 100755 3rdparty/caffe/examples/cifar10/create_cifar10.sh create mode 100644 3rdparty/caffe/examples/cifar10/readme.md create mode 100755 3rdparty/caffe/examples/cifar10/train_full.sh create mode 100755 3rdparty/caffe/examples/cifar10/train_full_sigmoid.sh create mode 100755 3rdparty/caffe/examples/cifar10/train_full_sigmoid_bn.sh create mode 100755 3rdparty/caffe/examples/cifar10/train_quick.sh create mode 100644 3rdparty/caffe/examples/cpp_classification/classification.cpp create mode 100644 3rdparty/caffe/examples/cpp_classification/readme.md create mode 100644 3rdparty/caffe/examples/detection.ipynb create mode 100644 3rdparty/caffe/examples/feature_extraction/imagenet_val.prototxt create mode 100644 3rdparty/caffe/examples/feature_extraction/readme.md create mode 100755 3rdparty/caffe/examples/finetune_flickr_style/assemble_data.py create mode 100644 3rdparty/caffe/examples/finetune_flickr_style/flickr_style.csv.gz create mode 100644 3rdparty/caffe/examples/finetune_flickr_style/readme.md create mode 100644 3rdparty/caffe/examples/finetune_flickr_style/style_names.txt create mode 100644 3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_solver.prototxt create mode 100644 3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_trainval_test.prototxt create mode 100644 3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_test.prototxt create mode 100644 3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_train.prototxt create mode 100644 3rdparty/caffe/examples/hdf5_classification/nonlinear_train_val.prototxt create mode 100644 3rdparty/caffe/examples/hdf5_classification/train_val.prototxt create mode 100755 3rdparty/caffe/examples/imagenet/create_imagenet.sh create mode 100755 3rdparty/caffe/examples/imagenet/make_imagenet_mean.sh create mode 100644 3rdparty/caffe/examples/imagenet/readme.md create mode 100755 3rdparty/caffe/examples/imagenet/resume_training.sh create mode 100755 3rdparty/caffe/examples/imagenet/train_caffenet.sh create mode 100644 3rdparty/caffe/examples/images/cat gray.jpg create mode 100644 3rdparty/caffe/examples/images/cat.jpg create mode 100644 3rdparty/caffe/examples/images/cat_gray.jpg create mode 100644 3rdparty/caffe/examples/images/fish-bike.jpg create mode 100644 3rdparty/caffe/examples/mnist/convert_mnist_data.cpp create mode 100755 3rdparty/caffe/examples/mnist/create_mnist.sh create mode 100644 3rdparty/caffe/examples/mnist/lenet.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_adadelta_solver.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_auto_solver.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_consolidated_solver.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_multistep_solver.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_solver.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_solver_adam.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_solver_rmsprop.prototxt create mode 100644 3rdparty/caffe/examples/mnist/lenet_train_test.prototxt create mode 100644 3rdparty/caffe/examples/mnist/mnist_autoencoder.prototxt create mode 100644 3rdparty/caffe/examples/mnist/mnist_autoencoder_solver.prototxt create mode 100644 3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt create mode 100644 3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt create mode 100644 3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt create mode 100644 3rdparty/caffe/examples/mnist/readme.md create mode 100755 3rdparty/caffe/examples/mnist/train_lenet.sh create mode 100755 3rdparty/caffe/examples/mnist/train_lenet_adam.sh create mode 100755 3rdparty/caffe/examples/mnist/train_lenet_consolidated.sh create mode 100755 3rdparty/caffe/examples/mnist/train_lenet_docker.sh create mode 100755 3rdparty/caffe/examples/mnist/train_lenet_rmsprop.sh create mode 100755 3rdparty/caffe/examples/mnist/train_mnist_autoencoder.sh create mode 100755 3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adadelta.sh create mode 100755 3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adagrad.sh create mode 100755 3rdparty/caffe/examples/mnist/train_mnist_autoencoder_nesterov.sh create mode 100644 3rdparty/caffe/examples/net_surgery.ipynb create mode 100644 3rdparty/caffe/examples/net_surgery/bvlc_caffenet_full_conv.prototxt create mode 100644 3rdparty/caffe/examples/net_surgery/conv.prototxt create mode 100644 3rdparty/caffe/examples/pascal-multilabel-with-datalayer.ipynb create mode 100644 3rdparty/caffe/examples/pycaffe/caffenet.py create mode 100644 3rdparty/caffe/examples/pycaffe/layers/pascal_multilabel_datalayers.py create mode 100644 3rdparty/caffe/examples/pycaffe/layers/pyloss.py create mode 100644 3rdparty/caffe/examples/pycaffe/linreg.prototxt create mode 100644 3rdparty/caffe/examples/pycaffe/tools.py create mode 100644 3rdparty/caffe/examples/siamese/convert_mnist_siamese_data.cpp create mode 100755 3rdparty/caffe/examples/siamese/create_mnist_siamese.sh create mode 100644 3rdparty/caffe/examples/siamese/mnist_siamese.ipynb create mode 100644 3rdparty/caffe/examples/siamese/mnist_siamese.prototxt create mode 100644 3rdparty/caffe/examples/siamese/mnist_siamese_solver.prototxt create mode 100644 3rdparty/caffe/examples/siamese/mnist_siamese_train_test.prototxt create mode 100644 3rdparty/caffe/examples/siamese/readme.md create mode 100755 3rdparty/caffe/examples/siamese/train_mnist_siamese.sh create mode 100644 3rdparty/caffe/examples/web_demo/app.py create mode 100644 3rdparty/caffe/examples/web_demo/exifutil.py create mode 100644 3rdparty/caffe/examples/web_demo/readme.md create mode 100644 3rdparty/caffe/examples/web_demo/requirements.txt create mode 100644 3rdparty/caffe/examples/web_demo/templates/index.html create mode 100644 3rdparty/caffe/include/caffe/blob.hpp create mode 100644 3rdparty/caffe/include/caffe/caffe.hpp create mode 100644 3rdparty/caffe/include/caffe/common.hpp create mode 100644 3rdparty/caffe/include/caffe/data_transformer.hpp create mode 100644 3rdparty/caffe/include/caffe/filler.hpp create mode 100644 3rdparty/caffe/include/caffe/internal_thread.hpp create mode 100644 3rdparty/caffe/include/caffe/layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layer_factory.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/absval_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/accuracy_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/argmax_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/base_conv_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/base_data_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/batch_norm_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/batch_reindex_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/bias_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/bnll_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/concat_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/contrastive_loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/conv_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/crop_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_conv_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_lcn_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_lrn_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_pooling_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_relu_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_sigmoid_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_softmax_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/cudnn_tanh_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/data_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/deconv_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/dropout_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/dummy_data_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/eltwise_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/elu_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/embed_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/euclidean_loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/exp_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/filter_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/flatten_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/hdf5_data_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/hdf5_output_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/hinge_loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/im2col_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/image_data_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/infogain_loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/inner_product_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/input_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/log_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/lrn_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/lstm_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/memory_data_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/multinomial_logistic_loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/mvn_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/neuron_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/parameter_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/pooling_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/power_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/prelu_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/python_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/recurrent_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/reduction_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/relu_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/reshape_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/rnn_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/scale_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/sigmoid_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/silence_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/slice_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/softmax_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/softmax_loss_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/split_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/spp_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/tanh_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/threshold_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/tile_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/layers/window_data_layer.hpp create mode 100644 3rdparty/caffe/include/caffe/net.hpp create mode 100644 3rdparty/caffe/include/caffe/parallel.hpp create mode 100644 3rdparty/caffe/include/caffe/sgd_solvers.hpp create mode 100644 3rdparty/caffe/include/caffe/solver.hpp create mode 100644 3rdparty/caffe/include/caffe/solver_factory.hpp create mode 100644 3rdparty/caffe/include/caffe/syncedmem.hpp create mode 100644 3rdparty/caffe/include/caffe/test/test_caffe_main.hpp create mode 100644 3rdparty/caffe/include/caffe/test/test_gradient_check_util.hpp create mode 100644 3rdparty/caffe/include/caffe/util/benchmark.hpp create mode 100644 3rdparty/caffe/include/caffe/util/blocking_queue.hpp create mode 100644 3rdparty/caffe/include/caffe/util/cudnn.hpp create mode 100644 3rdparty/caffe/include/caffe/util/db.hpp create mode 100644 3rdparty/caffe/include/caffe/util/db_leveldb.hpp create mode 100644 3rdparty/caffe/include/caffe/util/db_lmdb.hpp create mode 100644 3rdparty/caffe/include/caffe/util/device_alternate.hpp create mode 100644 3rdparty/caffe/include/caffe/util/format.hpp create mode 100644 3rdparty/caffe/include/caffe/util/gpu_util.cuh create mode 100644 3rdparty/caffe/include/caffe/util/hdf5.hpp create mode 100644 3rdparty/caffe/include/caffe/util/im2col.hpp create mode 100644 3rdparty/caffe/include/caffe/util/insert_splits.hpp create mode 100644 3rdparty/caffe/include/caffe/util/io.hpp create mode 100644 3rdparty/caffe/include/caffe/util/math_functions.hpp create mode 100644 3rdparty/caffe/include/caffe/util/mkl_alternate.hpp create mode 100644 3rdparty/caffe/include/caffe/util/nccl.hpp create mode 100644 3rdparty/caffe/include/caffe/util/rng.hpp create mode 100644 3rdparty/caffe/include/caffe/util/signal_handler.h create mode 100644 3rdparty/caffe/include/caffe/util/upgrade_proto.hpp create mode 100755 3rdparty/caffe/install_caffe.sh create mode 100644 3rdparty/caffe/matlab/+caffe/+test/test_io.m create mode 100644 3rdparty/caffe/matlab/+caffe/+test/test_net.m create mode 100644 3rdparty/caffe/matlab/+caffe/+test/test_solver.m create mode 100644 3rdparty/caffe/matlab/+caffe/Blob.m create mode 100644 3rdparty/caffe/matlab/+caffe/Layer.m create mode 100644 3rdparty/caffe/matlab/+caffe/Net.m create mode 100644 3rdparty/caffe/matlab/+caffe/Solver.m create mode 100644 3rdparty/caffe/matlab/+caffe/get_net.m create mode 100644 3rdparty/caffe/matlab/+caffe/get_solver.m create mode 100644 3rdparty/caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat create mode 100644 3rdparty/caffe/matlab/+caffe/io.m create mode 100644 3rdparty/caffe/matlab/+caffe/private/CHECK.m create mode 100644 3rdparty/caffe/matlab/+caffe/private/CHECK_FILE_EXIST.m create mode 100644 3rdparty/caffe/matlab/+caffe/private/caffe_.cpp create mode 100644 3rdparty/caffe/matlab/+caffe/private/is_valid_handle.m create mode 100644 3rdparty/caffe/matlab/+caffe/reset_all.m create mode 100644 3rdparty/caffe/matlab/+caffe/run_tests.m create mode 100644 3rdparty/caffe/matlab/+caffe/set_device.m create mode 100644 3rdparty/caffe/matlab/+caffe/set_mode_cpu.m create mode 100644 3rdparty/caffe/matlab/+caffe/set_mode_gpu.m create mode 100644 3rdparty/caffe/matlab/+caffe/version.m create mode 100644 3rdparty/caffe/matlab/CMakeLists.txt create mode 100644 3rdparty/caffe/matlab/demo/classification_demo.m create mode 100644 3rdparty/caffe/matlab/hdf5creation/.gitignore create mode 100644 3rdparty/caffe/matlab/hdf5creation/demo.m create mode 100644 3rdparty/caffe/matlab/hdf5creation/store2hdf5.m create mode 100644 3rdparty/caffe/python/CMakeLists.txt create mode 100644 3rdparty/caffe/python/caffe/_caffe.cpp create mode 100644 3rdparty/caffe/python/caffe/classifier.py create mode 100644 3rdparty/caffe/python/caffe/coord_map.py create mode 100644 3rdparty/caffe/python/caffe/detector.py create mode 100644 3rdparty/caffe/python/caffe/draw.py create mode 100644 3rdparty/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy create mode 100644 3rdparty/caffe/python/caffe/io.py create mode 100644 3rdparty/caffe/python/caffe/net_spec.py create mode 100644 3rdparty/caffe/python/caffe/pycaffe.py create mode 100644 3rdparty/caffe/python/caffe/test/test_coord_map.py create mode 100644 3rdparty/caffe/python/caffe/test/test_draw.py create mode 100644 3rdparty/caffe/python/caffe/test/test_io.py create mode 100644 3rdparty/caffe/python/caffe/test/test_layer_type_list.py create mode 100644 3rdparty/caffe/python/caffe/test/test_nccl.py create mode 100644 3rdparty/caffe/python/caffe/test/test_net.py create mode 100644 3rdparty/caffe/python/caffe/test/test_net_spec.py create mode 100644 3rdparty/caffe/python/caffe/test/test_python_layer.py create mode 100644 3rdparty/caffe/python/caffe/test/test_python_layer_with_param_str.py create mode 100644 3rdparty/caffe/python/caffe/test/test_solver.py create mode 100755 3rdparty/caffe/python/classify.py create mode 100755 3rdparty/caffe/python/detect.py create mode 100755 3rdparty/caffe/python/draw_net.py create mode 100644 3rdparty/caffe/python/requirements.txt create mode 100644 3rdparty/caffe/python/train.py create mode 100755 3rdparty/caffe/scripts/build_docs.sh create mode 100644 3rdparty/caffe/scripts/caffe create mode 100755 3rdparty/caffe/scripts/copy_notebook.py create mode 100755 3rdparty/caffe/scripts/cpp_lint.py create mode 100755 3rdparty/caffe/scripts/deploy_docs.sh create mode 100755 3rdparty/caffe/scripts/download_model_binary.py create mode 100755 3rdparty/caffe/scripts/download_model_from_gist.sh create mode 100755 3rdparty/caffe/scripts/gather_examples.sh create mode 100755 3rdparty/caffe/scripts/split_caffe_proto.py create mode 100755 3rdparty/caffe/scripts/travis/build.sh create mode 100644 3rdparty/caffe/scripts/travis/configure-cmake.sh create mode 100644 3rdparty/caffe/scripts/travis/configure-make.sh create mode 100755 3rdparty/caffe/scripts/travis/configure.sh create mode 100755 3rdparty/caffe/scripts/travis/defaults.sh create mode 100755 3rdparty/caffe/scripts/travis/install-deps.sh create mode 100755 3rdparty/caffe/scripts/travis/install-python-deps.sh create mode 100755 3rdparty/caffe/scripts/travis/setup-venv.sh create mode 100755 3rdparty/caffe/scripts/travis/test.sh create mode 100755 3rdparty/caffe/scripts/upload_model_to_gist.sh create mode 100644 3rdparty/caffe/src/caffe/CMakeLists.txt create mode 100644 3rdparty/caffe/src/caffe/blob.cpp create mode 100644 3rdparty/caffe/src/caffe/common.cpp create mode 100644 3rdparty/caffe/src/caffe/data_transformer.cpp create mode 100644 3rdparty/caffe/src/caffe/internal_thread.cpp create mode 100644 3rdparty/caffe/src/caffe/layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layer_factory.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/absval_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/absval_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/accuracy_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/argmax_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/base_conv_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/base_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/base_data_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/batch_norm_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/batch_norm_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/bias_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/bias_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/bnll_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/bnll_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/concat_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/concat_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/conv_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/conv_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/crop_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/crop_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/deconv_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/deconv_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/dropout_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/dropout_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/dummy_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/eltwise_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/eltwise_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/elu_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/elu_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/embed_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/embed_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/exp_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/exp_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/filter_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/filter_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/flatten_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/hinge_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/im2col_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/im2col_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/image_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/infogain_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/inner_product_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/inner_product_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/input_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/log_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/log_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/lrn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/lrn_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/lstm_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/memory_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/multinomial_logistic_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/mvn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/mvn_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/neuron_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/parameter_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/pooling_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/pooling_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/power_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/power_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/prelu_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/prelu_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/recurrent_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/recurrent_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/reduction_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/reduction_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/relu_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/relu_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/reshape_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/rnn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/scale_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/scale_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/sigmoid_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/sigmoid_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/silence_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/silence_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/slice_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/slice_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/softmax_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/softmax_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/split_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/split_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/spp_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/tanh_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/tanh_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/threshold_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/threshold_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/tile_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/layers/tile_layer.cu create mode 100644 3rdparty/caffe/src/caffe/layers/window_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/net.cpp create mode 100644 3rdparty/caffe/src/caffe/parallel.cpp create mode 100644 3rdparty/caffe/src/caffe/proto/caffe.proto create mode 100644 3rdparty/caffe/src/caffe/solver.cpp create mode 100644 3rdparty/caffe/src/caffe/solvers/adadelta_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/solvers/adadelta_solver.cu create mode 100644 3rdparty/caffe/src/caffe/solvers/adagrad_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/solvers/adagrad_solver.cu create mode 100644 3rdparty/caffe/src/caffe/solvers/adam_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/solvers/adam_solver.cu create mode 100644 3rdparty/caffe/src/caffe/solvers/nesterov_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/solvers/nesterov_solver.cu create mode 100644 3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cu create mode 100644 3rdparty/caffe/src/caffe/solvers/sgd_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/solvers/sgd_solver.cu create mode 100644 3rdparty/caffe/src/caffe/syncedmem.cpp create mode 100644 3rdparty/caffe/src/caffe/test/CMakeLists.txt create mode 100644 3rdparty/caffe/src/caffe/test/test_accuracy_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_argmax_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_batch_norm_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_batch_reindex_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_benchmark.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_bias_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_blob.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_caffe_main.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_common.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_concat_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_contrastive_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_convolution_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_crop_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_data/generate_sample_data.py create mode 100644 3rdparty/caffe/src/caffe/test/test_data/sample_data.h5 create mode 100644 3rdparty/caffe/src/caffe/test/test_data/sample_data_2_gzip.h5 create mode 100644 3rdparty/caffe/src/caffe/test/test_data/sample_data_list.txt create mode 100644 3rdparty/caffe/src/caffe/test/test_data/solver_data.h5 create mode 100644 3rdparty/caffe/src/caffe/test/test_data/solver_data_list.txt create mode 100644 3rdparty/caffe/src/caffe/test/test_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_data_transformer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_db.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_deconvolution_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_dummy_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_eltwise_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_embed_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_euclidean_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_filler.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_filter_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_flatten_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_gradient_based_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_hdf5_output_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_hdf5data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_hinge_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_im2col_kernel.cu create mode 100644 3rdparty/caffe/src/caffe/test/test_im2col_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_image_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_infogain_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_inner_product_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_internal_thread.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_io.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_layer_factory.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_lrn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_lstm_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_math_functions.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_maxpool_dropout_layers.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_memory_data_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_multinomial_logistic_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_mvn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_net.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_neuron_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_platform.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_pooling_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_power_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_protobuf.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_random_number_generator.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_reduction_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_reshape_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_rnn_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_scale_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_slice_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_softmax_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_softmax_with_loss_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_solver.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_solver_factory.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_split_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_spp_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_stochastic_pooling.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_syncedmem.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_tanh_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_threshold_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_tile_layer.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_upgrade_proto.cpp create mode 100644 3rdparty/caffe/src/caffe/test/test_util_blas.cpp create mode 100644 3rdparty/caffe/src/caffe/util/benchmark.cpp create mode 100644 3rdparty/caffe/src/caffe/util/blocking_queue.cpp create mode 100644 3rdparty/caffe/src/caffe/util/cudnn.cpp create mode 100644 3rdparty/caffe/src/caffe/util/db.cpp create mode 100644 3rdparty/caffe/src/caffe/util/db_leveldb.cpp create mode 100644 3rdparty/caffe/src/caffe/util/db_lmdb.cpp create mode 100644 3rdparty/caffe/src/caffe/util/hdf5.cpp create mode 100644 3rdparty/caffe/src/caffe/util/im2col.cpp create mode 100644 3rdparty/caffe/src/caffe/util/im2col.cu create mode 100644 3rdparty/caffe/src/caffe/util/insert_splits.cpp create mode 100644 3rdparty/caffe/src/caffe/util/io.cpp create mode 100644 3rdparty/caffe/src/caffe/util/math_functions.cpp create mode 100644 3rdparty/caffe/src/caffe/util/math_functions.cu create mode 100644 3rdparty/caffe/src/caffe/util/signal_handler.cpp create mode 100644 3rdparty/caffe/src/caffe/util/upgrade_proto.cpp create mode 100644 3rdparty/caffe/src/gtest/CMakeLists.txt create mode 100644 3rdparty/caffe/src/gtest/gtest-all.cpp create mode 100644 3rdparty/caffe/src/gtest/gtest.h create mode 100644 3rdparty/caffe/src/gtest/gtest_main.cc create mode 100644 3rdparty/caffe/tools/CMakeLists.txt create mode 100644 3rdparty/caffe/tools/caffe.cpp create mode 100644 3rdparty/caffe/tools/compute_image_mean.cpp create mode 100644 3rdparty/caffe/tools/convert_imageset.cpp create mode 100644 3rdparty/caffe/tools/device_query.cpp create mode 100755 3rdparty/caffe/tools/extra/extract_seconds.py create mode 100755 3rdparty/caffe/tools/extra/launch_resize_and_crop_images.sh create mode 100755 3rdparty/caffe/tools/extra/parse_log.py create mode 100755 3rdparty/caffe/tools/extra/parse_log.sh create mode 100644 3rdparty/caffe/tools/extra/plot_log.gnuplot.example create mode 100755 3rdparty/caffe/tools/extra/plot_training_log.py.example create mode 100755 3rdparty/caffe/tools/extra/resize_and_crop_images.py create mode 100755 3rdparty/caffe/tools/extra/summarize.py create mode 100644 3rdparty/caffe/tools/extract_features.cpp create mode 100644 3rdparty/caffe/tools/finetune_net.cpp create mode 100644 3rdparty/caffe/tools/net_speed_benchmark.cpp create mode 100644 3rdparty/caffe/tools/test_net.cpp create mode 100644 3rdparty/caffe/tools/train_net.cpp create mode 100644 3rdparty/caffe/tools/upgrade_net_proto_binary.cpp create mode 100644 3rdparty/caffe/tools/upgrade_net_proto_text.cpp create mode 100644 3rdparty/caffe/tools/upgrade_solver_proto_text.cpp create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 Makefile.config.Ubuntu14.example create mode 100644 Makefile.config.Ubuntu14_cuda_7.example create mode 100644 Makefile.config.Ubuntu16.example create mode 100644 Makefile.config.Ubuntu16_cuda_7.example create mode 100644 README.md create mode 100644 doc/GUI_help/GUI_help.odt create mode 100644 doc/GUI_help/GUI_help.png create mode 100755 doc/UML/1_0_0rc1/UML.mdj create mode 100644 doc/UML/1_0_0rc1/UML.pdf create mode 100644 doc/UML/1_0_0rc1/UML.png create mode 100644 doc/demo_overview.md create mode 100644 doc/doc_autogeneration.doxygen create mode 100644 doc/installation.md create mode 100644 doc/library_add_new_module.md create mode 100644 doc/library_extend_functionality.md create mode 100644 doc/library_overview.md create mode 100644 doc/media/dance.gif create mode 100644 doc/media/shake.gif create mode 100755 examples/media/COCO_val2014_000000000192.jpg create mode 100755 examples/media/COCO_val2014_000000000241.jpg create mode 100755 examples/media/COCO_val2014_000000000257.jpg create mode 100755 examples/media/COCO_val2014_000000000294.jpg create mode 100755 examples/media/COCO_val2014_000000000328.jpg create mode 100755 examples/media/COCO_val2014_000000000338.jpg create mode 100755 examples/media/COCO_val2014_000000000357.jpg create mode 100755 examples/media/COCO_val2014_000000000360.jpg create mode 100755 examples/media/COCO_val2014_000000000395.jpg create mode 100755 examples/media/COCO_val2014_000000000415.jpg create mode 100755 examples/media/COCO_val2014_000000000428.jpg create mode 100755 examples/media/COCO_val2014_000000000459.jpg create mode 100755 examples/media/COCO_val2014_000000000474.jpg create mode 100755 examples/media/COCO_val2014_000000000488.jpg create mode 100755 examples/media/COCO_val2014_000000000536.jpg create mode 100755 examples/media/COCO_val2014_000000000544.jpg create mode 100755 examples/media/COCO_val2014_000000000564.jpg create mode 100755 examples/media/COCO_val2014_000000000569.jpg create mode 100755 examples/media/COCO_val2014_000000000589.jpg create mode 100755 examples/media/COCO_val2014_000000000623.jpg create mode 100644 examples/media/video.avi create mode 100755 examples/openpose/rtpose.cpp create mode 100644 examples/tutorial_pose/1_extract_from_image.cpp create mode 100644 examples/tutorial_pose/2_extract_pose_or_heatmat_from_image.cpp create mode 100644 examples/tutorial_thread/1_openpose_read_and_display.cpp create mode 100644 examples/tutorial_thread/2_user_processing_function.cpp create mode 100644 examples/tutorial_thread/3_user_input_processing_and_output.cpp create mode 100644 examples/tutorial_thread/4_user_input_processing_output_and_datum.cpp create mode 100644 examples/tutorial_wrapper/1_user_asynchronous.cpp create mode 100644 examples/tutorial_wrapper/2_user_synchronous.cpp create mode 100644 examples/user_code/User custom files here will compile, try not to modify the CPM source code create mode 100644 include/openpose/core/array.hpp create mode 100644 include/openpose/core/arrayScaler.hpp create mode 100644 include/openpose/core/cvMatToOpInput.hpp create mode 100644 include/openpose/core/cvMatToOpOutput.hpp create mode 100644 include/openpose/core/datum.hpp create mode 100644 include/openpose/core/enumClasses.hpp create mode 100644 include/openpose/core/headers.hpp create mode 100644 include/openpose/core/net.hpp create mode 100644 include/openpose/core/netCaffe.hpp create mode 100644 include/openpose/core/nmsBase.hpp create mode 100644 include/openpose/core/nmsCaffe.hpp create mode 100644 include/openpose/core/opOutputToCvMat.hpp create mode 100644 include/openpose/core/renderer.hpp create mode 100644 include/openpose/core/resizeAndMergeBase.hpp create mode 100644 include/openpose/core/resizeAndMergeCaffe.hpp create mode 100644 include/openpose/core/scalePose.hpp create mode 100644 include/openpose/core/wArrayScaler.hpp create mode 100644 include/openpose/core/wCvMatToOpInput.hpp create mode 100644 include/openpose/core/wCvMatToOpOutput.hpp create mode 100644 include/openpose/core/wOpOutputToCvMat.hpp create mode 100644 include/openpose/experimental/filestream/headers.hpp create mode 100644 include/openpose/experimental/filestream/wPoseJsonCocoSaver.hpp create mode 100644 include/openpose/experimental/hands/enumClasses.hpp create mode 100644 include/openpose/experimental/hands/handsExtractor.hpp create mode 100644 include/openpose/experimental/hands/handsParameters.hpp create mode 100644 include/openpose/experimental/hands/handsRenderGpu.hpp create mode 100644 include/openpose/experimental/hands/handsRenderer.hpp create mode 100644 include/openpose/experimental/hands/headers.hpp create mode 100644 include/openpose/experimental/hands/wHandsExtractor.hpp create mode 100644 include/openpose/experimental/hands/wHandsRenderer.hpp create mode 100644 include/openpose/experimental/headers.hpp create mode 100644 include/openpose/experimental/producer/headers.hpp create mode 100644 include/openpose/experimental/producer/wPeoplePoseLoader.hpp create mode 100644 include/openpose/filestream/enumClasses.hpp create mode 100644 include/openpose/filestream/fileSaver.hpp create mode 100644 include/openpose/filestream/fileStream.hpp create mode 100644 include/openpose/filestream/headers.hpp create mode 100644 include/openpose/filestream/heatMapSaver.hpp create mode 100644 include/openpose/filestream/imageSaver.hpp create mode 100644 include/openpose/filestream/jsonOfstream.hpp create mode 100644 include/openpose/filestream/poseJsonCocoSaver.hpp create mode 100644 include/openpose/filestream/poseJsonSaver.hpp create mode 100644 include/openpose/filestream/poseSaver.hpp create mode 100644 include/openpose/filestream/videoSaver.hpp create mode 100644 include/openpose/filestream/wHeatMapSaver.hpp create mode 100644 include/openpose/filestream/wImageSaver.hpp create mode 100644 include/openpose/filestream/wPoseJsonSaver.hpp create mode 100644 include/openpose/filestream/wPoseSaver.hpp create mode 100644 include/openpose/filestream/wVideoSaver.hpp create mode 100644 include/openpose/gui/enumClasses.hpp create mode 100644 include/openpose/gui/frameDisplayer.hpp create mode 100644 include/openpose/gui/gui.hpp create mode 100644 include/openpose/gui/guiInfoAdder.hpp create mode 100644 include/openpose/gui/headers.hpp create mode 100644 include/openpose/gui/wGui.hpp create mode 100644 include/openpose/gui/wGuiInfoAdder.hpp create mode 100644 include/openpose/headers.hpp create mode 100644 include/openpose/pose/bodyPartConnectorBase.hpp create mode 100644 include/openpose/pose/bodyPartConnectorCaffe.hpp create mode 100644 include/openpose/pose/enumClasses.hpp create mode 100644 include/openpose/pose/headers.hpp create mode 100644 include/openpose/pose/poseExtractor.hpp create mode 100644 include/openpose/pose/poseExtractorCaffe.hpp create mode 100644 include/openpose/pose/poseParameters.hpp create mode 100644 include/openpose/pose/poseRenderGpu.hpp create mode 100644 include/openpose/pose/poseRenderer.hpp create mode 100644 include/openpose/pose/wPoseExtractor.hpp create mode 100644 include/openpose/pose/wPoseRenderer.hpp create mode 100644 include/openpose/producer/datumProducer.hpp create mode 100644 include/openpose/producer/enumClasses.hpp create mode 100644 include/openpose/producer/headers.hpp create mode 100644 include/openpose/producer/imageDirectoryReader.hpp create mode 100644 include/openpose/producer/producer.hpp create mode 100644 include/openpose/producer/videoCaptureReader.hpp create mode 100644 include/openpose/producer/videoReader.hpp create mode 100644 include/openpose/producer/wDatumProducer.hpp create mode 100644 include/openpose/producer/webcamReader.hpp create mode 100644 include/openpose/thread/enumClasses.hpp create mode 100644 include/openpose/thread/headers.hpp create mode 100644 include/openpose/thread/priorityQueue.hpp create mode 100644 include/openpose/thread/queue.hpp create mode 100644 include/openpose/thread/queueBase.hpp create mode 100644 include/openpose/thread/subThread.hpp create mode 100644 include/openpose/thread/subThreadNoQueue.hpp create mode 100644 include/openpose/thread/subThreadQueueIn.hpp create mode 100644 include/openpose/thread/subThreadQueueInOut.hpp create mode 100644 include/openpose/thread/subThreadQueueOut.hpp create mode 100644 include/openpose/thread/thread.hpp create mode 100644 include/openpose/thread/threadManager.hpp create mode 100644 include/openpose/thread/wIdGenerator.hpp create mode 100644 include/openpose/thread/wQueueOrderer.hpp create mode 100644 include/openpose/thread/worker.hpp create mode 100644 include/openpose/thread/workerConsumer.hpp create mode 100644 include/openpose/thread/workerProducer.hpp create mode 100644 include/openpose/utilities/check.hpp create mode 100644 include/openpose/utilities/cuda.hpp create mode 100644 include/openpose/utilities/cuda.hu create mode 100644 include/openpose/utilities/enumClasses.hpp create mode 100644 include/openpose/utilities/errorAndLog.hpp create mode 100644 include/openpose/utilities/fastMath.hpp create mode 100644 include/openpose/utilities/fileSystem.hpp create mode 100644 include/openpose/utilities/headers.hpp create mode 100644 include/openpose/utilities/macros.hpp create mode 100644 include/openpose/utilities/openCv.hpp create mode 100644 include/openpose/utilities/pointerContainer.hpp create mode 100644 include/openpose/utilities/profiler.hpp create mode 100644 include/openpose/utilities/string.hpp create mode 100644 include/openpose/wrapper/enumClasses.hpp create mode 100644 include/openpose/wrapper/headers.hpp create mode 100644 include/openpose/wrapper/wrapper.hpp create mode 100755 install_caffe_and_openpose.sh create mode 100755 install_openpose.sh create mode 100755 models/getModels.sh create mode 100755 models/pose/coco/pose_deploy_linevec.prototxt create mode 100755 models/pose/mpi/pose_deploy_linevec.prototxt create mode 100644 models/pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt create mode 100644 src/openpose/core/array.cpp create mode 100644 src/openpose/core/arrayScaler.cpp create mode 100644 src/openpose/core/cvMatToOpInput.cpp create mode 100644 src/openpose/core/cvMatToOpOutput.cpp create mode 100644 src/openpose/core/datum.cpp create mode 100644 src/openpose/core/defineTemplates.cpp create mode 100644 src/openpose/core/netCaffe.cpp create mode 100644 src/openpose/core/nmsBase.cpp create mode 100644 src/openpose/core/nmsBase.cu create mode 100644 src/openpose/core/nmsCaffe.cpp create mode 100644 src/openpose/core/opOutputToCvMat.cpp create mode 100644 src/openpose/core/renderer.cpp create mode 100644 src/openpose/core/resizeAndMergeBase.cpp create mode 100644 src/openpose/core/resizeAndMergeBase.cu create mode 100644 src/openpose/core/resizeAndMergeCaffe.cpp create mode 100644 src/openpose/core/scalePose.cpp create mode 100644 src/openpose/experimental/filestream/defineTemplates.cpp create mode 100644 src/openpose/experimental/hands/defineTemplates.cpp create mode 100644 src/openpose/experimental/hands/handsExtractor.cpp create mode 100644 src/openpose/experimental/hands/handsRenderGpu.cu create mode 100644 src/openpose/experimental/hands/handsRenderer.cpp create mode 100644 src/openpose/filestream/defineTemplates.cpp create mode 100644 src/openpose/filestream/fileSaver.cpp create mode 100644 src/openpose/filestream/fileStream.cpp create mode 100644 src/openpose/filestream/heatMapSaver.cpp create mode 100644 src/openpose/filestream/imageSaver.cpp create mode 100644 src/openpose/filestream/jsonOfstream.cpp create mode 100644 src/openpose/filestream/poseJsonCocoSaver.cpp create mode 100644 src/openpose/filestream/poseJsonSaver.cpp create mode 100644 src/openpose/filestream/poseSaver.cpp create mode 100644 src/openpose/filestream/videoSaver.cpp create mode 100644 src/openpose/gui/defineTemplates.cpp create mode 100644 src/openpose/gui/frameDisplayer.cpp create mode 100644 src/openpose/gui/gui.cpp create mode 100644 src/openpose/gui/guiInfoAdder.cpp create mode 100644 src/openpose/pose/bodyPartConnectorBase.cpp create mode 100644 src/openpose/pose/bodyPartConnectorBase.cu create mode 100644 src/openpose/pose/bodyPartConnectorCaffe.cpp create mode 100644 src/openpose/pose/defineTemplates.cpp create mode 100644 src/openpose/pose/poseExtractor.cpp create mode 100644 src/openpose/pose/poseExtractorCaffe.cpp create mode 100644 src/openpose/pose/poseRenderGpu.cu create mode 100644 src/openpose/pose/poseRenderer.cpp create mode 100644 src/openpose/producer/defineTemplates.cpp create mode 100644 src/openpose/producer/imageDirectoryReader.cpp create mode 100644 src/openpose/producer/producer.cpp create mode 100644 src/openpose/producer/videoCaptureReader.cpp create mode 100644 src/openpose/producer/videoReader.cpp create mode 100644 src/openpose/producer/webcamReader.cpp create mode 100644 src/openpose/thread/defineTemplates.cpp create mode 100644 src/openpose/utilities/cuda.cpp create mode 100644 src/openpose/utilities/errorAndLog.cpp create mode 100644 src/openpose/utilities/fileSystem.cpp create mode 100644 src/openpose/utilities/openCv.cpp create mode 100644 src/openpose/utilities/profiler.cpp create mode 100644 src/openpose/utilities/string.cpp create mode 100644 src/openpose/wrapper/defineTemplates.cpp create mode 100644 src/openpose/wrapper/wrapper.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..7303227a --- /dev/null +++ b/.gitignore @@ -0,0 +1,107 @@ +######################### Binary Files ######################### +# Compiled Object files +*.slo +*.lo +*.o +*.cuo + +# Compiled Dynamic libraries +*.so* +*.dylib + +# Compiled Static libraries +*.lai +*.la +*.a + +# Compiled protocol buffers +*.pb.h +*.pb.cc +*_pb2.py + +# Compiled python +*__init__.py +*.pyc + +# Compiled MATLAB +*.mex* + +# IPython notebook checkpoints +.ipynb_checkpoints + +# LevelDB files +*.sst +*.ldb +LOCK +LOG* +CURRENT +MANIFEST-* + +######################### IDEs Files ######################### +# Editor temporaries +*.swp +*~ + +# Sublime Text settings +*.sublime-workspace +*.sublime-project + +# Eclipse Project settings +*.*project +.settings + +# QtCreator files +*.user + +# PyCharm files +.idea + +# OSX dir files +.DS_Store + +######################### Caffe Files / Folders ######################### +# User's build configuration +Makefile.config + +# Data and models are either + # 1. reference, and not casually committed + # 2. custom, and live on their own unless they're deliberated contributed +3rdparty/caffe/.* +distribute/ +.build_release/ +.build_debug/ +*.caffemodel +*.caffemodel.h5 +*.solverstate +*.solverstate.h5 +*.binaryproto +*leveldb +*lmdb + +######################### Compilation (build, distribute & bins) Files / Folders ######################### +*.bin +*.testbin +build +*build_debug/ +*build_release/ +*cmake_build +distribute/* +python/caffe/proto/ + +######################### Generated Documentation ######################### +_site +docs/_site +docs/dev +docs/gathered +doxygen +html/ + +######################### Video Files ######################### +# Testing videos +*.mp4 +*.mov + +######################### Validation Scripts & Testing ######################### +*validation.sh +validation*.sh +output*/ diff --git a/3rdparty/Versions.txt b/3rdparty/Versions.txt new file mode 100644 index 00000000..4083f0cf --- /dev/null +++ b/3rdparty/Versions.txt @@ -0,0 +1,4 @@ +Caffe: + - Version 1.0.0, extracted from GitHub on 04/16/2017 from the current master branch. + - Link: https://github.com/BVLC/caffe + diff --git a/3rdparty/caffe/CMakeLists.txt b/3rdparty/caffe/CMakeLists.txt new file mode 100644 index 00000000..08f56a33 --- /dev/null +++ b/3rdparty/caffe/CMakeLists.txt @@ -0,0 +1,122 @@ +cmake_minimum_required(VERSION 2.8.7) +if(POLICY CMP0046) + cmake_policy(SET CMP0046 NEW) +endif() +if(POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +endif() + +# ---[ Caffe project +project(Caffe C CXX) + +# ---[ Caffe version +set(CAFFE_TARGET_VERSION "1.0.0" CACHE STRING "Caffe logical version") +set(CAFFE_TARGET_SOVERSION "1.0.0" CACHE STRING "Caffe soname version") +add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION}) + +# ---[ Using cmake scripts and modules +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) + +include(ExternalProject) +include(GNUInstallDirs) + +include(cmake/Utils.cmake) +include(cmake/Targets.cmake) +include(cmake/Misc.cmake) +include(cmake/Summary.cmake) +include(cmake/ConfigGen.cmake) + +# ---[ Options +caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA +caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY) +caffe_option(USE_NCCL "Build Caffe with NCCL library support" OFF) +caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON) +caffe_option(BUILD_python "Build Python wrapper" ON) +set(python_version "2" CACHE STRING "Specify which Python version to use") +caffe_option(BUILD_matlab "Build Matlab wrapper" OFF IF UNIX OR APPLE) +caffe_option(BUILD_docs "Build documentation" ON IF UNIX OR APPLE) +caffe_option(BUILD_python_layer "Build the Caffe Python layer" ON) +caffe_option(USE_OPENCV "Build with OpenCV support" ON) +caffe_option(USE_LEVELDB "Build with levelDB" ON) +caffe_option(USE_LMDB "Build with lmdb" ON) +caffe_option(ALLOW_LMDB_NOLOCK "Allow MDB_NOLOCK when reading LMDB files (only if necessary)" OFF) +caffe_option(USE_OPENMP "Link with OpenMP (when your BLAS wants OpenMP and you get linker errors)" OFF) + +# ---[ Dependencies +include(cmake/Dependencies.cmake) + +# ---[ Flags +if(UNIX OR APPLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall") +endif() + +caffe_set_caffe_link() + +if(USE_libstdcpp) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++") + message("-- Warning: forcing libstdc++ (controlled by USE_libstdcpp option in cmake)") +endif() + +# ---[ Warnings +caffe_warnings_disable(CMAKE_CXX_FLAGS -Wno-sign-compare -Wno-uninitialized) + +# ---[ Config generation +configure_file(cmake/Templates/caffe_config.h.in "${PROJECT_BINARY_DIR}/caffe_config.h") + +# ---[ Includes +set(Caffe_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include) +set(Caffe_SRC_DIR ${PROJECT_SOURCE_DIR}/src) +include_directories(${PROJECT_BINARY_DIR}) + +# ---[ Includes & defines for CUDA + +# cuda_compile() does not have per-call dependencies or include pathes +# (cuda_compile() has per-call flags, but we set them here too for clarity) +# +# list(REMOVE_ITEM ...) invocations remove PRIVATE and PUBLIC keywords from collected definitions and include pathes +if(HAVE_CUDA) + # pass include pathes to cuda_include_directories() + set(Caffe_ALL_INCLUDE_DIRS ${Caffe_INCLUDE_DIRS}) + list(REMOVE_ITEM Caffe_ALL_INCLUDE_DIRS PRIVATE PUBLIC) + cuda_include_directories(${Caffe_INCLUDE_DIR} ${Caffe_SRC_DIR} ${Caffe_ALL_INCLUDE_DIRS}) + + # add definitions to nvcc flags directly + set(Caffe_ALL_DEFINITIONS ${Caffe_DEFINITIONS}) + list(REMOVE_ITEM Caffe_ALL_DEFINITIONS PRIVATE PUBLIC) + list(APPEND CUDA_NVCC_FLAGS ${Caffe_ALL_DEFINITIONS}) +endif() + +# ---[ Subdirectories +add_subdirectory(src/gtest) +add_subdirectory(src/caffe) +add_subdirectory(tools) +add_subdirectory(examples) +add_subdirectory(python) +add_subdirectory(matlab) +add_subdirectory(docs) + +# ---[ Linter target +add_custom_target(lint COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/lint.cmake) + +# ---[ pytest target +if(BUILD_python) + add_custom_target(pytest COMMAND python${python_version} -m unittest discover -s caffe/test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python ) + add_dependencies(pytest pycaffe) +endif() + +# ---[ uninstall target +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Uninstall.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake + IMMEDIATE @ONLY) + +add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake) + +# ---[ Configuration summary +caffe_print_configuration_summary() + +# ---[ Export configs generation +caffe_generate_export_configs() + diff --git a/3rdparty/caffe/CONTRIBUTING.md b/3rdparty/caffe/CONTRIBUTING.md new file mode 100644 index 00000000..8cd5e56c --- /dev/null +++ b/3rdparty/caffe/CONTRIBUTING.md @@ -0,0 +1,30 @@ +# Contributing + +## Issues + +Specific Caffe design and development issues, bugs, and feature requests are maintained by GitHub Issues. + +_Please do not post usage, installation, or modeling questions, or other requests for help to Issues._ +Use the [caffe-users list](https://groups.google.com/forum/#!forum/caffe-users) instead. This helps developers maintain a clear, uncluttered, and efficient view of the state of Caffe. + +When reporting a bug, it's most helpful to provide the following information, where applicable: + +* What steps reproduce the bug? +* Can you reproduce the bug using the latest [master](https://github.com/BVLC/caffe/tree/master), compiled with the `DEBUG` make option? +* What hardware and operating system/distribution are you running? +* If the bug is a crash, provide the backtrace (usually printed by Caffe; always obtainable with `gdb`). + +Try to give your issue a title that is succinct and specific. The devs will rename issues as needed to keep track of them. + +## Pull Requests + +Caffe welcomes all contributions. + +See the [contributing guide](http://caffe.berkeleyvision.org/development.html) for details. + +Briefly: read commit by commit, a PR should tell a clean, compelling story of _one_ improvement to Caffe. In particular: + +* A PR should do one clear thing that obviously improves Caffe, and nothing more. Making many smaller PRs is better than making one large PR; review effort is superlinear in the amount of code involved. +* Similarly, each commit should be a small, atomic change representing one step in development. PRs should be made of many commits where appropriate. +* Please do rewrite PR history to be clean rather than chronological. Within-PR bugfixes, style cleanups, reversions, etc. should be squashed and should not appear in merged PR history. +* Anything nonobvious from the code should be explained in comments, commit messages, or the PR description, as appropriate. diff --git a/3rdparty/caffe/CONTRIBUTORS.md b/3rdparty/caffe/CONTRIBUTORS.md new file mode 100644 index 00000000..3fd76781 --- /dev/null +++ b/3rdparty/caffe/CONTRIBUTORS.md @@ -0,0 +1,19 @@ +# Contributors + +Caffe is developed by a core set of BAIR members and the open-source community. + +We thank all of our [contributors](https://github.com/BVLC/caffe/graphs/contributors)! + +**For the detailed history of contributions** of a given file, try + + git blame file + +to see line-by-line credits and + + git log --follow file + +to see the change log even across renames and rewrites. + +Please refer to the [acknowledgements](http://caffe.berkeleyvision.org/#acknowledgements) on the Caffe site for further details. + +**Copyright** is held by the original contributor according to the versioning history; see LICENSE. diff --git a/3rdparty/caffe/INSTALL.md b/3rdparty/caffe/INSTALL.md new file mode 100644 index 00000000..05c714db --- /dev/null +++ b/3rdparty/caffe/INSTALL.md @@ -0,0 +1,7 @@ +# Installation + +See http://caffe.berkeleyvision.org/installation.html for the latest +installation instructions. + +Check the users group in case you need help: +https://groups.google.com/forum/#!forum/caffe-users diff --git a/3rdparty/caffe/LICENSE b/3rdparty/caffe/LICENSE new file mode 100644 index 00000000..0c99adc1 --- /dev/null +++ b/3rdparty/caffe/LICENSE @@ -0,0 +1,44 @@ +COPYRIGHT + +All contributions by the University of California: +Copyright (c) 2014-2017 The Regents of the University of California (Regents) +All rights reserved. + +All other contributions: +Copyright (c) 2014-2017, the respective contributors +All rights reserved. + +Caffe uses a shared copyright model: each contributor holds copyright over +their contributions to Caffe. The project versioning records all such +contribution and copyright details. If a contributor wants to further mark +their specific copyright on a particular contribution, they should indicate +their copyright solely in the commit message of the change when it is +committed. + +LICENSE + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +CONTRIBUTION AGREEMENT + +By contributing to the BVLC/caffe repository through pull-request, comment, +or otherwise, the contributor releases their content to the +license and copyright terms herein. diff --git a/3rdparty/caffe/Makefile b/3rdparty/caffe/Makefile new file mode 100644 index 00000000..4d324160 --- /dev/null +++ b/3rdparty/caffe/Makefile @@ -0,0 +1,699 @@ +PROJECT := caffe + +CONFIG_FILE := Makefile.config +# Explicitly check for the config file, otherwise make -k will proceed anyway. +ifeq ($(wildcard $(CONFIG_FILE)),) +$(error $(CONFIG_FILE) not found. See $(CONFIG_FILE).example.) +endif +include $(CONFIG_FILE) + +BUILD_DIR_LINK := $(BUILD_DIR) +ifeq ($(RELEASE_BUILD_DIR),) + RELEASE_BUILD_DIR := .$(BUILD_DIR)_release +endif +ifeq ($(DEBUG_BUILD_DIR),) + DEBUG_BUILD_DIR := .$(BUILD_DIR)_debug +endif + +DEBUG ?= 0 +ifeq ($(DEBUG), 1) + BUILD_DIR := $(DEBUG_BUILD_DIR) + OTHER_BUILD_DIR := $(RELEASE_BUILD_DIR) +else + BUILD_DIR := $(RELEASE_BUILD_DIR) + OTHER_BUILD_DIR := $(DEBUG_BUILD_DIR) +endif + +# All of the directories containing code. +SRC_DIRS := $(shell find * -type d -exec bash -c "find {} -maxdepth 1 \ + \( -name '*.cpp' -o -name '*.proto' \) | grep -q ." \; -print) + +# The target shared library name +LIBRARY_NAME := $(PROJECT) +LIB_BUILD_DIR := $(BUILD_DIR)/lib +STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a +DYNAMIC_VERSION_MAJOR := 1 +DYNAMIC_VERSION_MINOR := 0 +DYNAMIC_VERSION_REVISION := 0 +DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so +#DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR) +DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) +DYNAMIC_NAME := $(LIB_BUILD_DIR)/$(DYNAMIC_VERSIONED_NAME_SHORT) +COMMON_FLAGS += -DCAFFE_VERSION=$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) + +############################## +# Get all source files +############################## +# CXX_SRCS are the source files excluding the test ones. +CXX_SRCS := $(shell find src/$(PROJECT) ! -name "test_*.cpp" -name "*.cpp") +# CU_SRCS are the cuda source files +CU_SRCS := $(shell find src/$(PROJECT) ! -name "test_*.cu" -name "*.cu") +# TEST_SRCS are the test source files +TEST_MAIN_SRC := src/$(PROJECT)/test/test_caffe_main.cpp +TEST_SRCS := $(shell find src/$(PROJECT) -name "test_*.cpp") +TEST_SRCS := $(filter-out $(TEST_MAIN_SRC), $(TEST_SRCS)) +TEST_CU_SRCS := $(shell find src/$(PROJECT) -name "test_*.cu") +GTEST_SRC := src/gtest/gtest-all.cpp +# TOOL_SRCS are the source files for the tool binaries +TOOL_SRCS := $(shell find tools -name "*.cpp") +# EXAMPLE_SRCS are the source files for the example binaries +EXAMPLE_SRCS := $(shell find examples -name "*.cpp") +# BUILD_INCLUDE_DIR contains any generated header files we want to include. +BUILD_INCLUDE_DIR := $(BUILD_DIR)/src +# PROTO_SRCS are the protocol buffer definitions +PROTO_SRC_DIR := src/$(PROJECT)/proto +PROTO_SRCS := $(wildcard $(PROTO_SRC_DIR)/*.proto) +# PROTO_BUILD_DIR will contain the .cc and obj files generated from +# PROTO_SRCS; PROTO_BUILD_INCLUDE_DIR will contain the .h header files +PROTO_BUILD_DIR := $(BUILD_DIR)/$(PROTO_SRC_DIR) +PROTO_BUILD_INCLUDE_DIR := $(BUILD_INCLUDE_DIR)/$(PROJECT)/proto +# NONGEN_CXX_SRCS includes all source/header files except those generated +# automatically (e.g., by proto). +NONGEN_CXX_SRCS := $(shell find \ + src/$(PROJECT) \ + include/$(PROJECT) \ + python/$(PROJECT) \ + matlab/+$(PROJECT)/private \ + examples \ + tools \ + -name "*.cpp" -or -name "*.hpp" -or -name "*.cu" -or -name "*.cuh") +LINT_SCRIPT := scripts/cpp_lint.py +LINT_OUTPUT_DIR := $(BUILD_DIR)/.lint +LINT_EXT := lint.txt +LINT_OUTPUTS := $(addsuffix .$(LINT_EXT), $(addprefix $(LINT_OUTPUT_DIR)/, $(NONGEN_CXX_SRCS))) +EMPTY_LINT_REPORT := $(BUILD_DIR)/.$(LINT_EXT) +NONEMPTY_LINT_REPORT := $(BUILD_DIR)/$(LINT_EXT) +# PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) +PY$(PROJECT)_SRC := python/$(PROJECT)/_$(PROJECT).cpp +PY$(PROJECT)_SO := python/$(PROJECT)/_$(PROJECT).so +PY$(PROJECT)_HXX := include/$(PROJECT)/layers/python_layer.hpp +# MAT$(PROJECT)_SRC is the mex entrance point of matlab package for $(PROJECT) +MAT$(PROJECT)_SRC := matlab/+$(PROJECT)/private/$(PROJECT)_.cpp +ifneq ($(MATLAB_DIR),) + MAT_SO_EXT := $(shell $(MATLAB_DIR)/bin/mexext) +endif +MAT$(PROJECT)_SO := matlab/+$(PROJECT)/private/$(PROJECT)_.$(MAT_SO_EXT) + +############################## +# Derive generated files +############################## +# The generated files for protocol buffers +PROTO_GEN_HEADER_SRCS := $(addprefix $(PROTO_BUILD_DIR)/, \ + $(notdir ${PROTO_SRCS:.proto=.pb.h})) +PROTO_GEN_HEADER := $(addprefix $(PROTO_BUILD_INCLUDE_DIR)/, \ + $(notdir ${PROTO_SRCS:.proto=.pb.h})) +PROTO_GEN_CC := $(addprefix $(BUILD_DIR)/, ${PROTO_SRCS:.proto=.pb.cc}) +PY_PROTO_BUILD_DIR := python/$(PROJECT)/proto +PY_PROTO_INIT := python/$(PROJECT)/proto/__init__.py +PROTO_GEN_PY := $(foreach file,${PROTO_SRCS:.proto=_pb2.py}, \ + $(PY_PROTO_BUILD_DIR)/$(notdir $(file))) +# The objects corresponding to the source files +# These objects will be linked into the final shared library, so we +# exclude the tool, example, and test objects. +CXX_OBJS := $(addprefix $(BUILD_DIR)/, ${CXX_SRCS:.cpp=.o}) +CU_OBJS := $(addprefix $(BUILD_DIR)/cuda/, ${CU_SRCS:.cu=.o}) +PROTO_OBJS := ${PROTO_GEN_CC:.cc=.o} +OBJS := $(PROTO_OBJS) $(CXX_OBJS) $(CU_OBJS) +# tool, example, and test objects +TOOL_OBJS := $(addprefix $(BUILD_DIR)/, ${TOOL_SRCS:.cpp=.o}) +TOOL_BUILD_DIR := $(BUILD_DIR)/tools +TEST_CXX_BUILD_DIR := $(BUILD_DIR)/src/$(PROJECT)/test +TEST_CU_BUILD_DIR := $(BUILD_DIR)/cuda/src/$(PROJECT)/test +TEST_CXX_OBJS := $(addprefix $(BUILD_DIR)/, ${TEST_SRCS:.cpp=.o}) +TEST_CU_OBJS := $(addprefix $(BUILD_DIR)/cuda/, ${TEST_CU_SRCS:.cu=.o}) +TEST_OBJS := $(TEST_CXX_OBJS) $(TEST_CU_OBJS) +GTEST_OBJ := $(addprefix $(BUILD_DIR)/, ${GTEST_SRC:.cpp=.o}) +EXAMPLE_OBJS := $(addprefix $(BUILD_DIR)/, ${EXAMPLE_SRCS:.cpp=.o}) +# Output files for automatic dependency generation +DEPS := ${CXX_OBJS:.o=.d} ${CU_OBJS:.o=.d} ${TEST_CXX_OBJS:.o=.d} \ + ${TEST_CU_OBJS:.o=.d} $(BUILD_DIR)/${MAT$(PROJECT)_SO:.$(MAT_SO_EXT)=.d} +# tool, example, and test bins +TOOL_BINS := ${TOOL_OBJS:.o=.bin} +EXAMPLE_BINS := ${EXAMPLE_OBJS:.o=.bin} +# symlinks to tool bins without the ".bin" extension +TOOL_BIN_LINKS := ${TOOL_BINS:.bin=} +# Put the test binaries in build/test for convenience. +TEST_BIN_DIR := $(BUILD_DIR)/test +TEST_CU_BINS := $(addsuffix .testbin,$(addprefix $(TEST_BIN_DIR)/, \ + $(foreach obj,$(TEST_CU_OBJS),$(basename $(notdir $(obj)))))) +TEST_CXX_BINS := $(addsuffix .testbin,$(addprefix $(TEST_BIN_DIR)/, \ + $(foreach obj,$(TEST_CXX_OBJS),$(basename $(notdir $(obj)))))) +TEST_BINS := $(TEST_CXX_BINS) $(TEST_CU_BINS) +# TEST_ALL_BIN is the test binary that links caffe dynamically. +TEST_ALL_BIN := $(TEST_BIN_DIR)/test_all.testbin + +############################## +# Derive compiler warning dump locations +############################## +WARNS_EXT := warnings.txt +CXX_WARNS := $(addprefix $(BUILD_DIR)/, ${CXX_SRCS:.cpp=.o.$(WARNS_EXT)}) +CU_WARNS := $(addprefix $(BUILD_DIR)/cuda/, ${CU_SRCS:.cu=.o.$(WARNS_EXT)}) +TOOL_WARNS := $(addprefix $(BUILD_DIR)/, ${TOOL_SRCS:.cpp=.o.$(WARNS_EXT)}) +EXAMPLE_WARNS := $(addprefix $(BUILD_DIR)/, ${EXAMPLE_SRCS:.cpp=.o.$(WARNS_EXT)}) +TEST_WARNS := $(addprefix $(BUILD_DIR)/, ${TEST_SRCS:.cpp=.o.$(WARNS_EXT)}) +TEST_CU_WARNS := $(addprefix $(BUILD_DIR)/cuda/, ${TEST_CU_SRCS:.cu=.o.$(WARNS_EXT)}) +ALL_CXX_WARNS := $(CXX_WARNS) $(TOOL_WARNS) $(EXAMPLE_WARNS) $(TEST_WARNS) +ALL_CU_WARNS := $(CU_WARNS) $(TEST_CU_WARNS) +ALL_WARNS := $(ALL_CXX_WARNS) $(ALL_CU_WARNS) + +EMPTY_WARN_REPORT := $(BUILD_DIR)/.$(WARNS_EXT) +NONEMPTY_WARN_REPORT := $(BUILD_DIR)/$(WARNS_EXT) + +############################## +# Derive include and lib directories +############################## +CUDA_INCLUDE_DIR := $(CUDA_DIR)/include + +CUDA_LIB_DIR := +# add /lib64 only if it exists +ifneq ("$(wildcard $(CUDA_DIR)/lib64)","") + CUDA_LIB_DIR += $(CUDA_DIR)/lib64 +endif +CUDA_LIB_DIR += $(CUDA_DIR)/lib + +INCLUDE_DIRS += $(BUILD_INCLUDE_DIR) ./src ./include +ifneq ($(CPU_ONLY), 1) + INCLUDE_DIRS += $(CUDA_INCLUDE_DIR) + LIBRARY_DIRS += $(CUDA_LIB_DIR) + LIBRARIES := cudart cublas curand +endif + +LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 + +# handle IO dependencies +USE_LEVELDB ?= 1 +USE_LMDB ?= 1 +USE_OPENCV ?= 1 + +ifeq ($(USE_LEVELDB), 1) + LIBRARIES += leveldb snappy +endif +ifeq ($(USE_LMDB), 1) + LIBRARIES += lmdb +endif +ifeq ($(USE_OPENCV), 1) + LIBRARIES += opencv_core opencv_highgui opencv_imgproc + + ifeq ($(OPENCV_VERSION), 3) + LIBRARIES += opencv_imgcodecs + endif + +endif +PYTHON_LIBRARIES ?= boost_python python2.7 +WARNINGS := -Wall -Wno-sign-compare + +############################## +# Set build directories +############################## + +DISTRIBUTE_DIR ?= distribute +DISTRIBUTE_SUBDIRS := $(DISTRIBUTE_DIR)/bin $(DISTRIBUTE_DIR)/lib +DIST_ALIASES := dist +ifneq ($(strip $(DISTRIBUTE_DIR)),distribute) + DIST_ALIASES += distribute +endif + +ALL_BUILD_DIRS := $(sort $(BUILD_DIR) $(addprefix $(BUILD_DIR)/, $(SRC_DIRS)) \ + $(addprefix $(BUILD_DIR)/cuda/, $(SRC_DIRS)) \ + $(LIB_BUILD_DIR) $(TEST_BIN_DIR) $(PY_PROTO_BUILD_DIR) $(LINT_OUTPUT_DIR) \ + $(DISTRIBUTE_SUBDIRS) $(PROTO_BUILD_INCLUDE_DIR)) + +############################## +# Set directory for Doxygen-generated documentation +############################## +DOXYGEN_CONFIG_FILE ?= ./.Doxyfile +# should be the same as OUTPUT_DIRECTORY in the .Doxyfile +DOXYGEN_OUTPUT_DIR ?= ./doxygen +DOXYGEN_COMMAND ?= doxygen +# All the files that might have Doxygen documentation. +DOXYGEN_SOURCES := $(shell find \ + src/$(PROJECT) \ + include/$(PROJECT) \ + python/ \ + matlab/ \ + examples \ + tools \ + -name "*.cpp" -or -name "*.hpp" -or -name "*.cu" -or -name "*.cuh" -or \ + -name "*.py" -or -name "*.m") +DOXYGEN_SOURCES += $(DOXYGEN_CONFIG_FILE) + + +############################## +# Configure build +############################## + +# Determine platform +UNAME := $(shell uname -s) +ifeq ($(UNAME), Linux) + LINUX := 1 +else ifeq ($(UNAME), Darwin) + OSX := 1 + OSX_MAJOR_VERSION := $(shell sw_vers -productVersion | cut -f 1 -d .) + OSX_MINOR_VERSION := $(shell sw_vers -productVersion | cut -f 2 -d .) +endif + +# Linux +ifeq ($(LINUX), 1) + CXX ?= /usr/bin/g++ + GCCVERSION := $(shell $(CXX) -dumpversion | cut -f1,2 -d.) + # older versions of gcc are too dumb to build boost with -Wuninitalized + ifeq ($(shell echo | awk '{exit $(GCCVERSION) < 4.6;}'), 1) + WARNINGS += -Wno-uninitialized + endif + # boost::thread is reasonably called boost_thread (compare OS X) + # We will also explicitly add stdc++ to the link target. + LIBRARIES += boost_thread stdc++ + VERSIONFLAGS += -Wl,-soname,$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../lib +endif + +# OS X: +# clang++ instead of g++ +# libstdc++ for NVCC compatibility on OS X >= 10.9 with CUDA < 7.0 +ifeq ($(OSX), 1) + CXX := /usr/bin/clang++ + ifneq ($(CPU_ONLY), 1) + CUDA_VERSION := $(shell $(CUDA_DIR)/bin/nvcc -V | grep -o 'release [0-9.]*' | tr -d '[a-z ]') + ifeq ($(shell echo | awk '{exit $(CUDA_VERSION) < 7.0;}'), 1) + CXXFLAGS += -stdlib=libstdc++ + LINKFLAGS += -stdlib=libstdc++ + endif + # clang throws this warning for cuda headers + WARNINGS += -Wno-unneeded-internal-declaration + # 10.11 strips DYLD_* env vars so link CUDA (rpath is available on 10.5+) + OSX_10_OR_LATER := $(shell [ $(OSX_MAJOR_VERSION) -ge 10 ] && echo true) + OSX_10_5_OR_LATER := $(shell [ $(OSX_MINOR_VERSION) -ge 5 ] && echo true) + ifeq ($(OSX_10_OR_LATER),true) + ifeq ($(OSX_10_5_OR_LATER),true) + LDFLAGS += -Wl,-rpath,$(CUDA_LIB_DIR) + endif + endif + endif + # gtest needs to use its own tuple to not conflict with clang + COMMON_FLAGS += -DGTEST_USE_OWN_TR1_TUPLE=1 + # boost::thread is called boost_thread-mt to mark multithreading on OS X + LIBRARIES += boost_thread-mt + # we need to explicitly ask for the rpath to be obeyed + ORIGIN := @loader_path + VERSIONFLAGS += -Wl,-install_name,@rpath/$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../../build/lib +else + ORIGIN := \$$ORIGIN +endif + +# Custom compiler +ifdef CUSTOM_CXX + CXX := $(CUSTOM_CXX) +endif + +# Static linking +ifneq (,$(findstring clang++,$(CXX))) + STATIC_LINK_COMMAND := -Wl,-force_load $(STATIC_NAME) +else ifneq (,$(findstring g++,$(CXX))) + STATIC_LINK_COMMAND := -Wl,--whole-archive $(STATIC_NAME) -Wl,--no-whole-archive +else + # The following line must not be indented with a tab, since we are not inside a target + $(error Cannot static link with the $(CXX) compiler) +endif + +# Debugging +ifeq ($(DEBUG), 1) + COMMON_FLAGS += -DDEBUG -g -O0 + NVCCFLAGS += -G +else + COMMON_FLAGS += -DNDEBUG -O2 +endif + +# cuDNN acceleration configuration. +ifeq ($(USE_CUDNN), 1) + LIBRARIES += cudnn + COMMON_FLAGS += -DUSE_CUDNN +endif + +# NCCL acceleration configuration +ifeq ($(USE_NCCL), 1) + LIBRARIES += nccl + COMMON_FLAGS += -DUSE_NCCL +endif + +# configure IO libraries +ifeq ($(USE_OPENCV), 1) + COMMON_FLAGS += -DUSE_OPENCV +endif +ifeq ($(USE_LEVELDB), 1) + COMMON_FLAGS += -DUSE_LEVELDB +endif +ifeq ($(USE_LMDB), 1) + COMMON_FLAGS += -DUSE_LMDB +ifeq ($(ALLOW_LMDB_NOLOCK), 1) + COMMON_FLAGS += -DALLOW_LMDB_NOLOCK +endif +endif + +# CPU-only configuration +ifeq ($(CPU_ONLY), 1) + OBJS := $(PROTO_OBJS) $(CXX_OBJS) + TEST_OBJS := $(TEST_CXX_OBJS) + TEST_BINS := $(TEST_CXX_BINS) + ALL_WARNS := $(ALL_CXX_WARNS) + TEST_FILTER := --gtest_filter="-*GPU*" + COMMON_FLAGS += -DCPU_ONLY +endif + +# Python layer support +ifeq ($(WITH_PYTHON_LAYER), 1) + COMMON_FLAGS += -DWITH_PYTHON_LAYER + LIBRARIES += $(PYTHON_LIBRARIES) +endif + +# BLAS configuration (default = ATLAS) +BLAS ?= atlas +ifeq ($(BLAS), mkl) + # MKL + LIBRARIES += mkl_rt + COMMON_FLAGS += -DUSE_MKL + MKLROOT ?= /opt/intel/mkl + BLAS_INCLUDE ?= $(MKLROOT)/include + BLAS_LIB ?= $(MKLROOT)/lib $(MKLROOT)/lib/intel64 +else ifeq ($(BLAS), open) + # OpenBLAS + LIBRARIES += openblas +else + # ATLAS + ifeq ($(LINUX), 1) + ifeq ($(BLAS), atlas) + # Linux simply has cblas and atlas + LIBRARIES += cblas atlas + endif + else ifeq ($(OSX), 1) + # OS X packages atlas as the vecLib framework + LIBRARIES += cblas + # 10.10 has accelerate while 10.9 has veclib + XCODE_CLT_VER := $(shell pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep 'version' | sed 's/[^0-9]*\([0-9]\).*/\1/') + XCODE_CLT_GEQ_7 := $(shell [ $(XCODE_CLT_VER) -gt 6 ] && echo 1) + XCODE_CLT_GEQ_6 := $(shell [ $(XCODE_CLT_VER) -gt 5 ] && echo 1) + ifeq ($(XCODE_CLT_GEQ_7), 1) + BLAS_INCLUDE ?= /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/$(shell ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ | sort | tail -1)/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers + else ifeq ($(XCODE_CLT_GEQ_6), 1) + BLAS_INCLUDE ?= /System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ + LDFLAGS += -framework Accelerate + else + BLAS_INCLUDE ?= /System/Library/Frameworks/vecLib.framework/Versions/Current/Headers/ + LDFLAGS += -framework vecLib + endif + endif +endif +INCLUDE_DIRS += $(BLAS_INCLUDE) +LIBRARY_DIRS += $(BLAS_LIB) + +LIBRARY_DIRS += $(LIB_BUILD_DIR) + +# Automatic dependency generation (nvcc is handled separately) +CXXFLAGS += -MMD -MP + +# Complete build flags. +COMMON_FLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) +CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) +NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) +# mex may invoke an older gcc that is too liberal with -Wuninitalized +MATLAB_CXXFLAGS := $(CXXFLAGS) -Wno-uninitialized +LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) + +USE_PKG_CONFIG ?= 0 +ifeq ($(USE_PKG_CONFIG), 1) + PKG_CONFIG := $(shell pkg-config opencv --libs) +else + PKG_CONFIG := +endif +LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(PKG_CONFIG) \ + $(foreach library,$(LIBRARIES),-l$(library)) +PYTHON_LDFLAGS := $(LDFLAGS) $(foreach library,$(PYTHON_LIBRARIES),-l$(library)) + +# 'superclean' target recursively* deletes all files ending with an extension +# in $(SUPERCLEAN_EXTS) below. This may be useful if you've built older +# versions of Caffe that do not place all generated files in a location known +# to the 'clean' target. +# +# 'supercleanlist' will list the files to be deleted by make superclean. +# +# * Recursive with the exception that symbolic links are never followed, per the +# default behavior of 'find'. +SUPERCLEAN_EXTS := .so .a .o .bin .testbin .pb.cc .pb.h _pb2.py .cuo + +# Set the sub-targets of the 'everything' target. +EVERYTHING_TARGETS := all py$(PROJECT) test warn lint +# Only build matcaffe as part of "everything" if MATLAB_DIR is specified. +ifneq ($(MATLAB_DIR),) + EVERYTHING_TARGETS += mat$(PROJECT) +endif + +############################## +# Define build targets +############################## +.PHONY: all lib test clean docs linecount lint lintclean tools examples $(DIST_ALIASES) \ + py mat py$(PROJECT) mat$(PROJECT) proto runtest \ + superclean supercleanlist supercleanfiles warn everything + +all: lib tools examples + +lib: $(STATIC_NAME) $(DYNAMIC_NAME) + +everything: $(EVERYTHING_TARGETS) + +linecount: + cloc --read-lang-def=$(PROJECT).cloc \ + src/$(PROJECT) include/$(PROJECT) tools examples \ + python matlab + +lint: $(EMPTY_LINT_REPORT) + +lintclean: + @ $(RM) -r $(LINT_OUTPUT_DIR) $(EMPTY_LINT_REPORT) $(NONEMPTY_LINT_REPORT) + +docs: $(DOXYGEN_OUTPUT_DIR) + @ cd ./docs ; ln -sfn ../$(DOXYGEN_OUTPUT_DIR)/html doxygen + +$(DOXYGEN_OUTPUT_DIR): $(DOXYGEN_CONFIG_FILE) $(DOXYGEN_SOURCES) + $(DOXYGEN_COMMAND) $(DOXYGEN_CONFIG_FILE) + +$(EMPTY_LINT_REPORT): $(LINT_OUTPUTS) | $(BUILD_DIR) + @ cat $(LINT_OUTPUTS) > $@ + @ if [ -s "$@" ]; then \ + cat $@; \ + mv $@ $(NONEMPTY_LINT_REPORT); \ + echo "Found one or more lint errors."; \ + exit 1; \ + fi; \ + $(RM) $(NONEMPTY_LINT_REPORT); \ + echo "No lint errors!"; + +$(LINT_OUTPUTS): $(LINT_OUTPUT_DIR)/%.lint.txt : % $(LINT_SCRIPT) | $(LINT_OUTPUT_DIR) + @ mkdir -p $(dir $@) + @ python $(LINT_SCRIPT) $< 2>&1 \ + | grep -v "^Done processing " \ + | grep -v "^Total errors found: 0" \ + > $@ \ + || true + +test: $(TEST_ALL_BIN) $(TEST_ALL_DYNLINK_BIN) $(TEST_BINS) + +tools: $(TOOL_BINS) $(TOOL_BIN_LINKS) + +examples: $(EXAMPLE_BINS) + +py$(PROJECT): py + +py: $(PY$(PROJECT)_SO) $(PROTO_GEN_PY) + +$(PY$(PROJECT)_SO): $(PY$(PROJECT)_SRC) $(PY$(PROJECT)_HXX) | $(DYNAMIC_NAME) + @ echo CXX/LD -o $@ $< + $(Q)$(CXX) -shared -o $@ $(PY$(PROJECT)_SRC) \ + -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(PYTHON_LDFLAGS) \ + -Wl,-rpath,$(ORIGIN)/../../build/lib + +mat$(PROJECT): mat + +mat: $(MAT$(PROJECT)_SO) + +$(MAT$(PROJECT)_SO): $(MAT$(PROJECT)_SRC) $(STATIC_NAME) + @ if [ -z "$(MATLAB_DIR)" ]; then \ + echo "MATLAB_DIR must be specified in $(CONFIG_FILE)" \ + "to build mat$(PROJECT)."; \ + exit 1; \ + fi + @ echo MEX $< + $(Q)$(MATLAB_DIR)/bin/mex $(MAT$(PROJECT)_SRC) \ + CXX="$(CXX)" \ + CXXFLAGS="\$$CXXFLAGS $(MATLAB_CXXFLAGS)" \ + CXXLIBS="\$$CXXLIBS $(STATIC_LINK_COMMAND) $(LDFLAGS)" -output $@ + @ if [ -f "$(PROJECT)_.d" ]; then \ + mv -f $(PROJECT)_.d $(BUILD_DIR)/${MAT$(PROJECT)_SO:.$(MAT_SO_EXT)=.d}; \ + fi + +runtest: $(TEST_ALL_BIN) + $(TOOL_BUILD_DIR)/caffe + $(TEST_ALL_BIN) $(TEST_GPUID) --gtest_shuffle $(TEST_FILTER) + +pytest: py + cd python; python -m unittest discover -s caffe/test + +mattest: mat + cd matlab; $(MATLAB_DIR)/bin/matlab -nodisplay -r 'caffe.run_tests(), exit()' + +warn: $(EMPTY_WARN_REPORT) + +$(EMPTY_WARN_REPORT): $(ALL_WARNS) | $(BUILD_DIR) + @ cat $(ALL_WARNS) > $@ + @ if [ -s "$@" ]; then \ + cat $@; \ + mv $@ $(NONEMPTY_WARN_REPORT); \ + echo "Compiler produced one or more warnings."; \ + exit 1; \ + fi; \ + $(RM) $(NONEMPTY_WARN_REPORT); \ + echo "No compiler warnings!"; + +$(ALL_WARNS): %.o.$(WARNS_EXT) : %.o + +$(BUILD_DIR_LINK): $(BUILD_DIR)/.linked + +# Create a target ".linked" in this BUILD_DIR to tell Make that the "build" link +# is currently correct, then delete the one in the OTHER_BUILD_DIR in case it +# exists and $(DEBUG) is toggled later. +$(BUILD_DIR)/.linked: + @ mkdir -p $(BUILD_DIR) + @ $(RM) $(OTHER_BUILD_DIR)/.linked + @ $(RM) -r $(BUILD_DIR_LINK) + @ ln -s $(BUILD_DIR) $(BUILD_DIR_LINK) + @ touch $@ + +$(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK) + @ mkdir -p $@ + +$(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) + @ echo LD -o $@ + $(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(LINKFLAGS) $(LDFLAGS) + @ cd $(BUILD_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT) + +$(STATIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) + @ echo AR -o $@ + $(Q)ar rcs $@ $(OBJS) + +$(BUILD_DIR)/%.o: %.cpp | $(ALL_BUILD_DIRS) + @ echo CXX $< + $(Q)$(CXX) $< $(CXXFLAGS) -c -o $@ 2> $@.$(WARNS_EXT) \ + || (cat $@.$(WARNS_EXT); exit 1) + @ cat $@.$(WARNS_EXT) + +$(PROTO_BUILD_DIR)/%.pb.o: $(PROTO_BUILD_DIR)/%.pb.cc $(PROTO_GEN_HEADER) \ + | $(PROTO_BUILD_DIR) + @ echo CXX $< + $(Q)$(CXX) $< $(CXXFLAGS) -c -o $@ 2> $@.$(WARNS_EXT) \ + || (cat $@.$(WARNS_EXT); exit 1) + @ cat $@.$(WARNS_EXT) + +$(BUILD_DIR)/cuda/%.o: %.cu | $(ALL_BUILD_DIRS) + @ echo NVCC $< + $(Q)$(CUDA_DIR)/bin/nvcc $(NVCCFLAGS) $(CUDA_ARCH) -M $< -o ${@:.o=.d} \ + -odir $(@D) + $(Q)$(CUDA_DIR)/bin/nvcc $(NVCCFLAGS) $(CUDA_ARCH) -c $< -o $@ 2> $@.$(WARNS_EXT) \ + || (cat $@.$(WARNS_EXT); exit 1) + @ cat $@.$(WARNS_EXT) + +$(TEST_ALL_BIN): $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \ + | $(DYNAMIC_NAME) $(TEST_BIN_DIR) + @ echo CXX/LD -o $@ $< + $(Q)$(CXX) $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \ + -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib + +$(TEST_CU_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CU_BUILD_DIR)/%.o \ + $(GTEST_OBJ) | $(DYNAMIC_NAME) $(TEST_BIN_DIR) + @ echo LD $< + $(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \ + -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib + +$(TEST_CXX_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CXX_BUILD_DIR)/%.o \ + $(GTEST_OBJ) | $(DYNAMIC_NAME) $(TEST_BIN_DIR) + @ echo LD $< + $(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \ + -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib + +# Target for extension-less symlinks to tool binaries with extension '*.bin'. +$(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR) + @ $(RM) $@ + @ ln -s $(notdir $<) $@ + +$(TOOL_BINS): %.bin : %.o | $(DYNAMIC_NAME) + @ echo CXX/LD -o $@ + $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \ + -Wl,-rpath,$(ORIGIN)/../lib + +$(EXAMPLE_BINS): %.bin : %.o | $(DYNAMIC_NAME) + @ echo CXX/LD -o $@ + $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \ + -Wl,-rpath,$(ORIGIN)/../../lib + +proto: $(PROTO_GEN_CC) $(PROTO_GEN_HEADER) + +$(PROTO_BUILD_DIR)/%.pb.cc $(PROTO_BUILD_DIR)/%.pb.h : \ + $(PROTO_SRC_DIR)/%.proto | $(PROTO_BUILD_DIR) + @ echo PROTOC $< + $(Q)protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $< + +$(PY_PROTO_BUILD_DIR)/%_pb2.py : $(PROTO_SRC_DIR)/%.proto \ + $(PY_PROTO_INIT) | $(PY_PROTO_BUILD_DIR) + @ echo PROTOC \(python\) $< + $(Q)protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $< + +$(PY_PROTO_INIT): | $(PY_PROTO_BUILD_DIR) + touch $(PY_PROTO_INIT) + +clean: + @- $(RM) -rf $(ALL_BUILD_DIRS) + @- $(RM) -rf $(OTHER_BUILD_DIR) + @- $(RM) -rf $(BUILD_DIR_LINK) + @- $(RM) -rf $(DISTRIBUTE_DIR) + @- $(RM) $(PY$(PROJECT)_SO) + @- $(RM) $(MAT$(PROJECT)_SO) + +supercleanfiles: + $(eval SUPERCLEAN_FILES := $(strip \ + $(foreach ext,$(SUPERCLEAN_EXTS), $(shell find . -name '*$(ext)' \ + -not -path './data/*')))) + +supercleanlist: supercleanfiles + @ \ + if [ -z "$(SUPERCLEAN_FILES)" ]; then \ + echo "No generated files found."; \ + else \ + echo $(SUPERCLEAN_FILES) | tr ' ' '\n'; \ + fi + +superclean: clean supercleanfiles + @ \ + if [ -z "$(SUPERCLEAN_FILES)" ]; then \ + echo "No generated files found."; \ + else \ + echo "Deleting the following generated files:"; \ + echo $(SUPERCLEAN_FILES) | tr ' ' '\n'; \ + $(RM) $(SUPERCLEAN_FILES); \ + fi + +$(DIST_ALIASES): $(DISTRIBUTE_DIR) + +$(DISTRIBUTE_DIR): all py | $(DISTRIBUTE_SUBDIRS) + # add proto + cp -r src/caffe/proto $(DISTRIBUTE_DIR)/ + # add include + cp -r include $(DISTRIBUTE_DIR)/ + mkdir -p $(DISTRIBUTE_DIR)/include/caffe/proto + cp $(PROTO_GEN_HEADER_SRCS) $(DISTRIBUTE_DIR)/include/caffe/proto + # add tool and example binaries + cp $(TOOL_BINS) $(DISTRIBUTE_DIR)/bin + cp $(EXAMPLE_BINS) $(DISTRIBUTE_DIR)/bin + # add libraries + cp $(STATIC_NAME) $(DISTRIBUTE_DIR)/lib + install -m 644 $(DYNAMIC_NAME) $(DISTRIBUTE_DIR)/lib + cd $(DISTRIBUTE_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT) + # add python - it's not the standard way, indeed... + cp -r python $(DISTRIBUTE_DIR)/python + +-include $(DEPS) diff --git a/3rdparty/caffe/Makefile.config.Ubuntu14.example b/3rdparty/caffe/Makefile.config.Ubuntu14.example new file mode 100644 index 00000000..3ef35aad --- /dev/null +++ b/3rdparty/caffe/Makefile.config.Ubuntu14.example @@ -0,0 +1,128 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 \ + -gencode arch=compute_60,code=sm_60 \ + -gencode arch=compute_61,code=sm_61 \ + -gencode arch=compute_61,code=compute_61 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# This is required only if you will compile the matlab interface. +# MATLAB directory should contain the mex binary in /bin. +# MATLAB_DIR := /usr/local +# MATLAB_DIR := /Applications/MATLAB_R2012b.app + +# NOTE: this is required only if you will compile the python interface. +# We need to be able to find Python.h and numpy/arrayobject.h. +PYTHON_INCLUDE := /usr/include/python2.7 \ + /usr/lib/python2.7/dist-packages/numpy/core/include +# Anaconda Python distribution is quite popular. Include path: +# Verify anaconda location, sometimes it's in root. +# ANACONDA_HOME := $(HOME)/anaconda +# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ + # $(ANACONDA_HOME)/include/python2.7 \ + # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include + +# Uncomment to use Python 3 (default is Python 2) +# PYTHON_LIBRARIES := boost_python3 python3.5m +# PYTHON_INCLUDE := /usr/include/python3.5m \ +# /usr/lib/python3.5/dist-packages/numpy/core/include + +# We need to be able to find libpythonX.X.so or .dylib. +PYTHON_LIB := /usr/lib /usr/local/lib +# PYTHON_LIB := $(ANACONDA_HOME)/lib + +# Homebrew installs numpy in a non standard path (keg only) +# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include +# PYTHON_LIB += $(shell brew --prefix numpy)/lib + +# Uncomment to support layers written in Python (will link against Python libs) +# WITH_PYTHON_LAYER := 1 + +# Whatever else you find you need goes here. +INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include +LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# NCCL acceleration switch (uncomment to build with NCCL) +# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0) +# USE_NCCL := 1 + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +# N.B. both build and distribute dirs are cleared on `make clean` +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/3rdparty/caffe/Makefile.config.Ubuntu14_cuda_7.example b/3rdparty/caffe/Makefile.config.Ubuntu14_cuda_7.example new file mode 100644 index 00000000..224dfbc1 --- /dev/null +++ b/3rdparty/caffe/Makefile.config.Ubuntu14_cuda_7.example @@ -0,0 +1,125 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# This is required only if you will compile the matlab interface. +# MATLAB directory should contain the mex binary in /bin. +# MATLAB_DIR := /usr/local +# MATLAB_DIR := /Applications/MATLAB_R2012b.app + +# NOTE: this is required only if you will compile the python interface. +# We need to be able to find Python.h and numpy/arrayobject.h. +PYTHON_INCLUDE := /usr/include/python2.7 \ + /usr/lib/python2.7/dist-packages/numpy/core/include +# Anaconda Python distribution is quite popular. Include path: +# Verify anaconda location, sometimes it's in root. +# ANACONDA_HOME := $(HOME)/anaconda +# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ + # $(ANACONDA_HOME)/include/python2.7 \ + # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include + +# Uncomment to use Python 3 (default is Python 2) +# PYTHON_LIBRARIES := boost_python3 python3.5m +# PYTHON_INCLUDE := /usr/include/python3.5m \ +# /usr/lib/python3.5/dist-packages/numpy/core/include + +# We need to be able to find libpythonX.X.so or .dylib. +PYTHON_LIB := /usr/lib /usr/local/lib +# PYTHON_LIB := $(ANACONDA_HOME)/lib + +# Homebrew installs numpy in a non standard path (keg only) +# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include +# PYTHON_LIB += $(shell brew --prefix numpy)/lib + +# Uncomment to support layers written in Python (will link against Python libs) +# WITH_PYTHON_LAYER := 1 + +# Whatever else you find you need goes here. +INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include +LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# NCCL acceleration switch (uncomment to build with NCCL) +# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0) +# USE_NCCL := 1 + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +# N.B. both build and distribute dirs are cleared on `make clean` +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/3rdparty/caffe/Makefile.config.Ubuntu16.example b/3rdparty/caffe/Makefile.config.Ubuntu16.example new file mode 100644 index 00000000..fb923605 --- /dev/null +++ b/3rdparty/caffe/Makefile.config.Ubuntu16.example @@ -0,0 +1,128 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 \ + -gencode arch=compute_60,code=sm_60 \ + -gencode arch=compute_61,code=sm_61 \ + -gencode arch=compute_61,code=compute_61 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# This is required only if you will compile the matlab interface. +# MATLAB directory should contain the mex binary in /bin. +# MATLAB_DIR := /usr/local +# MATLAB_DIR := /Applications/MATLAB_R2012b.app + +# NOTE: this is required only if you will compile the python interface. +# We need to be able to find Python.h and numpy/arrayobject.h. +PYTHON_INCLUDE := /usr/include/python2.7 \ + /usr/lib/python2.7/dist-packages/numpy/core/include +# Anaconda Python distribution is quite popular. Include path: +# Verify anaconda location, sometimes it's in root. +# ANACONDA_HOME := $(HOME)/anaconda +# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ + # $(ANACONDA_HOME)/include/python2.7 \ + # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include + +# Uncomment to use Python 3 (default is Python 2) +# PYTHON_LIBRARIES := boost_python3 python3.5m +# PYTHON_INCLUDE := /usr/include/python3.5m \ +# /usr/lib/python3.5/dist-packages/numpy/core/include + +# We need to be able to find libpythonX.X.so or .dylib. +PYTHON_LIB := /usr/lib /usr/local/lib +# PYTHON_LIB := $(ANACONDA_HOME)/lib + +# Homebrew installs numpy in a non standard path (keg only) +# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include +# PYTHON_LIB += $(shell brew --prefix numpy)/lib + +# Uncomment to support layers written in Python (will link against Python libs) +# WITH_PYTHON_LAYER := 1 + +# Whatever else you find you need goes here. +INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial +LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# NCCL acceleration switch (uncomment to build with NCCL) +# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0) +# USE_NCCL := 1 + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +# N.B. both build and distribute dirs are cleared on `make clean` +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/3rdparty/caffe/Makefile.config.Ubuntu16_cuda_7.example b/3rdparty/caffe/Makefile.config.Ubuntu16_cuda_7.example new file mode 100644 index 00000000..15c005c0 --- /dev/null +++ b/3rdparty/caffe/Makefile.config.Ubuntu16_cuda_7.example @@ -0,0 +1,125 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# This is required only if you will compile the matlab interface. +# MATLAB directory should contain the mex binary in /bin. +# MATLAB_DIR := /usr/local +# MATLAB_DIR := /Applications/MATLAB_R2012b.app + +# NOTE: this is required only if you will compile the python interface. +# We need to be able to find Python.h and numpy/arrayobject.h. +PYTHON_INCLUDE := /usr/include/python2.7 \ + /usr/lib/python2.7/dist-packages/numpy/core/include +# Anaconda Python distribution is quite popular. Include path: +# Verify anaconda location, sometimes it's in root. +# ANACONDA_HOME := $(HOME)/anaconda +# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ + # $(ANACONDA_HOME)/include/python2.7 \ + # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include + +# Uncomment to use Python 3 (default is Python 2) +# PYTHON_LIBRARIES := boost_python3 python3.5m +# PYTHON_INCLUDE := /usr/include/python3.5m \ +# /usr/lib/python3.5/dist-packages/numpy/core/include + +# We need to be able to find libpythonX.X.so or .dylib. +PYTHON_LIB := /usr/lib /usr/local/lib +# PYTHON_LIB := $(ANACONDA_HOME)/lib + +# Homebrew installs numpy in a non standard path (keg only) +# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include +# PYTHON_LIB += $(shell brew --prefix numpy)/lib + +# Uncomment to support layers written in Python (will link against Python libs) +# WITH_PYTHON_LAYER := 1 + +# Whatever else you find you need goes here. +INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial +LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# NCCL acceleration switch (uncomment to build with NCCL) +# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0) +# USE_NCCL := 1 + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +# N.B. both build and distribute dirs are cleared on `make clean` +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/3rdparty/caffe/README.md b/3rdparty/caffe/README.md new file mode 100644 index 00000000..0ae3616b --- /dev/null +++ b/3rdparty/caffe/README.md @@ -0,0 +1,37 @@ +# Caffe + +[![Build Status](https://travis-ci.org/BVLC/caffe.svg?branch=master)](https://travis-ci.org/BVLC/caffe) +[![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE) + +Caffe is a deep learning framework made with expression, speed, and modularity in mind. +It is developed by Berkeley AI Research ([BAIR](http://bair.berkeley.edu))/The Berkeley Vision and Learning Center (BVLC) and community contributors. + +Check out the [project site](http://caffe.berkeleyvision.org) for all the details like + +- [DIY Deep Learning for Vision with Caffe](https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p) +- [Tutorial Documentation](http://caffe.berkeleyvision.org/tutorial/) +- [BAIR reference models](http://caffe.berkeleyvision.org/model_zoo.html) and the [community model zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo) +- [Installation instructions](http://caffe.berkeleyvision.org/installation.html) + +and step-by-step examples. + +[![Join the chat at https://gitter.im/BVLC/caffe](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/BVLC/caffe?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +Please join the [caffe-users group](https://groups.google.com/forum/#!forum/caffe-users) or [gitter chat](https://gitter.im/BVLC/caffe) to ask questions and talk about methods and models. +Framework development discussions and thorough bug reports are collected on [Issues](https://github.com/BVLC/caffe/issues). + +Happy brewing! + +## License and Citation + +Caffe is released under the [BSD 2-Clause license](https://github.com/BVLC/caffe/blob/master/LICENSE). +The BAIR/BVLC reference models are released for unrestricted use. + +Please cite Caffe in your publications if it helps your research: + + @article{jia2014caffe, + Author = {Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff and Karayev, Sergey and Long, Jonathan and Girshick, Ross and Guadarrama, Sergio and Darrell, Trevor}, + Journal = {arXiv preprint arXiv:1408.5093}, + Title = {Caffe: Convolutional Architecture for Fast Feature Embedding}, + Year = {2014} + } diff --git a/3rdparty/caffe/caffe.cloc b/3rdparty/caffe/caffe.cloc new file mode 100644 index 00000000..a36ab619 --- /dev/null +++ b/3rdparty/caffe/caffe.cloc @@ -0,0 +1,53 @@ +Bourne Shell + filter remove_matches ^\s*# + filter remove_inline #.*$ + extension sh + script_exe sh +C + filter remove_matches ^\s*// + filter call_regexp_common C + filter remove_inline //.*$ + extension c + extension ec + extension pgc +C++ + filter remove_matches ^\s*// + filter remove_inline //.*$ + filter call_regexp_common C + extension C + extension cc + extension cpp + extension cxx + extension pcc +C/C++ Header + filter remove_matches ^\s*// + filter call_regexp_common C + filter remove_inline //.*$ + extension H + extension h + extension hh + extension hpp +CUDA + filter remove_matches ^\s*// + filter remove_inline //.*$ + filter call_regexp_common C + extension cu +Python + filter remove_matches ^\s*# + filter docstring_to_C + filter call_regexp_common C + filter remove_inline #.*$ + extension py +make + filter remove_matches ^\s*# + filter remove_inline #.*$ + extension Gnumakefile + extension Makefile + extension am + extension gnumakefile + extension makefile + filename Gnumakefile + filename Makefile + filename gnumakefile + filename makefile + script_exe make diff --git a/3rdparty/caffe/cmake/ConfigGen.cmake b/3rdparty/caffe/cmake/ConfigGen.cmake new file mode 100644 index 00000000..ad91f542 --- /dev/null +++ b/3rdparty/caffe/cmake/ConfigGen.cmake @@ -0,0 +1,56 @@ + +################################################################################################ +# Helper function to get all list items that begin with given prefix +# Usage: +# caffe_get_items_with_prefix( ) +function(caffe_get_items_with_prefix prefix list_variable output_variable) + set(__result "") + foreach(__e ${${list_variable}}) + if(__e MATCHES "^${prefix}.*") + list(APPEND __result ${__e}) + endif() + endforeach() + set(${output_variable} ${__result} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Function for generation Caffe build- and install- tree export config files +# Usage: +# caffe_generate_export_configs() +function(caffe_generate_export_configs) + set(install_cmake_suffix "share/Caffe") + + if(NOT HAVE_CUDA) + set(HAVE_CUDA FALSE) + endif() + + if(NOT HAVE_CUDNN) + set(HAVE_CUDNN FALSE) + endif() + + # ---[ Configure build-tree CaffeConfig.cmake file ]--- + + configure_file("cmake/Templates/CaffeConfig.cmake.in" "${PROJECT_BINARY_DIR}/CaffeConfig.cmake" @ONLY) + + # Add targets to the build-tree export set + export(TARGETS caffe proto FILE "${PROJECT_BINARY_DIR}/CaffeTargets.cmake") + export(PACKAGE Caffe) + + # ---[ Configure install-tree CaffeConfig.cmake file ]--- + + configure_file("cmake/Templates/CaffeConfig.cmake.in" "${PROJECT_BINARY_DIR}/cmake/CaffeConfig.cmake" @ONLY) + + # Install the CaffeConfig.cmake and export set to use with install-tree + install(FILES "${PROJECT_BINARY_DIR}/cmake/CaffeConfig.cmake" DESTINATION ${install_cmake_suffix}) + install(EXPORT CaffeTargets DESTINATION ${install_cmake_suffix}) + + # ---[ Configure and install version file ]--- + + # TODO: Lines below are commented because Caffe doesn't declare its version in headers. + # When the declarations are added, modify `caffe_extract_caffe_version()` macro and uncomment + + # configure_file(cmake/Templates/CaffeConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CaffeConfigVersion.cmake" @ONLY) + # install(FILES "${PROJECT_BINARY_DIR}/CaffeConfigVersion.cmake" DESTINATION ${install_cmake_suffix}) +endfunction() + + diff --git a/3rdparty/caffe/cmake/Cuda.cmake b/3rdparty/caffe/cmake/Cuda.cmake new file mode 100644 index 00000000..b2b19e8b --- /dev/null +++ b/3rdparty/caffe/cmake/Cuda.cmake @@ -0,0 +1,292 @@ +if(CPU_ONLY) + return() +endif() + +# Known NVIDIA GPU achitectures Caffe can be compiled for. +# This list will be used for CUDA_ARCH_NAME = All option +set(Caffe_known_gpu_archs "20 21(20) 30 35 50 60 61") + +################################################################################################ +# A function for automatic detection of GPUs installed (if autodetection is enabled) +# Usage: +# caffe_detect_installed_gpus(out_variable) +function(caffe_detect_installed_gpus out_variable) + if(NOT CUDA_gpu_detect_output) + set(__cufile ${PROJECT_BINARY_DIR}/detect_cuda_archs.cu) + + file(WRITE ${__cufile} "" + "#include \n" + "int main()\n" + "{\n" + " int count = 0;\n" + " if (cudaSuccess != cudaGetDeviceCount(&count)) return -1;\n" + " if (count == 0) return -1;\n" + " for (int device = 0; device < count; ++device)\n" + " {\n" + " cudaDeviceProp prop;\n" + " if (cudaSuccess == cudaGetDeviceProperties(&prop, device))\n" + " std::printf(\"%d.%d \", prop.major, prop.minor);\n" + " }\n" + " return 0;\n" + "}\n") + + execute_process(COMMAND "${CUDA_NVCC_EXECUTABLE}" "--run" "${__cufile}" + WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/CMakeFiles/" + RESULT_VARIABLE __nvcc_res OUTPUT_VARIABLE __nvcc_out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(__nvcc_res EQUAL 0) + string(REPLACE "2.1" "2.1(2.0)" __nvcc_out "${__nvcc_out}") + set(CUDA_gpu_detect_output ${__nvcc_out} CACHE INTERNAL "Returned GPU architetures from caffe_detect_gpus tool" FORCE) + endif() + endif() + + if(NOT CUDA_gpu_detect_output) + message(STATUS "Automatic GPU detection failed. Building for all known architectures.") + set(${out_variable} ${Caffe_known_gpu_archs} PARENT_SCOPE) + else() + set(${out_variable} ${CUDA_gpu_detect_output} PARENT_SCOPE) + endif() +endfunction() + + +################################################################################################ +# Function for selecting GPU arch flags for nvcc based on CUDA_ARCH_NAME +# Usage: +# caffe_select_nvcc_arch_flags(out_variable) +function(caffe_select_nvcc_arch_flags out_variable) + # List of arch names + set(__archs_names "Fermi" "Kepler" "Maxwell" "Pascal" "All" "Manual") + set(__archs_name_default "All") + if(NOT CMAKE_CROSSCOMPILING) + list(APPEND __archs_names "Auto") + set(__archs_name_default "Auto") + endif() + + # set CUDA_ARCH_NAME strings (so it will be seen as dropbox in CMake-Gui) + set(CUDA_ARCH_NAME ${__archs_name_default} CACHE STRING "Select target NVIDIA GPU achitecture.") + set_property( CACHE CUDA_ARCH_NAME PROPERTY STRINGS "" ${__archs_names} ) + mark_as_advanced(CUDA_ARCH_NAME) + + # verify CUDA_ARCH_NAME value + if(NOT ";${__archs_names};" MATCHES ";${CUDA_ARCH_NAME};") + string(REPLACE ";" ", " __archs_names "${__archs_names}") + message(FATAL_ERROR "Only ${__archs_names} architeture names are supported.") + endif() + + if(${CUDA_ARCH_NAME} STREQUAL "Manual") + set(CUDA_ARCH_BIN ${Caffe_known_gpu_archs} CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") + set(CUDA_ARCH_PTX "50" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") + mark_as_advanced(CUDA_ARCH_BIN CUDA_ARCH_PTX) + else() + unset(CUDA_ARCH_BIN CACHE) + unset(CUDA_ARCH_PTX CACHE) + endif() + + if(${CUDA_ARCH_NAME} STREQUAL "Fermi") + set(__cuda_arch_bin "20 21(20)") + elseif(${CUDA_ARCH_NAME} STREQUAL "Kepler") + set(__cuda_arch_bin "30 35") + elseif(${CUDA_ARCH_NAME} STREQUAL "Maxwell") + set(__cuda_arch_bin "50") + elseif(${CUDA_ARCH_NAME} STREQUAL "Pascal") + set(__cuda_arch_bin "60 61") + elseif(${CUDA_ARCH_NAME} STREQUAL "All") + set(__cuda_arch_bin ${Caffe_known_gpu_archs}) + elseif(${CUDA_ARCH_NAME} STREQUAL "Auto") + caffe_detect_installed_gpus(__cuda_arch_bin) + else() # (${CUDA_ARCH_NAME} STREQUAL "Manual") + set(__cuda_arch_bin ${CUDA_ARCH_BIN}) + endif() + + # remove dots and convert to lists + string(REGEX REPLACE "\\." "" __cuda_arch_bin "${__cuda_arch_bin}") + string(REGEX REPLACE "\\." "" __cuda_arch_ptx "${CUDA_ARCH_PTX}") + string(REGEX MATCHALL "[0-9()]+" __cuda_arch_bin "${__cuda_arch_bin}") + string(REGEX MATCHALL "[0-9]+" __cuda_arch_ptx "${__cuda_arch_ptx}") + caffe_list_unique(__cuda_arch_bin __cuda_arch_ptx) + + set(__nvcc_flags "") + set(__nvcc_archs_readable "") + + # Tell NVCC to add binaries for the specified GPUs + foreach(__arch ${__cuda_arch_bin}) + if(__arch MATCHES "([0-9]+)\\(([0-9]+)\\)") + # User explicitly specified PTX for the concrete BIN + list(APPEND __nvcc_flags -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1}) + list(APPEND __nvcc_archs_readable sm_${CMAKE_MATCH_1}) + else() + # User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN + list(APPEND __nvcc_flags -gencode arch=compute_${__arch},code=sm_${__arch}) + list(APPEND __nvcc_archs_readable sm_${__arch}) + endif() + endforeach() + + # Tell NVCC to add PTX intermediate code for the specified architectures + foreach(__arch ${__cuda_arch_ptx}) + list(APPEND __nvcc_flags -gencode arch=compute_${__arch},code=compute_${__arch}) + list(APPEND __nvcc_archs_readable compute_${__arch}) + endforeach() + + string(REPLACE ";" " " __nvcc_archs_readable "${__nvcc_archs_readable}") + set(${out_variable} ${__nvcc_flags} PARENT_SCOPE) + set(${out_variable}_readable ${__nvcc_archs_readable} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Short command for cuda compilation +# Usage: +# caffe_cuda_compile( ) +macro(caffe_cuda_compile objlist_variable) + foreach(var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG) + set(${var}_backup_in_cuda_compile_ "${${var}}") + + # we remove /EHa as it generates warnings under windows + string(REPLACE "/EHa" "" ${var} "${${var}}") + + endforeach() + + if(UNIX OR APPLE) + list(APPEND CUDA_NVCC_FLAGS -Xcompiler -fPIC) + endif() + + if(APPLE) + list(APPEND CUDA_NVCC_FLAGS -Xcompiler -Wno-unused-function) + endif() + + cuda_compile(cuda_objcs ${ARGN}) + + foreach(var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG) + set(${var} "${${var}_backup_in_cuda_compile_}") + unset(${var}_backup_in_cuda_compile_) + endforeach() + + set(${objlist_variable} ${cuda_objcs}) +endmacro() + +################################################################################################ +# Short command for cuDNN detection. Believe it soon will be a part of CUDA toolkit distribution. +# That's why not FindcuDNN.cmake file, but just the macro +# Usage: +# detect_cuDNN() +function(detect_cuDNN) + set(CUDNN_ROOT "" CACHE PATH "CUDNN root folder") + + find_path(CUDNN_INCLUDE cudnn.h + PATHS ${CUDNN_ROOT} $ENV{CUDNN_ROOT} ${CUDA_TOOLKIT_INCLUDE} + DOC "Path to cuDNN include directory." ) + + # dynamic libs have different suffix in mac and linux + if(APPLE) + set(CUDNN_LIB_NAME "libcudnn.dylib") + else() + set(CUDNN_LIB_NAME "libcudnn.so") + endif() + + get_filename_component(__libpath_hist ${CUDA_CUDART_LIBRARY} PATH) + find_library(CUDNN_LIBRARY NAMES ${CUDNN_LIB_NAME} + PATHS ${CUDNN_ROOT} $ENV{CUDNN_ROOT} ${CUDNN_INCLUDE} ${__libpath_hist} ${__libpath_hist}/../lib + DOC "Path to cuDNN library.") + + if(CUDNN_INCLUDE AND CUDNN_LIBRARY) + set(HAVE_CUDNN TRUE PARENT_SCOPE) + set(CUDNN_FOUND TRUE PARENT_SCOPE) + + file(READ ${CUDNN_INCLUDE}/cudnn.h CUDNN_VERSION_FILE_CONTENTS) + + # cuDNN v3 and beyond + string(REGEX MATCH "define CUDNN_MAJOR * +([0-9]+)" + CUDNN_VERSION_MAJOR "${CUDNN_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define CUDNN_MAJOR * +([0-9]+)" "\\1" + CUDNN_VERSION_MAJOR "${CUDNN_VERSION_MAJOR}") + string(REGEX MATCH "define CUDNN_MINOR * +([0-9]+)" + CUDNN_VERSION_MINOR "${CUDNN_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define CUDNN_MINOR * +([0-9]+)" "\\1" + CUDNN_VERSION_MINOR "${CUDNN_VERSION_MINOR}") + string(REGEX MATCH "define CUDNN_PATCHLEVEL * +([0-9]+)" + CUDNN_VERSION_PATCH "${CUDNN_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define CUDNN_PATCHLEVEL * +([0-9]+)" "\\1" + CUDNN_VERSION_PATCH "${CUDNN_VERSION_PATCH}") + + if(NOT CUDNN_VERSION_MAJOR) + set(CUDNN_VERSION "???") + else() + set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}") + endif() + + message(STATUS "Found cuDNN: ver. ${CUDNN_VERSION} found (include: ${CUDNN_INCLUDE}, library: ${CUDNN_LIBRARY})") + + string(COMPARE LESS "${CUDNN_VERSION_MAJOR}" 3 cuDNNVersionIncompatible) + if(cuDNNVersionIncompatible) + message(FATAL_ERROR "cuDNN version >3 is required.") + endif() + + set(CUDNN_VERSION "${CUDNN_VERSION}" PARENT_SCOPE) + mark_as_advanced(CUDNN_INCLUDE CUDNN_LIBRARY CUDNN_ROOT) + + endif() +endfunction() + +################################################################################################ +### Non macro section +################################################################################################ + +find_package(CUDA 5.5 QUIET) +find_cuda_helper_libs(curand) # cmake 2.8.7 compartibility which doesn't search for curand + +if(NOT CUDA_FOUND) + return() +endif() + +set(HAVE_CUDA TRUE) +message(STATUS "CUDA detected: " ${CUDA_VERSION}) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${CUDA_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${CUDA_CUDART_LIBRARY} + ${CUDA_curand_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}) + +# cudnn detection +if(USE_CUDNN) + detect_cuDNN() + if(HAVE_CUDNN) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_CUDNN) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${CUDNN_INCLUDE}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${CUDNN_LIBRARY}) + endif() +endif() + +# setting nvcc arch flags +caffe_select_nvcc_arch_flags(NVCC_FLAGS_EXTRA) +list(APPEND CUDA_NVCC_FLAGS ${NVCC_FLAGS_EXTRA}) +message(STATUS "Added CUDA NVCC flags for: ${NVCC_FLAGS_EXTRA_readable}") + +# Boost 1.55 workaround, see https://svn.boost.org/trac/boost/ticket/9392 or +# https://github.com/ComputationalRadiationPhysics/picongpu/blob/master/src/picongpu/CMakeLists.txt +if(Boost_VERSION EQUAL 105500) + message(STATUS "Cuda + Boost 1.55: Applying noinline work around") + # avoid warning for CMake >= 2.8.12 + set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} \"-DBOOST_NOINLINE=__attribute__((noinline))\" ") +endif() + +# disable some nvcc diagnostic that apears in boost, glog, glags, opencv, etc. +foreach(diag cc_clobber_ignored integer_sign_change useless_using_declaration set_but_not_used) + list(APPEND CUDA_NVCC_FLAGS -Xcudafe --diag_suppress=${diag}) +endforeach() + +# setting default testing device +if(NOT CUDA_TEST_DEVICE) + set(CUDA_TEST_DEVICE -1) +endif() + +mark_as_advanced(CUDA_BUILD_CUBIN CUDA_BUILD_EMULATION CUDA_VERBOSE_BUILD) +mark_as_advanced(CUDA_SDK_ROOT_DIR CUDA_SEPARABLE_COMPILATION) + +# Handle clang/libc++ issue +if(APPLE) + caffe_detect_darwin_version(OSX_VERSION) + + # OSX 10.9 and higher uses clang/libc++ by default which is incompatible with old CUDA toolkits + if(OSX_VERSION VERSION_GREATER 10.8) + # enabled by default if and only if CUDA version is less than 7.0 + caffe_option(USE_libstdcpp "Use libstdc++ instead of libc++" (CUDA_VERSION VERSION_LESS 7.0)) + endif() +endif() diff --git a/3rdparty/caffe/cmake/Dependencies.cmake b/3rdparty/caffe/cmake/Dependencies.cmake new file mode 100644 index 00000000..4a5bac47 --- /dev/null +++ b/3rdparty/caffe/cmake/Dependencies.cmake @@ -0,0 +1,203 @@ +# These lists are later turned into target properties on main caffe library target +set(Caffe_LINKER_LIBS "") +set(Caffe_INCLUDE_DIRS "") +set(Caffe_DEFINITIONS "") +set(Caffe_COMPILE_OPTIONS "") + +# ---[ Boost +find_package(Boost 1.55 REQUIRED COMPONENTS system thread filesystem) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${Boost_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${Boost_LIBRARIES}) + +# ---[ Threads +find_package(Threads REQUIRED) +list(APPEND Caffe_LINKER_LIBS PRIVATE ${CMAKE_THREAD_LIBS_INIT}) + +# ---[ OpenMP +if(USE_OPENMP) + # Ideally, this should be provided by the BLAS library IMPORTED target. However, + # nobody does this, so we need to link to OpenMP explicitly and have the maintainer + # to flick the switch manually as needed. + # + # Moreover, OpenMP package does not provide an IMPORTED target as well, and the + # suggested way of linking to OpenMP is to append to CMAKE_{C,CXX}_FLAGS. + # However, this naïve method will force any user of Caffe to add the same kludge + # into their buildsystem again, so we put these options into per-target PUBLIC + # compile options and link flags, so that they will be exported properly. + find_package(OpenMP REQUIRED) + list(APPEND Caffe_LINKER_LIBS PRIVATE ${OpenMP_CXX_FLAGS}) + list(APPEND Caffe_COMPILE_OPTIONS PRIVATE ${OpenMP_CXX_FLAGS}) +endif() + +# ---[ Google-glog +include("cmake/External/glog.cmake") +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${GLOG_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${GLOG_LIBRARIES}) + +# ---[ Google-gflags +include("cmake/External/gflags.cmake") +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${GFLAGS_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${GFLAGS_LIBRARIES}) + +# ---[ Google-protobuf +include(cmake/ProtoBuf.cmake) + +# ---[ HDF5 +find_package(HDF5 COMPONENTS HL REQUIRED) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${HDF5_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) + +# ---[ LMDB +if(USE_LMDB) + find_package(LMDB REQUIRED) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${LMDB_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${LMDB_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_LMDB) + if(ALLOW_LMDB_NOLOCK) + list(APPEND Caffe_DEFINITIONS PRIVATE -DALLOW_LMDB_NOLOCK) + endif() +endif() + +# ---[ LevelDB +if(USE_LEVELDB) + find_package(LevelDB REQUIRED) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${LevelDB_INCLUDES}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${LevelDB_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_LEVELDB) +endif() + +# ---[ Snappy +if(USE_LEVELDB) + find_package(Snappy REQUIRED) + list(APPEND Caffe_INCLUDE_DIRS PRIVATE ${Snappy_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PRIVATE ${Snappy_LIBRARIES}) +endif() + +# ---[ CUDA +include(cmake/Cuda.cmake) +if(NOT HAVE_CUDA) + if(CPU_ONLY) + message(STATUS "-- CUDA is disabled. Building without it...") + else() + message(WARNING "-- CUDA is not detected by cmake. Building without it...") + endif() + + list(APPEND Caffe_DEFINITIONS PUBLIC -DCPU_ONLY) +endif() + +if(USE_NCCL) + find_package(NCCL REQUIRED) + include_directories(SYSTEM ${NCCL_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS ${NCCL_LIBRARIES}) + add_definitions(-DUSE_NCCL) +endif() + +# ---[ OpenCV +if(USE_OPENCV) + find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs) + if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found + find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc) + endif() + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${OpenCV_INCLUDE_DIRS}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${OpenCV_LIBS}) + message(STATUS "OpenCV found (${OpenCV_CONFIG_PATH})") + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_OPENCV) +endif() + +# ---[ BLAS +if(NOT APPLE) + set(BLAS "Atlas" CACHE STRING "Selected BLAS library") + set_property(CACHE BLAS PROPERTY STRINGS "Atlas;Open;MKL") + + if(BLAS STREQUAL "Atlas" OR BLAS STREQUAL "atlas") + find_package(Atlas REQUIRED) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${Atlas_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${Atlas_LIBRARIES}) + elseif(BLAS STREQUAL "Open" OR BLAS STREQUAL "open") + find_package(OpenBLAS REQUIRED) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${OpenBLAS_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${OpenBLAS_LIB}) + elseif(BLAS STREQUAL "MKL" OR BLAS STREQUAL "mkl") + find_package(MKL REQUIRED) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${MKL_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${MKL_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_MKL) + endif() +elseif(APPLE) + find_package(vecLib REQUIRED) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${vecLib_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${vecLib_LINKER_LIBS}) + + if(VECLIB_FOUND) + if(NOT vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*") + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_ACCELERATE) + endif() + endif() +endif() + +# ---[ Python +if(BUILD_python) + if(NOT "${python_version}" VERSION_LESS "3.0.0") + # use python3 + find_package(PythonInterp 3.0) + find_package(PythonLibs 3.0) + find_package(NumPy 1.7.1) + # Find the matching boost python implementation + set(version ${PYTHONLIBS_VERSION_STRING}) + + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) + find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") + set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) + + while(NOT "${version}" STREQUAL "" AND NOT Boost_PYTHON_FOUND) + STRING( REGEX REPLACE "([0-9.]+).[0-9]+" "\\1" version ${version} ) + + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) + find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") + set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) + + STRING( REGEX MATCHALL "([0-9.]+).[0-9]+" has_more_version ${version} ) + if("${has_more_version}" STREQUAL "") + break() + endif() + endwhile() + if(NOT Boost_PYTHON_FOUND) + find_package(Boost 1.46 COMPONENTS python) + endif() + else() + # disable Python 3 search + find_package(PythonInterp 2.7) + find_package(PythonLibs 2.7) + find_package(NumPy 1.7.1) + find_package(Boost 1.46 COMPONENTS python) + endif() + if(PYTHONLIBS_FOUND AND NUMPY_FOUND AND Boost_PYTHON_FOUND) + set(HAVE_PYTHON TRUE) + if(BUILD_python_layer) + list(APPEND Caffe_DEFINITIONS PRIVATE -DWITH_PYTHON_LAYER) + list(APPEND Caffe_INCLUDE_DIRS PRIVATE ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR} PUBLIC ${Boost_INCLUDE_DIRS}) + list(APPEND Caffe_LINKER_LIBS PRIVATE ${PYTHON_LIBRARIES} PUBLIC ${Boost_LIBRARIES}) + endif() + endif() +endif() + +# ---[ Matlab +if(BUILD_matlab) + find_package(MatlabMex) + if(MATLABMEX_FOUND) + set(HAVE_MATLAB TRUE) + endif() + + # sudo apt-get install liboctave-dev + find_program(Octave_compiler NAMES mkoctfile DOC "Octave C++ compiler") + + if(HAVE_MATLAB AND Octave_compiler) + set(Matlab_build_mex_using "Matlab" CACHE STRING "Select Matlab or Octave if both detected") + set_property(CACHE Matlab_build_mex_using PROPERTY STRINGS "Matlab;Octave") + endif() +endif() + +# ---[ Doxygen +if(BUILD_docs) + find_package(Doxygen) +endif() diff --git a/3rdparty/caffe/cmake/External/gflags.cmake b/3rdparty/caffe/cmake/External/gflags.cmake new file mode 100644 index 00000000..e3dba04f --- /dev/null +++ b/3rdparty/caffe/cmake/External/gflags.cmake @@ -0,0 +1,56 @@ +if (NOT __GFLAGS_INCLUDED) # guard against multiple includes + set(__GFLAGS_INCLUDED TRUE) + + # use the system-wide gflags if present + find_package(GFlags) + if (GFLAGS_FOUND) + set(GFLAGS_EXTERNAL FALSE) + else() + # gflags will use pthreads if it's available in the system, so we must link with it + find_package(Threads) + + # build directory + set(gflags_PREFIX ${CMAKE_BINARY_DIR}/external/gflags-prefix) + # install directory + set(gflags_INSTALL ${CMAKE_BINARY_DIR}/external/gflags-install) + + # we build gflags statically, but want to link it into the caffe shared library + # this requires position-independent code + if (UNIX) + set(GFLAGS_EXTRA_COMPILER_FLAGS "-fPIC") + endif() + + set(GFLAGS_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${GFLAGS_EXTRA_COMPILER_FLAGS}) + set(GFLAGS_C_FLAGS ${CMAKE_C_FLAGS} ${GFLAGS_EXTRA_COMPILER_FLAGS}) + + ExternalProject_Add(gflags + PREFIX ${gflags_PREFIX} + GIT_REPOSITORY "https://github.com/gflags/gflags.git" + GIT_TAG "v2.1.2" + UPDATE_COMMAND "" + INSTALL_DIR ${gflags_INSTALL} + CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${gflags_INSTALL} + -DBUILD_SHARED_LIBS=OFF + -DBUILD_STATIC_LIBS=ON + -DBUILD_PACKAGING=OFF + -DBUILD_TESTING=OFF + -DBUILD_NC_TESTS=OFF + -BUILD_CONFIG_TESTS=OFF + -DINSTALL_HEADERS=ON + -DCMAKE_C_FLAGS=${GFLAGS_C_FLAGS} + -DCMAKE_CXX_FLAGS=${GFLAGS_CXX_FLAGS} + LOG_DOWNLOAD 1 + LOG_INSTALL 1 + ) + + set(GFLAGS_FOUND TRUE) + set(GFLAGS_INCLUDE_DIRS ${gflags_INSTALL}/include) + set(GFLAGS_LIBRARIES ${gflags_INSTALL}/lib/libgflags.a ${CMAKE_THREAD_LIBS_INIT}) + set(GFLAGS_LIBRARY_DIRS ${gflags_INSTALL}/lib) + set(GFLAGS_EXTERNAL TRUE) + + list(APPEND external_project_dependencies gflags) + endif() + +endif() diff --git a/3rdparty/caffe/cmake/External/glog.cmake b/3rdparty/caffe/cmake/External/glog.cmake new file mode 100644 index 00000000..f9d0549c --- /dev/null +++ b/3rdparty/caffe/cmake/External/glog.cmake @@ -0,0 +1,57 @@ +# glog depends on gflags +include("cmake/External/gflags.cmake") + +if (NOT __GLOG_INCLUDED) + set(__GLOG_INCLUDED TRUE) + + # try the system-wide glog first + find_package(Glog) + if (GLOG_FOUND) + set(GLOG_EXTERNAL FALSE) + else() + # fetch and build glog from github + + # build directory + set(glog_PREFIX ${CMAKE_BINARY_DIR}/external/glog-prefix) + # install directory + set(glog_INSTALL ${CMAKE_BINARY_DIR}/external/glog-install) + + # we build glog statically, but want to link it into the caffe shared library + # this requires position-independent code + if (UNIX) + set(GLOG_EXTRA_COMPILER_FLAGS "-fPIC") + endif() + + set(GLOG_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${GLOG_EXTRA_COMPILER_FLAGS}) + set(GLOG_C_FLAGS ${CMAKE_C_FLAGS} ${GLOG_EXTRA_COMPILER_FLAGS}) + + # depend on gflags if we're also building it + if (GFLAGS_EXTERNAL) + set(GLOG_DEPENDS gflags) + endif() + + ExternalProject_Add(glog + DEPENDS ${GLOG_DEPENDS} + PREFIX ${glog_PREFIX} + GIT_REPOSITORY "https://github.com/google/glog" + GIT_TAG "v0.3.4" + UPDATE_COMMAND "" + INSTALL_DIR ${gflags_INSTALL} + PATCH_COMMAND autoreconf -i ${glog_PREFIX}/src/glog + CONFIGURE_COMMAND env "CFLAGS=${GLOG_C_FLAGS}" "CXXFLAGS=${GLOG_CXX_FLAGS}" ${glog_PREFIX}/src/glog/configure --prefix=${glog_INSTALL} --enable-shared=no --enable-static=yes --with-gflags=${GFLAGS_LIBRARY_DIRS}/.. + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_INSTALL 1 + ) + + set(GLOG_FOUND TRUE) + set(GLOG_INCLUDE_DIRS ${glog_INSTALL}/include) + set(GLOG_LIBRARIES ${GFLAGS_LIBRARIES} ${glog_INSTALL}/lib/libglog.a) + set(GLOG_LIBRARY_DIRS ${glog_INSTALL}/lib) + set(GLOG_EXTERNAL TRUE) + + list(APPEND external_project_dependencies glog) + endif() + +endif() + diff --git a/3rdparty/caffe/cmake/Misc.cmake b/3rdparty/caffe/cmake/Misc.cmake new file mode 100644 index 00000000..9dd2609b --- /dev/null +++ b/3rdparty/caffe/cmake/Misc.cmake @@ -0,0 +1,52 @@ +# ---[ Configuration types +set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Possible configurations" FORCE) +mark_as_advanced(CMAKE_CONFIGURATION_TYPES) + +if(DEFINED CMAKE_BUILD_TYPE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES}) +endif() + +# --[ If user doesn't specify build type then assume release +if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) +endif() + +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CMAKE_COMPILER_IS_CLANGXX TRUE) +endif() + +# ---[ Solution folders +caffe_option(USE_PROJECT_FOLDERS "IDE Solution folders" (MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode) ) + +if(USE_PROJECT_FOLDERS) + set_property(GLOBAL PROPERTY USE_FOLDERS ON) + set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets") +endif() + +# ---[ Install options +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/install" CACHE PATH "Default install path" FORCE) +endif() + +# ---[ RPATH settings +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOLEAN "Use link paths for shared library rpath") +set(CMAKE_MACOSX_RPATH TRUE) + +list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES ${CMAKE_INSTALL_PREFIX}/lib __is_systtem_dir) +if(${__is_systtem_dir} STREQUAL -1) + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) +endif() + +# ---[ Funny target +if(UNIX OR APPLE) + add_custom_target(symlink_to_build COMMAND "ln" "-sf" "${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/build" + COMMENT "Adding symlink: /build -> ${PROJECT_BINARY_DIR}" ) +endif() + +# ---[ Set debug postfix +set(Caffe_DEBUG_POSTFIX "-d") + +set(Caffe_POSTFIX "") +if(CMAKE_BUILD_TYPE MATCHES "Debug") + set(Caffe_POSTFIX ${Caffe_DEBUG_POSTFIX}) +endif() diff --git a/3rdparty/caffe/cmake/Modules/FindAtlas.cmake b/3rdparty/caffe/cmake/Modules/FindAtlas.cmake new file mode 100644 index 00000000..7ffa6393 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindAtlas.cmake @@ -0,0 +1,52 @@ +# Find the Atlas (and Lapack) libraries +# +# The following variables are optionally searched for defaults +# Atlas_ROOT_DIR: Base directory where all Atlas components are found +# +# The following are set after configuration is done: +# Atlas_FOUND +# Atlas_INCLUDE_DIRS +# Atlas_LIBRARIES +# Atlas_LIBRARYRARY_DIRS + +set(Atlas_INCLUDE_SEARCH_PATHS + /usr/include/atlas + /usr/include/atlas-base + $ENV{Atlas_ROOT_DIR} + $ENV{Atlas_ROOT_DIR}/include +) + +set(Atlas_LIB_SEARCH_PATHS + /usr/lib/atlas + /usr/lib/atlas-base + $ENV{Atlas_ROOT_DIR} + $ENV{Atlas_ROOT_DIR}/lib +) + +find_path(Atlas_CBLAS_INCLUDE_DIR NAMES cblas.h PATHS ${Atlas_INCLUDE_SEARCH_PATHS}) +find_path(Atlas_CLAPACK_INCLUDE_DIR NAMES clapack.h PATHS ${Atlas_INCLUDE_SEARCH_PATHS}) + +find_library(Atlas_CBLAS_LIBRARY NAMES ptcblas_r ptcblas cblas_r cblas PATHS ${Atlas_LIB_SEARCH_PATHS}) +find_library(Atlas_BLAS_LIBRARY NAMES atlas_r atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) +find_library(Atlas_LAPACK_LIBRARY NAMES lapack alapack_r alapack lapack_atlas atllapack PATHS ${Atlas_LIB_SEARCH_PATHS}) + +set(LOOKED_FOR + Atlas_CBLAS_INCLUDE_DIR + Atlas_CLAPACK_INCLUDE_DIR + + Atlas_CBLAS_LIBRARY + Atlas_BLAS_LIBRARY + Atlas_LAPACK_LIBRARY +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Atlas DEFAULT_MSG ${LOOKED_FOR}) + +if(ATLAS_FOUND) + set(Atlas_INCLUDE_DIR ${Atlas_CBLAS_INCLUDE_DIR} ${Atlas_CLAPACK_INCLUDE_DIR}) + set(Atlas_LIBRARIES ${Atlas_LAPACK_LIBRARY} ${Atlas_CBLAS_LIBRARY} ${Atlas_BLAS_LIBRARY}) + mark_as_advanced(${LOOKED_FOR}) + + message(STATUS "Found Atlas (include: ${Atlas_CBLAS_INCLUDE_DIR} library: ${Atlas_BLAS_LIBRARY} lapack: ${Atlas_LAPACK_LIBRARY}") +endif(ATLAS_FOUND) + diff --git a/3rdparty/caffe/cmake/Modules/FindGFlags.cmake b/3rdparty/caffe/cmake/Modules/FindGFlags.cmake new file mode 100644 index 00000000..29b60f05 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindGFlags.cmake @@ -0,0 +1,50 @@ +# - Try to find GFLAGS +# +# The following variables are optionally searched for defaults +# GFLAGS_ROOT_DIR: Base directory where all GFLAGS components are found +# +# The following are set after configuration is done: +# GFLAGS_FOUND +# GFLAGS_INCLUDE_DIRS +# GFLAGS_LIBRARIES +# GFLAGS_LIBRARYRARY_DIRS + +include(FindPackageHandleStandardArgs) + +set(GFLAGS_ROOT_DIR "" CACHE PATH "Folder contains Gflags") + +# We are testing only a couple of files in the include directories +if(WIN32) + find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h + PATHS ${GFLAGS_ROOT_DIR}/src/windows) +else() + find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h + PATHS ${GFLAGS_ROOT_DIR}) +endif() + +if(MSVC) + find_library(GFLAGS_LIBRARY_RELEASE + NAMES libgflags + PATHS ${GFLAGS_ROOT_DIR} + PATH_SUFFIXES Release) + + find_library(GFLAGS_LIBRARY_DEBUG + NAMES libgflags-debug + PATHS ${GFLAGS_ROOT_DIR} + PATH_SUFFIXES Debug) + + set(GFLAGS_LIBRARY optimized ${GFLAGS_LIBRARY_RELEASE} debug ${GFLAGS_LIBRARY_DEBUG}) +else() + find_library(GFLAGS_LIBRARY gflags) +endif() + +find_package_handle_standard_args(GFlags DEFAULT_MSG GFLAGS_INCLUDE_DIR GFLAGS_LIBRARY) + + +if(GFLAGS_FOUND) + set(GFLAGS_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIR}) + set(GFLAGS_LIBRARIES ${GFLAGS_LIBRARY}) + message(STATUS "Found gflags (include: ${GFLAGS_INCLUDE_DIR}, library: ${GFLAGS_LIBRARY})") + mark_as_advanced(GFLAGS_LIBRARY_DEBUG GFLAGS_LIBRARY_RELEASE + GFLAGS_LIBRARY GFLAGS_INCLUDE_DIR GFLAGS_ROOT_DIR) +endif() diff --git a/3rdparty/caffe/cmake/Modules/FindGlog.cmake b/3rdparty/caffe/cmake/Modules/FindGlog.cmake new file mode 100644 index 00000000..99abbe47 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindGlog.cmake @@ -0,0 +1,48 @@ +# - Try to find Glog +# +# The following variables are optionally searched for defaults +# GLOG_ROOT_DIR: Base directory where all GLOG components are found +# +# The following are set after configuration is done: +# GLOG_FOUND +# GLOG_INCLUDE_DIRS +# GLOG_LIBRARIES +# GLOG_LIBRARYRARY_DIRS + +include(FindPackageHandleStandardArgs) + +set(GLOG_ROOT_DIR "" CACHE PATH "Folder contains Google glog") + +if(WIN32) + find_path(GLOG_INCLUDE_DIR glog/logging.h + PATHS ${GLOG_ROOT_DIR}/src/windows) +else() + find_path(GLOG_INCLUDE_DIR glog/logging.h + PATHS ${GLOG_ROOT_DIR}) +endif() + +if(MSVC) + find_library(GLOG_LIBRARY_RELEASE libglog_static + PATHS ${GLOG_ROOT_DIR} + PATH_SUFFIXES Release) + + find_library(GLOG_LIBRARY_DEBUG libglog_static + PATHS ${GLOG_ROOT_DIR} + PATH_SUFFIXES Debug) + + set(GLOG_LIBRARY optimized ${GLOG_LIBRARY_RELEASE} debug ${GLOG_LIBRARY_DEBUG}) +else() + find_library(GLOG_LIBRARY glog + PATHS ${GLOG_ROOT_DIR} + PATH_SUFFIXES lib lib64) +endif() + +find_package_handle_standard_args(Glog DEFAULT_MSG GLOG_INCLUDE_DIR GLOG_LIBRARY) + +if(GLOG_FOUND) + set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR}) + set(GLOG_LIBRARIES ${GLOG_LIBRARY}) + message(STATUS "Found glog (include: ${GLOG_INCLUDE_DIR}, library: ${GLOG_LIBRARY})") + mark_as_advanced(GLOG_ROOT_DIR GLOG_LIBRARY_RELEASE GLOG_LIBRARY_DEBUG + GLOG_LIBRARY GLOG_INCLUDE_DIR) +endif() diff --git a/3rdparty/caffe/cmake/Modules/FindLAPACK.cmake b/3rdparty/caffe/cmake/Modules/FindLAPACK.cmake new file mode 100644 index 00000000..9641c45d --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindLAPACK.cmake @@ -0,0 +1,190 @@ +# - Find LAPACK library +# This module finds an installed fortran library that implements the LAPACK +# linear-algebra interface (see http://www.netlib.org/lapack/). +# +# The approach follows that taken for the autoconf macro file, acx_lapack.m4 +# (distributed at http://ac-archive.sourceforge.net/ac-archive/acx_lapack.html). +# +# This module sets the following variables: +# LAPACK_FOUND - set to true if a library implementing the LAPACK interface is found +# LAPACK_LIBRARIES - list of libraries (using full path name) for LAPACK + +# Note: I do not think it is a good idea to mixup different BLAS/LAPACK versions +# Hence, this script wants to find a Lapack library matching your Blas library + +# Do nothing if LAPACK was found before +IF(NOT LAPACK_FOUND) + +SET(LAPACK_LIBRARIES) +SET(LAPACK_INFO) + +IF(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) + FIND_PACKAGE(BLAS) +ELSE(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) + FIND_PACKAGE(BLAS REQUIRED) +ENDIF(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) + +# Old search lapack script +include(CheckFortranFunctionExists) + +macro(Check_Lapack_Libraries LIBRARIES _prefix _name _flags _list _blas) + # This macro checks for the existence of the combination of fortran libraries + # given by _list. If the combination is found, this macro checks (using the + # Check_Fortran_Function_Exists macro) whether can link against that library + # combination using the name of a routine given by _name using the linker + # flags given by _flags. If the combination of libraries is found and passes + # the link test, LIBRARIES is set to the list of complete library paths that + # have been found. Otherwise, LIBRARIES is set to FALSE. + # N.B. _prefix is the prefix applied to the names of all cached variables that + # are generated internally and marked advanced by this macro. + set(_libraries_work TRUE) + set(${LIBRARIES}) + set(_combined_name) + foreach(_library ${_list}) + set(_combined_name ${_combined_name}_${_library}) + if(_libraries_work) + if (WIN32) + find_library(${_prefix}_${_library}_LIBRARY + NAMES ${_library} PATHS ENV LIB PATHS ENV PATH) + else (WIN32) + if(APPLE) + find_library(${_prefix}_${_library}_LIBRARY + NAMES ${_library} + PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 + ENV DYLD_LIBRARY_PATH) + else(APPLE) + find_library(${_prefix}_${_library}_LIBRARY + NAMES ${_library} + PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 + ENV LD_LIBRARY_PATH) + endif(APPLE) + endif(WIN32) + mark_as_advanced(${_prefix}_${_library}_LIBRARY) + set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY}) + set(_libraries_work ${${_prefix}_${_library}_LIBRARY}) + endif(_libraries_work) + endforeach(_library ${_list}) + if(_libraries_work) + # Test this combination of libraries. + set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_blas}) + if (CMAKE_Fortran_COMPILER_WORKS) + check_fortran_function_exists(${_name} ${_prefix}${_combined_name}_WORKS) + else (CMAKE_Fortran_COMPILER_WORKS) + check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS) + endif (CMAKE_Fortran_COMPILER_WORKS) + set(CMAKE_REQUIRED_LIBRARIES) + mark_as_advanced(${_prefix}${_combined_name}_WORKS) + set(_libraries_work ${${_prefix}${_combined_name}_WORKS}) + endif(_libraries_work) + if(NOT _libraries_work) + set(${LIBRARIES} FALSE) + endif(NOT _libraries_work) +endmacro(Check_Lapack_Libraries) + + +if(BLAS_FOUND) + + # Intel MKL + IF((NOT LAPACK_INFO) AND (BLAS_INFO STREQUAL "mkl")) + IF(MKL_LAPACK_LIBRARIES) + SET(LAPACK_LIBRARIES ${MKL_LAPACK_LIBRARIES} ${MKL_LIBRARIES}) + ELSE(MKL_LAPACK_LIBRARIES) + SET(LAPACK_LIBRARIES ${MKL_LIBRARIES}) + ENDIF(MKL_LAPACK_LIBRARIES) + SET(LAPACK_INCLUDE_DIR ${MKL_INCLUDE_DIR}) + SET(LAPACK_INFO "mkl") + ENDIF() + + # OpenBlas + IF((NOT LAPACK_INFO) AND (BLAS_INFO STREQUAL "open")) + SET(CMAKE_REQUIRED_LIBRARIES ${BLAS_LIBRARIES}) + check_function_exists("cheev_" OPEN_LAPACK_WORKS) + if(OPEN_LAPACK_WORKS) + SET(LAPACK_INFO "open") + else() + message(STATUS "It seems OpenBlas has not been compiled with Lapack support") + endif() + endif() + + # GotoBlas + IF((NOT LAPACK_INFO) AND (BLAS_INFO STREQUAL "goto")) + SET(CMAKE_REQUIRED_LIBRARIES ${BLAS_LIBRARIES}) + check_function_exists("cheev_" GOTO_LAPACK_WORKS) + if(GOTO_LAPACK_WORKS) + SET(LAPACK_INFO "goto") + else() + message(STATUS "It seems GotoBlas has not been compiled with Lapack support") + endif() + endif() + + # ACML + IF((NOT LAPACK_INFO) AND (BLAS_INFO STREQUAL "acml")) + SET(CMAKE_REQUIRED_LIBRARIES ${BLAS_LIBRARIES}) + check_function_exists("cheev_" ACML_LAPACK_WORKS) + if(ACML_LAPACK_WORKS) + SET(LAPACK_INFO "acml") + else() + message(STATUS "Strangely, this ACML library does not support Lapack?!") + endif() + endif() + + # Accelerate + IF((NOT LAPACK_INFO) AND (BLAS_INFO STREQUAL "accelerate")) + SET(CMAKE_REQUIRED_LIBRARIES ${BLAS_LIBRARIES}) + check_function_exists("cheev_" ACCELERATE_LAPACK_WORKS) + if(ACCELERATE_LAPACK_WORKS) + SET(LAPACK_INFO "accelerate") + else() + message(STATUS "Strangely, this Accelerate library does not support Lapack?!") + endif() + endif() + + # vecLib + IF((NOT LAPACK_INFO) AND (BLAS_INFO STREQUAL "veclib")) + SET(CMAKE_REQUIRED_LIBRARIES ${BLAS_LIBRARIES}) + check_function_exists("cheev_" VECLIB_LAPACK_WORKS) + if(VECLIB_LAPACK_WORKS) + SET(LAPACK_INFO "veclib") + else() + message(STATUS "Strangely, this vecLib library does not support Lapack?!") + endif() + endif() + + # Generic LAPACK library? + IF((NOT LAPACK_INFO) AND (BLAS_INFO STREQUAL "generic")) + check_lapack_libraries( + LAPACK_LIBRARIES + LAPACK + cheev + "" + "lapack" + "${BLAS_LIBRARIES}" + ) + if(LAPACK_LIBRARIES) + SET(LAPACK_INFO "generic") + endif(LAPACK_LIBRARIES) + endif() + +else(BLAS_FOUND) + message(STATUS "LAPACK requires BLAS") +endif(BLAS_FOUND) + +if(LAPACK_INFO) + set(LAPACK_FOUND TRUE) +else(LAPACK_INFO) + set(LAPACK_FOUND FALSE) +endif(LAPACK_INFO) + +IF (NOT LAPACK_FOUND AND LAPACK_FIND_REQUIRED) + message(FATAL_ERROR "Cannot find a library with LAPACK API. Please specify library location.") +ENDIF (NOT LAPACK_FOUND AND LAPACK_FIND_REQUIRED) +IF(NOT LAPACK_FIND_QUIETLY) + IF(LAPACK_FOUND) + MESSAGE(STATUS "Found a library with LAPACK API. (${LAPACK_INFO})") + ELSE(LAPACK_FOUND) + MESSAGE(STATUS "Cannot find a library with LAPACK API. Not using LAPACK.") + ENDIF(LAPACK_FOUND) +ENDIF(NOT LAPACK_FIND_QUIETLY) + +# Do nothing if LAPACK was found before +ENDIF(NOT LAPACK_FOUND) diff --git a/3rdparty/caffe/cmake/Modules/FindLMDB.cmake b/3rdparty/caffe/cmake/Modules/FindLMDB.cmake new file mode 100644 index 00000000..8a817fd6 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindLMDB.cmake @@ -0,0 +1,28 @@ +# Try to find the LMBD libraries and headers +# LMDB_FOUND - system has LMDB lib +# LMDB_INCLUDE_DIR - the LMDB include directory +# LMDB_LIBRARIES - Libraries needed to use LMDB + +# FindCWD based on FindGMP by: +# Copyright (c) 2006, Laurent Montel, +# +# Redistribution and use is allowed according to the terms of the BSD license. + +# Adapted from FindCWD by: +# Copyright 2013 Conrad Steenberg +# Aug 31, 2013 + +find_path(LMDB_INCLUDE_DIR NAMES lmdb.h PATHS "$ENV{LMDB_DIR}/include") +find_library(LMDB_LIBRARIES NAMES lmdb PATHS "$ENV{LMDB_DIR}/lib" ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LMDB DEFAULT_MSG LMDB_INCLUDE_DIR LMDB_LIBRARIES) + +if(LMDB_FOUND) + message(STATUS "Found lmdb (include: ${LMDB_INCLUDE_DIR}, library: ${LMDB_LIBRARIES})") + mark_as_advanced(LMDB_INCLUDE_DIR LMDB_LIBRARIES) + + caffe_parse_header(${LMDB_INCLUDE_DIR}/lmdb.h + LMDB_VERSION_LINES MDB_VERSION_MAJOR MDB_VERSION_MINOR MDB_VERSION_PATCH) + set(LMDB_VERSION "${MDB_VERSION_MAJOR}.${MDB_VERSION_MINOR}.${MDB_VERSION_PATCH}") +endif() diff --git a/3rdparty/caffe/cmake/Modules/FindLevelDB.cmake b/3rdparty/caffe/cmake/Modules/FindLevelDB.cmake new file mode 100644 index 00000000..97f08ac9 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindLevelDB.cmake @@ -0,0 +1,44 @@ +# - Find LevelDB +# +# LevelDB_INCLUDES - List of LevelDB includes +# LevelDB_LIBRARIES - List of libraries when using LevelDB. +# LevelDB_FOUND - True if LevelDB found. + +# Look for the header file. +find_path(LevelDB_INCLUDE NAMES leveldb/db.h + PATHS $ENV{LEVELDB_ROOT}/include /opt/local/include /usr/local/include /usr/include + DOC "Path in which the file leveldb/db.h is located." ) + +# Look for the library. +find_library(LevelDB_LIBRARY NAMES leveldb + PATHS /usr/lib $ENV{LEVELDB_ROOT}/lib + DOC "Path to leveldb library." ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LevelDB DEFAULT_MSG LevelDB_INCLUDE LevelDB_LIBRARY) + +if(LEVELDB_FOUND) + message(STATUS "Found LevelDB (include: ${LevelDB_INCLUDE}, library: ${LevelDB_LIBRARY})") + set(LevelDB_INCLUDES ${LevelDB_INCLUDE}) + set(LevelDB_LIBRARIES ${LevelDB_LIBRARY}) + mark_as_advanced(LevelDB_INCLUDE LevelDB_LIBRARY) + + if(EXISTS "${LevelDB_INCLUDE}/leveldb/db.h") + file(STRINGS "${LevelDB_INCLUDE}/leveldb/db.h" __version_lines + REGEX "static const int k[^V]+Version[ \t]+=[ \t]+[0-9]+;") + + foreach(__line ${__version_lines}) + if(__line MATCHES "[^k]+kMajorVersion[ \t]+=[ \t]+([0-9]+);") + set(LEVELDB_VERSION_MAJOR ${CMAKE_MATCH_1}) + elseif(__line MATCHES "[^k]+kMinorVersion[ \t]+=[ \t]+([0-9]+);") + set(LEVELDB_VERSION_MINOR ${CMAKE_MATCH_1}) + endif() + endforeach() + + if(LEVELDB_VERSION_MAJOR AND LEVELDB_VERSION_MINOR) + set(LEVELDB_VERSION "${LEVELDB_VERSION_MAJOR}.${LEVELDB_VERSION_MINOR}") + endif() + + caffe_clear_vars(__line __version_lines) + endif() +endif() diff --git a/3rdparty/caffe/cmake/Modules/FindMKL.cmake b/3rdparty/caffe/cmake/Modules/FindMKL.cmake new file mode 100644 index 00000000..5ab93b2d --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindMKL.cmake @@ -0,0 +1,110 @@ +# Find the MKL libraries +# +# Options: +# +# MKL_USE_SINGLE_DYNAMIC_LIBRARY : use single dynamic library interface +# MKL_USE_STATIC_LIBS : use static libraries +# MKL_MULTI_THREADED : use multi-threading +# +# This module defines the following variables: +# +# MKL_FOUND : True mkl is found +# MKL_INCLUDE_DIR : unclude directory +# MKL_LIBRARIES : the libraries to link against. + + +# ---[ Options +caffe_option(MKL_USE_SINGLE_DYNAMIC_LIBRARY "Use single dynamic library interface" ON) +caffe_option(MKL_USE_STATIC_LIBS "Use static libraries" OFF IF NOT MKL_USE_SINGLE_DYNAMIC_LIBRARY) +caffe_option(MKL_MULTI_THREADED "Use multi-threading" ON IF NOT MKL_USE_SINGLE_DYNAMIC_LIBRARY) + +# ---[ Root folders +set(INTEL_ROOT "/opt/intel" CACHE PATH "Folder contains intel libs") +find_path(MKL_ROOT include/mkl.h PATHS $ENV{MKLROOT} ${INTEL_ROOT}/mkl + DOC "Folder contains MKL") + +# ---[ Find include dir +find_path(MKL_INCLUDE_DIR mkl.h PATHS ${MKL_ROOT} PATH_SUFFIXES include) +set(__looked_for MKL_INCLUDE_DIR) + +# ---[ Find libraries +if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(__path_suffixes lib lib/ia32) +else() + set(__path_suffixes lib lib/intel64) +endif() + +set(__mkl_libs "") +if(MKL_USE_SINGLE_DYNAMIC_LIBRARY) + list(APPEND __mkl_libs rt) +else() + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + if(WIN32) + list(APPEND __mkl_libs intel_c) + else() + list(APPEND __mkl_libs intel gf) + endif() + else() + list(APPEND __mkl_libs intel_lp64 gf_lp64) + endif() + + if(MKL_MULTI_THREADED) + list(APPEND __mkl_libs intel_thread) + else() + list(APPEND __mkl_libs sequential) + endif() + + list(APPEND __mkl_libs core cdft_core) +endif() + + +foreach (__lib ${__mkl_libs}) + set(__mkl_lib "mkl_${__lib}") + string(TOUPPER ${__mkl_lib} __mkl_lib_upper) + + if(MKL_USE_STATIC_LIBS) + set(__mkl_lib "lib${__mkl_lib}.a") + endif() + + find_library(${__mkl_lib_upper}_LIBRARY + NAMES ${__mkl_lib} + PATHS ${MKL_ROOT} "${MKL_INCLUDE_DIR}/.." + PATH_SUFFIXES ${__path_suffixes} + DOC "The path to Intel(R) MKL ${__mkl_lib} library") + mark_as_advanced(${__mkl_lib_upper}_LIBRARY) + + list(APPEND __looked_for ${__mkl_lib_upper}_LIBRARY) + list(APPEND MKL_LIBRARIES ${${__mkl_lib_upper}_LIBRARY}) +endforeach() + + +if(NOT MKL_USE_SINGLE_DYNAMIC_LIBRARY) + if (MKL_USE_STATIC_LIBS) + set(__iomp5_libs iomp5 libiomp5mt.lib) + else() + set(__iomp5_libs iomp5 libiomp5md.lib) + endif() + + if(WIN32) + find_path(INTEL_INCLUDE_DIR omp.h PATHS ${INTEL_ROOT} PATH_SUFFIXES include) + list(APPEND __looked_for INTEL_INCLUDE_DIR) + endif() + + find_library(MKL_RTL_LIBRARY ${__iomp5_libs} + PATHS ${INTEL_RTL_ROOT} ${INTEL_ROOT}/compiler ${MKL_ROOT}/.. ${MKL_ROOT}/../compiler + PATH_SUFFIXES ${__path_suffixes} + DOC "Path to Path to OpenMP runtime library") + + list(APPEND __looked_for MKL_RTL_LIBRARY) + list(APPEND MKL_LIBRARIES ${MKL_RTL_LIBRARY}) +endif() + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(MKL DEFAULT_MSG ${__looked_for}) + +if(MKL_FOUND) + message(STATUS "Found MKL (include: ${MKL_INCLUDE_DIR}, lib: ${MKL_LIBRARIES}") +endif() + +caffe_clear_vars(__looked_for __mkl_libs __path_suffixes __lib_suffix __iomp5_libs) diff --git a/3rdparty/caffe/cmake/Modules/FindMatlabMex.cmake b/3rdparty/caffe/cmake/Modules/FindMatlabMex.cmake new file mode 100644 index 00000000..28ae65e7 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindMatlabMex.cmake @@ -0,0 +1,48 @@ +# This module looks for MatlabMex compiler +# Defines variables: +# Matlab_DIR - Matlab root dir +# Matlab_mex - path to mex compiler +# Matlab_mexext - path to mexext + +if(MSVC) + foreach(__ver "9.30" "7.14" "7.11" "7.10" "7.9" "7.8" "7.7") + get_filename_component(__matlab_root "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\${__ver};MATLABROOT]" ABSOLUTE) + if(__matlab_root) + break() + endif() + endforeach() +endif() + +if(APPLE) + foreach(__ver "R2014b" "R2014a" "R2013b" "R2013a" "R2012b" "R2012a" "R2011b" "R2011a" "R2010b" "R2010a") + if(EXISTS /Applications/MATLAB_${__ver}.app) + set(__matlab_root /Applications/MATLAB_${__ver}.app) + break() + endif() + endforeach() +endif() + +if(UNIX) + execute_process(COMMAND which matlab OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE __out RESULT_VARIABLE __res) + + if(__res MATCHES 0) # Suppress `readlink` warning if `which` returned nothing + execute_process(COMMAND which matlab COMMAND xargs readlink + COMMAND xargs dirname COMMAND xargs dirname COMMAND xargs echo -n + OUTPUT_VARIABLE __matlab_root OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() +endif() + + +find_path(Matlab_DIR NAMES bin/mex bin/mexext PATHS ${__matlab_root} + DOC "Matlab directory" NO_DEFAULT_PATH) + +find_program(Matlab_mex NAMES mex mex.bat HINTS ${Matlab_DIR} PATH_SUFFIXES bin NO_DEFAULT_PATH) +find_program(Matlab_mexext NAMES mexext mexext.bat HINTS ${Matlab_DIR} PATH_SUFFIXES bin NO_DEFAULT_PATH) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(MatlabMex DEFAULT_MSG Matlab_mex Matlab_mexext) + +if(MATLABMEX_FOUND) + mark_as_advanced(Matlab_mex Matlab_mexext) +endif() diff --git a/3rdparty/caffe/cmake/Modules/FindNCCL.cmake b/3rdparty/caffe/cmake/Modules/FindNCCL.cmake new file mode 100644 index 00000000..c8845934 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindNCCL.cmake @@ -0,0 +1,26 @@ +set(NCCL_INC_PATHS + /usr/include + /usr/local/include + $ENV{NCCL_DIR}/include + ) + +set(NCCL_LIB_PATHS + /lib + /lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + $ENV{NCCL_DIR}/lib + ) + +find_path(NCCL_INCLUDE_DIR NAMES nccl.h PATHS ${NCCL_INC_PATHS}) +find_library(NCCL_LIBRARIES NAMES nccl PATHS ${NCCL_LIB_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(NCCL DEFAULT_MSG NCCL_INCLUDE_DIR NCCL_LIBRARIES) + +if (NCCL_FOUND) + message(STATUS "Found NCCL (include: ${NCCL_INCLUDE_DIR}, library: ${NCCL_LIBRARIES})") + mark_as_advanced(NCCL_INCLUDE_DIR NCCL_LIBRARIES) +endif () diff --git a/3rdparty/caffe/cmake/Modules/FindNumPy.cmake b/3rdparty/caffe/cmake/Modules/FindNumPy.cmake new file mode 100644 index 00000000..a671494c --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindNumPy.cmake @@ -0,0 +1,58 @@ +# - Find the NumPy libraries +# This module finds if NumPy is installed, and sets the following variables +# indicating where it is. +# +# TODO: Update to provide the libraries and paths for linking npymath lib. +# +# NUMPY_FOUND - was NumPy found +# NUMPY_VERSION - the version of NumPy found as a string +# NUMPY_VERSION_MAJOR - the major version number of NumPy +# NUMPY_VERSION_MINOR - the minor version number of NumPy +# NUMPY_VERSION_PATCH - the patch version number of NumPy +# NUMPY_VERSION_DECIMAL - e.g. version 1.6.1 is 10601 +# NUMPY_INCLUDE_DIR - path to the NumPy include files + +unset(NUMPY_VERSION) +unset(NUMPY_INCLUDE_DIR) + +if(PYTHONINTERP_FOUND) + execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" + "import numpy as n; print(n.__version__); print(n.get_include());" + RESULT_VARIABLE __result + OUTPUT_VARIABLE __output + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(__result MATCHES 0) + string(REGEX REPLACE ";" "\\\\;" __values ${__output}) + string(REGEX REPLACE "\r?\n" ";" __values ${__values}) + list(GET __values 0 NUMPY_VERSION) + list(GET __values 1 NUMPY_INCLUDE_DIR) + + string(REGEX MATCH "^([0-9])+\\.([0-9])+\\.([0-9])+" __ver_check "${NUMPY_VERSION}") + if(NOT "${__ver_check}" STREQUAL "") + set(NUMPY_VERSION_MAJOR ${CMAKE_MATCH_1}) + set(NUMPY_VERSION_MINOR ${CMAKE_MATCH_2}) + set(NUMPY_VERSION_PATCH ${CMAKE_MATCH_3}) + math(EXPR NUMPY_VERSION_DECIMAL + "(${NUMPY_VERSION_MAJOR} * 10000) + (${NUMPY_VERSION_MINOR} * 100) + ${NUMPY_VERSION_PATCH}") + string(REGEX REPLACE "\\\\" "/" NUMPY_INCLUDE_DIR ${NUMPY_INCLUDE_DIR}) + else() + unset(NUMPY_VERSION) + unset(NUMPY_INCLUDE_DIR) + message(STATUS "Requested NumPy version and include path, but got instead:\n${__output}\n") + endif() + endif() +else() + message(STATUS "To find NumPy Python interpretator is required to be found.") +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(NumPy REQUIRED_VARS NUMPY_INCLUDE_DIR NUMPY_VERSION + VERSION_VAR NUMPY_VERSION) + +if(NUMPY_FOUND) + message(STATUS "NumPy ver. ${NUMPY_VERSION} found (include: ${NUMPY_INCLUDE_DIR})") +endif() + +caffe_clear_vars(__result __output __error_value __values __ver_check __error_value) + diff --git a/3rdparty/caffe/cmake/Modules/FindOpenBLAS.cmake b/3rdparty/caffe/cmake/Modules/FindOpenBLAS.cmake new file mode 100644 index 00000000..a6512ae7 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindOpenBLAS.cmake @@ -0,0 +1,64 @@ + + +SET(Open_BLAS_INCLUDE_SEARCH_PATHS + /usr/include + /usr/include/openblas + /usr/include/openblas-base + /usr/local/include + /usr/local/include/openblas + /usr/local/include/openblas-base + /opt/OpenBLAS/include + $ENV{OpenBLAS_HOME} + $ENV{OpenBLAS_HOME}/include +) + +SET(Open_BLAS_LIB_SEARCH_PATHS + /lib/ + /lib/openblas-base + /lib64/ + /usr/lib + /usr/lib/openblas-base + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/OpenBLAS/lib + $ENV{OpenBLAS}cd + $ENV{OpenBLAS}/lib + $ENV{OpenBLAS_HOME} + $ENV{OpenBLAS_HOME}/lib + ) + +FIND_PATH(OpenBLAS_INCLUDE_DIR NAMES cblas.h PATHS ${Open_BLAS_INCLUDE_SEARCH_PATHS}) +FIND_LIBRARY(OpenBLAS_LIB NAMES openblas PATHS ${Open_BLAS_LIB_SEARCH_PATHS}) + +SET(OpenBLAS_FOUND ON) + +# Check include files +IF(NOT OpenBLAS_INCLUDE_DIR) + SET(OpenBLAS_FOUND OFF) + MESSAGE(STATUS "Could not find OpenBLAS include. Turning OpenBLAS_FOUND off") +ENDIF() + +# Check libraries +IF(NOT OpenBLAS_LIB) + SET(OpenBLAS_FOUND OFF) + MESSAGE(STATUS "Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off") +ENDIF() + +IF (OpenBLAS_FOUND) + IF (NOT OpenBLAS_FIND_QUIETLY) + MESSAGE(STATUS "Found OpenBLAS libraries: ${OpenBLAS_LIB}") + MESSAGE(STATUS "Found OpenBLAS include: ${OpenBLAS_INCLUDE_DIR}") + ENDIF (NOT OpenBLAS_FIND_QUIETLY) +ELSE (OpenBLAS_FOUND) + IF (OpenBLAS_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find OpenBLAS") + ENDIF (OpenBLAS_FIND_REQUIRED) +ENDIF (OpenBLAS_FOUND) + +MARK_AS_ADVANCED( + OpenBLAS_INCLUDE_DIR + OpenBLAS_LIB + OpenBLAS +) + diff --git a/3rdparty/caffe/cmake/Modules/FindSnappy.cmake b/3rdparty/caffe/cmake/Modules/FindSnappy.cmake new file mode 100644 index 00000000..eff2a864 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindSnappy.cmake @@ -0,0 +1,28 @@ +# Find the Snappy libraries +# +# The following variables are optionally searched for defaults +# Snappy_ROOT_DIR: Base directory where all Snappy components are found +# +# The following are set after configuration is done: +# SNAPPY_FOUND +# Snappy_INCLUDE_DIR +# Snappy_LIBRARIES + +find_path(Snappy_INCLUDE_DIR NAMES snappy.h + PATHS ${SNAPPY_ROOT_DIR} ${SNAPPY_ROOT_DIR}/include) + +find_library(Snappy_LIBRARIES NAMES snappy + PATHS ${SNAPPY_ROOT_DIR} ${SNAPPY_ROOT_DIR}/lib) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Snappy DEFAULT_MSG Snappy_INCLUDE_DIR Snappy_LIBRARIES) + +if(SNAPPY_FOUND) + message(STATUS "Found Snappy (include: ${Snappy_INCLUDE_DIR}, library: ${Snappy_LIBRARIES})") + mark_as_advanced(Snappy_INCLUDE_DIR Snappy_LIBRARIES) + + caffe_parse_header(${Snappy_INCLUDE_DIR}/snappy-stubs-public.h + SNAPPY_VERION_LINES SNAPPY_MAJOR SNAPPY_MINOR SNAPPY_PATCHLEVEL) + set(Snappy_VERSION "${SNAPPY_MAJOR}.${SNAPPY_MINOR}.${SNAPPY_PATCHLEVEL}") +endif() + diff --git a/3rdparty/caffe/cmake/Modules/FindvecLib.cmake b/3rdparty/caffe/cmake/Modules/FindvecLib.cmake new file mode 100644 index 00000000..8eaab594 --- /dev/null +++ b/3rdparty/caffe/cmake/Modules/FindvecLib.cmake @@ -0,0 +1,35 @@ +# Find the vecLib libraries as part of Accelerate.framework or as standalon framework +# +# The following are set after configuration is done: +# VECLIB_FOUND +# vecLib_INCLUDE_DIR +# vecLib_LINKER_LIBS + + +if(NOT APPLE) + return() +endif() + +set(__veclib_include_suffix "Frameworks/vecLib.framework/Versions/Current/Headers") + +find_path(vecLib_INCLUDE_DIR vecLib.h + DOC "vecLib include directory" + PATHS /System/Library/Frameworks/Accelerate.framework/Versions/Current/${__veclib_include_suffix} + /System/Library/${__veclib_include_suffix} + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ + NO_DEFAULT_PATH) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(vecLib DEFAULT_MSG vecLib_INCLUDE_DIR) + +if(VECLIB_FOUND) + if(vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*") + set(vecLib_LINKER_LIBS -lcblas "-framework vecLib") + message(STATUS "Found standalone vecLib.framework") + else() + set(vecLib_LINKER_LIBS -lcblas "-framework Accelerate") + message(STATUS "Found vecLib as part of Accelerate.framework") + endif() + + mark_as_advanced(vecLib_INCLUDE_DIR) +endif() diff --git a/3rdparty/caffe/cmake/ProtoBuf.cmake b/3rdparty/caffe/cmake/ProtoBuf.cmake new file mode 100644 index 00000000..8005b448 --- /dev/null +++ b/3rdparty/caffe/cmake/ProtoBuf.cmake @@ -0,0 +1,90 @@ +# Finds Google Protocol Buffers library and compilers and extends +# the standard cmake script with version and python generation support + +find_package( Protobuf REQUIRED ) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${PROTOBUF_INCLUDE_DIR}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${PROTOBUF_LIBRARIES}) + +# As of Ubuntu 14.04 protoc is no longer a part of libprotobuf-dev package +# and should be installed separately as in: sudo apt-get install protobuf-compiler +if(EXISTS ${PROTOBUF_PROTOC_EXECUTABLE}) + message(STATUS "Found PROTOBUF Compiler: ${PROTOBUF_PROTOC_EXECUTABLE}") +else() + message(FATAL_ERROR "Could not find PROTOBUF Compiler") +endif() + +if(PROTOBUF_FOUND) + # fetches protobuf version + caffe_parse_header(${PROTOBUF_INCLUDE_DIR}/google/protobuf/stubs/common.h VERION_LINE GOOGLE_PROTOBUF_VERSION) + string(REGEX MATCH "([0-9])00([0-9])00([0-9])" PROTOBUF_VERSION ${GOOGLE_PROTOBUF_VERSION}) + set(PROTOBUF_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}") + unset(GOOGLE_PROTOBUF_VERSION) +endif() + +# place where to generate protobuf sources +set(proto_gen_folder "${PROJECT_BINARY_DIR}/include/caffe/proto") +include_directories("${PROJECT_BINARY_DIR}/include") + +set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE) + +################################################################################################ +# Modification of standard 'protobuf_generate_cpp()' with output dir parameter and python support +# Usage: +# caffe_protobuf_generate_cpp_py( ) +function(caffe_protobuf_generate_cpp_py output_dir srcs_var hdrs_var python_var) + if(NOT ARGN) + message(SEND_ERROR "Error: caffe_protobuf_generate_cpp_py() called without any proto files") + return() + endif() + + if(PROTOBUF_GENERATE_CPP_APPEND_PATH) + # Create an include path for each file specified + foreach(fil ${ARGN}) + get_filename_component(abs_fil ${fil} ABSOLUTE) + get_filename_component(abs_path ${abs_fil} PATH) + list(FIND _protoc_include ${abs_path} _contains_already) + if(${_contains_already} EQUAL -1) + list(APPEND _protoc_include -I ${abs_path}) + endif() + endforeach() + else() + set(_protoc_include -I ${CMAKE_CURRENT_SOURCE_DIR}) + endif() + + if(DEFINED PROTOBUF_IMPORT_DIRS) + foreach(dir ${PROTOBUF_IMPORT_DIRS}) + get_filename_component(abs_path ${dir} ABSOLUTE) + list(FIND _protoc_include ${abs_path} _contains_already) + if(${_contains_already} EQUAL -1) + list(APPEND _protoc_include -I ${abs_path}) + endif() + endforeach() + endif() + + set(${srcs_var}) + set(${hdrs_var}) + set(${python_var}) + foreach(fil ${ARGN}) + get_filename_component(abs_fil ${fil} ABSOLUTE) + get_filename_component(fil_we ${fil} NAME_WE) + + list(APPEND ${srcs_var} "${output_dir}/${fil_we}.pb.cc") + list(APPEND ${hdrs_var} "${output_dir}/${fil_we}.pb.h") + list(APPEND ${python_var} "${output_dir}/${fil_we}_pb2.py") + + add_custom_command( + OUTPUT "${output_dir}/${fil_we}.pb.cc" + "${output_dir}/${fil_we}.pb.h" + "${output_dir}/${fil_we}_pb2.py" + COMMAND ${CMAKE_COMMAND} -E make_directory "${output_dir}" + COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} --cpp_out ${output_dir} ${_protoc_include} ${abs_fil} + COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} --python_out ${output_dir} ${_protoc_include} ${abs_fil} + DEPENDS ${abs_fil} + COMMENT "Running C++/Python protocol buffer compiler on ${fil}" VERBATIM ) + endforeach() + + set_source_files_properties(${${srcs_var}} ${${hdrs_var}} ${${python_var}} PROPERTIES GENERATED TRUE) + set(${srcs_var} ${${srcs_var}} PARENT_SCOPE) + set(${hdrs_var} ${${hdrs_var}} PARENT_SCOPE) + set(${python_var} ${${python_var}} PARENT_SCOPE) +endfunction() diff --git a/3rdparty/caffe/cmake/Summary.cmake b/3rdparty/caffe/cmake/Summary.cmake new file mode 100644 index 00000000..ed8c2526 --- /dev/null +++ b/3rdparty/caffe/cmake/Summary.cmake @@ -0,0 +1,178 @@ +################################################################################################ +# Caffe status report function. +# Automatically align right column and selects text based on condition. +# Usage: +# caffe_status() +# caffe_status( [ ...]) +# caffe_status( THEN ELSE ) +function(caffe_status text) + set(status_cond) + set(status_then) + set(status_else) + + set(status_current_name "cond") + foreach(arg ${ARGN}) + if(arg STREQUAL "THEN") + set(status_current_name "then") + elseif(arg STREQUAL "ELSE") + set(status_current_name "else") + else() + list(APPEND status_${status_current_name} ${arg}) + endif() + endforeach() + + if(DEFINED status_cond) + set(status_placeholder_length 23) + string(RANDOM LENGTH ${status_placeholder_length} ALPHABET " " status_placeholder) + string(LENGTH "${text}" status_text_length) + if(status_text_length LESS status_placeholder_length) + string(SUBSTRING "${text}${status_placeholder}" 0 ${status_placeholder_length} status_text) + elseif(DEFINED status_then OR DEFINED status_else) + message(STATUS "${text}") + set(status_text "${status_placeholder}") + else() + set(status_text "${text}") + endif() + + if(DEFINED status_then OR DEFINED status_else) + if(${status_cond}) + string(REPLACE ";" " " status_then "${status_then}") + string(REGEX REPLACE "^[ \t]+" "" status_then "${status_then}") + message(STATUS "${status_text} ${status_then}") + else() + string(REPLACE ";" " " status_else "${status_else}") + string(REGEX REPLACE "^[ \t]+" "" status_else "${status_else}") + message(STATUS "${status_text} ${status_else}") + endif() + else() + string(REPLACE ";" " " status_cond "${status_cond}") + string(REGEX REPLACE "^[ \t]+" "" status_cond "${status_cond}") + message(STATUS "${status_text} ${status_cond}") + endif() + else() + message(STATUS "${text}") + endif() +endfunction() + + +################################################################################################ +# Function for fetching Caffe version from git and headers +# Usage: +# caffe_extract_caffe_version() +function(caffe_extract_caffe_version) + set(Caffe_GIT_VERSION "unknown") + find_package(Git) + if(GIT_FOUND) + execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + OUTPUT_VARIABLE Caffe_GIT_VERSION + RESULT_VARIABLE __git_result) + if(NOT ${__git_result} EQUAL 0) + set(Caffe_GIT_VERSION "unknown") + endif() + endif() + + set(Caffe_GIT_VERSION ${Caffe_GIT_VERSION} PARENT_SCOPE) + set(Caffe_VERSION " (Caffe doesn't declare its version in headers)" PARENT_SCOPE) + + # caffe_parse_header(${Caffe_INCLUDE_DIR}/caffe/version.hpp Caffe_VERSION_LINES CAFFE_MAJOR CAFFE_MINOR CAFFE_PATCH) + # set(Caffe_VERSION "${CAFFE_MAJOR}.${CAFFE_MINOR}.${CAFFE_PATCH}" PARENT_SCOPE) + + # or for #define Caffe_VERSION "x.x.x" + # caffe_parse_header_single_define(Caffe ${Caffe_INCLUDE_DIR}/caffe/version.hpp Caffe_VERSION) + # set(Caffe_VERSION ${Caffe_VERSION_STRING} PARENT_SCOPE) + +endfunction() + + +################################################################################################ +# Prints accumulated caffe configuration summary +# Usage: +# caffe_print_configuration_summary() + +function(caffe_print_configuration_summary) + caffe_extract_caffe_version() + set(Caffe_VERSION ${Caffe_VERSION} PARENT_SCOPE) + + caffe_merge_flag_lists(__flags_rel CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS) + caffe_merge_flag_lists(__flags_deb CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS) + + caffe_status("") + caffe_status("******************* Caffe Configuration Summary *******************") + caffe_status("General:") + caffe_status(" Version : ${CAFFE_TARGET_VERSION}") + caffe_status(" Git : ${Caffe_GIT_VERSION}") + caffe_status(" System : ${CMAKE_SYSTEM_NAME}") + caffe_status(" C++ compiler : ${CMAKE_CXX_COMPILER}") + caffe_status(" Release CXX flags : ${__flags_rel}") + caffe_status(" Debug CXX flags : ${__flags_deb}") + caffe_status(" Build type : ${CMAKE_BUILD_TYPE}") + caffe_status("") + caffe_status(" BUILD_SHARED_LIBS : ${BUILD_SHARED_LIBS}") + caffe_status(" BUILD_python : ${BUILD_python}") + caffe_status(" BUILD_matlab : ${BUILD_matlab}") + caffe_status(" BUILD_docs : ${BUILD_docs}") + caffe_status(" CPU_ONLY : ${CPU_ONLY}") + caffe_status(" USE_OPENCV : ${USE_OPENCV}") + caffe_status(" USE_LEVELDB : ${USE_LEVELDB}") + caffe_status(" USE_LMDB : ${USE_LMDB}") + caffe_status(" USE_NCCL : ${USE_NCCL}") + caffe_status(" ALLOW_LMDB_NOLOCK : ${ALLOW_LMDB_NOLOCK}") + caffe_status("") + caffe_status("Dependencies:") + caffe_status(" BLAS : " APPLE THEN "Yes (vecLib)" ELSE "Yes (${BLAS})") + caffe_status(" Boost : Yes (ver. ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION})") + caffe_status(" glog : Yes") + caffe_status(" gflags : Yes") + caffe_status(" protobuf : " PROTOBUF_FOUND THEN "Yes (ver. ${PROTOBUF_VERSION})" ELSE "No" ) + if(USE_LMDB) + caffe_status(" lmdb : " LMDB_FOUND THEN "Yes (ver. ${LMDB_VERSION})" ELSE "No") + endif() + if(USE_LEVELDB) + caffe_status(" LevelDB : " LEVELDB_FOUND THEN "Yes (ver. ${LEVELDB_VERSION})" ELSE "No") + caffe_status(" Snappy : " SNAPPY_FOUND THEN "Yes (ver. ${Snappy_VERSION})" ELSE "No" ) + endif() + if(USE_OPENCV) + caffe_status(" OpenCV : Yes (ver. ${OpenCV_VERSION})") + endif() + caffe_status(" CUDA : " HAVE_CUDA THEN "Yes (ver. ${CUDA_VERSION})" ELSE "No" ) + caffe_status("") + if(HAVE_CUDA) + caffe_status("NVIDIA CUDA:") + caffe_status(" Target GPU(s) : ${CUDA_ARCH_NAME}" ) + caffe_status(" GPU arch(s) : ${NVCC_FLAGS_EXTRA_readable}") + if(USE_CUDNN) + caffe_status(" cuDNN : " HAVE_CUDNN THEN "Yes (ver. ${CUDNN_VERSION})" ELSE "Not found") + else() + caffe_status(" cuDNN : Disabled") + endif() + caffe_status("") + endif() + if(HAVE_PYTHON) + caffe_status("Python:") + caffe_status(" Interpreter :" PYTHON_EXECUTABLE THEN "${PYTHON_EXECUTABLE} (ver. ${PYTHON_VERSION_STRING})" ELSE "No") + caffe_status(" Libraries :" PYTHONLIBS_FOUND THEN "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})" ELSE "No") + caffe_status(" NumPy :" NUMPY_FOUND THEN "${NUMPY_INCLUDE_DIR} (ver ${NUMPY_VERSION})" ELSE "No") + caffe_status("") + endif() + if(BUILD_matlab) + caffe_status("Matlab:") + caffe_status(" Matlab :" HAVE_MATLAB THEN "Yes (${Matlab_mex}, ${Matlab_mexext}" ELSE "No") + caffe_status(" Octave :" Octave_compiler THEN "Yes (${Octave_compiler})" ELSE "No") + if(HAVE_MATLAB AND Octave_compiler) + caffe_status(" Build mex using : ${Matlab_build_mex_using}") + endif() + caffe_status("") + endif() + if(BUILD_docs) + caffe_status("Documentaion:") + caffe_status(" Doxygen :" DOXYGEN_FOUND THEN "${DOXYGEN_EXECUTABLE} (${DOXYGEN_VERSION})" ELSE "No") + caffe_status(" config_file : ${DOXYGEN_config_file}") + + caffe_status("") + endif() + caffe_status("Install:") + caffe_status(" Install path : ${CMAKE_INSTALL_PREFIX}") + caffe_status("") +endfunction() diff --git a/3rdparty/caffe/cmake/Targets.cmake b/3rdparty/caffe/cmake/Targets.cmake new file mode 100644 index 00000000..090f86c5 --- /dev/null +++ b/3rdparty/caffe/cmake/Targets.cmake @@ -0,0 +1,174 @@ +################################################################################################ +# Defines global Caffe_LINK flag, This flag is required to prevent linker from excluding +# some objects which are not addressed directly but are registered via static constructors +macro(caffe_set_caffe_link) + if(BUILD_SHARED_LIBS) + set(Caffe_LINK caffe) + else() + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(Caffe_LINK -Wl,-force_load caffe) + elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(Caffe_LINK -Wl,--whole-archive caffe -Wl,--no-whole-archive) + endif() + endif() +endmacro() +################################################################################################ +# Convenient command to setup source group for IDEs that support this feature (VS, XCode) +# Usage: +# caffe_source_group( GLOB[_RECURSE] ) +function(caffe_source_group group) + cmake_parse_arguments(CAFFE_SOURCE_GROUP "" "" "GLOB;GLOB_RECURSE" ${ARGN}) + if(CAFFE_SOURCE_GROUP_GLOB) + file(GLOB srcs1 ${CAFFE_SOURCE_GROUP_GLOB}) + source_group(${group} FILES ${srcs1}) + endif() + + if(CAFFE_SOURCE_GROUP_GLOB_RECURSE) + file(GLOB_RECURSE srcs2 ${CAFFE_SOURCE_GROUP_GLOB_RECURSE}) + source_group(${group} FILES ${srcs2}) + endif() +endfunction() + +################################################################################################ +# Collecting sources from globbing and appending to output list variable +# Usage: +# caffe_collect_sources( GLOB[_RECURSE] ) +function(caffe_collect_sources variable) + cmake_parse_arguments(CAFFE_COLLECT_SOURCES "" "" "GLOB;GLOB_RECURSE" ${ARGN}) + if(CAFFE_COLLECT_SOURCES_GLOB) + file(GLOB srcs1 ${CAFFE_COLLECT_SOURCES_GLOB}) + set(${variable} ${variable} ${srcs1}) + endif() + + if(CAFFE_COLLECT_SOURCES_GLOB_RECURSE) + file(GLOB_RECURSE srcs2 ${CAFFE_COLLECT_SOURCES_GLOB_RECURSE}) + set(${variable} ${variable} ${srcs2}) + endif() +endfunction() + +################################################################################################ +# Short command getting caffe sources (assuming standard Caffe code tree) +# Usage: +# caffe_pickup_caffe_sources() +function(caffe_pickup_caffe_sources root) + # put all files in source groups (visible as subfolder in many IDEs) + caffe_source_group("Include" GLOB "${root}/include/caffe/*.h*") + caffe_source_group("Include\\Util" GLOB "${root}/include/caffe/util/*.h*") + caffe_source_group("Include" GLOB "${PROJECT_BINARY_DIR}/caffe_config.h*") + caffe_source_group("Source" GLOB "${root}/src/caffe/*.cpp") + caffe_source_group("Source\\Util" GLOB "${root}/src/caffe/util/*.cpp") + caffe_source_group("Source\\Layers" GLOB "${root}/src/caffe/layers/*.cpp") + caffe_source_group("Source\\Cuda" GLOB "${root}/src/caffe/layers/*.cu") + caffe_source_group("Source\\Cuda" GLOB "${root}/src/caffe/util/*.cu") + caffe_source_group("Source\\Proto" GLOB "${root}/src/caffe/proto/*.proto") + + # source groups for test target + caffe_source_group("Include" GLOB "${root}/include/caffe/test/test_*.h*") + caffe_source_group("Source" GLOB "${root}/src/caffe/test/test_*.cpp") + caffe_source_group("Source\\Cuda" GLOB "${root}/src/caffe/test/test_*.cu") + + # collect files + file(GLOB test_hdrs ${root}/include/caffe/test/test_*.h*) + file(GLOB test_srcs ${root}/src/caffe/test/test_*.cpp) + file(GLOB_RECURSE hdrs ${root}/include/caffe/*.h*) + file(GLOB_RECURSE srcs ${root}/src/caffe/*.cpp) + list(REMOVE_ITEM hdrs ${test_hdrs}) + list(REMOVE_ITEM srcs ${test_srcs}) + + # adding headers to make the visible in some IDEs (Qt, VS, Xcode) + list(APPEND srcs ${hdrs} ${PROJECT_BINARY_DIR}/caffe_config.h) + list(APPEND test_srcs ${test_hdrs}) + + # collect cuda files + file(GLOB test_cuda ${root}/src/caffe/test/test_*.cu) + file(GLOB_RECURSE cuda ${root}/src/caffe/*.cu) + list(REMOVE_ITEM cuda ${test_cuda}) + + # add proto to make them editable in IDEs too + file(GLOB_RECURSE proto_files ${root}/src/caffe/*.proto) + list(APPEND srcs ${proto_files}) + + # convert to absolute paths + caffe_convert_absolute_paths(srcs) + caffe_convert_absolute_paths(cuda) + caffe_convert_absolute_paths(test_srcs) + caffe_convert_absolute_paths(test_cuda) + + # propagate to parent scope + set(srcs ${srcs} PARENT_SCOPE) + set(cuda ${cuda} PARENT_SCOPE) + set(test_srcs ${test_srcs} PARENT_SCOPE) + set(test_cuda ${test_cuda} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Short command for setting default target properties +# Usage: +# caffe_default_properties() +function(caffe_default_properties target) + set_target_properties(${target} PROPERTIES + DEBUG_POSTFIX ${Caffe_DEBUG_POSTFIX} + ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib" + LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib" + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") + # make sure we build all external dependencies first + if (DEFINED external_project_dependencies) + add_dependencies(${target} ${external_project_dependencies}) + endif() +endfunction() + +################################################################################################ +# Short command for setting runtime directory for build target +# Usage: +# caffe_set_runtime_directory( ) +function(caffe_set_runtime_directory target dir) + set_target_properties(${target} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${dir}") +endfunction() + +################################################################################################ +# Short command for setting solution folder property for target +# Usage: +# caffe_set_solution_folder( ) +function(caffe_set_solution_folder target folder) + if(USE_PROJECT_FOLDERS) + set_target_properties(${target} PROPERTIES FOLDER "${folder}") + endif() +endfunction() + +################################################################################################ +# Reads lines from input file, prepends source directory to each line and writes to output file +# Usage: +# caffe_configure_testdatafile() +function(caffe_configure_testdatafile file) + file(STRINGS ${file} __lines) + set(result "") + foreach(line ${__lines}) + set(result "${result}${PROJECT_SOURCE_DIR}/${line}\n") + endforeach() + file(WRITE ${file}.gen.cmake ${result}) +endfunction() + +################################################################################################ +# Filter out all files that are not included in selected list +# Usage: +# caffe_leave_only_selected_tests( ) +function(caffe_leave_only_selected_tests file_list) + if(NOT ARGN) + return() # blank list means leave all + endif() + string(REPLACE "," ";" __selected ${ARGN}) + list(APPEND __selected caffe_main) + + set(result "") + foreach(f ${${file_list}}) + get_filename_component(name ${f} NAME_WE) + string(REGEX REPLACE "^test_" "" name ${name}) + list(FIND __selected ${name} __index) + if(NOT __index EQUAL -1) + list(APPEND result ${f}) + endif() + endforeach() + set(${file_list} ${result} PARENT_SCOPE) +endfunction() + diff --git a/3rdparty/caffe/cmake/Templates/CaffeConfig.cmake.in b/3rdparty/caffe/cmake/Templates/CaffeConfig.cmake.in new file mode 100644 index 00000000..77c4059e --- /dev/null +++ b/3rdparty/caffe/cmake/Templates/CaffeConfig.cmake.in @@ -0,0 +1,55 @@ +# Config file for the Caffe package. +# +# Note: +# Caffe and this config file depends on opencv, +# so put `find_package(OpenCV)` before searching Caffe +# via `find_package(Caffe)`. All other lib/includes +# dependencies are hard coded in the file +# +# After successful configuration the following variables +# will be defined: +# +# Caffe_LIBRARIES - IMPORTED targets to link against +# (There is no Caffe_INCLUDE_DIRS and Caffe_DEFINITIONS +# because they are specified in the IMPORTED target interface.) +# +# Caffe_HAVE_CUDA - signals about CUDA support +# Caffe_HAVE_CUDNN - signals about cuDNN support + + +# OpenCV dependency (optional) + +if(@USE_OPENCV@) + if(NOT OpenCV_FOUND) + set(Caffe_OpenCV_CONFIG_PATH "@OpenCV_CONFIG_PATH@") + if(Caffe_OpenCV_CONFIG_PATH) + get_filename_component(Caffe_OpenCV_CONFIG_PATH ${Caffe_OpenCV_CONFIG_PATH} ABSOLUTE) + + if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} AND NOT TARGET opencv_core) + message(STATUS "Caffe: using OpenCV config from ${Caffe_OpenCV_CONFIG_PATH}") + include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVConfig.cmake) + endif() + + else() + find_package(OpenCV REQUIRED) + endif() + unset(Caffe_OpenCV_CONFIG_PATH) + endif() +endif() + +# Compute paths +get_filename_component(Caffe_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +# Our library dependencies +if(NOT TARGET caffe AND NOT caffe_BINARY_DIR) + include("${Caffe_CMAKE_DIR}/CaffeTargets.cmake") +endif() + +# List of IMPORTED libs created by CaffeTargets.cmake +# These targets already specify all needed definitions and include pathes +set(Caffe_LIBRARIES caffe) + +# Cuda support variables +set(Caffe_CPU_ONLY @CPU_ONLY@) +set(Caffe_HAVE_CUDA @HAVE_CUDA@) +set(Caffe_HAVE_CUDNN @HAVE_CUDNN@) diff --git a/3rdparty/caffe/cmake/Templates/CaffeConfigVersion.cmake.in b/3rdparty/caffe/cmake/Templates/CaffeConfigVersion.cmake.in new file mode 100644 index 00000000..19f85309 --- /dev/null +++ b/3rdparty/caffe/cmake/Templates/CaffeConfigVersion.cmake.in @@ -0,0 +1,11 @@ +set(PACKAGE_VERSION "@Caffe_VERSION@") + +# Check whether the requested PACKAGE_FIND_VERSION is compatible +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() diff --git a/3rdparty/caffe/cmake/Templates/caffe_config.h.in b/3rdparty/caffe/cmake/Templates/caffe_config.h.in new file mode 100644 index 00000000..2080c63d --- /dev/null +++ b/3rdparty/caffe/cmake/Templates/caffe_config.h.in @@ -0,0 +1,12 @@ +/* Sources directory */ +#define SOURCE_FOLDER "${PROJECT_SOURCE_DIR}" + +/* Binaries directory */ +#define BINARY_FOLDER "${PROJECT_BINARY_DIR}" + +/* This is an absolute path so that we can run test from any build + * directory */ +#define ABS_TEST_DATA_DIR "${PROJECT_SOURCE_DIR}/src/caffe/test/test_data/" + +/* Test device */ +#define CUDA_TEST_DEVICE ${CUDA_TEST_DEVICE} diff --git a/3rdparty/caffe/cmake/Uninstall.cmake.in b/3rdparty/caffe/cmake/Uninstall.cmake.in new file mode 100644 index 00000000..bb8e2964 --- /dev/null +++ b/3rdparty/caffe/cmake/Uninstall.cmake.in @@ -0,0 +1,26 @@ +if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") +endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +if (NOT DEFINED CMAKE_INSTALL_PREFIX) + set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@") +endif () + message(${CMAKE_INSTALL_PREFIX}) + +file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") +foreach(file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + exec_program( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") + endif(NOT "${rm_retval}" STREQUAL 0) + else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + message(STATUS "File $ENV{DESTDIR}${file} does not exist.") + endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") +endforeach(file) \ No newline at end of file diff --git a/3rdparty/caffe/cmake/Utils.cmake b/3rdparty/caffe/cmake/Utils.cmake new file mode 100644 index 00000000..653de5fd --- /dev/null +++ b/3rdparty/caffe/cmake/Utils.cmake @@ -0,0 +1,382 @@ +################################################################################################ +# Command alias for debugging messages +# Usage: +# dmsg() +function(dmsg) + message(STATUS ${ARGN}) +endfunction() + +################################################################################################ +# Removes duplicates from list(s) +# Usage: +# caffe_list_unique( [] [...]) +macro(caffe_list_unique) + foreach(__lst ${ARGN}) + if(${__lst}) + list(REMOVE_DUPLICATES ${__lst}) + endif() + endforeach() +endmacro() + +################################################################################################ +# Clears variables from list +# Usage: +# caffe_clear_vars() +macro(caffe_clear_vars) + foreach(_var ${ARGN}) + unset(${_var}) + endforeach() +endmacro() + +################################################################################################ +# Removes duplicates from string +# Usage: +# caffe_string_unique() +function(caffe_string_unique __string) + if(${__string}) + set(__list ${${__string}}) + separate_arguments(__list) + list(REMOVE_DUPLICATES __list) + foreach(__e ${__list}) + set(__str "${__str} ${__e}") + endforeach() + set(${__string} ${__str} PARENT_SCOPE) + endif() +endfunction() + +################################################################################################ +# Prints list element per line +# Usage: +# caffe_print_list() +function(caffe_print_list) + foreach(e ${ARGN}) + message(STATUS ${e}) + endforeach() +endfunction() + +################################################################################################ +# Function merging lists of compiler flags to single string. +# Usage: +# caffe_merge_flag_lists(out_variable [] [] ...) +function(caffe_merge_flag_lists out_var) + set(__result "") + foreach(__list ${ARGN}) + foreach(__flag ${${__list}}) + string(STRIP ${__flag} __flag) + set(__result "${__result} ${__flag}") + endforeach() + endforeach() + string(STRIP ${__result} __result) + set(${out_var} ${__result} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Converts all paths in list to absolute +# Usage: +# caffe_convert_absolute_paths() +function(caffe_convert_absolute_paths variable) + set(__dlist "") + foreach(__s ${${variable}}) + get_filename_component(__abspath ${__s} ABSOLUTE) + list(APPEND __list ${__abspath}) + endforeach() + set(${variable} ${__list} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Reads set of version defines from the header file +# Usage: +# caffe_parse_header( ..) +macro(caffe_parse_header FILENAME FILE_VAR) + set(vars_regex "") + set(__parnet_scope OFF) + set(__add_cache OFF) + foreach(name ${ARGN}) + if("${name}" STREQUAL "PARENT_SCOPE") + set(__parnet_scope ON) + elseif("${name}" STREQUAL "CACHE") + set(__add_cache ON) + elseif(vars_regex) + set(vars_regex "${vars_regex}|${name}") + else() + set(vars_regex "${name}") + endif() + endforeach() + if(EXISTS "${FILENAME}") + file(STRINGS "${FILENAME}" ${FILE_VAR} REGEX "#define[ \t]+(${vars_regex})[ \t]+[0-9]+" ) + else() + unset(${FILE_VAR}) + endif() + foreach(name ${ARGN}) + if(NOT "${name}" STREQUAL "PARENT_SCOPE" AND NOT "${name}" STREQUAL "CACHE") + if(${FILE_VAR}) + if(${FILE_VAR} MATCHES ".+[ \t]${name}[ \t]+([0-9]+).*") + string(REGEX REPLACE ".+[ \t]${name}[ \t]+([0-9]+).*" "\\1" ${name} "${${FILE_VAR}}") + else() + set(${name} "") + endif() + if(__add_cache) + set(${name} ${${name}} CACHE INTERNAL "${name} parsed from ${FILENAME}" FORCE) + elseif(__parnet_scope) + set(${name} "${${name}}" PARENT_SCOPE) + endif() + else() + unset(${name} CACHE) + endif() + endif() + endforeach() +endmacro() + +################################################################################################ +# Reads single version define from the header file and parses it +# Usage: +# caffe_parse_header_single_define( ) +function(caffe_parse_header_single_define LIBNAME HDR_PATH VARNAME) + set(${LIBNAME}_H "") + if(EXISTS "${HDR_PATH}") + file(STRINGS "${HDR_PATH}" ${LIBNAME}_H REGEX "^#define[ \t]+${VARNAME}[ \t]+\"[^\"]*\".*$" LIMIT_COUNT 1) + endif() + + if(${LIBNAME}_H) + string(REGEX REPLACE "^.*[ \t]${VARNAME}[ \t]+\"([0-9]+).*$" "\\1" ${LIBNAME}_VERSION_MAJOR "${${LIBNAME}_H}") + string(REGEX REPLACE "^.*[ \t]${VARNAME}[ \t]+\"[0-9]+\\.([0-9]+).*$" "\\1" ${LIBNAME}_VERSION_MINOR "${${LIBNAME}_H}") + string(REGEX REPLACE "^.*[ \t]${VARNAME}[ \t]+\"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ${LIBNAME}_VERSION_PATCH "${${LIBNAME}_H}") + set(${LIBNAME}_VERSION_MAJOR ${${LIBNAME}_VERSION_MAJOR} ${ARGN} PARENT_SCOPE) + set(${LIBNAME}_VERSION_MINOR ${${LIBNAME}_VERSION_MINOR} ${ARGN} PARENT_SCOPE) + set(${LIBNAME}_VERSION_PATCH ${${LIBNAME}_VERSION_PATCH} ${ARGN} PARENT_SCOPE) + set(${LIBNAME}_VERSION_STRING "${${LIBNAME}_VERSION_MAJOR}.${${LIBNAME}_VERSION_MINOR}.${${LIBNAME}_VERSION_PATCH}" PARENT_SCOPE) + + # append a TWEAK version if it exists: + set(${LIBNAME}_VERSION_TWEAK "") + if("${${LIBNAME}_H}" MATCHES "^.*[ \t]${VARNAME}[ \t]+\"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$") + set(${LIBNAME}_VERSION_TWEAK "${CMAKE_MATCH_1}" ${ARGN} PARENT_SCOPE) + endif() + if(${LIBNAME}_VERSION_TWEAK) + set(${LIBNAME}_VERSION_STRING "${${LIBNAME}_VERSION_STRING}.${${LIBNAME}_VERSION_TWEAK}" ${ARGN} PARENT_SCOPE) + else() + set(${LIBNAME}_VERSION_STRING "${${LIBNAME}_VERSION_STRING}" ${ARGN} PARENT_SCOPE) + endif() + endif() +endfunction() + +######################################################################################################## +# An option that the user can select. Can accept condition to control when option is available for user. +# Usage: +# caffe_option( "doc string" [IF ]) +function(caffe_option variable description value) + set(__value ${value}) + set(__condition "") + set(__varname "__value") + foreach(arg ${ARGN}) + if(arg STREQUAL "IF" OR arg STREQUAL "if") + set(__varname "__condition") + else() + list(APPEND ${__varname} ${arg}) + endif() + endforeach() + unset(__varname) + if("${__condition}" STREQUAL "") + set(__condition 2 GREATER 1) + endif() + + if(${__condition}) + if("${__value}" MATCHES ";") + if(${__value}) + option(${variable} "${description}" ON) + else() + option(${variable} "${description}" OFF) + endif() + elseif(DEFINED ${__value}) + if(${__value}) + option(${variable} "${description}" ON) + else() + option(${variable} "${description}" OFF) + endif() + else() + option(${variable} "${description}" ${__value}) + endif() + else() + unset(${variable} CACHE) + endif() +endfunction() + +################################################################################################ +# Utility macro for comparing two lists. Used for CMake debugging purposes +# Usage: +# caffe_compare_lists( [description]) +function(caffe_compare_lists list1 list2 desc) + set(__list1 ${${list1}}) + set(__list2 ${${list2}}) + list(SORT __list1) + list(SORT __list2) + list(LENGTH __list1 __len1) + list(LENGTH __list2 __len2) + + if(NOT ${__len1} EQUAL ${__len2}) + message(FATAL_ERROR "Lists are not equal. ${__len1} != ${__len2}. ${desc}") + endif() + + foreach(__i RANGE 1 ${__len1}) + math(EXPR __index "${__i}- 1") + list(GET __list1 ${__index} __item1) + list(GET __list2 ${__index} __item2) + if(NOT ${__item1} STREQUAL ${__item2}) + message(FATAL_ERROR "Lists are not equal. Differ at element ${__index}. ${desc}") + endif() + endforeach() +endfunction() + +################################################################################################ +# Command for disabling warnings for different platforms (see below for gcc and VisualStudio) +# Usage: +# caffe_warnings_disable( -Wshadow /wd4996 ..,) +macro(caffe_warnings_disable) + set(_flag_vars "") + set(_msvc_warnings "") + set(_gxx_warnings "") + + foreach(arg ${ARGN}) + if(arg MATCHES "^CMAKE_") + list(APPEND _flag_vars ${arg}) + elseif(arg MATCHES "^/wd") + list(APPEND _msvc_warnings ${arg}) + elseif(arg MATCHES "^-W") + list(APPEND _gxx_warnings ${arg}) + endif() + endforeach() + + if(NOT _flag_vars) + set(_flag_vars CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + endif() + + if(MSVC AND _msvc_warnings) + foreach(var ${_flag_vars}) + foreach(warning ${_msvc_warnings}) + set(${var} "${${var}} ${warning}") + endforeach() + endforeach() + elseif((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX) AND _gxx_warnings) + foreach(var ${_flag_vars}) + foreach(warning ${_gxx_warnings}) + if(NOT warning MATCHES "^-Wno-") + string(REPLACE "${warning}" "" ${var} "${${var}}") + string(REPLACE "-W" "-Wno-" warning "${warning}") + endif() + set(${var} "${${var}} ${warning}") + endforeach() + endforeach() + endif() + caffe_clear_vars(_flag_vars _msvc_warnings _gxx_warnings) +endmacro() + +################################################################################################ +# Helper function get current definitions +# Usage: +# caffe_get_current_definitions() +function(caffe_get_current_definitions definitions_var) + get_property(current_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS) + set(result "") + + foreach(d ${current_definitions}) + list(APPEND result -D${d}) + endforeach() + + caffe_list_unique(result) + set(${definitions_var} ${result} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Helper function get current includes/definitions +# Usage: +# caffe_get_current_cflags() +function(caffe_get_current_cflags cflags_var) + get_property(current_includes DIRECTORY PROPERTY INCLUDE_DIRECTORIES) + caffe_convert_absolute_paths(current_includes) + caffe_get_current_definitions(cflags) + + foreach(i ${current_includes}) + list(APPEND cflags "-I${i}") + endforeach() + + caffe_list_unique(cflags) + set(${cflags_var} ${cflags} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Helper function to parse current linker libs into link directories, libflags and osx frameworks +# Usage: +# caffe_parse_linker_libs( ) +function(caffe_parse_linker_libs Caffe_LINKER_LIBS_variable folders_var flags_var frameworks_var) + + set(__unspec "") + set(__debug "") + set(__optimized "") + set(__framework "") + set(__varname "__unspec") + + # split libs into debug, optimized, unspecified and frameworks + foreach(list_elem ${${Caffe_LINKER_LIBS_variable}}) + if(list_elem STREQUAL "debug") + set(__varname "__debug") + elseif(list_elem STREQUAL "optimized") + set(__varname "__optimized") + elseif(list_elem MATCHES "^-framework[ \t]+([^ \t].*)") + list(APPEND __framework -framework ${CMAKE_MATCH_1}) + else() + list(APPEND ${__varname} ${list_elem}) + set(__varname "__unspec") + endif() + endforeach() + + # attach debug or optimized libs to unspecified according to current configuration + if(CMAKE_BUILD_TYPE MATCHES "Debug") + set(__libs ${__unspec} ${__debug}) + else() + set(__libs ${__unspec} ${__optimized}) + endif() + + set(libflags "") + set(folders "") + + # convert linker libraries list to link flags + foreach(lib ${__libs}) + if(TARGET ${lib}) + list(APPEND folders $) + list(APPEND libflags -l${lib}) + elseif(lib MATCHES "^-l.*") + list(APPEND libflags ${lib}) + elseif(IS_ABSOLUTE ${lib}) + get_filename_component(folder ${lib} PATH) + get_filename_component(filename ${lib} NAME) + string(REGEX REPLACE "\\.[^.]*$" "" filename_without_shortest_ext ${filename}) + + string(REGEX MATCH "^lib(.*)" __match ${filename_without_shortest_ext}) + list(APPEND libflags -l${CMAKE_MATCH_1}) + list(APPEND folders ${folder}) + else() + message(FATAL_ERROR "Logic error. Need to update cmake script") + endif() + endforeach() + + caffe_list_unique(libflags folders) + + set(${folders_var} ${folders} PARENT_SCOPE) + set(${flags_var} ${libflags} PARENT_SCOPE) + set(${frameworks_var} ${__framework} PARENT_SCOPE) +endfunction() + +################################################################################################ +# Helper function to detect Darwin version, i.e. 10.8, 10.9, 10.10, .... +# Usage: +# caffe_detect_darwin_version() +function(caffe_detect_darwin_version output_var) + if(APPLE) + execute_process(COMMAND /usr/bin/sw_vers -productVersion + RESULT_VARIABLE __sw_vers OUTPUT_VARIABLE __sw_vers_out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(${output_var} ${__sw_vers_out} PARENT_SCOPE) + else() + set(${output_var} "" PARENT_SCOPE) + endif() +endfunction() diff --git a/3rdparty/caffe/cmake/lint.cmake b/3rdparty/caffe/cmake/lint.cmake new file mode 100644 index 00000000..70a00657 --- /dev/null +++ b/3rdparty/caffe/cmake/lint.cmake @@ -0,0 +1,50 @@ + +set(CMAKE_SOURCE_DIR ..) +set(LINT_COMMAND ${CMAKE_SOURCE_DIR}/scripts/cpp_lint.py) +set(SRC_FILE_EXTENSIONS h hpp hu c cpp cu cc) +set(EXCLUDE_FILE_EXTENSTIONS pb.h pb.cc) +set(LINT_DIRS include src/caffe examples tools python matlab) + +cmake_policy(SET CMP0009 NEW) # suppress cmake warning + +# find all files of interest +foreach(ext ${SRC_FILE_EXTENSIONS}) + foreach(dir ${LINT_DIRS}) + file(GLOB_RECURSE FOUND_FILES ${CMAKE_SOURCE_DIR}/${dir}/*.${ext}) + set(LINT_SOURCES ${LINT_SOURCES} ${FOUND_FILES}) + endforeach() +endforeach() + +# find all files that should be excluded +foreach(ext ${EXCLUDE_FILE_EXTENSTIONS}) + file(GLOB_RECURSE FOUND_FILES ${CMAKE_SOURCE_DIR}/*.${ext}) + set(EXCLUDED_FILES ${EXCLUDED_FILES} ${FOUND_FILES}) +endforeach() + +# exclude generated pb files +list(REMOVE_ITEM LINT_SOURCES ${EXCLUDED_FILES}) + +execute_process( + COMMAND ${LINT_COMMAND} ${LINT_SOURCES} + ERROR_VARIABLE LINT_OUTPUT + ERROR_STRIP_TRAILING_WHITESPACE +) + +string(REPLACE "\n" ";" LINT_OUTPUT ${LINT_OUTPUT}) + +list(GET LINT_OUTPUT -1 LINT_RESULT) +list(REMOVE_AT LINT_OUTPUT -1) +string(REPLACE " " ";" LINT_RESULT ${LINT_RESULT}) +list(GET LINT_RESULT -1 NUM_ERRORS) +if(NUM_ERRORS GREATER 0) + foreach(msg ${LINT_OUTPUT}) + string(FIND ${msg} "Done" result) + if(result LESS 0) + message(STATUS ${msg}) + endif() + endforeach() + message(FATAL_ERROR "Lint found ${NUM_ERRORS} errors!") +else() + message(STATUS "Lint did not find any errors!") +endif() + diff --git a/3rdparty/caffe/docker/README.md b/3rdparty/caffe/docker/README.md new file mode 100644 index 00000000..f9c7c756 --- /dev/null +++ b/3rdparty/caffe/docker/README.md @@ -0,0 +1,47 @@ +### Running an official image + +You can run one of the automatic [builds](https://hub.docker.com/r/bvlc/caffe). E.g. for the CPU version: + +`docker run -ti bvlc/caffe:cpu caffe --version` + +or for GPU support (You need a CUDA 8.0 capable driver and +[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)): + +`nvidia-docker run -ti bvlc/caffe:gpu caffe --version` + +You might see an error about libdc1394, ignore it. + +### Docker run options + +By default caffe runs as root, thus any output files, e.g. snapshots, will be owned +by root. It also runs by default in a container-private folder. + +You can change this using flags, like user (-u), current directory, and volumes (-w and -v). +E.g. this behaves like the usual caffe executable: + +`docker run --rm -u $(id -u):$(id -g) -v $(pwd):$(pwd) -w $(pwd) bvlc/caffe:cpu caffe train --solver=example_solver.prototxt` + +Containers can also be used interactively, specifying e.g. `bash` or `ipython` +instead of `caffe`. + +``` +docker run -ti bvlc/caffe:cpu ipython +import caffe +... +``` + +The caffe build requirements are included in the container, so this can be used to +build and run custom versions of caffe. Also, `caffe/python` is in PATH, so python +utilities can be used directly, e.g. `draw_net.py`, `classify.py`, or `detect.py`. + +### Building images yourself + +Examples: + +`docker build -t caffe:cpu cpu` + +`docker build -t caffe:gpu gpu` + +You can also build Caffe and run the tests in the image: + +`docker run -ti caffe:cpu bash -c "cd /opt/caffe/build; make runtest"` diff --git a/3rdparty/caffe/docker/cpu/Dockerfile b/3rdparty/caffe/docker/cpu/Dockerfile new file mode 100644 index 00000000..67e2e61b --- /dev/null +++ b/3rdparty/caffe/docker/cpu/Dockerfile @@ -0,0 +1,46 @@ +FROM ubuntu:16.04 +LABEL maintainer caffe-maint@googlegroups.com + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + git \ + wget \ + libatlas-base-dev \ + libboost-all-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + libhdf5-serial-dev \ + libleveldb-dev \ + liblmdb-dev \ + libopencv-dev \ + libprotobuf-dev \ + libsnappy-dev \ + protobuf-compiler \ + python-dev \ + python-numpy \ + python-pip \ + python-setuptools \ + python-scipy && \ + rm -rf /var/lib/apt/lists/* + +ENV CAFFE_ROOT=/opt/caffe +WORKDIR $CAFFE_ROOT + +# FIXME: use ARG instead of ENV once DockerHub supports this +# https://github.com/docker/hub-feedback/issues/460 +ENV CLONE_TAG=1.0 + +RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ + pip install --upgrade pip && \ + cd python && for req in $(cat requirements.txt) pydot; do pip install $req; done && cd .. && \ + mkdir build && cd build && \ + cmake -DCPU_ONLY=1 .. && \ + make -j"$(nproc)" + +ENV PYCAFFE_ROOT $CAFFE_ROOT/python +ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH +ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH +RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig + +WORKDIR /workspace diff --git a/3rdparty/caffe/docker/gpu/Dockerfile b/3rdparty/caffe/docker/gpu/Dockerfile new file mode 100644 index 00000000..dcdbdf32 --- /dev/null +++ b/3rdparty/caffe/docker/gpu/Dockerfile @@ -0,0 +1,47 @@ +FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04 +LABEL maintainer caffe-maint@googlegroups.com + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + git \ + wget \ + libatlas-base-dev \ + libboost-all-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + libhdf5-serial-dev \ + libleveldb-dev \ + liblmdb-dev \ + libopencv-dev \ + libprotobuf-dev \ + libsnappy-dev \ + protobuf-compiler \ + python-dev \ + python-numpy \ + python-pip \ + python-setuptools \ + python-scipy && \ + rm -rf /var/lib/apt/lists/* + +ENV CAFFE_ROOT=/opt/caffe +WORKDIR $CAFFE_ROOT + +# FIXME: use ARG instead of ENV once DockerHub supports this +# https://github.com/docker/hub-feedback/issues/460 +ENV CLONE_TAG=1.0 + +RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ + pip install --upgrade pip && \ + cd python && for req in $(cat requirements.txt) pydot; do pip install $req; done && cd .. && \ + git clone https://github.com/NVIDIA/nccl.git && cd nccl && make -j install && cd .. && rm -rf nccl && \ + mkdir build && cd build && \ + cmake -DUSE_CUDNN=1 -DUSE_NCCL=1 .. && \ + make -j"$(nproc)" + +ENV PYCAFFE_ROOT $CAFFE_ROOT/python +ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH +ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH +RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig + +WORKDIR /workspace diff --git a/3rdparty/caffe/docs/CMakeLists.txt b/3rdparty/caffe/docs/CMakeLists.txt new file mode 100644 index 00000000..ae47e461 --- /dev/null +++ b/3rdparty/caffe/docs/CMakeLists.txt @@ -0,0 +1,106 @@ +# Building docs script +# Requirements: +# sudo apt-get install doxygen texlive ruby-dev +# sudo gem install jekyll execjs therubyracer + +if(NOT BUILD_docs OR NOT DOXYGEN_FOUND) + return() +endif() + +################################################################################################# +# Gather docs from /examples/**/readme.md +function(gather_readmes_as_prebuild_cmd target gathered_dir root) + set(full_gathered_dir ${root}/${gathered_dir}) + + file(GLOB_RECURSE readmes ${root}/examples/readme.md ${root}/examples/README.md) + foreach(file ${readmes}) + # Only use file if it is to be included in docs. + file(STRINGS ${file} file_lines REGEX "include_in_docs: true") + + if(file_lines) + # Since everything is called readme.md, rename it by its dirname. + file(RELATIVE_PATH file ${root} ${file}) + get_filename_component(folder ${file} PATH) + set(new_filename ${full_gathered_dir}/${folder}.md) + + # folder value might be like /readme.md. That's why make directory. + get_filename_component(new_folder ${new_filename} PATH) + add_custom_command(TARGET ${target} PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${new_folder} + COMMAND ln -sf ${root}/${file} ${new_filename} + COMMENT "Creating symlink ${new_filename} -> ${root}/${file}" + WORKING_DIRECTORY ${root} VERBATIM) + endif() + endforeach() +endfunction() + +################################################################################################ +# Gather docs from examples/*.ipynb and add YAML front-matter. +function(gather_notebooks_as_prebuild_cmd target gathered_dir root) + set(full_gathered_dir ${root}/${gathered_dir}) + + if(NOT PYTHON_EXECUTABLE) + message(STATUS "Python interpeter is not found. Can't include *.ipynb files in docs. Skipping...") + return() + endif() + + file(GLOB_RECURSE notebooks ${root}/examples/*.ipynb) + foreach(file ${notebooks}) + file(RELATIVE_PATH file ${root} ${file}) + set(new_filename ${full_gathered_dir}/${file}) + + get_filename_component(new_folder ${new_filename} PATH) + add_custom_command(TARGET ${target} PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${new_folder} + COMMAND ${PYTHON_EXECUTABLE} scripts/copy_notebook.py ${file} ${new_filename} + COMMENT "Copying notebook ${file} to ${new_filename}" + WORKING_DIRECTORY ${root} VERBATIM) + endforeach() + + set(${outputs_var} ${outputs} PARENT_SCOPE) +endfunction() + +################################################################################################ +########################## [ Non macro part ] ################################################## + +# Gathering is done at each 'make doc' +file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/docs/gathered) + +# Doxygen config file path +set(DOXYGEN_config_file ${PROJECT_SOURCE_DIR}/.Doxyfile CACHE FILEPATH "Doxygen config file") + +# Adding docs target +add_custom_target(docs COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_config_file} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + COMMENT "Launching doxygen..." VERBATIM) + +# Gathering examples into docs subfolder +gather_notebooks_as_prebuild_cmd(docs docs/gathered ${PROJECT_SOURCE_DIR}) +gather_readmes_as_prebuild_cmd(docs docs/gathered ${PROJECT_SOURCE_DIR}) + +# Auto detect output directory +file(STRINGS ${DOXYGEN_config_file} config_line REGEX "OUTPUT_DIRECTORY[ \t]+=[^=].*") +if(config_line) + string(REGEX MATCH "OUTPUT_DIRECTORY[ \t]+=([^=].*)" __ver_check "${config_line}") + string(STRIP ${CMAKE_MATCH_1} output_dir) + message(STATUS "Detected Doxygen OUTPUT_DIRECTORY: ${output_dir}") +else() + set(output_dir ./doxygen/) + message(STATUS "Can't find OUTPUT_DIRECTORY in doxygen config file. Try to use default: ${output_dir}") +endif() + +if(NOT IS_ABSOLUTE ${output_dir}) + set(output_dir ${PROJECT_SOURCE_DIR}/${output_dir}) + get_filename_component(output_dir ${output_dir} ABSOLUTE) +endif() + +# creates symlink in docs subfolder to code documentation built by doxygen +add_custom_command(TARGET docs POST_BUILD VERBATIM + COMMAND ln -sfn "${output_dir}/html" doxygen + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs + COMMENT "Creating symlink ${PROJECT_SOURCE_DIR}/docs/doxygen -> ${output_dir}/html") + +# for quick launch of jekyll +add_custom_target(jekyll COMMAND jekyll serve -w -s . -d _site --port=4000 + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs + COMMENT "Launching jekyll..." VERBATIM) diff --git a/3rdparty/caffe/docs/CNAME b/3rdparty/caffe/docs/CNAME new file mode 100644 index 00000000..eee1ae26 --- /dev/null +++ b/3rdparty/caffe/docs/CNAME @@ -0,0 +1 @@ +caffe.berkeleyvision.org diff --git a/3rdparty/caffe/docs/README.md b/3rdparty/caffe/docs/README.md new file mode 100644 index 00000000..8f1781e3 --- /dev/null +++ b/3rdparty/caffe/docs/README.md @@ -0,0 +1,5 @@ +# Caffe Documentation + +To generate the documentation, run `$CAFFE_ROOT/scripts/build_docs.sh`. + +To push your changes to the documentation to the gh-pages branch of your or the BVLC repo, run `$CAFFE_ROOT/scripts/deploy_docs.sh `. diff --git a/3rdparty/caffe/docs/_config.yml b/3rdparty/caffe/docs/_config.yml new file mode 100644 index 00000000..95aec12b --- /dev/null +++ b/3rdparty/caffe/docs/_config.yml @@ -0,0 +1,7 @@ +defaults: + - + scope: + path: "" # an empty string here means all files in the project + values: + layout: "default" + diff --git a/3rdparty/caffe/docs/_layouts/default.html b/3rdparty/caffe/docs/_layouts/default.html new file mode 100644 index 00000000..3799e95a --- /dev/null +++ b/3rdparty/caffe/docs/_layouts/default.html @@ -0,0 +1,62 @@ + + + + + + + + + Caffe {% if page contains 'title' %}| {{ page.title }}{% endif %} + + + + + + + + + + + + + +
+
+

Caffe

+

+ Deep learning framework by BAIR +

+

+ Created by +
+ Yangqing Jia +
+ Lead Developer +
+ Evan Shelhamer +

+
+
+ + {{ content }} + +
+
+ + diff --git a/3rdparty/caffe/docs/development.md b/3rdparty/caffe/docs/development.md new file mode 100644 index 00000000..ec05bbee --- /dev/null +++ b/3rdparty/caffe/docs/development.md @@ -0,0 +1,120 @@ +--- +title: Developing and Contributing +--- +# Development and Contributing + +Caffe is developed with active participation of the community.
+The [BAIR](http://bair.berkeley.edu/)/BVLC brewers welcome all contributions! + +The exact details of contributions are recorded by versioning and cited in our [acknowledgements](http://caffe.berkeleyvision.org/#acknowledgements). +This method is impartial and always up-to-date. + +## License + +Caffe is licensed under the terms in [LICENSE](https://github.com/BVLC/caffe/blob/master/LICENSE). By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. + +## Copyright + +Caffe uses a shared copyright model: each contributor holds copyright over their contributions to Caffe. The project versioning records all such contribution and copyright details. + +If a contributor wants to further mark their specific copyright on a particular contribution, they should indicate their copyright solely in the commit message of the change when it is committed. Do not include copyright notices in files for this purpose. + +### Documentation + +This website, written with [Jekyll](http://jekyllrb.com/), acts as the official Caffe documentation -- simply run `scripts/build_docs.sh` and view the website at `http://0.0.0.0:4000`. + +We prefer tutorials and examples to be documented close to where they live, in `readme.md` files. +The `build_docs.sh` script gathers all `examples/**/readme.md` and `examples/*.ipynb` files, and makes a table of contents. +To be included in the docs, the readme files must be annotated with [YAML front-matter](http://jekyllrb.com/docs/frontmatter/), including the flag `include_in_docs: true`. +Similarly for IPython notebooks: simply include `"include_in_docs": true` in the `"metadata"` JSON field. + +Other docs, such as installation guides, are written in the `docs` directory and manually linked to from the `index.md` page. + +We strive to provide lots of usage examples, and to document all code in docstrings. +We absolutely appreciate any contribution to this effort! + +### Versioning + +The `master` branch receives all new development including community contributions. +We try to keep it in a reliable state, but it is the bleeding edge, and things do get broken every now and then. +BAIR maintainers will periodically make releases by marking stable checkpoints as tags and maintenance branches. [Past releases](https://github.com/BVLC/caffe/releases) are catalogued online. + +#### Issues & Pull Request Protocol + +Post [Issues](https://github.com/BVLC/caffe/issues) to propose features, report [bugs], and discuss framework code. +Large-scale development work is guided by [milestones], which are sets of Issues selected for bundling as releases. + +Please note that since the core developers are largely researchers, we may work on a feature in isolation for some time before releasing it to the community, so as to claim honest academic contribution. +We do release things as soon as a reasonable technical report may be written, and we still aim to inform the community of ongoing development through Github Issues. + +**When you are ready to develop a feature or fixing a bug, follow this protocol**: + +- Develop in [feature branches] with descriptive names. Branch off of the latest `master`. +- Bring your work up-to-date by [rebasing] onto the latest `master` when done. +(Groom your changes by [interactive rebase], if you'd like.) +- [Pull request] your contribution to `BVLC/caffe`'s `master` branch for discussion and review. + - Make PRs *as soon as development begins*, to let discussion guide development. + - A PR is only ready for merge review when it is a fast-forward merge, and all code is documented, linted, and tested -- that means your PR must include tests! +- When the PR satisfies the above properties, use comments to request maintainer review. + +The following is a poetic presentation of the protocol in code form. + +#### [Shelhamer's](https://github.com/shelhamer) “life of a branch in four acts” + +Make the `feature` branch off of the latest `bvlc/master` + + git checkout master + git pull upstream master + git checkout -b feature + # do your work, make commits + +Prepare to merge by rebasing your branch on the latest `bvlc/master` + + # make sure master is fresh + git checkout master + git pull upstream master + # rebase your branch on the tip of master + git checkout feature + git rebase master + +Push your branch to pull request it into `BVLC/caffe:master` + + git push origin feature + # ...make pull request to master... + +Now make a pull request! You can do this from the command line (`git pull-request -b master`) if you install [hub](https://github.com/github/hub). Hub has many other magical uses. + +The pull request of `feature` into `master` will be a clean merge. Applause. + +[bugs]: https://github.com/BVLC/caffe/issues?labels=bug&page=1&state=open +[milestones]: https://github.com/BVLC/caffe/issues?milestone=1 +[Pull request]: https://help.github.com/articles/using-pull-requests +[interactive rebase]: https://help.github.com/articles/interactive-rebase +[rebasing]: http://git-scm.com/book/en/Git-Branching-Rebasing +[feature branches]: https://www.atlassian.com/git/workflows#!workflow-feature-branch + +**Historical note**: Caffe once relied on a two branch `master` and `dev` workflow. +PRs from this time are still open but these will be merged into `master` or closed. + +### Testing + +Run `make runtest` to check the project tests. New code requires new tests. Pull requests that fail tests will not be accepted. + +The `gtest` framework we use provides many additional options, which you can access by running the test binaries directly. One of the more useful options is `--gtest_filter`, which allows you to filter tests by name: + + # run all tests with CPU in the name + build/test/test_all.testbin --gtest_filter='*CPU*' + + # run all tests without GPU in the name (note the leading minus sign) + build/test/test_all.testbin --gtest_filter=-'*GPU*' + +To get a list of all options `googletest` provides, simply pass the `--help` flag: + + build/test/test_all.testbin --help + +### Style + +- **Run `make lint` to check C++ code.** +- Wrap lines at 80 chars. +- Follow [Google C++ style](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) and [Google python style](http://google-styleguide.googlecode.com/svn/trunk/pyguide.html) + [PEP 8](http://legacy.python.org/dev/peps/pep-0008/). +- Remember that “a foolish consistency is the hobgoblin of little minds,” so use your best judgement to write the clearest code for your particular case. diff --git a/3rdparty/caffe/docs/images/GitHub-Mark-64px.png b/3rdparty/caffe/docs/images/GitHub-Mark-64px.png new file mode 100644 index 0000000000000000000000000000000000000000..182a1a3f734fc1b7d712c68b04c29bad9460d6cd GIT binary patch literal 2625 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 +\* With the ILSVRC2012-winning [SuperVision](http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf) model and prefetching IO. +

+ +## Documentation + +- [DIY Deep Learning for Vision with Caffe](https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p) and [Caffe in a Day](https://docs.google.com/presentation/d/1HxGdeq8MPktHaPb-rlmYYQ723iWzq9ur6Gjo71YiG0Y/edit#slide=id.gc2fcdcce7_216_0)
+Tutorial presentation of the framework and a full-day crash course. +- [Tutorial Documentation](/tutorial)
+Practical guide and framework reference. +- [arXiv / ACM MM '14 paper](http://arxiv.org/abs/1408.5093)
+A 4-page report for the ACM Multimedia Open Source competition (arXiv:1408.5093v1). +- [Installation instructions](/installation.html)
+Tested on Ubuntu, Red Hat, OS X. +* [Model Zoo](/model_zoo.html)
+BAIR suggests a standard distribution format for Caffe models, and provides trained models. +* [Developing & Contributing](/development.html)
+Guidelines for development and contributing to Caffe. +* [API Documentation](/doxygen/annotated.html)
+Developer documentation automagically generated from code comments. +* [Benchmarking](https://docs.google.com/spreadsheets/d/1Yp4rqHpT7mKxOPbpzYeUfEFLnELDAgxSSBQKp5uKDGQ/edit#gid=0)
+Comparison of inference and learning for different networks and GPUs. + +### Notebook Examples + +{% assign notebooks = site.pages | where:'category','notebook' | sort: 'priority' %} +{% for page in notebooks %} +-
{{page.title}}
{{page.description}}
+{% endfor %} + +### Command Line Examples + +{% assign examples = site.pages | where:'category','example' | sort: 'priority' %} +{% for page in examples %} +-
{{page.title}}
{{page.description}}
+{% endfor %} + +## Citing Caffe + +Please cite Caffe in your publications if it helps your research: + + @article{jia2014caffe, + Author = {Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff and Karayev, Sergey and Long, Jonathan and Girshick, Ross and Guadarrama, Sergio and Darrell, Trevor}, + Journal = {arXiv preprint arXiv:1408.5093}, + Title = {Caffe: Convolutional Architecture for Fast Feature Embedding}, + Year = {2014} + } + +If you do publish a paper where Caffe helped your research, we encourage you to cite the framework for tracking by [Google Scholar](https://scholar.google.com/citations?view_op=view_citation&hl=en&citation_for_view=-ltRSM0AAAAJ:u5HHmVD_uO8C). + +## Contacting Us + +Join the [caffe-users group](https://groups.google.com/forum/#!forum/caffe-users) to ask questions and discuss methods and models. This is where we talk about usage, installation, and applications. + +Framework development discussions and thorough bug reports are collected on [Issues](https://github.com/BVLC/caffe/issues). + +## Acknowledgements + +The BAIR Caffe developers would like to thank NVIDIA for GPU donation, A9 and Amazon Web Services for a research grant in support of Caffe development and reproducible research in deep learning, and BAIR PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for guidance. + +The BAIR members who have contributed to Caffe are (alphabetical by first name): +[Carl Doersch](http://www.carldoersch.com/), [Eric Tzeng](https://github.com/erictzeng), [Evan Shelhamer](http://imaginarynumber.net/), [Jeff Donahue](http://jeffdonahue.com/), [Jon Long](https://github.com/longjon), [Philipp Krähenbühl](http://www.philkr.net/), [Ronghang Hu](http://ronghanghu.com/), [Ross Girshick](http://www.cs.berkeley.edu/~rbg/), [Sergey Karayev](http://sergeykarayev.com/), [Sergio Guadarrama](http://www.eecs.berkeley.edu/~sguada/), [Takuya Narihira](https://github.com/tnarihi), and [Yangqing Jia](http://daggerfs.com/). + +The open-source community plays an important and growing role in Caffe's development. +Check out the Github [project pulse](https://github.com/BVLC/caffe/pulse) for recent activity and the [contributors](https://github.com/BVLC/caffe/graphs/contributors) for the full list. + +We sincerely appreciate your interest and contributions! +If you'd like to contribute, please read the [developing & contributing](development.html) guide. + +Yangqing would like to give a personal thanks to the NVIDIA Academic program for providing GPUs, [Oriol Vinyals](http://www1.icsi.berkeley.edu/~vinyals/) for discussions along the journey, and BAIR PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for advice. diff --git a/3rdparty/caffe/docs/install_apt.md b/3rdparty/caffe/docs/install_apt.md new file mode 100644 index 00000000..ee2cd287 --- /dev/null +++ b/3rdparty/caffe/docs/install_apt.md @@ -0,0 +1,55 @@ +--- +title: "Installation: Ubuntu" +--- + +# Ubuntu Installation + +**General dependencies** + + sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler + sudo apt-get install --no-install-recommends libboost-all-dev + +**CUDA**: Install by `apt-get` or the NVIDIA `.run` package. +The NVIDIA package tends to follow more recent library and driver versions, but the installation is more manual. +If installing from packages, install the library and latest driver separately; the driver bundled with the library is usually out-of-date. +This can be skipped for CPU-only installation. + +**BLAS**: install ATLAS by `sudo apt-get install libatlas-base-dev` or install OpenBLAS by `sudo apt-get install libopenblas-dev` or MKL for better CPU performance. + +**Python** (optional): if you use the default Python you will need to `sudo apt-get install` the `python-dev` package to have the Python headers for building the pycaffe interface. + +**Compatibility notes, 16.04** + +CUDA 8 is required on Ubuntu 16.04. + +**Remaining dependencies, 14.04** + +Everything is packaged in 14.04. + + sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev + +**Remaining dependencies, 12.04** + +These dependencies need manual installation in 12.04. + + # glog + wget https://github.com/google/glog/archive/v0.3.3.tar.gz + tar zxvf v0.3.3.tar.gz + cd glog-0.3.3 + ./configure + make && make install + # gflags + wget https://github.com/schuhschuh/gflags/archive/master.zip + unzip master.zip + cd gflags-master + mkdir build && cd build + export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 + make && make install + # lmdb + git clone https://github.com/LMDB/lmdb + cd lmdb/libraries/liblmdb + make && make install + +Note that glog does not compile with the most recent gflags version (2.1), so before that is resolved you will need to build with glog first. + +Continue with [compilation](installation.html#compilation). diff --git a/3rdparty/caffe/docs/install_apt_debian.md b/3rdparty/caffe/docs/install_apt_debian.md new file mode 100644 index 00000000..65fe7092 --- /dev/null +++ b/3rdparty/caffe/docs/install_apt_debian.md @@ -0,0 +1,161 @@ +--- +title: "Installation: Debian" +--- + +# Debian Installation + +Caffe packages are available for several Debian versions, as shown in the +following chart: + +``` +Your Distro | CPU_ONLY | CUDA | Alias +----------------+------------+--------+------------------- +Debian/stable | ✘ | ✘ | Debian Jessie +Debian/testing | ✔ | ✔ | Debian Stretch/Sid +Debian/unstable | ✔ | ✔ | Debian Sid +``` + +* `✘ ` You should take a look at [Ubuntu installation instruction](install_apt.html). + +* `✔ ` You can install caffe with a single command line following this guide. + +Last update: 2017-02-01 + +## Binary installation with APT + +Apart from the installation methods based on source, Debian/unstable +and Debian/testing users can install pre-compiled Caffe packages from +the official archive. + +Make sure that your `/etc/apt/sources.list` contains `contrib` and `non-free` +sections if you want to install the CUDA version, for instance: + +``` +deb http://ftp2.cn.debian.org/debian sid main contrib non-free +``` + +Then we update APT cache and directly install Caffe. Note, the cpu version and +the cuda version cannot coexist. + +``` +$ sudo apt update +$ sudo apt install [ caffe-cpu | caffe-cuda ] +$ caffe # command line interface working +$ python3 -c 'import caffe; print(caffe.__path__)' # python3 interface working +``` + +These Caffe packages should work for you out of box. + +#### Customizing caffe packages + +Some users may need to customize the Caffe package. The way to customize +the package is beyond this guide. Here is only a brief guide of producing +the customized `.deb` packages. + +Make sure that there is a `dec-src` source in your `/etc/apt/sources.list`, +for instance: + +``` +deb http://ftp2.cn.debian.org/debian sid main contrib non-free +deb-src http://ftp2.cn.debian.org/debian sid main contrib non-free +``` + +Then we build caffe deb files with the following commands: + +``` +$ sudo apt update +$ sudo apt install build-essential debhelper devscripts # standard package building tools +$ sudo apt build-dep [ caffe-cpu | caffe-cuda ] # the most elegant way to pull caffe build dependencies +$ apt source [ caffe-cpu | caffe-cuda ] # download the source tarball and extract +$ cd caffe-XXXX +[ ... optional, customizing caffe code/build ... ] +$ dch --local "Modified XXX" # bump package version and write changelog +$ debuild -B -j4 # build caffe with 4 parallel jobs (similar to make -j4) +[ ... building ...] +$ debc # optional, if you want to check the package contents +$ sudo debi # optional, install the generated packages +$ ls ../ # optional, you will see the resulting packages +``` + +It is a BUG if the package failed to build without any change. +The changelog will be installed at e.g. `/usr/share/doc/caffe-cpu/changelog.Debian.gz`. + +## Source installation + +Source installation under Debian/unstable and Debian/testing is similar to that of Ubuntu, but +here is a more elegant way to pull caffe build dependencies: + +``` +$ sudo apt build-dep [ caffe-cpu | caffe-cuda ] +``` + +Note, this requires a `deb-src` entry in your `/etc/apt/sources.list`. + +#### Compiler Combinations + +Some users may find their favorate compiler doesn't work with CUDA. + +``` +CXX compiler | CUDA 7.5 | CUDA 8.0 | +-------------+------------+------------+- +GCC-7 | ? | ? | +GCC-6 | ✘ | ✘ | +GCC-5 | ✔ [1] | ✔ | +CLANG-4.0 | ? | ? | +CLANG-3.9 | ✘ | ✘ | +CLANG-3.8 | ? | ✔ | +``` + +`[1]` CUDA 7.5 's `host_config.h` must be patched before working with GCC-5. + +BTW, please forget the GCC-4.X series, since its `libstdc++` ABI is not compatible with GCC-5's. +You may encounter failure linking GCC-4.X object files against GCC-5 libraries. +(See https://wiki.debian.org/GCC5 ) + +## Notes + +* Consider re-compiling OpenBLAS locally with optimization flags for sake of +performance. This is highly recommended for any kind of production use, including +academic research. + +* If you are installing `caffe-cuda`, APT will automatically pull some of the +CUDA packages and the nvidia driver packages. Please be careful if you have +manually installed or hacked nvidia driver or CUDA toolkit or any other +related stuff, because in this case APT may fail. + +* Additionally, a manpage (`man caffe`) and a bash complementation script +(`caffe `, `caffe train `) are provided. +Both of the two files are still not merged into caffe master. + +* The python interface is Python 3 version: `python3-caffe-{cpu,cuda}`. +No plan to support python2. + +* If you encountered any problem related to the packaging system (e.g. failed to install `caffe-*`), +please report bug to Debian via Debian's bug tracking system. See https://www.debian.org/Bugs/ . +Patches and suggestions are also welcome. + +## FAQ + +* where is caffe-cudnn? + +CUDNN library seems not redistributable currently. If you really want the +caffe-cudnn deb packages, the workaround is to install cudnn by yourself, +and hack the packaging scripts, then build your customized package. + +* I installed the CPU version. How can I switch to the CUDA version? + +`sudo apt install caffe-cuda`, apt's dependency resolver is smart enough to deal with this. + +* Where are the examples, the models and other documentation stuff? + +``` +$ sudo apt install caffe-doc +$ dpkg -L caffe-doc +``` + +* Where can I find the Debian package status? + +``` +https://tracker.debian.org/pkg/caffe (for the CPU_ONLY version) +https://tracker.debian.org/pkg/caffe-contrib (for the CUDA version) +``` diff --git a/3rdparty/caffe/docs/install_osx.md b/3rdparty/caffe/docs/install_osx.md new file mode 100644 index 00000000..a2da82f0 --- /dev/null +++ b/3rdparty/caffe/docs/install_osx.md @@ -0,0 +1,128 @@ +--- +title: "Installation: OS X" +--- + +# OS X Installation + +We highly recommend using the [Homebrew](http://brew.sh/) package manager. +Ideally you could start from a clean `/usr/local` to avoid conflicts. +In the following, we assume that you're using Anaconda Python and Homebrew. + +**CUDA**: Install via the NVIDIA package that includes both CUDA and the bundled driver. **CUDA 7 is strongly suggested.** Older CUDA require `libstdc++` while clang++ is the default compiler and `libc++` the default standard library on OS X 10.9+. This disagreement makes it necessary to change the compilation settings for each of the dependencies. This is prone to error. + +**Library Path**: We find that everything compiles successfully if `$LD_LIBRARY_PATH` is not set at all, and `$DYLD_FALLBACK_LIBRARY_PATH` is set to provide CUDA, Python, and other relevant libraries (e.g. `/usr/local/cuda/lib:$HOME/anaconda/lib:/usr/local/lib:/usr/lib`). +In other `ENV` settings, things may not work as expected. + +**General dependencies** + + brew install -vd snappy leveldb gflags glog szip lmdb + # need the homebrew science source for OpenCV and hdf5 + brew tap homebrew/science + brew install hdf5 opencv + +If using Anaconda Python, a modification to the OpenCV formula might be needed +Do `brew edit opencv` and change the lines that look like the two lines below to exactly the two lines below. + + -DPYTHON_LIBRARY=#{py_prefix}/lib/libpython2.7.dylib + -DPYTHON_INCLUDE_DIR=#{py_prefix}/include/python2.7 + +If using Anaconda Python, HDF5 is bundled and the `hdf5` formula can be skipped. + +**Remaining dependencies, with / without Python** + + # with Python pycaffe needs dependencies built from source + brew install --build-from-source --with-python -vd protobuf + brew install --build-from-source -vd boost boost-python + # without Python the usual installation suffices + brew install protobuf boost + +**BLAS**: already installed as the [Accelerate / vecLib Framework](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man7/Accelerate.7.html). OpenBLAS and MKL are alternatives for faster CPU computation. + +**Python** (optional): Anaconda is the preferred Python. +If you decide against it, please use Homebrew. +Check that Caffe and dependencies are linking against the same, desired Python. + +Continue with [compilation](installation.html#compilation). + +## libstdc++ installation + +This route is not for the faint of heart. +For OS X 10.10 and 10.9 you should install CUDA 7 and follow the instructions above. +If that is not an option, take a deep breath and carry on. + +In OS X 10.9+, clang++ is the default C++ compiler and uses `libc++` as the standard library. +However, NVIDIA CUDA (even version 6.0) currently links only with `libstdc++`. +This makes it necessary to change the compilation settings for each of the dependencies. + +We do this by modifying the Homebrew formulae before installing any packages. +Make sure that Homebrew doesn't install any software dependencies in the background; all packages must be linked to `libstdc++`. + +The prerequisite Homebrew formulae are + + boost snappy leveldb protobuf gflags glog szip lmdb homebrew/science/opencv + +For each of these formulas, `brew edit FORMULA`, and add the ENV definitions as shown: + + def install + # ADD THE FOLLOWING: + ENV.append "CXXFLAGS", "-stdlib=libstdc++" + ENV.append "CFLAGS", "-stdlib=libstdc++" + ENV.append "LDFLAGS", "-stdlib=libstdc++ -lstdc++" + # The following is necessary because libtool likes to strip LDFLAGS: + ENV["CXX"] = "/usr/bin/clang++ -stdlib=libstdc++" + ... + +To edit the formulae in turn, run + + for x in snappy leveldb protobuf gflags glog szip boost boost-python lmdb homebrew/science/opencv; do brew edit $x; done + +After this, run + + for x in snappy leveldb gflags glog szip lmdb homebrew/science/opencv; do brew uninstall $x; brew install --build-from-source -vd $x; done + brew uninstall protobuf; brew install --build-from-source --with-python -vd protobuf + brew install --build-from-source -vd boost boost-python + +If this is not done exactly right then linking errors will trouble you. + +**Homebrew versioning** that Homebrew maintains itself as a separate git repository and making the above `brew edit FORMULA` changes will change files in your local copy of homebrew's master branch. By default, this will prevent you from updating Homebrew using `brew update`, as you will get an error message like the following: + + $ brew update + error: Your local changes to the following files would be overwritten by merge: + Library/Formula/lmdb.rb + Please, commit your changes or stash them before you can merge. + Aborting + Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master + +One solution is to commit your changes to a separate Homebrew branch, run `brew update`, and rebase your changes onto the updated master. You'll have to do this both for the main Homebrew repository in `/usr/local/` and the Homebrew science repository that contains OpenCV in `/usr/local/Library/Taps/homebrew/homebrew-science`, as follows: + + cd /usr/local + git checkout -b caffe + git add . + git commit -m "Update Caffe dependencies to use libstdc++" + cd /usr/local/Library/Taps/homebrew/homebrew-science + git checkout -b caffe + git add . + git commit -m "Update Caffe dependencies" + +Then, whenever you want to update homebrew, switch back to the master branches, do the update, rebase the caffe branches onto master and fix any conflicts: + + # Switch batch to homebrew master branches + cd /usr/local + git checkout master + cd /usr/local/Library/Taps/homebrew/homebrew-science + git checkout master + + # Update homebrew; hopefully this works without errors! + brew update + + # Switch back to the caffe branches with the formulae that you modified earlier + cd /usr/local + git rebase master caffe + # Fix any merge conflicts and commit to caffe branch + cd /usr/local/Library/Taps/homebrew/homebrew-science + git rebase master caffe + # Fix any merge conflicts and commit to caffe branch + + # Done! + +At this point, you should be running the latest Homebrew packages and your Caffe-related modifications will remain in place. diff --git a/3rdparty/caffe/docs/install_yum.md b/3rdparty/caffe/docs/install_yum.md new file mode 100644 index 00000000..842fbd64 --- /dev/null +++ b/3rdparty/caffe/docs/install_yum.md @@ -0,0 +1,45 @@ +--- +title: "Installation: RHEL / Fedora / CentOS" +--- + +# RHEL / Fedora / CentOS Installation + +**General dependencies** + + sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel + +**Remaining dependencies, recent OS** + + sudo yum install gflags-devel glog-devel lmdb-devel + +**Remaining dependencies, if not found** + + # glog + wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/google-glog/glog-0.3.3.tar.gz + tar zxvf glog-0.3.3.tar.gz + cd glog-0.3.3 + ./configure + make && make install + # gflags + wget https://github.com/schuhschuh/gflags/archive/master.zip + unzip master.zip + cd gflags-master + mkdir build && cd build + export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 + make && make install + # lmdb + git clone https://github.com/LMDB/lmdb + cd lmdb/libraries/liblmdb + make && make install + +Note that glog does not compile with the most recent gflags version (2.1), so before that is resolved you will need to build with glog first. + +**CUDA**: Install via the NVIDIA package instead of `yum` to be certain of the library and driver versions. +Install the library and latest driver separately; the driver bundled with the library is usually out-of-date. + + CentOS/RHEL/Fedora: + +**BLAS**: install ATLAS by `sudo yum install atlas-devel` or install OpenBLAS or MKL for better CPU performance. For the Makefile build, uncomment and set `BLAS_LIB` accordingly as ATLAS is usually installed under `/usr/lib[64]/atlas`). + +**Python** (optional): if you use the default Python you will need to `sudo yum install` the `python-devel` package to have the Python headers for building the pycaffe wrapper. + +Continue with [compilation](installation.html#compilation). diff --git a/3rdparty/caffe/docs/installation.md b/3rdparty/caffe/docs/installation.md new file mode 100644 index 00000000..42f1d0ce --- /dev/null +++ b/3rdparty/caffe/docs/installation.md @@ -0,0 +1,146 @@ +--- +title: Installation +--- + +# Installation + +Prior to installing, have a glance through this guide and take note of the details for your platform. +We install and run Caffe on Ubuntu 16.04–12.04, OS X 10.11–10.8, and through Docker and AWS. +The official Makefile and `Makefile.config` build are complemented by a [community CMake build](#cmake-build). + +**Step-by-step Instructions**: + +- [Docker setup](https://github.com/BVLC/caffe/tree/master/docker) *out-of-the-box brewing* +- [Ubuntu installation](install_apt.html) *the standard platform* +- [Debian installation](install_apt_debian.html) *install caffe with a single command* +- [OS X installation](install_osx.html) +- [RHEL / CentOS / Fedora installation](install_yum.html) +- [Windows](https://github.com/BVLC/caffe/tree/windows) *see the Windows branch led by Guillaume Dumont* +- [OpenCL](https://github.com/BVLC/caffe/tree/opencl) *see the OpenCL branch led by Fabian Tschopp* +- [AWS AMI](https://github.com/bitfusionio/amis/tree/master/awsmrkt-bfboost-ubuntu14-cuda75-caffe) *pre-configured for AWS* + +**Overview**: + +- [Prerequisites](#prerequisites) +- [Compilation](#compilation) +- [Hardware](#hardware) + +When updating Caffe, it's best to `make clean` before re-compiling. + +## Prerequisites + +Caffe has several dependencies: + +* [CUDA](https://developer.nvidia.com/cuda-zone) is required for GPU mode. + * library version 7+ and the latest driver version are recommended, but 6.* is fine too + * 5.5, and 5.0 are compatible but considered legacy +* [BLAS](http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) via ATLAS, MKL, or OpenBLAS. +* [Boost](http://www.boost.org/) >= 1.55 +* `protobuf`, `glog`, `gflags`, `hdf5` + +Optional dependencies: + +* [OpenCV](http://opencv.org/) >= 2.4 including 3.0 +* IO libraries: `lmdb`, `leveldb` (note: leveldb requires `snappy`) +* cuDNN for GPU acceleration (v6) + +Pycaffe and Matcaffe interfaces have their own natural needs. + +* For Python Caffe: `Python 2.7` or `Python 3.3+`, `numpy (>= 1.7)`, boost-provided `boost.python` +* For MATLAB Caffe: MATLAB with the `mex` compiler. + +**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v6; older versions are supported in older Caffe. + +**CPU-only Caffe**: for cold-brewed CPU-only Caffe uncomment the `CPU_ONLY := 1` flag in `Makefile.config` to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment. + +### CUDA and BLAS + +Caffe requires the CUDA `nvcc` compiler to compile its GPU code and CUDA driver for GPU operation. +To install CUDA, go to the [NVIDIA CUDA website](https://developer.nvidia.com/cuda-downloads) and follow installation instructions there. Install the library and the latest standalone driver separately; the driver bundled with the library is usually out-of-date. **Warning!** The 331.* CUDA driver series has a critical performance issue: do not use it. + +For best performance, Caffe can be accelerated by [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). Register for free at the cuDNN site, install it, then continue with these installation instructions. To compile with cuDNN set the `USE_CUDNN := 1` flag set in your `Makefile.config`. + +Caffe requires BLAS as the backend of its matrix and vector computations. +There are several implementations of this library. The choice is yours: + +* [ATLAS](http://math-atlas.sourceforge.net/): free, open source, and so the default for Caffe. +* [Intel MKL](http://software.intel.com/en-us/intel-mkl): commercial and optimized for Intel CPUs, with [free](https://registrationcenter.intel.com/en/forms/?productid=2558) licenses. + 1. Install MKL. + 2. Set up MKL environment (Details: [Linux](https://software.intel.com/en-us/node/528499), [OS X](https://software.intel.com/en-us/node/528659)). Example: *source /opt/intel/mkl/bin/mklvars.sh intel64* + 3. Set `BLAS := mkl` in `Makefile.config` +* [OpenBLAS](http://www.openblas.net/): free and open source; this optimized and parallel BLAS could require more effort to install, although it might offer a speedup. + 1. Install OpenBLAS + 2. Set `BLAS := open` in `Makefile.config` + +### Python and/or MATLAB Caffe (optional) + +#### Python + +The main requirements are `numpy` and `boost.python` (provided by boost). `pandas` is useful too and needed for some examples. + +You can install the dependencies with + + for req in $(cat requirements.txt); do pip install $req; done + +but we suggest first installing the [Anaconda](https://store.continuum.io/cshop/anaconda/) Python distribution, which provides most of the necessary packages, as well as the `hdf5` library dependency. + +To import the `caffe` Python module after completing the installation, add the module directory to your `$PYTHONPATH` by `export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH` or the like. You should not import the module in the `caffe/python/caffe` directory! + +*Caffe's Python interface works with Python 2.7. Python 3.3+ should work out of the box without protobuf support. For protobuf support please install protobuf 3.0 alpha (https://developers.google.com/protocol-buffers/). Earlier Pythons are your own adventure.* + +#### MATLAB + +Install MATLAB, and make sure that its `mex` is in your `$PATH`. + +*Caffe's MATLAB interface works with versions 2015a, 2014a/b, 2013a/b, and 2012b.* + +## Compilation + +Caffe can be compiled with either Make or CMake. Make is officially supported while CMake is supported by the community. + +### Compilation with Make + +Configure the build by copying and modifying the example `Makefile.config` for your setup. The defaults should work, but uncomment the relevant lines if using Anaconda Python. + + cp Makefile.config.example Makefile.config + # Adjust Makefile.config (for example, if using Anaconda Python, or if cuDNN is desired) + make all + make test + make runtest + +- For CPU & GPU accelerated Caffe, no changes are needed. +- For cuDNN acceleration using NVIDIA's proprietary cuDNN software, uncomment the `USE_CUDNN := 1` switch in `Makefile.config`. cuDNN is sometimes but not always faster than Caffe's GPU acceleration. +- For CPU-only Caffe, uncomment `CPU_ONLY := 1` in `Makefile.config`. + +To compile the Python and MATLAB wrappers do `make pycaffe` and `make matcaffe` respectively. +Be sure to set your MATLAB and Python paths in `Makefile.config` first! + +**Distribution**: run `make distribute` to create a `distribute` directory with all the Caffe headers, compiled libraries, binaries, etc. needed for distribution to other machines. + +**Speed**: for a faster build, compile in parallel by doing `make all -j8` where 8 is the number of parallel threads for compilation (a good choice for the number of threads is the number of cores in your machine). + +Now that you have installed Caffe, check out the [MNIST tutorial](gathered/examples/mnist.html) and the [reference ImageNet model tutorial](gathered/examples/imagenet.html). + +### CMake Build + +In lieu of manually editing `Makefile.config` to configure the build, Caffe offers an unofficial CMake build thanks to @Nerei, @akosiorek, and other members of the community. It requires CMake version >= 2.8.7. +The basic steps are as follows: + + mkdir build + cd build + cmake .. + make all + make install + make runtest + +See [PR #1667](https://github.com/BVLC/caffe/pull/1667) for options and details. + +## Hardware + +**Laboratory Tested Hardware**: Berkeley Vision runs Caffe with Titan Xs, K80s, GTX 980s, K40s, K20s, Titans, and GTX 770s including models at ImageNet/ILSVRC scale. We have not encountered any trouble in-house with devices with CUDA capability >= 3.0. All reported hardware issues thus-far have been due to GPU configuration, overheating, and the like. + +**CUDA compute capability**: devices with compute capability <= 2.0 may have to reduce CUDA thread numbers and batch sizes due to hardware constraints. Brew with caution; we recommend compute capability >= 3.0. + +Once installed, check your times against our [reference performance numbers](performance_hardware.html) to make sure everything is configured properly. + +Ask hardware questions on the [caffe-users group](https://groups.google.com/forum/#!forum/caffe-users). diff --git a/3rdparty/caffe/docs/model_zoo.md b/3rdparty/caffe/docs/model_zoo.md new file mode 100644 index 00000000..3f77e825 --- /dev/null +++ b/3rdparty/caffe/docs/model_zoo.md @@ -0,0 +1,72 @@ +--- +title: Model Zoo +--- +# Caffe Model Zoo + +Lots of researchers and engineers have made Caffe models for different tasks with all kinds of architectures and data: check out the [model zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo)! +These models are learned and applied for problems ranging from simple regression, to large-scale visual classification, to Siamese networks for image similarity, to speech and robotics applications. + +To help share these models, we introduce the model zoo framework: + +- A standard format for packaging Caffe model info. +- Tools to upload/download model info to/from Github Gists, and to download trained `.caffemodel` binaries. +- A central wiki page for sharing model info Gists. + +## Where to get trained models + +First of all, we bundle BAIR-trained models for unrestricted, out of the box use. +
+See the [BAIR model license](#bair-model-license) for details. +Each one of these can be downloaded by running `scripts/download_model_binary.py ` where `` is specified below: + +- **BAIR Reference CaffeNet** in `models/bvlc_reference_caffenet`: AlexNet trained on ILSVRC 2012, with a minor variation from the version as described in [ImageNet classification with deep convolutional neural networks](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) by Krizhevsky et al. in NIPS 2012. (Trained by Jeff Donahue @jeffdonahue) +- **BAIR AlexNet** in `models/bvlc_alexnet`: AlexNet trained on ILSVRC 2012, almost exactly as described in [ImageNet classification with deep convolutional neural networks](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) by Krizhevsky et al. in NIPS 2012. (Trained by Evan Shelhamer @shelhamer) +- **BAIR Reference R-CNN ILSVRC-2013** in `models/bvlc_reference_rcnn_ilsvrc13`: pure Caffe implementation of [R-CNN](https://github.com/rbgirshick/rcnn) as described by Girshick et al. in CVPR 2014. (Trained by Ross Girshick @rbgirshick) +- **BAIR GoogLeNet** in `models/bvlc_googlenet`: GoogLeNet trained on ILSVRC 2012, almost exactly as described in [Going Deeper with Convolutions](http://arxiv.org/abs/1409.4842) by Szegedy et al. in ILSVRC 2014. (Trained by Sergio Guadarrama @sguada) + +**Community models** made by Caffe users are posted to a publicly editable [model zoo wiki page](https://github.com/BVLC/caffe/wiki/Model-Zoo). +These models are subject to conditions of their respective authors such as citation and license. +Thank you for sharing your models! + +## Model info format + +A caffe model is distributed as a directory containing: + +- Solver/model prototxt(s) +- `readme.md` containing + - YAML frontmatter + - Caffe version used to train this model (tagged release or commit hash). + - [optional] file URL and SHA1 of the trained `.caffemodel`. + - [optional] github gist id. + - Information about what data the model was trained on, modeling choices, etc. + - License information. +- [optional] Other helpful scripts. + +This simple format can be handled through bundled scripts or manually if need be. + +### Hosting model info + +Github Gist is a good format for model info distribution because it can contain multiple files, is versionable, and has in-browser syntax highlighting and markdown rendering. + +`scripts/upload_model_to_gist.sh ` uploads non-binary files in the model directory as a Github Gist and prints the Gist ID. If `gist_id` is already part of the `/readme.md` frontmatter, then updates existing Gist. + +Try doing `scripts/upload_model_to_gist.sh models/bvlc_alexnet` to test the uploading (don't forget to delete the uploaded gist afterward). + +Downloading model info is done just as easily with `scripts/download_model_from_gist.sh `. + +### Hosting trained models + +It is up to the user where to host the `.caffemodel` file. +We host our BAIR-provided models on our own server. +Dropbox also works fine (tip: make sure that `?dl=1` is appended to the end of the URL). + +`scripts/download_model_binary.py ` downloads the `.caffemodel` from the URL specified in the `/readme.md` frontmatter and confirms SHA1. + +## BAIR model license + +The Caffe models bundled by the BAIR are released for unrestricted use. + +These models are trained on data from the [ImageNet project](http://www.image-net.org/) and training data includes internet photos that may be subject to copyright. + +Our present understanding as researchers is that there is no restriction placed on the open release of these learned model weights, since none of the original images are distributed in whole or in part. +To the extent that the interpretation arises that weights are derivative works of the original copyright holder and they assert such a copyright, UC Berkeley makes no representations as to what use is allowed other than to consider our present release in the spirit of fair use in the academic mission of the university to disseminate knowledge and tools as broadly as possible without restriction. diff --git a/3rdparty/caffe/docs/multigpu.md b/3rdparty/caffe/docs/multigpu.md new file mode 100644 index 00000000..e04ebb0b --- /dev/null +++ b/3rdparty/caffe/docs/multigpu.md @@ -0,0 +1,26 @@ +--- +title: Multi-GPU Usage, Hardware Configuration Assumptions, and Performance +--- + +# Multi-GPU Usage + +Currently Multi-GPU is only supported via the C/C++ paths and only for training. + +The GPUs to be used for training can be set with the "-gpu" flag on the command line to the 'caffe' tool. e.g. "build/tools/caffe train --solver=models/bvlc_alexnet/solver.prototxt --gpu=0,1" will train on GPUs 0 and 1. + +**NOTE**: each GPU runs the batchsize specified in your train_val.prototxt. So if you go from 1 GPU to 2 GPU, your effective batchsize will double. e.g. if your train_val.prototxt specified a batchsize of 256, if you run 2 GPUs your effective batch size is now 512. So you need to adjust the batchsize when running multiple GPUs and/or adjust your solver params, specifically learning rate. + +# Hardware Configuration Assumptions + +The current implementation uses a tree reduction strategy. e.g. if there are 4 GPUs in the system, 0:1, 2:3 will exchange gradients, then 0:2 (top of the tree) will exchange gradients, 0 will calculate +updated model, 0\-\>2, and then 0\-\>1, 2\-\>3. + +For best performance, P2P DMA access between devices is needed. Without P2P access, for example crossing PCIe root complex, data is copied through host and effective exchange bandwidth is greatly reduced. + +Current implementation has a "soft" assumption that the devices being used are homogeneous. In practice, any devices of the same general class should work together, but performance and total size is limited by the smallest device being used. e.g. if you combine a TitanX and a GTX980, performance will be limited by the 980. Mixing vastly different levels of boards, e.g. Kepler and Fermi, is not supported. + +"nvidia-smi topo -m" will show you the connectivity matrix. You can do P2P through PCIe bridges, but not across socket level links at this time, e.g. across CPU sockets on a multi-socket motherboard. + +# Scaling Performance + +Performance is **heavily** dependent on the PCIe topology of the system, the configuration of the neural network you are training, and the speed of each of the layers. Systems like the DIGITS DevBox have an optimized PCIe topology (X99-E WS chipset). In general, scaling on 2 GPUs tends to be ~1.8X on average for networks like AlexNet, CaffeNet, VGG, GoogleNet. 4 GPUs begins to have falloff in scaling. Generally with "weak scaling" where the batchsize increases with the number of GPUs you will see 3.5x scaling or so. With "strong scaling", the system can become communication bound, especially with layer performance optimizations like those in [cuDNNv3](http://nvidia.com/cudnn), and you will likely see closer to mid 2.x scaling in performance. Networks that have heavy computation compared to the number of parameters tend to have the best scaling performance. diff --git a/3rdparty/caffe/docs/stylesheets/pygment_trac.css b/3rdparty/caffe/docs/stylesheets/pygment_trac.css new file mode 100644 index 00000000..c6a6452d --- /dev/null +++ b/3rdparty/caffe/docs/stylesheets/pygment_trac.css @@ -0,0 +1,69 @@ +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ + +.type-csharp .highlight .k { color: #0000FF } +.type-csharp .highlight .kt { color: #0000FF } +.type-csharp .highlight .nf { color: #000000; font-weight: normal } +.type-csharp .highlight .nc { color: #2B91AF } +.type-csharp .highlight .nn { color: #000000 } +.type-csharp .highlight .s { color: #A31515 } +.type-csharp .highlight .sc { color: #A31515 } diff --git a/3rdparty/caffe/docs/stylesheets/reset.css b/3rdparty/caffe/docs/stylesheets/reset.css new file mode 100644 index 00000000..6020b26f --- /dev/null +++ b/3rdparty/caffe/docs/stylesheets/reset.css @@ -0,0 +1,21 @@ +/* MeyerWeb Reset */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} diff --git a/3rdparty/caffe/docs/stylesheets/styles.css b/3rdparty/caffe/docs/stylesheets/styles.css new file mode 100644 index 00000000..2dbedb8a --- /dev/null +++ b/3rdparty/caffe/docs/stylesheets/styles.css @@ -0,0 +1,348 @@ +@import url(http://fonts.googleapis.com/css?family=PT+Serif|Open+Sans:600,400); + +body { + padding:10px 50px 0 0; + font-family: 'Open Sans', sans-serif; + font-size: 14px; + color: #232323; + background-color: #FBFAF7; + margin: 0; + line-height: 1.5rem; + -webkit-font-smoothing: antialiased; +} + +h1, h2, h3, h4, h5, h6 { + color:#232323; + margin:36px 0 10px; +} + +p, ul, ol, table, dl { + margin:0 0 22px; +} + +h1, h2, h3 { + font-family: 'PT Serif', serif; + line-height:1.3; + font-weight: normal; + display: block; + border-bottom: 1px solid #ccc; + padding-bottom: 5px; +} + +h1 { + font-size: 30px; +} + +h2 { + font-size: 24px; +} + +h3 { + font-size: 18px; +} + +h4, h5, h6 { + font-family: 'PT Serif', serif; + font-weight: 700; +} + +a { + color:#C30000; + text-decoration:none; +} + +a:hover { + text-decoration: underline; +} + +a small { + font-size: 12px; +} + +em { + font-style: italic; +} + +strong { + font-weight:700; +} + +ul { + padding-left: 25px; +} + +ol { + list-style: decimal; + padding-left: 20px; +} + +blockquote { + margin: 0; + padding: 0 0 0 20px; + font-style: italic; +} + +dl, dt, dd, dl p { + font-color: #444; +} + +dl dt { + font-weight: bold; +} + +dl dd { + padding-left: 20px; + font-style: italic; +} + +dl p { + padding-left: 20px; + font-style: italic; +} + +hr { + border:0; + background:#ccc; + height:1px; + margin:0 0 24px; +} + +/* Images */ + +img { + position: relative; + margin: 0 auto; + max-width: 650px; + padding: 5px; + margin: 10px 0 32px 0; + border: 1px solid #ccc; +} + +p img { + display: inline; + margin: 0; + padding: 0; + vertical-align: middle; + text-align: center; + border: none; +} + +/* Code blocks */ +code, pre { + font-family: monospace; + color:#000; + font-size:12px; + line-height: 14px; +} + +pre { + padding: 6px 12px; + background: #FDFEFB; + border-radius:4px; + border:1px solid #D7D8C8; + overflow: auto; + white-space: pre-wrap; + margin-bottom: 16px; +} + + +/* Tables */ +table { + width:100%; +} + +table { + border: 1px solid #ccc; + margin-bottom: 32px; + text-align: left; + } + +th { + font-family: 'Open Sans', sans-serif; + font-size: 18px; + font-weight: normal; + padding: 10px; + background: #232323; + color: #FDFEFB; + } + +td { + padding: 10px; + background: #ccc; + } + + +/* Wrapper */ +.wrapper { + width:960px; +} + + +/* Header */ + +header { + width:170px; + float:left; + position:fixed; + padding: 12px 25px 22px 50px; + margin: 24px 25px 0 0; +} + +p.header { + font-size: 14px; +} + +h1.header { + font-size: 30px; + font-weight: 300; + line-height: 1.3em; + margin-top: 0; +} + +a.name { + white-space: nowrap; +} + +header ul { + list-style:none; + padding:0; +} + +header li { + list-style-type: none; + width:132px; + height:15px; + margin-bottom: 12px; + line-height: 1em; + padding: 6px 6px 6px 7px; + background: #c30000; + border-radius:4px; + border:1px solid #555; +} + +header li:hover { + background: #dd0000; +} + +a.buttons { + color: #fff; + text-decoration: none; + font-weight: normal; + padding: 2px 2px 2px 22px; + height: 30px; +} + +a.github { + background: url(/images/GitHub-Mark-64px.png) no-repeat center left; + background-size: 15%; +} + +/* Section - for main page content */ + +section { + width:650px; + float:right; + padding-bottom:50px; +} + +p.footnote { + font-size: 12px; +} + + +/* Footer */ + +footer { + width:170px; + float:left; + position:fixed; + bottom:10px; + padding-left: 50px; +} + +@media print, screen and (max-width: 960px) { + + div.wrapper { + width:auto; + margin:0; + } + + header, section, footer { + float:none; + position:static; + width:auto; + } + + footer { + border-top: 1px solid #ccc; + margin:0 84px 0 50px; + padding:0; + } + + header { + padding-right:320px; + } + + section { + padding:20px 84px 20px 50px; + margin:0 0 20px; + } + + header a small { + display:inline; + } + + header ul { + position:absolute; + right:130px; + top:84px; + } +} + +@media print, screen and (max-width: 720px) { + body { + word-wrap:break-word; + } + + header { + padding:10px 20px 0; + margin-right: 0; + } + + section { + padding:10px 0 10px 20px; + margin:0 0 30px; + } + + footer { + margin: 0 0 0 30px; + } + + header ul, header p.view { + position:static; + } +} + +@media print, screen and (max-width: 480px) { + + header ul li.download { + display:none; + } + + footer { + margin: 0 0 0 20px; + } + + footer a{ + display:block; + } + +} + +@media print { + body { + padding:0.4in; + font-size:12pt; + color:#444; + } +} diff --git a/3rdparty/caffe/docs/tutorial/convolution.md b/3rdparty/caffe/docs/tutorial/convolution.md new file mode 100644 index 00000000..a02fe4ef --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/convolution.md @@ -0,0 +1,13 @@ +--- +title: Convolution +--- +# Caffeinated Convolution + +The Caffe strategy for convolution is to reduce the problem to matrix-matrix multiplication. +This linear algebra computation is highly-tuned in BLAS libraries and efficiently computed on GPU devices. + +For more details read Yangqing's [Convolution in Caffe: a memo](https://github.com/Yangqing/caffe/wiki/Convolution-in-Caffe:-a-memo). + +As it turns out, this same reduction was independently explored in the context of conv. nets by + +> K. Chellapilla, S. Puri, P. Simard, et al. High performance convolutional neural networks for document processing. In Tenth International Workshop on Frontiers in Handwriting Recognition, 2006. diff --git a/3rdparty/caffe/docs/tutorial/data.md b/3rdparty/caffe/docs/tutorial/data.md new file mode 100644 index 00000000..3bf7d932 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/data.md @@ -0,0 +1,78 @@ +--- +title: Data +--- +# Data: Ins and Outs + +Data flows through Caffe as [Blobs](net_layer_blob.html#blob-storage-and-communication). +Data layers load input and save output by converting to and from Blob to other formats. +Common transformations like mean-subtraction and feature-scaling are done by data layer configuration. +New input types are supported by developing a new data layer -- the rest of the Net follows by the modularity of the Caffe layer catalogue. + +This data layer definition + + layer { + name: "mnist" + # Data layer loads leveldb or lmdb storage DBs for high-throughput. + type: "Data" + # the 1st top is the data itself: the name is only convention + top: "data" + # the 2nd top is the ground truth: the name is only convention + top: "label" + # the Data layer configuration + data_param { + # path to the DB + source: "examples/mnist/mnist_train_lmdb" + # type of DB: LEVELDB or LMDB (LMDB supports concurrent reads) + backend: LMDB + # batch processing improves efficiency. + batch_size: 64 + } + # common data transformations + transform_param { + # feature scaling coefficient: this maps the [0, 255] MNIST data to [0, 1] + scale: 0.00390625 + } + } + +loads the MNIST digits. + +**Tops and Bottoms**: A data layer makes **top** blobs to output data to the model. +It does not have **bottom** blobs since it takes no input. + +**Data and Label**: a data layer has at least one top canonically named **data**. +For ground truth a second top can be defined that is canonically named **label**. +Both tops simply produce blobs and there is nothing inherently special about these names. +The (data, label) pairing is a convenience for classification models. + +**Transformations**: data preprocessing is parametrized by transformation messages within the data layer definition. + + layer { + name: "data" + type: "Data" + [...] + transform_param { + scale: 0.1 + mean_file_size: mean.binaryproto + # for images in particular horizontal mirroring and random cropping + # can be done as simple data augmentations. + mirror: 1 # 1 = on, 0 = off + # crop a `crop_size` x `crop_size` patch: + # - at random during training + # - from the center during testing + crop_size: 227 + } + } + +**Prefetching**: for throughput data layers fetch the next batch of data and prepare it in the background while the Net computes the current batch. + +**Multiple Inputs**: a Net can have multiple inputs of any number and type. Define as many data layers as needed giving each a unique name and top. Multiple inputs are useful for non-trivial ground truth: one data layer loads the actual data and the other data layer loads the ground truth in lock-step. In this arrangement both data and label can be any 4D array. Further applications of multiple inputs are found in multi-modal and sequence models. In these cases you may need to implement your own data preparation routines or a special data layer. + +*Improvements to data processing to add formats, generality, or helper utilities are welcome!* + +## Formats + +Refer to the layer catalogue of [data layers](layers.html#data-layers) for close-ups on each type of data Caffe understands. + +## Deployment Input + +For on-the-fly computation deployment Nets define their inputs by `input` fields: these Nets then accept direct assignment of data for online or interactive computation. diff --git a/3rdparty/caffe/docs/tutorial/fig/.gitignore b/3rdparty/caffe/docs/tutorial/fig/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/3rdparty/caffe/docs/tutorial/fig/backward.jpg b/3rdparty/caffe/docs/tutorial/fig/backward.jpg new file mode 100644 index 0000000000000000000000000000000000000000..906b080c975881dbb5bd598b3f0824c7a63014aa GIT binary patch literal 105017 zcmeFZ2UJwevM9XCIcFqE4kAhhff11;B9aA!ksL;XWN=^<2}%?YP*6}oKoC%J9?3~W zat;HMB+VdUgkk1w{Lc5Cd(XLdt^3}3|N7VY|I@7AQ@gslc2#xn?yBzI5GDu<0OK_s zeI0;^hzNKJ{sDwV24#IME$B@XBOU$g+F$_yFo@gx_}nFC1OQJje_s>bD+0HytOY3M z07`%wU}0eah>kj~A?I2z#$lvD_UISrPUr<00#+|~hzhQDvdVtm84_Np&jhTrS0FWyK z041%xy{{_(&|d}d0)dXMARl@s5We8$Uq2KhxSKR&e&He^k_(vxo0%mDgK`qr2D)3^0AYF%Zuf(kp2~2_XDHN7>lFW+#y7y^ zRAylizvkkrbE+dqLqhB62SUI3lL$K6|9%!Hh?n`gK^S~4$t`Cu z^S{YM;^yOj<&@7UeW=gf-~AhulO)CYuI?#b5QOvm0!{y{+v)FXc8Uk>Ml$AMf9RtI=>I?*e_>;e|f7F!*Tz;1Z{;mN7R=_8Cl5&%3kX|Ca z4qh*VS(a3pROQcl0t|o3Nv=(Pm0XWphg{-M4B!Y#eHYBWfct-eGXTq+LG66OtJj}8 z{GA`!3fUmpBH1X}0@);B0et_>I?GLLsgBJ4w*8ij-6$PbM zAiYAW4$2S8PRdTo4M>y9gPLfPLO|UVKhEA1O&5lT?s&k+hKXkTjCi00JaPl3J24Bu%IA z-(=SLZ5`LYo@VmfqA*Yg_djVa6kk}sfcx|AFJ0|H%&7#YZ2S#C-aa9| z?yheB0-E3`>@1+~<#_&_fb4~f@&Ir;rk~OPz)$wyV>JcP!7}pjX(>~3G@Nq zfKgx?>>JC#27m?*fMakHqadOqVjWPxOp^+?T09ZBzzhLgsVW|9_? zR+F}q4wIrt(WH1XIx-$IDKb?ueX?6*u4F-E(PZgl`D9gO9pJmOOm;v{PR>p)My>?D zn^xo=`Cn9>|^Xl9K0Nw9L^k1I7&H&I1V|_a9-wg=8WYm;~eEY;u7G} z=7Mo0bJcLoa+7jPavO68ac6UPaBrSrJ#*=dz-6XRl2c(Fl z6s6pyUP%p}BRi*Z&gV}|2~(`Bb;PV3I<&MD5TF6u5RE^DspuBoo;ZV`gdPxI=g=LI@FwSbm`UpztB}L)gRqhzk)Z5qpm;AJs?lMm~sK ziqefLj;4?HjUJD=6qECq^s)QnuTSKjym*3-b&BncyAYQihl_WN?@hRv@H~N#=#uy~ zNiiw=Dfv^cr(?;G-1%|&Ck0*w3xy_y?eCS|zc1n`N-8EU4k%v#aQnlzlB*@PrP8Hu%Gk@| zJ^~*DKK}T0=hIlZL3wM1az$ySNaf2ama5olqUw-pbd6ihLakNpVBNL4*7{5JRSoAG z3L4KgW;L-jB{fqwM>Z3Xp~(HuKA$&RTw9h}p{>(xx7tS9joZI=7<6=Z>U6esX?7vI z)w>&eRD0@rm3wRY6#J^bD152vSLm<$s`#~fKxv@%o65KPLAAl=A;?h6@YUhY5&ehT8n z8GH*-ymq0jvMIfByfxh}A0DQjpN33^BeHuf){vGu7e2stbyZ(Q;5Kw@>cCb6B zo1q~f2^LTSq(t1H-}8s`8boLQf^~?*fm2Hm0mJ|h;|`oUNT(W}#xkb~^q+p;|M5%w zn)pu&5}ns1f5G2RNeR=SpGSO}h<;y*iAhMvNlCy&K}JSOPDw#Yd77!H>1e2^XsIbF zX&7i|>FB{kMZ?I%K+kjvpE5bE4%Q+kB_*e)qNF;d_}@!}&j1r8$#)VR5+Xr>n2Csl ziHOh+@PnF=fsPrNPQ^V_*&p#kAC^#haQDjtf%;P7qDXGuW(legF$b6fd_b$Jn z@O@EvMP*fWO>JF$Yg>CqXIFPm@6hnb=-Bwg

Ug>HG4^>e~7b%6hKP?c1k7^CIAAQ;NHfH1OLwd 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 T`XAPH{`YzPyYtHYYvg|b$GsKX literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/docs/tutorial/fig/forward.jpg b/3rdparty/caffe/docs/tutorial/fig/forward.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab52810908e2e9e79321c126622b5117a0cc6ead GIT binary patch literal 71957 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�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 literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/docs/tutorial/fig/forward_backward.png b/3rdparty/caffe/docs/tutorial/fig/forward_backward.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f46c39bf4daf180758b7dc25c59d2960fcd91b GIT binary patch literal 57267 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 bE<_AsUoibVOZY7nybR**?Bi5-JoMtf%Yx(F literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/docs/tutorial/fig/layer.jpg b/3rdparty/caffe/docs/tutorial/fig/layer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5075381cdad4202802bbee21813d4a8127fcc591 GIT binary patch literal 54757 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%0A-F&$S4#3}iE2dsM3|~$>PoOQC9@QIr+VL8622db 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

    o)OA4NTp!w$>NGq<&$2IvO6)f6@UUREs@_FfjeW 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 literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/docs/tutorial/fig/logreg.jpg b/3rdparty/caffe/docs/tutorial/fig/logreg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..480f519a826d96218b559faf632c0e1f5158bfa0 GIT binary patch literal 42966 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 G|4jfG2({$^ literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/docs/tutorial/forward_backward.md b/3rdparty/caffe/docs/tutorial/forward_backward.md new file mode 100644 index 00000000..528b993b --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/forward_backward.md @@ -0,0 +1,37 @@ +--- +title: Forward and Backward for Inference and Learning +--- +# Forward and Backward + +The forward and backward passes are the essential computations of a [Net](net_layer_blob.html). + +Forward and Backward + +Let's consider a simple logistic regression classifier. + +The **forward** pass computes the output given the input for inference. +In forward Caffe composes the computation of each layer to compute the "function" represented by the model. +This pass goes from bottom to top. + +Forward pass + +The data $$x$$ is passed through an inner product layer for $$g(x)$$ then through a softmax for $$h(g(x))$$ and softmax loss to give $$f_W(x)$$. + +The **backward** pass computes the gradient given the loss for learning. +In backward Caffe reverse-composes the gradient of each layer to compute the gradient of the whole model by automatic differentiation. +This is back-propagation. +This pass goes from top to bottom. + +Backward pass + +The backward pass begins with the loss and computes the gradient with respect to the output $$\frac{\partial f_W}{\partial h}$$. The gradient with respect to the rest of the model is computed layer-by-layer through the chain rule. Layers with parameters, like the `INNER_PRODUCT` layer, compute the gradient with respect to their parameters $$\frac{\partial f_W}{\partial W_{\text{ip}}}$$ during the backward step. + +These computations follow immediately from defining the model: Caffe plans and carries out the forward and backward passes for you. + +- The `Net::Forward()` and `Net::Backward()` methods carry out the respective passes while `Layer::Forward()` and `Layer::Backward()` compute each step. +- Every layer type has `forward_{cpu,gpu}()` and `backward_{cpu,gpu}()` methods to compute its steps according to the mode of computation. A layer may only implement CPU or GPU mode due to constraints or convenience. + +The [Solver](solver.html) optimizes a model by first calling forward to yield the output and loss, then calling backward to generate the gradient of the model, and then incorporating the gradient into a weight update that attempts to minimize the loss. Division of labor between the Solver, Net, and Layer keep Caffe modular and open to development. + +For the details of the forward and backward steps of Caffe's layer types, refer to the [layer catalogue](layers.html). + diff --git a/3rdparty/caffe/docs/tutorial/index.md b/3rdparty/caffe/docs/tutorial/index.md new file mode 100644 index 00000000..7d4e77b1 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/index.md @@ -0,0 +1,51 @@ +--- +title: Caffe Tutorial +--- +# Caffe Tutorial + +Caffe is a deep learning framework and this tutorial explains its philosophy, architecture, and usage. +This is a practical guide and framework introduction, so the full frontier, context, and history of deep learning cannot be covered here. +While explanations will be given where possible, a background in machine learning and neural networks is helpful. + +## Philosophy + +In one sip, Caffe is brewed for + +- Expression: models and optimizations are defined as plaintext schemas instead of code. +- Speed: for research and industry alike speed is crucial for state-of-the-art models and massive data. +- Modularity: new tasks and settings require flexibility and extension. +- Openness: scientific and applied progress call for common code, reference models, and reproducibility. +- Community: academic research, startup prototypes, and industrial applications all share strength by joint discussion and development in a BSD-2 project. + +and these principles direct the project. + +## Tour + +- [Nets, Layers, and Blobs](net_layer_blob.html): the anatomy of a Caffe model. +- [Forward / Backward](forward_backward.html): the essential computations of layered compositional models. +- [Loss](loss.html): the task to be learned is defined by the loss. +- [Solver](solver.html): the solver coordinates model optimization. +- [Layer Catalogue](layers.html): the layer is the fundamental unit of modeling and computation -- Caffe's catalogue includes layers for state-of-the-art models. +- [Interfaces](interfaces.html): command line, Python, and MATLAB Caffe. +- [Data](data.html): how to caffeinate data for model input. + +For a closer look at a few details: + +- [Caffeinated Convolution](convolution.html): how Caffe computes convolutions. + +## Deeper Learning + +There are helpful references freely online for deep learning that complement our hands-on tutorial. +These cover introductory and advanced material, background and history, and the latest advances. + +The [Tutorial on Deep Learning for Vision](https://sites.google.com/site/deeplearningcvpr2014/) from CVPR '14 is a good companion tutorial for researchers. +Once you have the framework and practice foundations from the Caffe tutorial, explore the fundamental ideas and advanced research directions in the CVPR '14 tutorial. + +A broad introduction is given in the free online draft of [Neural Networks and Deep Learning](http://neuralnetworksanddeeplearning.com/index.html) by Michael Nielsen. In particular the chapters on using neural nets and how backpropagation works are helpful if you are new to the subject. + +These recent academic tutorials cover deep learning for researchers in machine learning and vision: + +- [Deep Learning Tutorial](http://www.cs.nyu.edu/~yann/talks/lecun-ranzato-icml2013.pdf) by Yann LeCun (NYU, Facebook) and Marc'Aurelio Ranzato (Facebook). ICML 2013 tutorial. +- [LISA Deep Learning Tutorial](http://deeplearning.net/tutorial/deeplearning.pdf) by the LISA Lab directed by Yoshua Bengio (U. Montréal). + +For an exposition of neural networks in circuits and code, check out [Understanding Neural Networks from a Programmer's Perspective](http://karpathy.github.io/neuralnets/) by Andrej Karpathy (Stanford). diff --git a/3rdparty/caffe/docs/tutorial/interfaces.md b/3rdparty/caffe/docs/tutorial/interfaces.md new file mode 100644 index 00000000..b5a4f1ad --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/interfaces.md @@ -0,0 +1,286 @@ +--- +title: Interfaces +--- +# Interfaces + +Caffe has command line, Python, and MATLAB interfaces for day-to-day usage, interfacing with research code, and rapid prototyping. While Caffe is a C++ library at heart and it exposes a modular interface for development, not every occasion calls for custom compilation. The cmdcaffe, pycaffe, and matcaffe interfaces are here for you. + +## Command Line + +The command line interface -- cmdcaffe -- is the `caffe` tool for model training, scoring, and diagnostics. Run `caffe` without any arguments for help. This tool and others are found in caffe/build/tools. (The following example calls require completing the LeNet / MNIST example first.) + +**Training**: `caffe train` learns models from scratch, resumes learning from saved snapshots, and fine-tunes models to new data and tasks: + +* All training requires a solver configuration through the `-solver solver.prototxt` argument. +* Resuming requires the `-snapshot model_iter_1000.solverstate` argument to load the solver snapshot. +* Fine-tuning requires the `-weights model.caffemodel` argument for the model initialization. + +For example, you can run: + + # train LeNet + caffe train -solver examples/mnist/lenet_solver.prototxt + # train on GPU 2 + caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 2 + # resume training from the half-way point snapshot + caffe train -solver examples/mnist/lenet_solver.prototxt -snapshot examples/mnist/lenet_iter_5000.solverstate + +For a full example of fine-tuning, see examples/finetuning_on_flickr_style, but the training call alone is + + # fine-tune CaffeNet model weights for style recognition + caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel + +**Testing**: `caffe test` scores models by running them in the test phase and reports the net output as its score. The net architecture must be properly defined to output an accuracy measure or loss as its output. The per-batch score is reported and then the grand average is reported last. + + # score the learned LeNet model on the validation set as defined in the + # model architeture lenet_train_test.prototxt + caffe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 100 + +**Benchmarking**: `caffe time` benchmarks model execution layer-by-layer through timing and synchronization. This is useful to check system performance and measure relative execution times for models. + + # (These example calls require you complete the LeNet / MNIST example first.) + # time LeNet training on CPU for 10 iterations + caffe time -model examples/mnist/lenet_train_test.prototxt -iterations 10 + # time LeNet training on GPU for the default 50 iterations + caffe time -model examples/mnist/lenet_train_test.prototxt -gpu 0 + # time a model architecture with the given weights on the first GPU for 10 iterations + caffe time -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 10 + +**Diagnostics**: `caffe device_query` reports GPU details for reference and checking device ordinals for running on a given device in multi-GPU machines. + + # query the first device + caffe device_query -gpu 0 + +**Parallelism**: the `-gpu` flag to the `caffe` tool can take a comma separated list of IDs to run on multiple GPUs. A solver and net will be instantiated for each GPU so the batch size is effectively multiplied by the number of GPUs. To reproduce single GPU training, reduce the batch size in the network definition accordingly. + + # train on GPUs 0 & 1 (doubling the batch size) + caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 0,1 + # train on all GPUs (multiplying batch size by number of devices) + caffe train -solver examples/mnist/lenet_solver.prototxt -gpu all + +## Python + +The Python interface -- pycaffe -- is the `caffe` module and its scripts in caffe/python. `import caffe` to load models, do forward and backward, handle IO, visualize networks, and even instrument model solving. All model data, derivatives, and parameters are exposed for reading and writing. + +- `caffe.Net` is the central interface for loading, configuring, and running models. `caffe.Classifier` and `caffe.Detector` provide convenience interfaces for common tasks. +- `caffe.SGDSolver` exposes the solving interface. +- `caffe.io` handles input / output with preprocessing and protocol buffers. +- `caffe.draw` visualizes network architectures. +- Caffe blobs are exposed as numpy ndarrays for ease-of-use and efficiency. + +Tutorial IPython notebooks are found in caffe/examples: do `ipython notebook caffe/examples` to try them. For developer reference docstrings can be found throughout the code. + +Compile pycaffe by `make pycaffe`. +Add the module directory to your `$PYTHONPATH` by `export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH` or the like for `import caffe`. + +## MATLAB + +The MATLAB interface -- matcaffe -- is the `caffe` package in caffe/matlab in which you can integrate Caffe in your Matlab code. + +In MatCaffe, you can + +* Creating multiple Nets in Matlab +* Do forward and backward computation +* Access any layer within a network, and any parameter blob in a layer +* Get and set data or diff to any blob within a network, not restricting to input blobs or output blobs +* Save a network's parameters to file, and load parameters from file +* Reshape a blob and reshape a network +* Edit network parameter and do network surgery +* Create multiple Solvers in Matlab for training +* Resume training from solver snapshots +* Access train net and test nets in a solver +* Run for a certain number of iterations and give back control to Matlab +* Intermingle arbitrary Matlab code with gradient steps + +An ILSVRC image classification demo is in caffe/matlab/demo/classification_demo.m (you need to download BAIR CaffeNet from [Model Zoo](http://caffe.berkeleyvision.org/model_zoo.html) to run it). + +### Build MatCaffe + +Build MatCaffe with `make all matcaffe`. After that, you may test it using `make mattest`. + +Common issue: if you run into error messages like `libstdc++.so.6:version 'GLIBCXX_3.4.15' not found` during `make mattest`, then it usually means that your Matlab's runtime libraries do not match your compile-time libraries. You may need to do the following before you start Matlab: + + export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64:/usr/local/cuda/lib64 + export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 + +Or the equivalent based on where things are installed on your system, and do `make mattest` again to see if the issue is fixed. Note: this issue is sometimes more complicated since during its startup Matlab may overwrite your `LD_LIBRARY_PATH` environment variable. You can run `!ldd ./matlab/+caffe/private/caffe_.mexa64` (the mex extension may differ on your system) in Matlab to see its runtime libraries, and preload your compile-time libraries by exporting them to your `LD_PRELOAD` environment variable. + +After successful building and testing, add this package to Matlab search PATH by starting `matlab` from caffe root folder and running the following commands in Matlab command window. + + addpath ./matlab + +You can save your Matlab search PATH by running `savepath` so that you don't have to run the command above again every time you use MatCaffe. + +### Use MatCaffe + +MatCaffe is very similar to PyCaffe in usage. + +Examples below shows detailed usages and assumes you have downloaded BAIR CaffeNet from [Model Zoo](http://caffe.berkeleyvision.org/model_zoo.html) and started `matlab` from caffe root folder. + + model = './models/bvlc_reference_caffenet/deploy.prototxt'; + weights = './models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'; + +#### Set mode and device + +**Mode and device should always be set BEFORE you create a net or a solver.** + +Use CPU: + + caffe.set_mode_cpu(); + +Use GPU and specify its gpu_id: + + caffe.set_mode_gpu(); + caffe.set_device(gpu_id); + +#### Create a network and access its layers and blobs + +Create a network: + + net = caffe.Net(model, weights, 'test'); % create net and load weights + +Or + + net = caffe.Net(model, 'test'); % create net but not load weights + net.copy_from(weights); % load weights + +which creates `net` object as + + Net with properties: + + layer_vec: [1x23 caffe.Layer] + blob_vec: [1x15 caffe.Blob] + inputs: {'data'} + outputs: {'prob'} + name2layer_index: [23x1 containers.Map] + name2blob_index: [15x1 containers.Map] + layer_names: {23x1 cell} + blob_names: {15x1 cell} + +The two `containers.Map` objects are useful to find the index of a layer or a blob by its name. + +You have access to every blob in this network. To fill blob 'data' with all ones: + + net.blobs('data').set_data(ones(net.blobs('data').shape)); + +To multiply all values in blob 'data' by 10: + + net.blobs('data').set_data(net.blobs('data').get_data() * 10); + +**Be aware that since Matlab is 1-indexed and column-major, the usual 4 blob dimensions in Matlab are `[width, height, channels, num]`, and `width` is the fastest dimension. Also be aware that images are in BGR channels.** Also, Caffe uses single-precision float data. If your data is not single, `set_data` will automatically convert it to single. + +You also have access to every layer, so you can do network surgery. For example, to multiply conv1 parameters by 10: + + net.params('conv1', 1).set_data(net.params('conv1', 1).get_data() * 10); % set weights + net.params('conv1', 2).set_data(net.params('conv1', 2).get_data() * 10); % set bias + +Alternatively, you can use + + net.layers('conv1').params(1).set_data(net.layers('conv1').params(1).get_data() * 10); + net.layers('conv1').params(2).set_data(net.layers('conv1').params(2).get_data() * 10); + +To save the network you just modified: + + net.save('my_net.caffemodel'); + +To get a layer's type (string): + + layer_type = net.layers('conv1').type; + +#### Forward and backward + +Forward pass can be done using `net.forward` or `net.forward_prefilled`. Function `net.forward` takes in a cell array of N-D arrays containing data of input blob(s) and outputs a cell array containing data from output blob(s). Function `net.forward_prefilled` uses existing data in input blob(s) during forward pass, takes no input and produces no output. After creating some data for input blobs like `data = rand(net.blobs('data').shape);` you can run + + res = net.forward({data}); + prob = res{1}; + +Or + + net.blobs('data').set_data(data); + net.forward_prefilled(); + prob = net.blobs('prob').get_data(); + +Backward is similar using `net.backward` or `net.backward_prefilled` and replacing `get_data` and `set_data` with `get_diff` and `set_diff`. After creating some gradients for output blobs like `prob_diff = rand(net.blobs('prob').shape);` you can run + + res = net.backward({prob_diff}); + data_diff = res{1}; + +Or + + net.blobs('prob').set_diff(prob_diff); + net.backward_prefilled(); + data_diff = net.blobs('data').get_diff(); + +**However, the backward computation above doesn't get correct results, because Caffe decides that the network does not need backward computation. To get correct backward results, you need to set `'force_backward: true'` in your network prototxt.** + +After performing forward or backward pass, you can also get the data or diff in internal blobs. For example, to extract pool5 features after forward pass: + + pool5_feat = net.blobs('pool5').get_data(); + +#### Reshape + +Assume you want to run 1 image at a time instead of 10: + + net.blobs('data').reshape([227 227 3 1]); % reshape blob 'data' + net.reshape(); + +Then the whole network is reshaped, and now `net.blobs('prob').shape` should be `[1000 1]`; + +#### Training + +Assume you have created training and validation lmdbs following our [ImageNET Tutorial](http://caffe.berkeleyvision.org/gathered/examples/imagenet.html), to create a solver and train on ILSVRC 2012 classification dataset: + + solver = caffe.Solver('./models/bvlc_reference_caffenet/solver.prototxt'); + +which creates `solver` object as + + Solver with properties: + + net: [1x1 caffe.Net] + test_nets: [1x1 caffe.Net] + +To train: + + solver.solve(); + +Or train for only 1000 iterations (so that you can do something to its net before training more iterations) + + solver.step(1000); + +To get iteration number: + + iter = solver.iter(); + +To get its network: + + train_net = solver.net; + test_net = solver.test_nets(1); + +To resume from a snapshot "your_snapshot.solverstate": + + solver.restore('your_snapshot.solverstate'); + +#### Input and output + +`caffe.io` class provides basic input functions `load_image` and `read_mean`. For example, to read ILSVRC 2012 mean file (assume you have downloaded imagenet example auxiliary files by running `./data/ilsvrc12/get_ilsvrc_aux.sh`): + + mean_data = caffe.io.read_mean('./data/ilsvrc12/imagenet_mean.binaryproto'); + +To read Caffe's example image and resize to `[width, height]` and suppose we want `width = 256; height = 256;` + + im_data = caffe.io.load_image('./examples/images/cat.jpg'); + im_data = imresize(im_data, [width, height]); % resize using Matlab's imresize + +**Keep in mind that `width` is the fastest dimension and channels are BGR, which is different from the usual way that Matlab stores an image.** If you don't want to use `caffe.io.load_image` and prefer to load an image by yourself, you can do + + im_data = imread('./examples/images/cat.jpg'); % read image + im_data = im_data(:, :, [3, 2, 1]); % convert from RGB to BGR + im_data = permute(im_data, [2, 1, 3]); % permute width and height + im_data = single(im_data); % convert to single precision + +Also, you may take a look at caffe/matlab/demo/classification_demo.m to see how to prepare input by taking crops from an image. + +We show in caffe/matlab/hdf5creation how to read and write HDF5 data with Matlab. We do not provide extra functions for data output as Matlab itself is already quite powerful in output. + +#### Clear nets and solvers + +Call `caffe.reset_all()` to clear all solvers and stand-alone nets you have created. diff --git a/3rdparty/caffe/docs/tutorial/layers.md b/3rdparty/caffe/docs/tutorial/layers.md new file mode 100644 index 00000000..2faacc58 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers.md @@ -0,0 +1,135 @@ +--- +title: Layer Catalogue +--- + +# Layers + +To create a Caffe model you need to define the model architecture in a protocol buffer definition file (prototxt). + +Caffe layers and their parameters are defined in the protocol buffer definitions for the project in [caffe.proto](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto). + +## Data Layers + +Data enters Caffe through data layers: they lie at the bottom of nets. Data can come from efficient databases (LevelDB or LMDB), directly from memory, or, when efficiency is not critical, from files on disk in HDF5 or common image formats. + +Common input preprocessing (mean subtraction, scaling, random cropping, and mirroring) is available by specifying `TransformationParameter`s by some of the layers. +The [bias](layers/bias.html), [scale](layers/scale.html), and [crop](layers/crop.html) layers can be helpful with transforming the inputs, when `TransformationParameter` isn't available. + +Layers: + +* [Image Data](layers/imagedata.html) - read raw images. +* [Database](layers/data.html) - read data from LEVELDB or LMDB. +* [HDF5 Input](layers/hdf5data.html) - read HDF5 data, allows data of arbitrary dimensions. +* [HDF5 Output](layers/hdf5output.html) - write data as HDF5. +* [Input](layers/input.html) - typically used for networks that are being deployed. +* [Window Data](layers/windowdata.html) - read window data file. +* [Memory Data](layers/memorydata.html) - read data directly from memory. +* [Dummy Data](layers/dummydata.html) - for static data and debugging. + +Note that the [Python](layers/python.html) Layer can be useful for create custom data layers. + +## Vision Layers + +Vision layers usually take *images* as input and produce other *images* as output, although they can take data of other types and dimensions. +A typical "image" in the real-world may have one color channel ($$c = 1$$), as in a grayscale image, or three color channels ($$c = 3$$) as in an RGB (red, green, blue) image. +But in this context, the distinguishing characteristic of an image is its spatial structure: usually an image has some non-trivial height $$h > 1$$ and width $$w > 1$$. +This 2D geometry naturally lends itself to certain decisions about how to process the input. +In particular, most of the vision layers work by applying a particular operation to some region of the input to produce a corresponding region of the output. +In contrast, other layers (with few exceptions) ignore the spatial structure of the input, effectively treating it as "one big vector" with dimension $$chw$$. + +Layers: + +* [Convolution Layer](layers/convolution.html) - convolves the input image with a set of learnable filters, each producing one feature map in the output image. +* [Pooling Layer](layers/pooling.html) - max, average, or stochastic pooling. +* [Spatial Pyramid Pooling (SPP)](layers/spp.html) +* [Crop](layers/crop.html) - perform cropping transformation. +* [Deconvolution Layer](layers/deconvolution.html) - transposed convolution. + +* [Im2Col](layers/im2col.html) - relic helper layer that is not used much anymore. + +## Recurrent Layers + +Layers: + +* [Recurrent](layers/recurrent.html) +* [RNN](layers/rnn.html) +* [Long-Short Term Memory (LSTM)](layers/lstm.html) + +## Common Layers + +Layers: + +* [Inner Product](layers/innerproduct.html) - fully connected layer. +* [Dropout](layers/dropout.html) +* [Embed](layers/embed.html) - for learning embeddings of one-hot encoded vector (takes index as input). + +## Normalization Layers + +* [Local Response Normalization (LRN)](layers/lrn.html) - performs a kind of "lateral inhibition" by normalizing over local input regions. +* [Mean Variance Normalization (MVN)](layers/mvn.html) - performs contrast normalization / instance normalization. +* [Batch Normalization](layers/batchnorm.html) - performs normalization over mini-batches. + +The [bias](layers/bias.html) and [scale](layers/scale.html) layers can be helpful in combination with normalization. + +## Activation / Neuron Layers + +In general, activation / Neuron layers are element-wise operators, taking one bottom blob and producing one top blob of the same size. In the layers below, we will ignore the input and out sizes as they are identical: + +* Input + - n * c * h * w +* Output + - n * c * h * w + +Layers: + +* [ReLU / Rectified-Linear and Leaky-ReLU](layers/relu.html) - ReLU and Leaky-ReLU rectification. +* [PReLU](layers/prelu.html) - parametric ReLU. +* [ELU](layers/elu.html) - exponential linear rectification. +* [Sigmoid](layers/sigmoid.html) +* [TanH](layers/tanh.html) +* [Absolute Value](layers/abs.html) +* [Power](layers/power.html) - f(x) = (shift + scale * x) ^ power. +* [Exp](layers/exp.html) - f(x) = base ^ (shift + scale * x). +* [Log](layers/log.html) - f(x) = log(x). +* [BNLL](layers/bnll.html) - f(x) = log(1 + exp(x)). +* [Threshold](layers/threshold.html) - performs step function at user defined threshold. +* [Bias](layers/bias.html) - adds a bias to a blob that can either be learned or fixed. +* [Scale](layers/scale.html) - scales a blob by an amount that can either be learned or fixed. + +## Utility Layers + +Layers: + +* [Flatten](layers/flatten.html) +* [Reshape](layers/reshape.html) +* [Batch Reindex](layers/batchreindex.html) + +* [Split](layers/split.html) +* [Concat](layers/concat.html) +* [Slicing](layers/slice.html) +* [Eltwise](layers/eltwise.html) - element-wise operations such as product or sum between two blobs. +* [Filter / Mask](layers/filter.html) - mask or select output using last blob. +* [Parameter](layers/parameter.html) - enable parameters to be shared between layers. +* [Reduction](layers/reduction.html) - reduce input blob to scalar blob using operations such as sum or mean. +* [Silence](layers/silence.html) - prevent top-level blobs from being printed during training. + +* [ArgMax](layers/argmax.html) +* [Softmax](layers/softmax.html) + +* [Python](layers/python.html) - allows custom Python layers. + +## Loss Layers + +Loss drives learning by comparing an output to a target and assigning cost to minimize. The loss itself is computed by the forward pass and the gradient w.r.t. to the loss is computed by the backward pass. + +Layers: + +* [Multinomial Logistic Loss](layers/multinomiallogisticloss.html) +* [Infogain Loss](layers/infogainloss.html) - a generalization of MultinomialLogisticLossLayer. +* [Softmax with Loss](layers/softmaxwithloss.html) - computes the multinomial logistic loss of the softmax of its inputs. It's conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient. +* [Sum-of-Squares / Euclidean](layers/euclideanloss.html) - computes the sum of squares of differences of its two inputs, $$\frac 1 {2N} \sum_{i=1}^N \| x^1_i - x^2_i \|_2^2$$. +* [Hinge / Margin](layers/hingeloss.html) - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2). +* [Sigmoid Cross-Entropy Loss](layers/sigmoidcrossentropyloss.html) - computes the cross-entropy (logistic) loss, often used for predicting targets interpreted as probabilities. +* [Accuracy / Top-k layer](layers/accuracy.html) - scores the output as an accuracy with respect to target -- it is not actually a loss and has no backward step. +* [Contrastive Loss](layers/contrastiveloss.html) + diff --git a/3rdparty/caffe/docs/tutorial/layers/absval.md b/3rdparty/caffe/docs/tutorial/layers/absval.md new file mode 100644 index 00000000..220c4118 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/absval.md @@ -0,0 +1,22 @@ +--- +title: Absolute Value Layer +--- + +# Absolute Value Layer + +* Layer type: `AbsVal` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1AbsValLayer.html) +* Header: [`./include/caffe/layers/absval_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/absval_layer.hpp) +* CPU implementation: [`./src/caffe/layers/absval_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/absval_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/absval_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/absval_layer.cu) + +* Sample + + layer { + name: "layer" + bottom: "in" + top: "out" + type: "AbsVal" + } + +The `AbsVal` layer computes the output as abs(x) for each input element x. diff --git a/3rdparty/caffe/docs/tutorial/layers/accuracy.md b/3rdparty/caffe/docs/tutorial/layers/accuracy.md new file mode 100644 index 00000000..80293b1c --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/accuracy.md @@ -0,0 +1,20 @@ +--- +title: Accuracy and Top-k +--- + +# Accuracy and Top-k + +`Accuracy` scores the output as the accuracy of output with respect to target -- it is not actually a loss and has no backward step. + +* Layer type: `Accuracy` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1AccuracyLayer.html) +* Header: [`./include/caffe/layers/accuracy_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/accuracy_layer.hpp) +* CPU implementation: [`./src/caffe/layers/accuracy_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/accuracy_layer.cpp) + +## Parameters +* Parameters (`AccuracyParameter accuracy_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/AccuracyParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/argmax.md b/3rdparty/caffe/docs/tutorial/layers/argmax.md new file mode 100644 index 00000000..9eb8b773 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/argmax.md @@ -0,0 +1,18 @@ +--- +title: ArgMax Layer +--- + +# ArgMax Layer + +* Layer type: `ArgMax` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ArgMaxLayer.html) +* Header: [`./include/caffe/layers/argmax_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/argmax_layer.hpp) +* CPU implementation: [`./src/caffe/layers/argmax_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/argmax_layer.cpp) + +## Parameters +* Parameters (`ArgMaxParameter argmax_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ArgMaxParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/batchnorm.md b/3rdparty/caffe/docs/tutorial/layers/batchnorm.md new file mode 100644 index 00000000..a5be5ce0 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/batchnorm.md @@ -0,0 +1,20 @@ +--- +title: Batch Norm Layer +--- + +# Batch Norm Layer + +* Layer type: `BatchNorm` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BatchNormLayer.html) +* Header: [`./include/caffe/layers/batch_norm_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/batch_norm_layer.hpp) +* CPU implementation: [`./src/caffe/layers/batch_norm_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_norm_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/batch_norm_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_norm_layer.cu) + +## Parameters + +* Parameters (`BatchNormParameter batch_norm_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/BatchNormParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/batchreindex.md b/3rdparty/caffe/docs/tutorial/layers/batchreindex.md new file mode 100644 index 00000000..21b36c39 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/batchreindex.md @@ -0,0 +1,16 @@ +--- +title: Batch Reindex Layer +--- + +# Batch Reindex Layer + +* Layer type: `BatchReindex` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BatchReindexLayer.html) +* Header: [`./include/caffe/layers/batch_reindex_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/batch_reindex_layer.hpp) +* CPU implementation: [`./src/caffe/layers/batch_reindex_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_reindex_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/batch_reindex_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_reindex_layer.cu) + + +## Parameters + +No parameters. diff --git a/3rdparty/caffe/docs/tutorial/layers/bias.md b/3rdparty/caffe/docs/tutorial/layers/bias.md new file mode 100644 index 00000000..d3a00c2f --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/bias.md @@ -0,0 +1,19 @@ +--- +title: Bias Layer +--- + +# Bias Layer + +* Layer type: `Bias` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BiasLayer.html) +* Header: [`./include/caffe/layers/bias_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/bias_layer.hpp) +* CPU implementation: [`./src/caffe/layers/bias_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bias_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/bias_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bias_layer.cu) + +## Parameters +* Parameters (`BiasParameter bias_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/BiasParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/bnll.md b/3rdparty/caffe/docs/tutorial/layers/bnll.md new file mode 100644 index 00000000..2b68b79f --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/bnll.md @@ -0,0 +1,25 @@ +--- +title: BNLL Layer +--- + +# BNLL Layer + +* Layer type: `BNLL` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BNLLLayer.html) +* Header: [`./include/caffe/layers/bnll_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/bnll_layer.hpp) +* CPU implementation: [`./src/caffe/layers/bnll_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bnll_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/bnll_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bnll_layer.cu) + +The `BNLL` (binomial normal log likelihood) layer computes the output as log(1 + exp(x)) for each input element x. + +## Parameters +No parameters. + +## Sample + + layer { + name: "layer" + bottom: "in" + top: "out" + type: BNLL + } diff --git a/3rdparty/caffe/docs/tutorial/layers/concat.md b/3rdparty/caffe/docs/tutorial/layers/concat.md new file mode 100644 index 00000000..c7b25395 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/concat.md @@ -0,0 +1,40 @@ +--- +title: Concat Layer +--- + +# Concat Layer + +* Layer type: `Concat` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ConcatLayer.html) +* Header: [`./include/caffe/layers/concat_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/concat_layer.hpp) +* CPU implementation: [`./src/caffe/layers/concat_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/concat_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/concat_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/concat_layer.cu) +* Input + - `n_i * c_i * h * w` for each input blob i from 1 to K. +* Output + - if `axis = 0`: `(n_1 + n_2 + ... + n_K) * c_1 * h * w`, and all input `c_i` should be the same. + - if `axis = 1`: `n_1 * (c_1 + c_2 + ... + c_K) * h * w`, and all input `n_i` should be the same. +* Sample + + layer { + name: "concat" + bottom: "in1" + bottom: "in2" + top: "out" + type: "Concat" + concat_param { + axis: 1 + } + } + +The `Concat` layer is a utility layer that concatenates its multiple input blobs to one single output blob. + +## Parameters +* Parameters (`ConcatParameter concat_param`) + - Optional + - `axis` [default 1]: 0 for concatenation along num and 1 for channels. +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ConcatParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/contrastiveloss.md b/3rdparty/caffe/docs/tutorial/layers/contrastiveloss.md new file mode 100644 index 00000000..bb1859d9 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/contrastiveloss.md @@ -0,0 +1,20 @@ +--- +title: Contrastive Loss Layer +--- + +# Contrastive Loss Layer + +* Layer type: `ContrastiveLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ContrastiveLossLayer.html) +* Header: [`./include/caffe/layers/contrastive_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/contrastive_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/contrastive_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/contrastive_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/contrastive_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/contrastive_loss_layer.cu) + +## Parameters + +* Parameters (`ContrastiveLossParameter contrastive_loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ContrastiveLossParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/convolution.md b/3rdparty/caffe/docs/tutorial/layers/convolution.md new file mode 100644 index 00000000..cc9f4fd0 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/convolution.md @@ -0,0 +1,63 @@ +--- +title: Convolution Layer +--- + +# Convolution Layer + +* Layer type: `Convolution` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ConvolutionLayer.html) +* Header: [`./include/caffe/layers/conv_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/conv_layer.hpp) +* CPU implementation: [`./src/caffe/layers/conv_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/conv_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/conv_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/conv_layer.cu) +* Input + - `n * c_i * h_i * w_i` +* Output + - `n * c_o * h_o * w_o`, where `h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1` and `w_o` likewise. + +The `Convolution` layer convolves the input image with a set of learnable filters, each producing one feature map in the output image. + +## Sample + +Sample (as seen in [`./models/bvlc_reference_caffenet/train_val.prototxt`](https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt)): + + layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + # learning rate and decay multipliers for the filters + param { lr_mult: 1 decay_mult: 1 } + # learning rate and decay multipliers for the biases + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 96 # learn 96 filters + kernel_size: 11 # each filter is 11x11 + stride: 4 # step 4 pixels between each filter application + weight_filler { + type: "gaussian" # initialize the filters from a Gaussian + std: 0.01 # distribution with stdev 0.01 (default mean: 0) + } + bias_filler { + type: "constant" # initialize the biases to zero (0) + value: 0 + } + } + } + +## Parameters +* Parameters (`ConvolutionParameter convolution_param`) + - Required + - `num_output` (`c_o`): the number of filters + - `kernel_size` (or `kernel_h` and `kernel_w`): specifies height and width of each filter + - Strongly Recommended + - `weight_filler` [default `type: 'constant' value: 0`] + - Optional + - `bias_term` [default `true`]: specifies whether to learn and apply a set of additive biases to the filter outputs + - `pad` (or `pad_h` and `pad_w`) [default 0]: specifies the number of pixels to (implicitly) add to each side of the input + - `stride` (or `stride_h` and `stride_w`) [default 1]: specifies the intervals at which to apply the filters to the input + - `group` (g) [default 1]: If g > 1, we restrict the connectivity of each filter to a subset of the input. Specifically, the input and output channels are separated into g groups, and the $$i$$th output group channels will be only connected to the $$i$$th input group channels. +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ConvolutionParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/crop.md b/3rdparty/caffe/docs/tutorial/layers/crop.md new file mode 100644 index 00000000..28f91241 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/crop.md @@ -0,0 +1,20 @@ +--- +title: Crop Layer +--- + +# Crop Layer + +* Layer type: `Crop` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1CropLayer.html) +* Header: [`./include/caffe/layers/crop_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/crop_layer.hpp) +* CPU implementation: [`./src/caffe/layers/crop_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/crop_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/crop_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/crop_layer.cu) + +## Parameters + +* Parameters (`CropParameter crop_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/CropParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/data.md b/3rdparty/caffe/docs/tutorial/layers/data.md new file mode 100644 index 00000000..58e0dcaa --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/data.md @@ -0,0 +1,29 @@ +--- +title: Database Layer +--- + +# Database Layer + +* Layer type: `Data` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DataLayer.html) +* Header: [`./include/caffe/layers/data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/data_layer.cpp) + + +## Parameters + +* Parameters (`DataParameter data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/DataParameter.txt %} +{% endhighlight %} + +* Parameters + - Required + - `source`: the name of the directory containing the database + - `batch_size`: the number of inputs to process at one time + - Optional + - `rand_skip`: skip up to this number of inputs at the beginning; useful for asynchronous sgd + - `backend` [default `LEVELDB`]: choose whether to use a `LEVELDB` or `LMDB` + diff --git a/3rdparty/caffe/docs/tutorial/layers/deconvolution.md b/3rdparty/caffe/docs/tutorial/layers/deconvolution.md new file mode 100644 index 00000000..2eff967d --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/deconvolution.md @@ -0,0 +1,22 @@ +--- +title: Deconvolution Layer +--- + +# Deconvolution Layer + +* Layer type: `Deconvolution` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DeconvolutionLayer.html) +* Header: [`./include/caffe/layers/deconv_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/deconv_layer.hpp) +* CPU implementation: [`./src/caffe/layers/deconv_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/deconv_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/deconv_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/deconv_layer.cu) + +## Parameters + +Uses the same parameters as the Convolution layer. + +* Parameters (`ConvolutionParameter convolution_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ConvolutionParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/dropout.md b/3rdparty/caffe/docs/tutorial/layers/dropout.md new file mode 100644 index 00000000..d8c6f955 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/dropout.md @@ -0,0 +1,20 @@ +--- +title: Dropout Layer +--- + +# Dropout Layer + +* Layer type: `Dropout` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DropoutLayer.html) +* Header: [`./include/caffe/layers/dropout_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/dropout_layer.hpp) +* CPU implementation: [`./src/caffe/layers/dropout_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dropout_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/dropout_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dropout_layer.cu) + +## Parameters + +* Parameters (`DropoutParameter dropout_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/DropoutParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/dummydata.md b/3rdparty/caffe/docs/tutorial/layers/dummydata.md new file mode 100644 index 00000000..d069f9c5 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/dummydata.md @@ -0,0 +1,20 @@ +--- +title: Dummy Data Layer +--- + +# Dummy Data Layer + +* Layer type: `DummyData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DummyDataLayer.html) +* Header: [`./include/caffe/layers/dummy_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/dummy_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/dummy_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dummy_data_layer.cpp) + + +## Parameters + +* Parameters (`DummyDataParameter dummy_data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/DummyDataParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/eltwise.md b/3rdparty/caffe/docs/tutorial/layers/eltwise.md new file mode 100644 index 00000000..70fe7910 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/eltwise.md @@ -0,0 +1,20 @@ +--- +title: Eltwise Layer +--- + +# Eltwise Layer + +* Layer type: `Eltwise` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EltwiseLayer.html) +* Header: [`./include/caffe/layers/eltwise_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/eltwise_layer.hpp) +* CPU implementation: [`./src/caffe/layers/eltwise_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/eltwise_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/eltwise_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/eltwise_layer.cu) + +## Parameters + +* Parameters (`EltwiseParameter eltwise_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/EltwiseParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/elu.md b/3rdparty/caffe/docs/tutorial/layers/elu.md new file mode 100644 index 00000000..11db0f0e --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/elu.md @@ -0,0 +1,25 @@ +--- +title: ELU Layer +--- + +# ELU Layer + +* Layer type: `ELU` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ELULayer.html) +* Header: [`./include/caffe/layers/elu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/elu_layer.hpp) +* CPU implementation: [`./src/caffe/layers/elu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/elu_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/elu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/elu_layer.cu) + +## References + +* Clevert, Djork-Arne, Thomas Unterthiner, and Sepp Hochreiter. + "Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)" [arXiv:1511.07289](https://arxiv.org/abs/1511.07289). (2015). + +## Parameters + +* Parameters (`ELUParameter elu_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ELUParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/embed.md b/3rdparty/caffe/docs/tutorial/layers/embed.md new file mode 100644 index 00000000..271636d8 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/embed.md @@ -0,0 +1,20 @@ +--- +title: Embed Layer +--- + +# Embed Layer + +* Layer type: `Embed` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EmbedLayer.html) +* Header: [`./include/caffe/layers/embed_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/embed_layer.hpp) +* CPU implementation: [`./src/caffe/layers/embed_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/embed_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/embed_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/embed_layer.cu) + +## Parameters + +* Parameters (`EmbedParameter embed_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/EmbedParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/euclideanloss.md b/3rdparty/caffe/docs/tutorial/layers/euclideanloss.md new file mode 100644 index 00000000..c1b72084 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/euclideanloss.md @@ -0,0 +1,16 @@ +--- +title: Euclidean Loss Layer +--- +# Sum-of-Squares / Euclidean Loss Layer + +* Layer type: `EuclideanLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EuclideanLossLayer.html) +* Header: [`./include/caffe/layers/euclidean_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/euclidean_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/euclidean_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/euclidean_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cu) + +The Euclidean loss layer computes the sum of squares of differences of its two inputs, $$\frac 1 {2N} \sum_{i=1}^N \| x^1_i - x^2_i \|_2^2$$. + +## Parameters + +Does not take any parameters. diff --git a/3rdparty/caffe/docs/tutorial/layers/exp.md b/3rdparty/caffe/docs/tutorial/layers/exp.md new file mode 100644 index 00000000..ef2500ec --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/exp.md @@ -0,0 +1,24 @@ +--- +title: Exponential Layer +--- + +# Exponential Layer + +* Layer type: `Exp` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ExpLayer.html) +* Header: [`./include/caffe/layers/exp_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/exp_layer.hpp) +* CPU implementation: [`./src/caffe/layers/exp_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/exp_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/exp_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/exp_layer.cu) + +## Parameters + +* Parameters (`Parameter exp_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ExpParameter.txt %} +{% endhighlight %} + +## See also + +* [Power layer](power.html) diff --git a/3rdparty/caffe/docs/tutorial/layers/filter.md b/3rdparty/caffe/docs/tutorial/layers/filter.md new file mode 100644 index 00000000..aeda9ee6 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/filter.md @@ -0,0 +1,15 @@ +--- +title: Filter Layer +--- + +# Filter Layer + +* Layer type: `Filter` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1FilterLayer.html) +* Header: [`./include/caffe/layers/filter_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/filter_layer.hpp) +* CPU implementation: [`./src/caffe/layers/filter_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/filter_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/filter_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/filter_layer.cu) + +## Parameters + +Does not take any parameters. diff --git a/3rdparty/caffe/docs/tutorial/layers/flatten.md b/3rdparty/caffe/docs/tutorial/layers/flatten.md new file mode 100644 index 00000000..ecf08262 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/flatten.md @@ -0,0 +1,21 @@ +--- +title: Flatten Layer +--- + +# Flatten Layer + +* Layer type: `Flatten` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1FlattenLayer.html) +* Header: [`./include/caffe/layers/flatten_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/flatten_layer.hpp) +* CPU implementation: [`./src/caffe/layers/flatten_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/flatten_layer.cpp) + +The `Flatten` layer is a utility layer that flattens an input of shape `n * c * h * w` to a simple vector output of shape `n * (c*h*w)`. + +## Parameters + +* Parameters (`FlattenParameter flatten_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/FlattenParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/hdf5data.md b/3rdparty/caffe/docs/tutorial/layers/hdf5data.md new file mode 100644 index 00000000..d6b7ea24 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/hdf5data.md @@ -0,0 +1,20 @@ +--- +title: HDF5 Data Layer +--- + +# HDF5 Data Layer + +* Layer type: `HDF5Data` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HDF5DataLayer.html) +* Header: [`./include/caffe/layers/hdf5_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hdf5_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/hdf5_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_data_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/hdf5_data_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_data_layer.cu) + +## Parameters + +* Parameters (`HDF5DataParameter hdf5_data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/HDF5DataParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/hdf5output.md b/3rdparty/caffe/docs/tutorial/layers/hdf5output.md new file mode 100644 index 00000000..cfbe4ddb --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/hdf5output.md @@ -0,0 +1,25 @@ +--- +title: HDF5 Output Layer +--- + +# HDF5 Output Layer + +* Layer type: `HDF5Output` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HDF5OutputLayer.html) +* Header: [`./include/caffe/layers/hdf5_output_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hdf5_output_layer.hpp) +* CPU implementation: [`./src/caffe/layers/hdf5_output_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_output_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/hdf5_output_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_output_layer.cu) + +The HDF5 output layer performs the opposite function of the other layers in this section: it writes its input blobs to disk. + +## Parameters + +* Parameters (`HDF5OutputParameter hdf5_output_param`) + - Required + - `file_name`: name of file to write to + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/HDF5OutputParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/hingeloss.md b/3rdparty/caffe/docs/tutorial/layers/hingeloss.md new file mode 100644 index 00000000..ef4fd95e --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/hingeloss.md @@ -0,0 +1,19 @@ +--- +title: Hinge Loss Layer +--- + +# Hinge (L1, L2) Loss Layer + +* Layer type: `HingeLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HingeLossLayer.html) +* Header: [`./include/caffe/layers/hinge_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hinge_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/hinge_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hinge_loss_layer.cpp) + +## Parameters + +* Parameters (`HingeLossParameter hinge_loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/HingeLossParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/im2col.md b/3rdparty/caffe/docs/tutorial/layers/im2col.md new file mode 100644 index 00000000..0badc1cd --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/im2col.md @@ -0,0 +1,16 @@ +--- +title: Im2col Layer +--- + +# im2col + +* File type: `Im2col` +* Header: [`./include/caffe/layers/im2col_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/im2col_layer.hpp) +* CPU implementation: [`./src/caffe/layers/im2col_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/im2col_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/im2col_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/im2col_layer.cu) + +`Im2col` is a helper for doing the image-to-column transformation that you most +likely do not need to know about. This is used in Caffe's original convolution +to do matrix multiplication by laying out all patches into a matrix. + + diff --git a/3rdparty/caffe/docs/tutorial/layers/imagedata.md b/3rdparty/caffe/docs/tutorial/layers/imagedata.md new file mode 100644 index 00000000..82c8a600 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/imagedata.md @@ -0,0 +1,27 @@ +--- +title: ImageData Layer +--- + +# ImageData Layer + +* Layer type: `ImageData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ImageDataLayer.html) +* Header: [`./include/caffe/layers/image_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/image_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/image_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/image_data_layer.cpp) + +## Parameters + +* Parameters (`ImageDataParameter image_data_parameter`) + - Required + - `source`: name of a text file, with each line giving an image filename and label + - `batch_size`: number of images to batch together + - Optional + - `rand_skip` + - `shuffle` [default false] + - `new_height`, `new_width`: if provided, resize all images to this size + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ImageDataParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/infogainloss.md b/3rdparty/caffe/docs/tutorial/layers/infogainloss.md new file mode 100644 index 00000000..b3b690d2 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/infogainloss.md @@ -0,0 +1,23 @@ +--- +title: Infogain Loss Layer +--- + +# Infogain Loss Layer + +* Layer type: `InfogainLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InfogainLossLayer.html) +* Header: [`./include/caffe/layers/infogain_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/infogain_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/infogain_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/infogain_loss_layer.cpp) + +A generalization of [MultinomialLogisticLossLayer](multinomiallogisticloss.html) that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs. + +Equivalent to the [MultinomialLogisticLossLayer](multinomiallogisticloss.html) if the infogain matrix is the identity. + +## Parameters + +* Parameters (`Parameter infogain_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/InfogainLossParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/innerproduct.md b/3rdparty/caffe/docs/tutorial/layers/innerproduct.md new file mode 100644 index 00000000..98b9bea8 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/innerproduct.md @@ -0,0 +1,59 @@ +--- +title: Inner Product / Fully Connected Layer +--- + +# Inner Product / Fully Connected Layer + +* Layer type: `InnerProduct` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InnerProductLayer.html) +* Header: [`./include/caffe/layers/inner_product_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/inner_product_layer.hpp) +* CPU implementation: [`./src/caffe/layers/inner_product_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/inner_product_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/inner_product_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/inner_product_layer.cu) + +* Input + - `n * c_i * h_i * w_i` +* Output + - `n * c_o * 1 * 1` +* Sample + + layer { + name: "fc8" + type: "InnerProduct" + # learning rate and decay multipliers for the weights + param { lr_mult: 1 decay_mult: 1 } + # learning rate and decay multipliers for the biases + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 1000 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + bottom: "fc7" + top: "fc8" + } + +The `InnerProduct` layer (also usually referred to as the fully connected layer) treats the input as a simple vector and produces an output in the form of a single vector (with the blob's height and width set to 1). + + +## Parameters + +* Parameters (`InnerProductParameter inner_product_param`) + - Required + - `num_output` (`c_o`): the number of filters + - Strongly recommended + - `weight_filler` [default `type: 'constant' value: 0`] + - Optional + - `bias_filler` [default `type: 'constant' value: 0`] + - `bias_term` [default `true`]: specifies whether to learn and apply a set of additive biases to the filter outputs +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/InnerProductParameter.txt %} +{% endhighlight %} + diff --git a/3rdparty/caffe/docs/tutorial/layers/input.md b/3rdparty/caffe/docs/tutorial/layers/input.md new file mode 100644 index 00000000..b74c35d2 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/input.md @@ -0,0 +1,19 @@ +--- +title: Input Layer +--- + +# Input Layer + +* Layer type: `Input` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InputLayer.html) +* Header: [`./include/caffe/layers/input_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/input_layer.hpp) +* CPU implementation: [`./src/caffe/layers/input_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/input_layer.cpp) + +## Parameters + +* Parameters (`InputParameter input_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/InputParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/log.md b/3rdparty/caffe/docs/tutorial/layers/log.md new file mode 100644 index 00000000..df520374 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/log.md @@ -0,0 +1,20 @@ +--- +title: Log Layer +--- + +# Log Layer + +* Layer type: `Log` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LogLayer.html) +* Header: [`./include/caffe/layers/log_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/log_layer.hpp) +* CPU implementation: [`./src/caffe/layers/log_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/log_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/log_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/log_layer.cu) + +## Parameters + +* Parameters (`Parameter log_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/LogParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/lrn.md b/3rdparty/caffe/docs/tutorial/layers/lrn.md new file mode 100644 index 00000000..2fbef734 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/lrn.md @@ -0,0 +1,28 @@ +--- +title: Local Response Normalization (LRN) +--- + +# Local Response Normalization (LRN) + +* Layer type: `LRN` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LRNLayer.html) +* Header: [`./include/caffe/layers/lrn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/lrn_layer.hpp) +* CPU Implementation: [`./src/caffe/layers/lrn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lrn_layer.cpp) +* CUDA GPU Implementation: [`./src/caffe/layers/lrn_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lrn_layer.cu) +* Parameters (`LRNParameter lrn_param`) + - Optional + - `local_size` [default 5]: the number of channels to sum over (for cross channel LRN) or the side length of the square region to sum over (for within channel LRN) + - `alpha` [default 1]: the scaling parameter (see below) + - `beta` [default 5]: the exponent (see below) + - `norm_region` [default `ACROSS_CHANNELS`]: whether to sum over adjacent channels (`ACROSS_CHANNELS`) or nearby spatial locaitons (`WITHIN_CHANNEL`) + +The local response normalization layer performs a kind of "lateral inhibition" by normalizing over local input regions. In `ACROSS_CHANNELS` mode, the local regions extend across nearby channels, but have no spatial extent (i.e., they have shape `local_size x 1 x 1`). In `WITHIN_CHANNEL` mode, the local regions extend spatially, but are in separate channels (i.e., they have shape `1 x local_size x local_size`). Each input value is divided by $$(1 + (\alpha/n) \sum_i x_i^2)^\beta$$, where $$n$$ is the size of each local region, and the sum is taken over the region centered at that value (zero padding is added where necessary). + +## Parameters + +* Parameters (`LRNParameter lrn_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/LRNParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/lstm.md b/3rdparty/caffe/docs/tutorial/layers/lstm.md new file mode 100644 index 00000000..8e4095e9 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/lstm.md @@ -0,0 +1,21 @@ +--- +title: LSTM Layer +--- + +# LSTM Layer + +* Layer type: `LSTM` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LSTMLayer.html) +* Header: [`./include/caffe/layers/lstm_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/lstm_layer.hpp) +* CPU implementation: [`./src/caffe/layers/lstm_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_layer.cpp) +* CPU implementation (helper): [`./src/caffe/layers/lstm_unit_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_unit_layer.cpp) +* CUDA GPU implementation (helper): [`./src/caffe/layers/lstm_unit_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_unit_layer.cu) + +## Parameters + +* Parameters (`Parameter recurrent_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/RecurrentParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/memorydata.md b/3rdparty/caffe/docs/tutorial/layers/memorydata.md new file mode 100644 index 00000000..afce4a24 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/memorydata.md @@ -0,0 +1,25 @@ +--- +title: Memory Data Layer +--- + +# Memory Data Layer + +* Layer type: `MemoryData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MemoryDataLayer.html) +* Header: [`./include/caffe/layers/memory_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/memory_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/memory_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/memory_data_layer.cpp) + +The memory data layer reads data directly from memory, without copying it. In order to use it, one must call `MemoryDataLayer::Reset` (from C++) or `Net.set_input_arrays` (from Python) in order to specify a source of contiguous data (as 4D row major array), which is read one batch-sized chunk at a time. + +# Parameters + +* Parameters (`MemoryDataParameter memory_data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/MemoryDataParameter.txt %} +{% endhighlight %} + +* Parameters + - Required + - `batch_size`, `channels`, `height`, `width`: specify the size of input chunks to read from memory diff --git a/3rdparty/caffe/docs/tutorial/layers/multinomiallogisticloss.md b/3rdparty/caffe/docs/tutorial/layers/multinomiallogisticloss.md new file mode 100644 index 00000000..5eab74a8 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/multinomiallogisticloss.md @@ -0,0 +1,19 @@ +--- +title: Multinomial Logistic Loss Layer +--- + +# Multinomial Logistic Loss Layer + +* Layer type: `MultinomialLogisticLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html) +* Header: [`./include/caffe/layers/multinomial_logistic_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/multinomial_logistic_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/multinomial_logistic_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/multinomial_logistic_loss_layer.cpp) + +## Parameters + +* Parameters (`LossParameter loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/LossParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/mvn.md b/3rdparty/caffe/docs/tutorial/layers/mvn.md new file mode 100644 index 00000000..08e44887 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/mvn.md @@ -0,0 +1,20 @@ +--- +title: Mean-Variance Normalization (MVN) Layer +--- + +# Mean-Variance Normalization (MVN) Layer + +* Layer type: `MVN` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MVNLayer.html) +* Header: [`./include/caffe/layers/mvn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/mvn_layer.hpp) +* CPU implementation: [`./src/caffe/layers/mvn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/mvn_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/mvn_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/mvn_layer.cu) + +## Parameters + +* Parameters (`MVNParameter mvn_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/MVNParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/parameter.md b/3rdparty/caffe/docs/tutorial/layers/parameter.md new file mode 100644 index 00000000..b7e85ec5 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/parameter.md @@ -0,0 +1,21 @@ +--- +title: Parameter Layer +--- + +# Parameter Layer + +* Layer type: `Parameter` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ParameterLayer.html) +* Header: [`./include/caffe/layers/parameter_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/parameter_layer.hpp) +* CPU implementation: [`./src/caffe/layers/parameter_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/parameter_layer.cpp) + +See [https://github.com/BVLC/caffe/pull/2079](https://github.com/BVLC/caffe/pull/2079). + +## Parameters + +* Parameters (`ParameterParameter parameter_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ParameterParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/pooling.md b/3rdparty/caffe/docs/tutorial/layers/pooling.md new file mode 100644 index 00000000..12669ee8 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/pooling.md @@ -0,0 +1,47 @@ +--- +title: Pooling Layer +--- +# Pooling + +* Layer type: `Pooling` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PoolingLayer.html) +* Header: [`./include/caffe/layers/pooling_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/pooling_layer.hpp) +* CPU implementation: [`./src/caffe/layers/pooling_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/pooling_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/pooling_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/pooling_layer.cu) + +* Input + - `n * c * h_i * w_i` +* Output + - `n * c * h_o * w_o`, where h_o and w_o are computed in the same way as convolution. + +## Parameters + +* Parameters (`PoolingParameter pooling_param`) + - Required + - `kernel_size` (or `kernel_h` and `kernel_w`): specifies height and width of each filter + - Optional + - `pool` [default MAX]: the pooling method. Currently MAX, AVE, or STOCHASTIC + - `pad` (or `pad_h` and `pad_w`) [default 0]: specifies the number of pixels to (implicitly) add to each side of the input + - `stride` (or `stride_h` and `stride_w`) [default 1]: specifies the intervals at which to apply the filters to the input + + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PoolingParameter.txt %} +{% endhighlight %} + +## Sample +* Sample (as seen in [`./models/bvlc_reference_caffenet/train_val.prototxt`](https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt)) + + layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 # pool over a 3x3 region + stride: 2 # step two pixels (in the bottom blob) between pooling regions + } + } diff --git a/3rdparty/caffe/docs/tutorial/layers/power.md b/3rdparty/caffe/docs/tutorial/layers/power.md new file mode 100644 index 00000000..d6617529 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/power.md @@ -0,0 +1,46 @@ +--- +title: Power Layer +--- + +# Power Layer + +* Layer type: `Power` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PowerLayer.html) +* Header: [`./include/caffe/layers/power_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/power_layer.hpp) +* CPU implementation: [`./src/caffe/layers/power_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/power_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/power_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/power_layer.cu) + +The `Power` layer computes the output as (shift + scale * x) ^ power for each input element x. + +## Parameters +* Parameters (`PowerParameter power_param`) + - Optional + - `power` [default 1] + - `scale` [default 1] + - `shift` [default 0] + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PowerParameter.txt %} +{% endhighlight %} + + + +## Sample + + layer { + name: "layer" + bottom: "in" + top: "out" + type: "Power" + power_param { + power: 1 + scale: 1 + shift: 0 + } + } + +## See also + +* [Exponential layer](exp.html) diff --git a/3rdparty/caffe/docs/tutorial/layers/prelu.md b/3rdparty/caffe/docs/tutorial/layers/prelu.md new file mode 100644 index 00000000..e7b7b44a --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/prelu.md @@ -0,0 +1,20 @@ +--- +title: PReLU Layer +--- + +# PReLU Layer + +* Layer type: `PReLU` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PReLULayer.html) +* Header: [`./include/caffe/layers/prelu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/prelu_layer.hpp) +* CPU implementation: [`./src/caffe/layers/prelu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/prelu_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/prelu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/prelu_layer.cu) + +## Parameters + +* Parameters (`PReLUParameter prelu_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PReLUParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/python.md b/3rdparty/caffe/docs/tutorial/layers/python.md new file mode 100644 index 00000000..2e30b3a7 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/python.md @@ -0,0 +1,27 @@ +--- +title: Python Layer +--- + +# Python Layer + +* Layer type: `Python` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PythonLayer.html) +* Header: [`./include/caffe/layers/python_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/python_layer.hpp) + +The Python layer allows users to add customized layers without modifying the Caffe core code. + +## Parameters + +* Parameters (`PythonParameter python_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PythonParameter.txt %} +{% endhighlight %} + +## Examples and tutorials + +* Simple Euclidean loss example +** [Python code](https://github.com/BVLC/caffe/blob/master/examples/pycaffe/layers/pyloss.py) +** [Prototxt](https://github.com/BVLC/caffe/blob/master/examples/pycaffe/linreg.prototxt) +* [Tutorial for writing Python layers with DIGITS](https://github.com/NVIDIA/DIGITS/tree/master/examples/python-layer) diff --git a/3rdparty/caffe/docs/tutorial/layers/recurrent.md b/3rdparty/caffe/docs/tutorial/layers/recurrent.md new file mode 100644 index 00000000..a882b722 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/recurrent.md @@ -0,0 +1,20 @@ +--- +title: Recurrent Layer +--- + +# Recurrent Layer + +* Layer type: `Recurrent` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1RecurrentLayer.html) +* Header: [`./include/caffe/layers/recurrent_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/recurrent_layer.hpp) +* CPU implementation: [`./src/caffe/layers/recurrent_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/recurrent_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/recurrent_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/recurrent_layer.cu) + +## Parameters + +* Parameters (`RecurrentParameter recurrent_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/RecurrentParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/reduction.md b/3rdparty/caffe/docs/tutorial/layers/reduction.md new file mode 100644 index 00000000..db55414b --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/reduction.md @@ -0,0 +1,20 @@ +--- +title: Reduction Layer +--- + +# Reduction Layer + +* Layer type: `Reduction` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReductionLayer.html) +* Header: [`./include/caffe/layers/reduction_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/reduction_layer.hpp) +* CPU implementation: [`./src/caffe/layers/reduction_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reduction_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/reduction_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reduction_layer.cu) + +## Parameters + +* Parameters (`ReductionParameter reduction_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ReductionParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/relu.md b/3rdparty/caffe/docs/tutorial/layers/relu.md new file mode 100644 index 00000000..01aab0af --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/relu.md @@ -0,0 +1,32 @@ +--- +title: ReLU / Rectified-Linear and Leaky-ReLU Layer +--- + +# ReLU / Rectified-Linear and Leaky-ReLU Layer + +* Layer type: `ReLU` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReLULayer.html) +* Header: [`./include/caffe/layers/relu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/relu_layer.hpp) +* CPU implementation: [`./src/caffe/layers/relu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/relu_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/relu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/relu_layer.cu) +* Sample (as seen in [`./models/bvlc_reference_caffenet/train_val.prototxt`](https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt)) + + layer { + name: "relu1" + type: "ReLU" + bottom: "conv1" + top: "conv1" + } + +Given an input value x, The `ReLU` layer computes the output as x if x > 0 and negative_slope * x if x <= 0. When the negative slope parameter is not set, it is equivalent to the standard ReLU function of taking max(x, 0). It also supports in-place computation, meaning that the bottom and the top blob could be the same to preserve memory consumption. + +## Parameters + +* Parameters (`ReLUParameter relu_param`) + - Optional + - `negative_slope` [default 0]: specifies whether to leak the negative part by multiplying it with the slope value rather than setting it to 0. +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ReLUParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/reshape.md b/3rdparty/caffe/docs/tutorial/layers/reshape.md new file mode 100644 index 00000000..92d23f2c --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/reshape.md @@ -0,0 +1,51 @@ +--- +title: Reshape Layer +--- + +# Reshape Layer +* Layer type: `Reshape` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReshapeLayer.html) +* Header: [`./include/caffe/layers/reshape_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/reshape_layer.hpp) +* Implementation: [`./src/caffe/layers/reshape_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reshape_layer.cpp) + +* Input + - a single blob with arbitrary dimensions +* Output + - the same blob, with modified dimensions, as specified by `reshape_param` + +* Sample + + layer { + name: "reshape" + type: "Reshape" + bottom: "input" + top: "output" + reshape_param { + shape { + dim: 0 # copy the dimension from below + dim: 2 + dim: 3 + dim: -1 # infer it from the other dimensions + } + } + } + +The `Reshape` layer can be used to change the dimensions of its input, without changing its data. Just like the `Flatten` layer, only the dimensions are changed; no data is copied in the process. + +Output dimensions are specified by the `ReshapeParam` proto. Positive numbers are used directly, setting the corresponding dimension of the output blob. In addition, two special values are accepted for any of the target dimension values: + +* **0** means "copy the respective dimension of the bottom layer". That is, if the bottom has 2 as its 1st dimension, the top will have 2 as its 1st dimension as well, given `dim: 0` as the 1st target dimension. +* **-1** stands for "infer this from the other dimensions". This behavior is similar to that of -1 in *numpy*'s or `[]` for *MATLAB*'s reshape: this dimension is calculated to keep the overall element count the same as in the bottom layer. At most one -1 can be used in a reshape operation. + +As another example, specifying `reshape_param { shape { dim: 0 dim: -1 } }` makes the layer behave in exactly the same way as the `Flatten` layer. + +## Parameters + +* Parameters (`ReshapeParameter reshape_param`) + - Optional: (also see detailed description below) + - `shape` +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ReshapeParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/rnn.md b/3rdparty/caffe/docs/tutorial/layers/rnn.md new file mode 100644 index 00000000..b6fcf471 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/rnn.md @@ -0,0 +1,19 @@ +--- +title: RNN Layer +--- + +# RNN Layer + +* Layer type: `RNN` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1RNNLayer.html) +* Header: [`./include/caffe/layers/rnn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/rnn_layer.hpp) +* CPU implementation: [`./src/caffe/layers/rnn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/rnn_layer.cpp) + +## Parameters + +* Parameters (`RecurrentParameter recurrent_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/RecurrentParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/scale.md b/3rdparty/caffe/docs/tutorial/layers/scale.md new file mode 100644 index 00000000..0e27549a --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/scale.md @@ -0,0 +1,20 @@ +--- +title: Scale Layer +--- + +# Scale Layer + +* Layer type: `Scale` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ScaleLayer.html) +* Header: [`./include/caffe/layers/scale_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/scale_layer.hpp) +* CPU implementation: [`./src/caffe/layers/scale_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/scale_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/scale_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/scale_layer.cu) + +## Parameters + +* Parameters (`ScaleParameter scale_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ScaleParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/sigmoid.md b/3rdparty/caffe/docs/tutorial/layers/sigmoid.md new file mode 100644 index 00000000..f18ac4b8 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/sigmoid.md @@ -0,0 +1,30 @@ +--- +title: Sigmoid Layer +--- + +# Sigmoid Layer + +* Layer type: `Sigmoid` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SigmoidLayer.html) +* Header: [`./include/caffe/layers/sigmoid_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/sigmoid_layer.hpp) +* CPU implementation: [`./src/caffe/layers/sigmoid_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/sigmoid_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cu) +* Example (from [`./examples/mnist/mnist_autoencoder.prototxt`](https://github.com/BVLC/caffe/blob/master/examples/mnist/mnist_autoencoder.prototxt)): + + layer { + name: "encode1neuron" + bottom: "encode1" + top: "encode1neuron" + type: "Sigmoid" + } + +The `Sigmoid` layer computes `sigmoid(x)` for each element `x` in the bottom blob. + +## Parameters + +* Parameters (`SigmoidParameter sigmoid_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SigmoidParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/sigmoidcrossentropyloss.md b/3rdparty/caffe/docs/tutorial/layers/sigmoidcrossentropyloss.md new file mode 100644 index 00000000..a6e42cad --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/sigmoidcrossentropyloss.md @@ -0,0 +1,13 @@ +--- +title: Sigmoid Cross-Entropy Loss Layer +--- + +# Sigmoid Cross-Entropy Loss Layer + +* Layer type: `SigmoidCrossEntropyLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html) +* Header: [`./include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu) + +To-do. diff --git a/3rdparty/caffe/docs/tutorial/layers/silence.md b/3rdparty/caffe/docs/tutorial/layers/silence.md new file mode 100644 index 00000000..8b4579a9 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/silence.md @@ -0,0 +1,17 @@ +--- +title: Silence Layer +--- + +# Silence Layer + +* Layer type: `Silence` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SilenceLayer.html) +* Header: [`./include/caffe/layers/silence_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/silence_layer.hpp) +* CPU implementation: [`./src/caffe/layers/silence_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/silence_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/silence_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/silence_layer.cu) + +Silences a blob, so that it is not printed. + +## Parameters + +No parameters. diff --git a/3rdparty/caffe/docs/tutorial/layers/slice.md b/3rdparty/caffe/docs/tutorial/layers/slice.md new file mode 100644 index 00000000..a492f1e8 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/slice.md @@ -0,0 +1,42 @@ +--- +title: Slice Layer +--- + +# Slice Layer + +* Layer type: `Slice` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SliceLayer.html) +* Header: [`./include/caffe/layers/slice_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/slice_layer.hpp) +* CPU implementation: [`./src/caffe/layers/slice_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/slice_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/slice_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/slice_layer.cu) + +The `Slice` layer is a utility layer that slices an input layer to multiple output layers along a given dimension (currently num or channel only) with given slice indices. + +* Sample + + layer { + name: "slicer_label" + type: "Slice" + bottom: "label" + ## Example of label with a shape N x 3 x 1 x 1 + top: "label1" + top: "label2" + top: "label3" + slice_param { + axis: 1 + slice_point: 1 + slice_point: 2 + } + } + +`axis` indicates the target axis; `slice_point` indicates indexes in the selected dimension (the number of indices must be equal to the number of top blobs minus one). + +## Parameters + +* Parameters (`SliceParameter slice_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SliceParameter.txt %} +{% endhighlight %} + diff --git a/3rdparty/caffe/docs/tutorial/layers/softmax.md b/3rdparty/caffe/docs/tutorial/layers/softmax.md new file mode 100644 index 00000000..e5d53425 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/softmax.md @@ -0,0 +1,24 @@ +--- +title: Softmax Layer +--- + +# Softmax Layer + +* Layer type: `Softmax` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SoftmaxLayer.html) +* Header: [`./include/caffe/layers/softmax_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/softmax_layer.hpp) +* CPU implementation: [`./src/caffe/layers/softmax_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/softmax_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_layer.cu) + +## Parameters + +* Parameters (`SoftmaxParameter softmax_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SoftmaxParameter.txt %} +{% endhighlight %} + +## See also + +* [Softmax loss layer](softmaxwithloss.html) diff --git a/3rdparty/caffe/docs/tutorial/layers/softmaxwithloss.md b/3rdparty/caffe/docs/tutorial/layers/softmaxwithloss.md new file mode 100644 index 00000000..d9a6774a --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/softmaxwithloss.md @@ -0,0 +1,33 @@ +--- +title: Softmax with Loss Layer +--- + +# Softmax with Loss Layer + +* Layer type: `SoftmaxWithLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html) +* Header: [`./include/caffe/layers/softmax_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/softmax_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/softmax_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/softmax_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_loss_layer.cu) + +The softmax loss layer computes the multinomial logistic loss of the softmax of its inputs. It's conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient. + +## Parameters + +* Parameters (`SoftmaxParameter softmax_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SoftmaxParameter.txt %} +{% endhighlight %} + +* Parameters (`LossParameter loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/LossParameter.txt %} +{% endhighlight %} + +## See also + +* [Softmax layer](softmax.html) diff --git a/3rdparty/caffe/docs/tutorial/layers/split.md b/3rdparty/caffe/docs/tutorial/layers/split.md new file mode 100644 index 00000000..4fb71d1f --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/split.md @@ -0,0 +1,17 @@ +--- +title: Split Layer +--- + +# Split Layer + +* Layer type: `Split` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SplitLayer.html) +* Header: [`./include/caffe/layers/split_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/split_layer.hpp) +* CPU implementation: [`./src/caffe/layers/split_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/split_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/split_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/split_layer.cu) + +The `Split` layer is a utility layer that splits an input blob to multiple output blobs. This is used when a blob is fed into multiple output layers. + +## Parameters + +Does not take any parameters. diff --git a/3rdparty/caffe/docs/tutorial/layers/spp.md b/3rdparty/caffe/docs/tutorial/layers/spp.md new file mode 100644 index 00000000..26e58620 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/spp.md @@ -0,0 +1,20 @@ +--- +title: Spatial Pyramid Pooling Layer +--- + +# Spatial Pyramid Pooling Layer + +* Layer type: `SPP` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SPPLayer.html) +* Header: [`./include/caffe/layers/spp_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/spp_layer.hpp) +* CPU implementation: [`./src/caffe/layers/spp_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/spp_layer.cpp) + + +## Parameters + +* Parameters (`SPPParameter spp_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SPPParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/tanh.md b/3rdparty/caffe/docs/tutorial/layers/tanh.md new file mode 100644 index 00000000..36063459 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/tanh.md @@ -0,0 +1,18 @@ +--- +title: TanH Layer +--- + +# TanH Layer + +* Header: [`./include/caffe/layers/tanh_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/tanh_layer.hpp) +* CPU implementation: [`./src/caffe/layers/tanh_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tanh_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/tanh_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tanh_layer.cu) + +## Parameters + +* Parameters (`TanHParameter tanh_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/TanHParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/threshold.md b/3rdparty/caffe/docs/tutorial/layers/threshold.md new file mode 100644 index 00000000..819e9e6f --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/threshold.md @@ -0,0 +1,18 @@ +--- +title: Threshold Layer +--- + +# Threshold Layer + +* Header: [`./include/caffe/layers/threshold_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/threshold_layer.hpp) +* CPU implementation: [`./src/caffe/layers/threshold_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/threshold_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/threshold_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/threshold_layer.cu) + +## Parameters + +* Parameters (`ThresholdParameter threshold_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ThresholdParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/tile.md b/3rdparty/caffe/docs/tutorial/layers/tile.md new file mode 100644 index 00000000..ea03aaa4 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/tile.md @@ -0,0 +1,20 @@ +--- +title: Tile Layer +--- + +# Tile Layer + +* Layer type: `Tile` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1TileLayer.html) +* Header: [`./include/caffe/layers/tile_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/tile_layer.hpp) +* CPU implementation: [`./src/caffe/layers/tile_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tile_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/tile_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tile_layer.cu) + +## Parameters + +* Parameters (`TileParameter tile_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/TileParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/layers/windowdata.md b/3rdparty/caffe/docs/tutorial/layers/windowdata.md new file mode 100644 index 00000000..0cb4a8df --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/layers/windowdata.md @@ -0,0 +1,19 @@ +--- +title: WindowData Layer +--- + +# WindowData Layer + +* Layer type: `WindowData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1WindowDataLayer.html) +* Header: [`./include/caffe/layers/window_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/window_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/window_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/window_data_layer.cpp) + +## Parameters + +* Parameters (`WindowDataParameter`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/WindowDataParameter.txt %} +{% endhighlight %} diff --git a/3rdparty/caffe/docs/tutorial/loss.md b/3rdparty/caffe/docs/tutorial/loss.md new file mode 100644 index 00000000..d2d0e77f --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/loss.md @@ -0,0 +1,51 @@ +--- +title: Loss +--- +# Loss + +In Caffe, as in most of machine learning, learning is driven by a **loss** function (also known as an **error**, **cost**, or **objective** function). +A loss function specifies the goal of learning by mapping parameter settings (i.e., the current network weights) to a scalar value specifying the "badness" of these parameter settings. +Hence, the goal of learning is to find a setting of the weights that *minimizes* the loss function. + +The loss in Caffe is computed by the Forward pass of the network. +Each layer takes a set of input (`bottom`) blobs and produces a set of output (`top`) blobs. +Some of these layers' outputs may be used in the loss function. +A typical choice of loss function for one-versus-all classification tasks is the `SoftmaxWithLoss` function, used in a network definition as follows, for example: + + layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "pred" + bottom: "label" + top: "loss" + } + +In a `SoftmaxWithLoss` function, the `top` blob is a scalar (empty shape) which averages the loss (computed from predicted labels `pred` and actuals labels `label`) over the entire mini-batch. + +### Loss weights + +For nets with multiple layers producing a loss (e.g., a network that both classifies the input using a `SoftmaxWithLoss` layer and reconstructs it using a `EuclideanLoss` layer), *loss weights* can be used to specify their relative importance. + +By convention, Caffe layer types with the suffix `Loss` contribute to the loss function, but other layers are assumed to be purely used for intermediate computations. +However, any layer can be used as a loss by adding a field `loss_weight: ` to a layer definition for each `top` blob produced by the layer. +Layers with the suffix `Loss` have an implicit `loss_weight: 1` for the first `top` blob (and `loss_weight: 0` for any additional `top`s); other layers have an implicit `loss_weight: 0` for all `top`s. +So, the above `SoftmaxWithLoss` layer could be equivalently written as: + + layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "pred" + bottom: "label" + top: "loss" + loss_weight: 1 + } + +However, *any* layer able to backpropagate may be given a non-zero `loss_weight`, allowing one to, for example, regularize the activations produced by some intermediate layer(s) of the network if desired. +For non-singleton outputs with an associated non-zero loss, the loss is computed simply by summing over all entries of the blob. + +The final loss in Caffe, then, is computed by summing the total weighted loss over the network, as in the following pseudo-code: + + loss := 0 + for layer in layers: + for top, loss_weight in layer.tops, layer.loss_weights: + loss += loss_weight * sum(top) diff --git a/3rdparty/caffe/docs/tutorial/net_layer_blob.md b/3rdparty/caffe/docs/tutorial/net_layer_blob.md new file mode 100644 index 00000000..d6df7374 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/net_layer_blob.md @@ -0,0 +1,168 @@ +--- +title: Blobs, Layers, and Nets +--- +# Blobs, Layers, and Nets: anatomy of a Caffe model + +Deep networks are compositional models that are naturally represented as a collection of inter-connected layers that work on chunks of data. Caffe defines a net layer-by-layer in its own model schema. The network defines the entire model bottom-to-top from input data to loss. As data and derivatives flow through the network in the [forward and backward passes](forward_backward.html) Caffe stores, communicates, and manipulates the information as *blobs*: the blob is the standard array and unified memory interface for the framework. The layer comes next as the foundation of both model and computation. The net follows as the collection and connection of layers. The details of blob describe how information is stored and communicated in and across layers and nets. + +[Solving](solver.html) is configured separately to decouple modeling and optimization. + +We will go over the details of these components in more detail. + +## Blob storage and communication + +A Blob is a wrapper over the actual data being processed and passed along by Caffe, and also under the hood provides synchronization capability between the CPU and the GPU. Mathematically, a blob is an N-dimensional array stored in a C-contiguous fashion. + +Caffe stores and communicates data using blobs. Blobs provide a unified memory interface holding data; e.g., batches of images, model parameters, and derivatives for optimization. + +Blobs conceal the computational and mental overhead of mixed CPU/GPU operation by synchronizing from the CPU host to the GPU device as needed. Memory on the host and device is allocated on demand (lazily) for efficient memory usage. + +The conventional blob dimensions for batches of image data are number N x channel K x height H x width W. Blob memory is row-major in layout, so the last / rightmost dimension changes fastest. For example, in a 4D blob, the value at index (n, k, h, w) is physically located at index ((n * K + k) * H + h) * W + w. + +- Number / N is the batch size of the data. Batch processing achieves better throughput for communication and device processing. For an ImageNet training batch of 256 images N = 256. +- Channel / K is the feature dimension e.g. for RGB images K = 3. + +Note that although many blobs in Caffe examples are 4D with axes for image applications, it is totally valid to use blobs for non-image applications. For example, if you simply need fully-connected networks like the conventional multi-layer perceptron, use 2D blobs (shape (N, D)) and call the InnerProductLayer (which we will cover soon). + +Parameter blob dimensions vary according to the type and configuration of the layer. For a convolution layer with 96 filters of 11 x 11 spatial dimension and 3 inputs the blob is 96 x 3 x 11 x 11. For an inner product / fully-connected layer with 1000 output channels and 1024 input channels the parameter blob is 1000 x 1024. + +For custom data it may be necessary to hack your own input preparation tool or data layer. However once your data is in your job is done. The modularity of layers accomplishes the rest of the work for you. + +### Implementation Details + +As we are often interested in the values as well as the gradients of the blob, a Blob stores two chunks of memories, *data* and *diff*. The former is the normal data that we pass along, and the latter is the gradient computed by the network. + +Further, as the actual values could be stored either on the CPU and on the GPU, there are two different ways to access them: the const way, which does not change the values, and the mutable way, which changes the values: + + const Dtype* cpu_data() const; + Dtype* mutable_cpu_data(); + +(similarly for gpu and diff). + +The reason for such design is that, a Blob uses a SyncedMem class to synchronize values between the CPU and GPU in order to hide the synchronization details and to minimize data transfer. A rule of thumb is, always use the const call if you do not want to change the values, and never store the pointers in your own object. Every time you work on a blob, call the functions to get the pointers, as the SyncedMem will need this to figure out when to copy data. + +In practice when GPUs are present, one loads data from the disk to a blob in CPU code, calls a device kernel to do GPU computation, and ferries the blob off to the next layer, ignoring low-level details while maintaining a high level of performance. As long as all layers have GPU implementations, all the intermediate data and gradients will remain in the GPU. + +If you want to check out when a Blob will copy data, here is an illustrative example: + + // Assuming that data are on the CPU initially, and we have a blob. + const Dtype* foo; + Dtype* bar; + foo = blob.gpu_data(); // data copied cpu->gpu. + foo = blob.cpu_data(); // no data copied since both have up-to-date contents. + bar = blob.mutable_gpu_data(); // no data copied. + // ... some operations ... + bar = blob.mutable_gpu_data(); // no data copied when we are still on GPU. + foo = blob.cpu_data(); // data copied gpu->cpu, since the gpu side has modified the data + foo = blob.gpu_data(); // no data copied since both have up-to-date contents + bar = blob.mutable_cpu_data(); // still no data copied. + bar = blob.mutable_gpu_data(); // data copied cpu->gpu. + bar = blob.mutable_cpu_data(); // data copied gpu->cpu. + +## Layer computation and connections + +The layer is the essence of a model and the fundamental unit of computation. Layers convolve filters, pool, take inner products, apply nonlinearities like rectified-linear and sigmoid and other elementwise transformations, normalize, load data, and compute losses like softmax and hinge. [See the layer catalogue](layers.html) for all operations. Most of the types needed for state-of-the-art deep learning tasks are there. + +A layer with bottom and top blob. + +A layer takes input through *bottom* connections and makes output through *top* connections. + +Each layer type defines three critical computations: *setup*, *forward*, and *backward*. + +- Setup: initialize the layer and its connections once at model initialization. +- Forward: given input from bottom compute the output and send to the top. +- Backward: given the gradient w.r.t. the top output compute the gradient w.r.t. to the input and send to the bottom. A layer with parameters computes the gradient w.r.t. to its parameters and stores it internally. + +More specifically, there will be two Forward and Backward functions implemented, one for CPU and one for GPU. If you do not implement a GPU version, the layer will fall back to the CPU functions as a backup option. This may come handy if you would like to do quick experiments, although it may come with additional data transfer cost (its inputs will be copied from GPU to CPU, and its outputs will be copied back from CPU to GPU). + +Layers have two key responsibilities for the operation of the network as a whole: a *forward pass* that takes the inputs and produces the outputs, and a *backward pass* that takes the gradient with respect to the output, and computes the gradients with respect to the parameters and to the inputs, which are in turn back-propagated to earlier layers. These passes are simply the composition of each layer's forward and backward. + +Developing custom layers requires minimal effort by the compositionality of the network and modularity of the code. Define the setup, forward, and backward for the layer and it is ready for inclusion in a net. + +## Net definition and operation + +The net jointly defines a function and its gradient by composition and auto-differentiation. The composition of every layer's output computes the function to do a given task, and the composition of every layer's backward computes the gradient from the loss to learn the task. Caffe models are end-to-end machine learning engines. + +The net is a set of layers connected in a computation graph -- a directed acyclic graph (DAG) to be exact. Caffe does all the bookkeeping for any DAG of layers to ensure correctness of the forward and backward passes. A typical net begins with a data layer that loads from disk and ends with a loss layer that computes the objective for a task such as classification or reconstruction. + +The net is defined as a set of layers and their connections in a plaintext modeling language. +A simple logistic regression classifier + +Softmax Regression + +is defined by + + name: "LogReg" + layer { + name: "mnist" + type: "Data" + top: "data" + top: "label" + data_param { + source: "input_leveldb" + batch_size: 64 + } + } + layer { + name: "ip" + type: "InnerProduct" + bottom: "data" + top: "ip" + inner_product_param { + num_output: 2 + } + } + layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip" + bottom: "label" + top: "loss" + } + +Model initialization is handled by `Net::Init()`. The initialization mainly does two things: scaffolding the overall DAG by creating the blobs and layers (for C++ geeks: the network will retain ownership of the blobs and layers during its lifetime), and calls the layers' `SetUp()` function. It also does a set of other bookkeeping things, such as validating the correctness of the overall network architecture. Also, during initialization the Net explains its initialization by logging to INFO as it goes: + + I0902 22:52:17.931977 2079114000 net.cpp:39] Initializing net from parameters: + name: "LogReg" + [...model prototxt printout...] + # construct the network layer-by-layer + I0902 22:52:17.932152 2079114000 net.cpp:67] Creating Layer mnist + I0902 22:52:17.932165 2079114000 net.cpp:356] mnist -> data + I0902 22:52:17.932188 2079114000 net.cpp:356] mnist -> label + I0902 22:52:17.932200 2079114000 net.cpp:96] Setting up mnist + I0902 22:52:17.935807 2079114000 data_layer.cpp:135] Opening leveldb input_leveldb + I0902 22:52:17.937155 2079114000 data_layer.cpp:195] output data size: 64,1,28,28 + I0902 22:52:17.938570 2079114000 net.cpp:103] Top shape: 64 1 28 28 (50176) + I0902 22:52:17.938593 2079114000 net.cpp:103] Top shape: 64 (64) + I0902 22:52:17.938611 2079114000 net.cpp:67] Creating Layer ip + I0902 22:52:17.938617 2079114000 net.cpp:394] ip <- data + I0902 22:52:17.939177 2079114000 net.cpp:356] ip -> ip + I0902 22:52:17.939196 2079114000 net.cpp:96] Setting up ip + I0902 22:52:17.940289 2079114000 net.cpp:103] Top shape: 64 2 (128) + I0902 22:52:17.941270 2079114000 net.cpp:67] Creating Layer loss + I0902 22:52:17.941305 2079114000 net.cpp:394] loss <- ip + I0902 22:52:17.941314 2079114000 net.cpp:394] loss <- label + I0902 22:52:17.941323 2079114000 net.cpp:356] loss -> loss + # set up the loss and configure the backward pass + I0902 22:52:17.941328 2079114000 net.cpp:96] Setting up loss + I0902 22:52:17.941328 2079114000 net.cpp:103] Top shape: (1) + I0902 22:52:17.941329 2079114000 net.cpp:109] with loss weight 1 + I0902 22:52:17.941779 2079114000 net.cpp:170] loss needs backward computation. + I0902 22:52:17.941787 2079114000 net.cpp:170] ip needs backward computation. + I0902 22:52:17.941794 2079114000 net.cpp:172] mnist does not need backward computation. + # determine outputs + I0902 22:52:17.941800 2079114000 net.cpp:208] This network produces output loss + # finish initialization and report memory usage + I0902 22:52:17.941810 2079114000 net.cpp:467] Collecting Learning Rate and Weight Decay. + I0902 22:52:17.941818 2079114000 net.cpp:219] Network initialization done. + I0902 22:52:17.941824 2079114000 net.cpp:220] Memory required for data: 201476 + +Note that the construction of the network is device agnostic - recall our earlier explanation that blobs and layers hide implementation details from the model definition. After construction, the network is run on either CPU or GPU by setting a single switch defined in `Caffe::mode()` and set by `Caffe::set_mode()`. Layers come with corresponding CPU and GPU routines that produce identical results (up to numerical errors, and with tests to guard it). The CPU / GPU switch is seamless and independent of the model definition. For research and deployment alike it is best to divide model and implementation. + +### Model format + +The models are defined in plaintext protocol buffer schema (prototxt) while the learned models are serialized as binary protocol buffer (binaryproto) .caffemodel files. + +The model format is defined by the protobuf schema in [caffe.proto](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto). The source file is mostly self-explanatory so one is encouraged to check it out. + +Caffe speaks [Google Protocol Buffer](https://code.google.com/p/protobuf/) for the following strengths: minimal-size binary strings when serialized, efficient serialization, a human-readable text format compatible with the binary version, and efficient interface implementations in multiple languages, most notably C++ and Python. This all contributes to the flexibility and extensibility of modeling in Caffe. diff --git a/3rdparty/caffe/docs/tutorial/solver.md b/3rdparty/caffe/docs/tutorial/solver.md new file mode 100644 index 00000000..81c62638 --- /dev/null +++ b/3rdparty/caffe/docs/tutorial/solver.md @@ -0,0 +1,341 @@ +--- +title: Solver / Model Optimization +--- +# Solver + +The solver orchestrates model optimization by coordinating the network's forward inference and backward gradients to form parameter updates that attempt to improve the loss. +The responsibilities of learning are divided between the Solver for overseeing the optimization and generating parameter updates and the Net for yielding loss and gradients. + +The Caffe solvers are: + +- Stochastic Gradient Descent (`type: "SGD"`), +- AdaDelta (`type: "AdaDelta"`), +- Adaptive Gradient (`type: "AdaGrad"`), +- Adam (`type: "Adam"`), +- Nesterov's Accelerated Gradient (`type: "Nesterov"`) and +- RMSprop (`type: "RMSProp"`) + +The solver + +1. scaffolds the optimization bookkeeping and creates the training network for learning and test network(s) for evaluation. +2. iteratively optimizes by calling forward / backward and updating parameters +3. (periodically) evaluates the test networks +4. snapshots the model and solver state throughout the optimization + +where each iteration + +1. calls network forward to compute the output and loss +2. calls network backward to compute the gradients +3. incorporates the gradients into parameter updates according to the solver method +4. updates the solver state according to learning rate, history, and method + +to take the weights all the way from initialization to learned model. + +Like Caffe models, Caffe solvers run in CPU / GPU modes. + +## Methods + +The solver methods address the general optimization problem of loss minimization. +For dataset $$D$$, the optimization objective is the average loss over all $$|D|$$ data instances throughout the dataset + +$$L(W) = \frac{1}{|D|} \sum_i^{|D|} f_W\left(X^{(i)}\right) + \lambda r(W)$$ + +where $$f_W\left(X^{(i)}\right)$$ is the loss on data instance $$X^{(i)}$$ and $$r(W)$$ is a regularization term with weight $$\lambda$$. +$$|D|$$ can be very large, so in practice, in each solver iteration we use a stochastic approximation of this objective, drawing a mini-batch of $$N << |D|$$ instances: + +$$L(W) \approx \frac{1}{N} \sum_i^N f_W\left(X^{(i)}\right) + \lambda r(W)$$ + +The model computes $$f_W$$ in the forward pass and the gradient $$\nabla f_W$$ in the backward pass. + +The parameter update $$\Delta W$$ is formed by the solver from the error gradient $$\nabla f_W$$, the regularization gradient $$\nabla r(W)$$, and other particulars to each method. + +### SGD + +**Stochastic gradient descent** (`type: "SGD"`) updates the weights $$ W $$ by a linear combination of the negative gradient $$ \nabla L(W) $$ and the previous weight update $$ V_t $$. +The **learning rate** $$ \alpha $$ is the weight of the negative gradient. +The **momentum** $$ \mu $$ is the weight of the previous update. + +Formally, we have the following formulas to compute the update value $$ V_{t+1} $$ and the updated weights $$ W_{t+1} $$ at iteration $$ t+1 $$, given the previous weight update $$ V_t $$ and current weights $$ W_t $$: + +$$ +V_{t+1} = \mu V_t - \alpha \nabla L(W_t) +$$ + +$$ +W_{t+1} = W_t + V_{t+1} +$$ + +The learning "hyperparameters" ($$\alpha$$ and $$\mu$$) might require a bit of tuning for best results. +If you're not sure where to start, take a look at the "Rules of thumb" below, and for further information you might refer to Leon Bottou's [Stochastic Gradient Descent Tricks](http://research.microsoft.com/pubs/192769/tricks-2012.pdf) [1]. + +[1] L. Bottou. + [Stochastic Gradient Descent Tricks](http://research.microsoft.com/pubs/192769/tricks-2012.pdf). + *Neural Networks: Tricks of the Trade*: Springer, 2012. + +#### Rules of thumb for setting the learning rate $$ \alpha $$ and momentum $$ \mu $$ + +A good strategy for deep learning with SGD is to initialize the learning rate $$ \alpha $$ to a value around $$ \alpha \approx 0.01 = 10^{-2} $$, and dropping it by a constant factor (e.g., 10) throughout training when the loss begins to reach an apparent "plateau", repeating this several times. +Generally, you probably want to use a momentum $$ \mu = 0.9 $$ or similar value. +By smoothing the weight updates across iterations, momentum tends to make deep learning with SGD both stabler and faster. + +This was the strategy used by Krizhevsky et al. [1] in their famously winning CNN entry to the ILSVRC-2012 competition, and Caffe makes this strategy easy to implement in a `SolverParameter`, as in our reproduction of [1] at `./examples/imagenet/alexnet_solver.prototxt`. + +To use a learning rate policy like this, you can put the following lines somewhere in your solver prototxt file: + + base_lr: 0.01 # begin training at a learning rate of 0.01 = 1e-2 + + lr_policy: "step" # learning rate policy: drop the learning rate in "steps" + # by a factor of gamma every stepsize iterations + + gamma: 0.1 # drop the learning rate by a factor of 10 + # (i.e., multiply it by a factor of gamma = 0.1) + + stepsize: 100000 # drop the learning rate every 100K iterations + + max_iter: 350000 # train for 350K iterations total + + momentum: 0.9 + +Under the above settings, we'll always use `momentum` $$ \mu = 0.9 $$. +We'll begin training at a `base_lr` of $$ \alpha = 0.01 = 10^{-2} $$ for the first 100,000 iterations, then multiply the learning rate by `gamma` ($$ \gamma $$) and train at $$ \alpha' = \alpha \gamma = (0.01) (0.1) = 0.001 = 10^{-3} $$ for iterations 100K-200K, then at $$ \alpha'' = 10^{-4} $$ for iterations 200K-300K, and finally train until iteration 350K (since we have `max_iter: 350000`) at $$ \alpha''' = 10^{-5} $$. + +Note that the momentum setting $$ \mu $$ effectively multiplies the size of your updates by a factor of $$ \frac{1}{1 - \mu} $$ after many iterations of training, so if you increase $$ \mu $$, it may be a good idea to **decrease** $$ \alpha $$ accordingly (and vice versa). + +For example, with $$ \mu = 0.9 $$, we have an effective update size multiplier of $$ \frac{1}{1 - 0.9} = 10 $$. +If we increased the momentum to $$ \mu = 0.99 $$, we've increased our update size multiplier to 100, so we should drop $$ \alpha $$ (`base_lr`) by a factor of 10. + +Note also that the above settings are merely guidelines, and they're definitely not guaranteed to be optimal (or even work at all!) in every situation. +If learning diverges (e.g., you start to see very large or `NaN` or `inf` loss values or outputs), try dropping the `base_lr` (e.g., `base_lr: 0.001`) and re-training, repeating this until you find a `base_lr` value that works. + +[1] A. Krizhevsky, I. Sutskever, and G. Hinton. + [ImageNet Classification with Deep Convolutional Neural Networks](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf). + *Advances in Neural Information Processing Systems*, 2012. + +### AdaDelta + +The **AdaDelta** (`type: "AdaDelta"`) method (M. Zeiler [1]) is a "robust learning rate method". It is a gradient-based optimization method (like SGD). The update formulas are + +$$ +\begin{align} +(v_t)_i &= \frac{\operatorname{RMS}((v_{t-1})_i)}{\operatorname{RMS}\left( \nabla L(W_t) \right)_{i}} \left( \nabla L(W_{t'}) \right)_i +\\ +\operatorname{RMS}\left( \nabla L(W_t) \right)_{i} &= \sqrt{E[g^2] + \varepsilon} +\\ +E[g^2]_t &= \delta{E[g^2]_{t-1} } + (1-\delta)g_{t}^2 +\end{align} +$$ + +and + +$$ +(W_{t+1})_i = +(W_t)_i - \alpha +(v_t)_i. +$$ + +[1] M. Zeiler + [ADADELTA: AN ADAPTIVE LEARNING RATE METHOD](http://arxiv.org/pdf/1212.5701.pdf). + *arXiv preprint*, 2012. + +### AdaGrad + +The **adaptive gradient** (`type: "AdaGrad"`) method (Duchi et al. [1]) is a gradient-based optimization method (like SGD) that attempts to "find needles in haystacks in the form of very predictive but rarely seen features," in Duchi et al.'s words. +Given the update information from all previous iterations $$ \left( \nabla L(W) \right)_{t'} $$ for $$ t' \in \{1, 2, ..., t\} $$, +the update formulas proposed by [1] are as follows, specified for each component $$i$$ of the weights $$W$$: + +$$ +(W_{t+1})_i = +(W_t)_i - \alpha +\frac{\left( \nabla L(W_t) \right)_{i}}{ + \sqrt{\sum_{t'=1}^{t} \left( \nabla L(W_{t'}) \right)_i^2} +} +$$ + +Note that in practice, for weights $$ W \in \mathcal{R}^d $$, AdaGrad implementations (including the one in Caffe) use only $$ \mathcal{O}(d) $$ extra storage for the historical gradient information (rather than the $$ \mathcal{O}(dt) $$ storage that would be necessary to store each historical gradient individually). + +[1] J. Duchi, E. Hazan, and Y. Singer. + [Adaptive Subgradient Methods for Online Learning and Stochastic Optimization](http://www.magicbroom.info/Papers/DuchiHaSi10.pdf). + *The Journal of Machine Learning Research*, 2011. + +### Adam + +The **Adam** (`type: "Adam"`), proposed in Kingma et al. [1], is a gradient-based optimization method (like SGD). This includes an "adaptive moment estimation" ($$m_t, v_t$$) and can be regarded as a generalization of AdaGrad. The update formulas are + +$$ +(m_t)_i = \beta_1 (m_{t-1})_i + (1-\beta_1)(\nabla L(W_t))_i,\\ +(v_t)_i = \beta_2 (v_{t-1})_i + (1-\beta_2)(\nabla L(W_t))_i^2 +$$ + +and + +$$ +(W_{t+1})_i = +(W_t)_i - \alpha \frac{\sqrt{1-(\beta_2)_i^t}}{1-(\beta_1)_i^t}\frac{(m_t)_i}{\sqrt{(v_t)_i}+\varepsilon}. +$$ + +Kingma et al. [1] proposed to use $$\beta_1 = 0.9, \beta_2 = 0.999, \varepsilon = 10^{-8}$$ as default values. Caffe uses the values of `momemtum, momentum2, delta` for $$\beta_1, \beta_2, \varepsilon$$, respectively. + +[1] D. Kingma, J. Ba. + [Adam: A Method for Stochastic Optimization](http://arxiv.org/abs/1412.6980). + *International Conference for Learning Representations*, 2015. + +### NAG + +**Nesterov's accelerated gradient** (`type: "Nesterov"`) was proposed by Nesterov [1] as an "optimal" method of convex optimization, achieving a convergence rate of $$ \mathcal{O}(1/t^2) $$ rather than the $$ \mathcal{O}(1/t) $$. +Though the required assumptions to achieve the $$ \mathcal{O}(1/t^2) $$ convergence typically will not hold for deep networks trained with Caffe (e.g., due to non-smoothness and non-convexity), in practice NAG can be a very effective method for optimizing certain types of deep learning architectures, as demonstrated for deep MNIST autoencoders by Sutskever et al. [2]. + +The weight update formulas look very similar to the SGD updates given above: + +$$ +V_{t+1} = \mu V_t - \alpha \nabla L(W_t + \mu V_t) +$$ + +$$ +W_{t+1} = W_t + V_{t+1} +$$ + +What distinguishes the method from SGD is the weight setting $$ W $$ on which we compute the error gradient $$ \nabla L(W) $$ -- in NAG we take the gradient on weights with added momentum $$ \nabla L(W_t + \mu V_t) $$; in SGD we simply take the gradient $$ \nabla L(W_t) $$ on the current weights themselves. + +[1] Y. Nesterov. + A Method of Solving a Convex Programming Problem with Convergence Rate $$\mathcal{O}(1/\sqrt{k})$$. + *Soviet Mathematics Doklady*, 1983. + +[2] I. Sutskever, J. Martens, G. Dahl, and G. Hinton. + [On the Importance of Initialization and Momentum in Deep Learning](http://www.cs.toronto.edu/~fritz/absps/momentum.pdf). + *Proceedings of the 30th International Conference on Machine Learning*, 2013. + +### RMSprop + +The **RMSprop** (`type: "RMSProp"`), suggested by Tieleman in a Coursera course lecture, is a gradient-based optimization method (like SGD). The update formulas are + +$$ +\operatorname{MS}((W_t)_i)= \delta\operatorname{MS}((W_{t-1})_i)+ (1-\delta)(\nabla L(W_t))_i^2 \\ +(W_{t+1})_i= (W_{t})_i -\alpha\frac{(\nabla L(W_t))_i}{\sqrt{\operatorname{MS}((W_t)_i)}} +$$ + +The default value of $$\delta$$ (`rms_decay`) is set to $$\delta=0.99$$. + +[1] T. Tieleman, and G. Hinton. + [RMSProp: Divide the gradient by a running average of its recent magnitude](http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf). + *COURSERA: Neural Networks for Machine Learning.Technical report*, 2012. + +## Scaffolding + +The solver scaffolding prepares the optimization method and initializes the model to be learned in `Solver::Presolve()`. + + > caffe train -solver examples/mnist/lenet_solver.prototxt + I0902 13:35:56.474978 16020 caffe.cpp:90] Starting Optimization + I0902 13:35:56.475190 16020 solver.cpp:32] Initializing solver from parameters: + test_iter: 100 + test_interval: 500 + base_lr: 0.01 + display: 100 + max_iter: 10000 + lr_policy: "inv" + gamma: 0.0001 + power: 0.75 + momentum: 0.9 + weight_decay: 0.0005 + snapshot: 5000 + snapshot_prefix: "examples/mnist/lenet" + solver_mode: GPU + net: "examples/mnist/lenet_train_test.prototxt" + +Net initialization + + I0902 13:35:56.655681 16020 solver.cpp:72] Creating training net from net file: examples/mnist/lenet_train_test.prototxt + [...] + I0902 13:35:56.656740 16020 net.cpp:56] Memory required for data: 0 + I0902 13:35:56.656791 16020 net.cpp:67] Creating Layer mnist + I0902 13:35:56.656811 16020 net.cpp:356] mnist -> data + I0902 13:35:56.656846 16020 net.cpp:356] mnist -> label + I0902 13:35:56.656874 16020 net.cpp:96] Setting up mnist + I0902 13:35:56.694052 16020 data_layer.cpp:135] Opening lmdb examples/mnist/mnist_train_lmdb + I0902 13:35:56.701062 16020 data_layer.cpp:195] output data size: 64,1,28,28 + I0902 13:35:56.701146 16020 data_layer.cpp:236] Initializing prefetch + I0902 13:35:56.701196 16020 data_layer.cpp:238] Prefetch initialized. + I0902 13:35:56.701212 16020 net.cpp:103] Top shape: 64 1 28 28 (50176) + I0902 13:35:56.701230 16020 net.cpp:103] Top shape: 64 1 1 1 (64) + [...] + I0902 13:35:56.703737 16020 net.cpp:67] Creating Layer ip1 + I0902 13:35:56.703753 16020 net.cpp:394] ip1 <- pool2 + I0902 13:35:56.703778 16020 net.cpp:356] ip1 -> ip1 + I0902 13:35:56.703797 16020 net.cpp:96] Setting up ip1 + I0902 13:35:56.728127 16020 net.cpp:103] Top shape: 64 500 1 1 (32000) + I0902 13:35:56.728142 16020 net.cpp:113] Memory required for data: 5039360 + I0902 13:35:56.728175 16020 net.cpp:67] Creating Layer relu1 + I0902 13:35:56.728194 16020 net.cpp:394] relu1 <- ip1 + I0902 13:35:56.728219 16020 net.cpp:345] relu1 -> ip1 (in-place) + I0902 13:35:56.728240 16020 net.cpp:96] Setting up relu1 + I0902 13:35:56.728256 16020 net.cpp:103] Top shape: 64 500 1 1 (32000) + I0902 13:35:56.728270 16020 net.cpp:113] Memory required for data: 5167360 + I0902 13:35:56.728287 16020 net.cpp:67] Creating Layer ip2 + I0902 13:35:56.728304 16020 net.cpp:394] ip2 <- ip1 + I0902 13:35:56.728333 16020 net.cpp:356] ip2 -> ip2 + I0902 13:35:56.728356 16020 net.cpp:96] Setting up ip2 + I0902 13:35:56.728690 16020 net.cpp:103] Top shape: 64 10 1 1 (640) + I0902 13:35:56.728705 16020 net.cpp:113] Memory required for data: 5169920 + I0902 13:35:56.728734 16020 net.cpp:67] Creating Layer loss + I0902 13:35:56.728747 16020 net.cpp:394] loss <- ip2 + I0902 13:35:56.728767 16020 net.cpp:394] loss <- label + I0902 13:35:56.728786 16020 net.cpp:356] loss -> loss + I0902 13:35:56.728811 16020 net.cpp:96] Setting up loss + I0902 13:35:56.728837 16020 net.cpp:103] Top shape: 1 1 1 1 (1) + I0902 13:35:56.728849 16020 net.cpp:109] with loss weight 1 + I0902 13:35:56.728878 16020 net.cpp:113] Memory required for data: 5169924 + +Loss + + I0902 13:35:56.728893 16020 net.cpp:170] loss needs backward computation. + I0902 13:35:56.728909 16020 net.cpp:170] ip2 needs backward computation. + I0902 13:35:56.728924 16020 net.cpp:170] relu1 needs backward computation. + I0902 13:35:56.728938 16020 net.cpp:170] ip1 needs backward computation. + I0902 13:35:56.728953 16020 net.cpp:170] pool2 needs backward computation. + I0902 13:35:56.728970 16020 net.cpp:170] conv2 needs backward computation. + I0902 13:35:56.728984 16020 net.cpp:170] pool1 needs backward computation. + I0902 13:35:56.728998 16020 net.cpp:170] conv1 needs backward computation. + I0902 13:35:56.729014 16020 net.cpp:172] mnist does not need backward computation. + I0902 13:35:56.729027 16020 net.cpp:208] This network produces output loss + I0902 13:35:56.729053 16020 net.cpp:467] Collecting Learning Rate and Weight Decay. + I0902 13:35:56.729071 16020 net.cpp:219] Network initialization done. + I0902 13:35:56.729085 16020 net.cpp:220] Memory required for data: 5169924 + I0902 13:35:56.729277 16020 solver.cpp:156] Creating test net (#0) specified by net file: examples/mnist/lenet_train_test.prototxt + +Completion + + I0902 13:35:56.806970 16020 solver.cpp:46] Solver scaffolding done. + I0902 13:35:56.806984 16020 solver.cpp:165] Solving LeNet + + +## Updating Parameters + +The actual weight update is made by the solver then applied to the net parameters in `Solver::ComputeUpdateValue()`. +The `ComputeUpdateValue` method incorporates any weight decay $$ r(W) $$ into the weight gradients (which currently just contain the error gradients) to get the final gradient with respect to each network weight. +Then these gradients are scaled by the learning rate $$ \alpha $$ and the update to subtract is stored in each parameter Blob's `diff` field. +Finally, the `Blob::Update` method is called on each parameter blob, which performs the final update (subtracting the Blob's `diff` from its `data`). + +## Snapshotting and Resuming + +The solver snapshots the weights and its own state during training in `Solver::Snapshot()` and `Solver::SnapshotSolverState()`. +The weight snapshots export the learned model while the solver snapshots allow training to be resumed from a given point. +Training is resumed by `Solver::Restore()` and `Solver::RestoreSolverState()`. + +Weights are saved without extension while solver states are saved with `.solverstate` extension. +Both files will have an `_iter_N` suffix for the snapshot iteration number. + +Snapshotting is configured by: + + # The snapshot interval in iterations. + snapshot: 5000 + # File path prefix for snapshotting model weights and solver state. + # Note: this is relative to the invocation of the `caffe` utility, not the + # solver definition file. + snapshot_prefix: "/path/to/model" + # Snapshot the diff along with the weights. This can help debugging training + # but takes more storage. + snapshot_diff: false + # A final snapshot is saved at the end of training unless + # this flag is set to false. The default is true. + snapshot_after_train: true + +in the solver definition prototxt. diff --git a/3rdparty/caffe/examples/00-classification.ipynb b/3rdparty/caffe/examples/00-classification.ipynb new file mode 100644 index 00000000..1950f08f --- /dev/null +++ b/3rdparty/caffe/examples/00-classification.ipynb @@ -0,0 +1,780 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Classification: Instant Recognition with Caffe\n", + "\n", + "In this example we'll classify an image with the bundled CaffeNet model (which is based on the network architecture of Krizhevsky et al. for ImageNet).\n", + "\n", + "We'll compare CPU and GPU modes and then dig into the model to inspect features and the output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Setup\n", + "\n", + "* First, set up Python, `numpy`, and `matplotlib`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set up Python environment: numpy for numerical routines, and matplotlib for plotting\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "# display plots in this notebook\n", + "%matplotlib inline\n", + "\n", + "# set display defaults\n", + "plt.rcParams['figure.figsize'] = (10, 10) # large images\n", + "plt.rcParams['image.interpolation'] = 'nearest' # don't interpolate: show square pixels\n", + "plt.rcParams['image.cmap'] = 'gray' # use grayscale output rather than a (potentially misleading) color heatmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Load `caffe`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# The caffe module needs to be on the Python path;\n", + "# we'll add it here explicitly.\n", + "import sys\n", + "caffe_root = '../' # this file should be run from {caffe_root}/examples (otherwise change this line)\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "\n", + "import caffe\n", + "# If you get \"No module named _caffe\", either you have not built pycaffe or you have the wrong path." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* If needed, download the reference model (\"CaffeNet\", a variant of AlexNet)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CaffeNet found.\n" + ] + } + ], + "source": [ + "import os\n", + "if os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):\n", + " print 'CaffeNet found.'\n", + "else:\n", + " print 'Downloading pre-trained CaffeNet model...'\n", + " !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Load net and set up input preprocessing\n", + "\n", + "* Set Caffe to CPU mode and load the net from disk." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "caffe.set_mode_cpu()\n", + "\n", + "model_def = caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'\n", + "model_weights = caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'\n", + "\n", + "net = caffe.Net(model_def, # defines the structure of the model\n", + " model_weights, # contains the trained weights\n", + " caffe.TEST) # use test mode (e.g., don't perform dropout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Set up input preprocessing. (We'll use Caffe's `caffe.io.Transformer` to do this, but this step is independent of other parts of Caffe, so any custom preprocessing code may be used).\n", + "\n", + " Our default CaffeNet is configured to take images in BGR format. Values are expected to start in the range [0, 255] and then have the mean ImageNet pixel value subtracted from them. In addition, the channel dimension is expected as the first (_outermost_) dimension.\n", + " \n", + " As matplotlib will load images with values in the range [0, 1] in RGB format with the channel as the _innermost_ dimension, we are arranging for the needed transformations here." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean-subtracted values: [('B', 104.0069879317889), ('G', 116.66876761696767), ('R', 122.6789143406786)]\n" + ] + } + ], + "source": [ + "# load the mean ImageNet image (as distributed with Caffe) for subtraction\n", + "mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy')\n", + "mu = mu.mean(1).mean(1) # average over pixels to obtain the mean (BGR) pixel values\n", + "print 'mean-subtracted values:', zip('BGR', mu)\n", + "\n", + "# create transformer for the input called 'data'\n", + "transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})\n", + "\n", + "transformer.set_transpose('data', (2,0,1)) # move image channels to outermost dimension\n", + "transformer.set_mean('data', mu) # subtract the dataset-mean value in each channel\n", + "transformer.set_raw_scale('data', 255) # rescale from [0, 1] to [0, 255]\n", + "transformer.set_channel_swap('data', (2,1,0)) # swap channels from RGB to BGR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. CPU classification\n", + "\n", + "* Now we're ready to perform classification. Even though we'll only classify one image, we'll set a batch size of 50 to demonstrate batching." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set the size of the input (we can skip this if we're happy\n", + "# with the default; we can also change it later, e.g., for different batch sizes)\n", + "net.blobs['data'].reshape(50, # batch size\n", + " 3, # 3-channel (BGR) images\n", + " 227, 227) # image size is 227x227" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Load an image (that comes with Caffe) and perform the preprocessing we've set up." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n3gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "image = caffe.io.load_image(caffe_root + 'examples/images/cat.jpg')\n", + "transformed_image = transformer.preprocess('data', image)\n", + "plt.imshow(image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Adorable! Let's classify it!" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "predicted class is: 281\n" + ] + } + ], + "source": [ + "# copy the image data into the memory allocated for the net\n", + "net.blobs['data'].data[...] = transformed_image\n", + "\n", + "### perform classification\n", + "output = net.forward()\n", + "\n", + "output_prob = output['prob'][0] # the output probability vector for the first image in the batch\n", + "\n", + "print 'predicted class is:', output_prob.argmax()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The net gives us a vector of probabilities; the most probable class was the 281st one. But is that correct? Let's check the ImageNet labels..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "output label: n02123045 tabby, tabby cat\n" + ] + } + ], + "source": [ + "# load ImageNet labels\n", + "labels_file = caffe_root + 'data/ilsvrc12/synset_words.txt'\n", + "if not os.path.exists(labels_file):\n", + " !../data/ilsvrc12/get_ilsvrc_aux.sh\n", + " \n", + "labels = np.loadtxt(labels_file, str, delimiter='\\t')\n", + "\n", + "print 'output label:', labels[output_prob.argmax()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* \"Tabby cat\" is correct! But let's also look at other top (but less confident predictions)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probabilities and labels:\n" + ] + }, + { + "data": { + "text/plain": [ + "[(0.31243637, 'n02123045 tabby, tabby cat'),\n", + " (0.2379719, 'n02123159 tiger cat'),\n", + " (0.12387239, 'n02124075 Egyptian cat'),\n", + " (0.10075711, 'n02119022 red fox, Vulpes vulpes'),\n", + " (0.070957087, 'n02127052 lynx, catamount')]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# sort top five predictions from softmax output\n", + "top_inds = output_prob.argsort()[::-1][:5] # reverse sort and take five largest items\n", + "\n", + "print 'probabilities and labels:'\n", + "zip(output_prob[top_inds], labels[top_inds])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* We see that less confident predictions are sensible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Switching to GPU mode\n", + "\n", + "* Let's see how long classification took, and compare it to GPU mode." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 loop, best of 3: 1.42 s per loop\n" + ] + } + ], + "source": [ + "%timeit net.forward()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* That's a while, even for a batch of 50 images. Let's switch to GPU mode." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 70.2 ms per loop\n" + ] + } + ], + "source": [ + "caffe.set_device(0) # if we have multiple GPUs, pick the first one\n", + "caffe.set_mode_gpu()\n", + "net.forward() # run once before timing to set up memory\n", + "%timeit net.forward()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* That should be much faster!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. Examining intermediate output\n", + "\n", + "* A net is not just a black box; let's take a look at some of the parameters and intermediate activations.\n", + "\n", + "First we'll see how to read out the structure of the net in terms of activation and parameter shapes.\n", + "\n", + "* For each layer, let's look at the activation shapes, which typically have the form `(batch_size, channel_dim, height, width)`.\n", + "\n", + " The activations are exposed as an `OrderedDict`, `net.blobs`." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data\t(50, 3, 227, 227)\n", + "conv1\t(50, 96, 55, 55)\n", + "pool1\t(50, 96, 27, 27)\n", + "norm1\t(50, 96, 27, 27)\n", + "conv2\t(50, 256, 27, 27)\n", + "pool2\t(50, 256, 13, 13)\n", + "norm2\t(50, 256, 13, 13)\n", + "conv3\t(50, 384, 13, 13)\n", + "conv4\t(50, 384, 13, 13)\n", + "conv5\t(50, 256, 13, 13)\n", + "pool5\t(50, 256, 6, 6)\n", + "fc6\t(50, 4096)\n", + "fc7\t(50, 4096)\n", + "fc8\t(50, 1000)\n", + "prob\t(50, 1000)\n" + ] + } + ], + "source": [ + "# for each layer, show the output shape\n", + "for layer_name, blob in net.blobs.iteritems():\n", + " print layer_name + '\\t' + str(blob.data.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Now look at the parameter shapes. The parameters are exposed as another `OrderedDict`, `net.params`. We need to index the resulting values with either `[0]` for weights or `[1]` for biases.\n", + "\n", + " The param shapes typically have the form `(output_channels, input_channels, filter_height, filter_width)` (for the weights) and the 1-dimensional shape `(output_channels,)` (for the biases)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "conv1\t(96, 3, 11, 11) (96,)\n", + "conv2\t(256, 48, 5, 5) (256,)\n", + "conv3\t(384, 256, 3, 3) (384,)\n", + "conv4\t(384, 192, 3, 3) (384,)\n", + "conv5\t(256, 192, 3, 3) (256,)\n", + "fc6\t(4096, 9216) (4096,)\n", + "fc7\t(4096, 4096) (4096,)\n", + "fc8\t(1000, 4096) (1000,)\n" + ] + } + ], + "source": [ + "for layer_name, param in net.params.iteritems():\n", + " print layer_name + '\\t' + str(param[0].data.shape), str(param[1].data.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Since we're dealing with four-dimensional data here, we'll define a helper function for visualizing sets of rectangular heatmaps." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def vis_square(data):\n", + " \"\"\"Take an array of shape (n, height, width) or (n, height, width, 3)\n", + " and visualize each (height, width) thing in a grid of size approx. sqrt(n) by sqrt(n)\"\"\"\n", + " \n", + " # normalize data for display\n", + " data = (data - data.min()) / (data.max() - data.min())\n", + " \n", + " # force the number of filters to be square\n", + " n = int(np.ceil(np.sqrt(data.shape[0])))\n", + " padding = (((0, n ** 2 - data.shape[0]),\n", + " (0, 1), (0, 1)) # add some space between filters\n", + " + ((0, 0),) * (data.ndim - 3)) # don't pad the last dimension (if there is one)\n", + " data = np.pad(data, padding, mode='constant', constant_values=1) # pad with ones (white)\n", + " \n", + " # tile the filters into an image\n", + " data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))\n", + " data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])\n", + " \n", + " plt.imshow(data); plt.axis('off')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* First we'll look at the first layer filters, `conv1`" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAJNCAYAAAARaCA+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvWmQbdd5nrf2dOaeu++Mi4sZIAiCIgnKFCWKkkmJiRWX\nklhlp+xyVSouy3Ek2dZEABxAkAQoUaKHuOKqxLbsKs+uisqSIkWWLFOkbHOeQZCYL+489O3x9Jn2\nlB+Mf3zf+6L6aMtuVyrv82+tWmefPay99u4+z3pXVNd1EEIIIYQQfzji/9I7IIQQQgjx/0X0EiWE\nEEII0QC9RAkhhBBCNEAvUUIIIYQQDdBLlBBCCCFEA/QSJYQQQgjRAL1ECSGEEEI0QC9RQgghhBAN\n0EuUEEIIIUQD0qP+wvc99vMQkR61OracZPC5Ok6wLrF1eT6FNsWU1I0ntqLENuztMk3tfv7yJ34Z\n2nzog4/hB90RTw5G0GRvOMT9rEpTjlK8XK1W25TbnQ60icm5a2V2W1GIoM1HPvIU1P3M//ITpjwr\ncmgzHuHxRZHdfpziNY4iPOuZ6xtpu41tMtxW8NvCwwsf/0U8vic/+iFTrqsK2tRYFerSXuQyL6FN\nUZK6orDbyXHjRY7nOI7tAfnzG0IIf+Pv/K9Q9/ijj5tymmGfIpchtNx5768sQ5vF5SWom7p7cvPK\nZWhz9fx5qBvu7dvvb+E1/nv/8J+a8gc+9GFoU1d4zoM7V1m7BU2yDvazdtv2xSwlY1Jx+DWekjFp\n6sekEMKTT3zQlD/+ceyvSYT7kLXcvZ2QcYPeM/a81KRPBTKWzMYzW57OoE1R4coYj/7cz5jyL//S\nx6HNvusHIYRw6/qmKR+QsXNlfQXqFldsXbvbhTZJixzfzF6/8cEY2lQl3rcfe/qjpvzzP//z0Kbb\nwb7XymxdQq5flNibtCY37WiI4/Do4MCUqxKvS0KucRTZffj4J7AvPv74+6Audv2zxk2HyT5ev8Gg\nZ8rLZ45Bmxe+/AzUtUr7BQ++4xFo87nP/geou+30aVN+4n1P4o7Sp4j+EyWEEEII0Qi9RAkhhBBC\nNEAvUUIIIYQQDThyJyqQ347DxPoAcYZtsn4f6npLi7ZND3/jLojT4n8X3t/chDY18asC2XXPbIZO\nxP7Oninv7e7iB4lf0V+13snKxga06bnf9dlbcVzj7975zHoLBXE5GGVhz0tMfotvE8ckdb/zZ50e\ntGEnOHF+XJLhtr0fEEIIlTvmOJ7v7wXvCBUF7hPziGrXr+OkgDYVcUWC86TyEj/n3bgQQojcJZ33\nr6GR8zmSGH/m975VCCFMEueBkOu+uIweyvKadRlS4jZNxuiYjJ03xDw7T4tc47SN1ypt2T7kfa8Q\n+HnxbtNwewvaDHfw3p7m9rqXxI2L5riCBRk78xq3lbsxL07xc9Mc+5nfhyjBMSkmdfnMOnuzGTp8\n+Qy/D7ZNPMnJiDitbvtt4q91+wNSZ8fKinhakzF+H4yVOd7HzImCNmQcLsm9PXMOZELaJE4uSsi5\nS1Lsw7UTdCsieCZE/anDHM8H0oVLd+46bXyOt9dXoe65z3zVlL/7zBlo85YffifU/f2/9gumfP8b\nH4Y2r3vkzVD37c98GermRf+JEkIIIYRogF6ihBBCCCEaoJcoIYQQQogGHLkTlZPMm9r9xs0ydqry\nBtQtrtnfUlfOnII2C8fRI+ovLZjyYBF/P98nvkNOfp+Hz+0fQN3ByDofbedyhRDC+mnc9xPnzpry\nKsnmKZ07crC9B20OiKdRFe63ceL+MLz7k7bxt3i2pdr9zl4RV435AT7jhqhjIU6I11O7XCriTTE6\nLmeL+R1pil6WzyMaj0jeE/HOcudXTGbEySAuVeoOpyZ+ByNxHyyJq+LdnxDQC2H36PLqGtQtbayb\n8mrvJLSZjNF3Grosta3ZNWjjGe9jP4+IhzIe2Vya2QTP+d4u3kfbm3ZMmJB8IpZL1Vu09/tgFR2Q\n/uIC1HlSku3kfaQQ2L2G22K5cLXzq2LWhmQIlewLfJsS9xO/H+sOSIbQdGod2oUVHE97C+hcJt7H\nIx4TUeHC7MDuO/Wf5rj9WCYT0eNC5ITHlLh+NbhMuO2U5Ev5PjQriGvIxhLi3nkiMjinrg/dvIA5\ncW/4wbdB3f71W6b8r/63fwRt/vqn/znUffGHP2nK//gjfwvafPi3fgXqvvXlr0DdvOg/UUIIIYQQ\nDdBLlBBCCCFEA/QSJYQQQgjRAL1ECSGEEEI04MjF8owskDt1YmJOFuMcbaE0euPVV025+/yL0Ob4\nHeegbv3cbaacEgmx10fRcxqhUOxhct2x2+3ihqfvuQvanLnrDqhbGNh92L9+E9pcOX/FlG/dwDYj\nIrsXzuL0izm/FoVbcDglQXcVC4dz5wXFyBBqInX6OhbWyBZYzgsrQqet+bp6zwW2ZiTcMyXBdoUL\nL5xMSLAmoXSSajFjQX4sgNO3mS8sNXPBkv77QwhhMsJ92HWBtJvXcKIHWwx30U2GOO4mS4QQwqnb\nse/7xVNzsmgvfIYI6pMh9v3Rvl3UdkqCPKfk+iVuQd6lFRTEB0RyXjt1wpQXyOd6g8PFcub7VjX5\nO7iy++nv2RBCiGIiVfspIUy8Jv0sn7rtE9E8JxMmPLMRjvszdt2TwxeQ7g9wslDl5GsfahlCCDU7\nPi/vE6+8lc0zfpIAVzaZpnTtiHGfuvGUTQIIZDJNr2ufv1VFJpGQINaSSPHwORJUunDCTjYZbu9A\nm69++jNQ96N/4X8w5c/9xiehza888Qmo+8n/42lT/rF/+gZo8x/++b+Guvsewnbzov9ECSGEEEI0\nQC9RQgghhBAN0EuUEEIIIUQD9BIlhBBCCNGAIxfLe8soXg5c3XSEq7qnLRT3Zhdtu+uvnoc2W5cu\nQd3GeSt6b9yJYmtnFdPBkzYK6J4Tt92GdedOuzYo18YVioEXv/ZtU/7253Gl6cvnL7oN4T71SCJ7\nZ8Ge85pFgTNcmm5EIn4TmpRr5U8meqcR7nya2nYJS+9lu+lOhJeCXwu/Inya4dZrYsD7lG/2bQkR\nPWN3PplEylKUfVVEc+KRXt9N7PDfH0KYTvH+K51we/PKFWgzPkCJuzuwq7YvLON9tbi2AnUnz9r7\naLi7DW08bTIZpNXCiSwr6zZFvdvHleWzLt7rHSd/95bw+/pkVYF+326LydLjPZIc7cjJqgIV6S9+\nVQHmBMdkYkfp6qpAJojEeN/6RP2I3JEFkbhxO3heWNJ5x4nkvQFev3YPr/vMrQ5QHuC2R+TZUzqj\nPyVjCbu3PTW5kVnYuz/vVOn2+0BWbahy3HjipfwMrydbsaAmAjrsEjmWm9fshJS734IC96d+9beg\n7iuftc+6H//oz0GbJ/8C1r3nL/9ZU/6zT/4VaPPZf/LbUPfOO38M6uZF/4kSQgghhGiAXqKEEEII\nIRqglyghhBBCiAYcuRM1neJvq92+DThcO41ewfKxDahbO3nclH34ZgghbJJVo3c3bVBgVeBv/0sn\nT0BdexF9Ls/GCfxcK7G/4V/4+rPQ5qWvfBPrXLu9LQwq66/afVq/7Qy0WVjDcL+Wc39yEujIiN1v\n/zHxmKKEhMO1bUBlq4UhnSxs0686HhMnitlAsfMPWCAnI2s7l2KC3kTBJBN3HrKMhYLiAcYu5DRJ\nmXOC18afh4hcB0ar4/aLrbxO6ioXArp76xa0uXbhAtQ987kvmPLy+hq0uevh10Ndv2t9o5W1Y9DG\n0+p2oS7podvUdnULa7hPGQlrHCwvmXJ3AV2cmPxdOh3acM+bVzEQd+vadajzsEBV1jci19eZN1Uy\nt9CNARFxfyoS0jmd2pDMhIVK+sBKwpiENVZEGuo4r2+BeGitNo4vpQ91JuP+iISsem0wnStYE2H3\naE3CNsva1pXEUarcOMyyktl+ztz3sX2KqT96eNjmwtIS1F09b53kKxfRpfyeH/5+qPvsH3zOlE/+\nd38S2rzjj78d6v7N3/+Xpvzwu94GbZZu/yLUDa9vQt286D9RQgghhBAN0EuUEEIIIUQD9BIlhBBC\nCNEAvUQJIYQQQjTgyMXyyRjFvZmTDtmK0UyOPnH/vaa8fBLl0w0iWm9evmr3aRdDAgNb3ZqECXqG\nt7ag7tVvWGn0wre+DW2uvPAK1MUuoPLUvRgKeuKcDe7skmBNJmx7YbM+3PsMIYTQccKmF9RDCCGf\nMdnVdrU4RfGaiawgaJM27C+BOHViORG2Gd5jZcJ9XaOwGbvj8+Gi32lDhG3f1dnxMWvUiZ4RCThl\n+OBAtu3+EplA4fZzdDCEJntkhfYrr1rZ/PmvfAPatLsYjNhbtmJ5i4Q8erpEBvcTIUIIod237WLS\nh2si0u5tW5l+8/JFaLNzFQXx7et2IstoiONIEh1+fAUJ2yyIHO1PFVOCqxw/58X1kkjPEQlnLaZu\n8CD9vJwjbHMyxqDLmExy6C7YvtFfIGMe2f7wwAaaHgwn0KYg56XlJW4i5bMJNh4WQsrG5tKFpeZE\nys/cPtVkfGNjrJ84MyXXhfX9kvQzzzTHwNgTt9mJVlcuoFjeTnCsvOv195jyK2TSyvqZk1C3e9U+\nfw92sE+t3Y6B2GM3+eMPg/4TJYQQQgjRAL1ECSGEEEI0QC9RQgghhBAN0EuUEEIIIUQDjlwsT4ns\n5lc139nchTajEQpwy+s2qbZPpOqlMyiRJU4s3b+BaaV1TuRoZgE6rl+4BHXb16xY6ldZDyGE2193\nL9Qdv91K44snSGpzat+D/Yrq36nDJGD/+jxvCm+rY1OhMyJQdyLclv9c2mLiNb7Tp16gJKnfTPQs\nnRCetbDfMbzEWZKV0FkCtF/5PC9I0jkRdYPbFjkUesxeZGVSPqNy+xWR+zHNUPQerNp7bf30KWiz\nfRNTzHdvbpvy9St4f6y8hJNGVtyKAWSReqBL0skj+kF7Tcc7OBlkcoCS7GRoZfohEekPdvfw29xs\nhd4Ak879/cFg4wZTqL0E7JO6QwihZn049xN8iFhOv8/1dTLJIc/JGOQYj/Gcd/t4TRfcBAI2bhwQ\neX97017nfXKtOh3s+5mTttlkBX8fM5iwXcPMkhD84Mya5O7apOQasxHdj6cpuVYRSZxn+w77NEVR\nP+nb7R87fRza7N3A+6iMbH85/sA6tElP4/Pw5ue/bsrj63hv91YxWT3fw74wL/pPlBBCCCFEA/QS\nJYQQQgjRAL1ECSGEEEI04MidKBp+5wIcWYDcAfnNcjaxQVqDFfyts7uAv6nHbesktBZIsOYIwwQj\nErzoYYF4bedA9FdXoM0KWd2+s2hD5aZkNe/RrvXH2ErvCXNqvEcw5+t04sIvSS4qDXBMnFfA3Di6\narxb0ZwdX6hw56vaXoeK+UiEqfPHaqKhsG0Vrm94R+o72yLegjsvEC76GviwPe86vDb2grHPMcck\nSa2zs37iBLQZ340eSrtjw/Uq4vVs3bwJda2u/b5O73Bn6MrLGFh7sIe+xci5MMxjmk3Qz/GuEXPj\nWm0M7lzZsPd2VaJ3M54jyDefYnBgRYQZH6jK3Cbm8JSuz/p7KIQQSNZmqEv/OWyUzOHUlAG/b8EF\na4YQQsd5Ut7zC4E/L0bguZHrR9zQ1HmnzCfj8Z4Wpi3W5Jj9Jc3JWJK5EFKuDOI++XYZGYdbxFcd\nx+g7edIU+/X0wI6nCdn20jF8bt+6dM2Ur7yIwbZ3338Xbuusda6ukRDrZeJSDduHH99rof9ECSGE\nEEI0QC9RQgghhBAN0EuUEEIIIUQD9BIlhBBCCNGAIxfLQ4kSYOyMu1ab7BYx5yonNI6JTMhWn858\nmGCKMmjUImF0ZJVxT9JGUa/ftTJdu0tCATso3A2d3D4jYWbefE7JqucsjBIl5/nCGiMnQpfkcyWR\n62dudfQowfNLgyadZVkz05sEKnqBeTo9fFJACCEULmyzIKGrNTlmH9KZz/k5L5bXbewH9Jq6e4ZN\nHmAUU7ufNQmQjWK8/1K3+nuHCL/HzpyBOu/g7m9jkO6EBMSOnQScESHVw8IvaxLymLlzt7qGYZ9x\njBM9gpf5ySQAFuqaOtk8YvfjHEG+5Qzv/4j8HewnNbCJEH7MDSGEKrfXge1RTM1yW5fQfn743+st\nEnTZ7WIwqXexRwc4LrOwzeDOQ7eD4z4TrecJ0pxn/EzJhJspC0J1dWxCig849UGpIXABvo69kI77\nzQKU/TjFILsJx8yeYTFJBV09uWHK169hIPaV81egbuOcDQHeJZ/b38IxaJ7x5bXQf6KEEEIIIRqg\nlyghhBBCiAboJUoIIYQQogF6iRJCCCGEaMCRi+U1Sc9lybiemLzv+SRZluw6IYJh1fEyNsqESQsT\nksuarYvttk1SYtPMCYxEhJ4Qab10IiRLl/bSuF8xPgSenu23xFKqGZmXZMk5iTIiKzoxOSbyInMz\nsyh1TVjCL/lg5MRLMsGA4dOWWfoyU0gjJ3az1N9A0rpz/7mM3JIVXj+/D0w+ZXghNRAhnSVAxx17\nP8QpHt/iGsrYUyeNRwnea15oDiGE6cwK4UzU95w8dzvUZWSih5eHW10UjBMi8+PMBzx3symK7L4L\nleR48ymec09JEssjYuUWYyvvFmQyT0QTy207NiLEZOxKE9dnI5LMP0eifpuI+kuLOIGh5a5fPsLz\nGZNr42V6NmGDpoq7w5lnAgyDpfXXZBKOn9zCnimRu9/ZucvIPQrPOnb/s5UV5ng+RDER2d3mU5II\nP5uQCVNuotXqxjI0mUywX29t2sklg+VFaJOTz7F7cl70nyghhBBCiAboJUoIIYQQogF6iRJCCCGE\naEDEV6T+z8qRf6EQQgghxB8Bmqiq/0QJIYQQQjRAL1FCCCGEEA3QS5QQQgghRAP0EiWEEEII0YAj\nD9t89MmfhzpvmrOVySn+g0SSjyOyLaeH0dWuif4eu8C4pz/4NLR5/PHH8Ovcyu79bg/aXHzuFajb\nuO2YKXcW8XM3L18z5aUOtolImOjErfqdRNgVPvr0R6DuZ3/OHl9ZYbhgPiWBqj4kM8LQtaSFoYf+\n3LFg1DYJcItquw9xjfv00Q99GOre98QH7XbIPIjxcAh1LRd2x1akL9iK7S5srypJWCsNBbSduCox\njPKpj30M6j70pL2m+WQf2uRkpfVyZutY+F6rgwG1iQ9VTTAAMIrxc5DSR5zODz35qCn/zOM4trQS\nPHeZu48zEgDKRqDKBSqW5JxXJNO1cNc09uGUIYSKhGY+/ZEnTPn9j78P2mQkHXJS2ODA1uIA2uze\n2oO62IWOnrv7Lmhz7dnnoG7r0hVTXr/tDLTpLOG49P73fcCUn/jwU9AmifGe8UM6C9KtChyXKteO\n5EyGOsZrk/h7DT8WUtLPnnjCji8ffPQD0GZ3axvqBsfXTXnj9pPQ5sorL5lyORpBm4WVFaibuPDb\npCIh1j4cOmBg81NPfxTafOCx9+Ln3HAWkb4/IwHcaWr3oUPCRBMSTJy658rB3g60GQ+x77e7dgx6\n+uMfhzavhf4TJYQQQgjRAL1ECSGEEEI0QC9RQgghhBAN0EuUEEIIIUQDjlwsj1jop5PPmOjtRdr/\nuDXX6LBNf6cOzEAaRAp4sZRRENl0obdkyrO9A2jDVn9fPLZhysNdlBArt4J5sowy4TQn4rw75mq+\nUxCilhX32gkKo/1llKpbPVvXXcDPZW38XOwuVnGAK9kXRIT2K4PnI/wcYza27QYLuAp47/hxqNu/\nZa/NcBeF7d6gD3Vp24rWeY79J5/iCuOtlv1cQmRQipOo0x5Kx0zwHw/t31vVDPdpNELhvu1k8yhC\niTTOiEyf+b4wzyry2IljMhEhcc0SIgVXRHb1tz/xmemEFBjPcAAKlTdwCWyOTEkmTPits0kAowPs\nnxvrdpzq9VH43752Herq0n7jihOjQwhhf4Jjnqdwk11CCCFp4yOq5fpnZ4Bt/D6FEEKZ23NVlfh9\nBfmc71aR70AhzLUOR6tLxrccv2/HTRY6eddt0GawvmzKl5+5AW16/QWo6/bsuDvawXs2IpN+4vTw\n+4/cDqF0k2nqCs95Tfpnu2Pv204bx6RyhtuaOMF+coD9ro7IeEO2Py/6T5QQQgghRAP0EiWEEEII\n0QC9RAkhhBBCNODInSj607FzmaieQ50ov3GydeZJuXbU06IK1uE/fDNvqu9+h770wiXcNAlUHBy3\nv3tffflVaJO6r+t00WPYH6JLFVJ76dM5naiFRfs7e9JB5yQjTk3mwgR9gF0IIcx2MRhturNryuPt\nXWyTo5/jwz1rloJIaLlwz5vXb0GbhSV0DRbW1ux+HqBrUBIvK3KnKiUOSE3i/SbumFvxHFJGCKF2\njkJKrlVM3DSfAVpnxOsb435OnaMQx+ivpRV6YD7kNAFHikDCTCPiH3m5iCgZbFPBj17z+ZYhxO4L\nuBc6x/WDAFL+fd4Ny4m8VRLna/WEDfeNiK9z6zyOXcduO23KgzX0Mm+8hPeRZzLEPlXmGM46nlgX\npkPcrYwEMVbuulcxjl0+VDaEEPLa9s+4wm3Ta+po9fFea5Hg5avPvWjKsyGOG8fvOGfKm69egDY7\nmzehbvW0DUJtkedFTlyjrD78/y05GWO9Y8aCPLskpHdxwfp57OwejIgL65zZ2RhDSNMeeT61sC/M\ni/4TJYQQQgjRAL1ECSGEEEI0QC9RQgghhBAN0EuUEEIIIUQDjlwspzYmZGaiRlYRgzJi6XPwuXmD\nOx3MUZ9DHmQrS2cuzO8mCaw7+Ya7oa7nhPSdi1egzTEX/BiTFelZgFwbfM35xOTSreadoNsXij0U\nIWcuEHO6h2F/+9sowE/2bTvi1oakh3Jmd8mGZLb6GHTJ8GF0XRJGeesqBtsduHDNhbUlaBOIvDib\n2JDVTowTDDrk+GIXJjojMiijcGGeCdmnrI2iZ9+tbj8akdXfyf0xqaxgX8ywb7DAyNrdo9kc92xM\nQhBZAKefbBKTcSRl23Jxguy+qr2BH3CyCbtSORG98fvZWIbt0sTe3BMS1hrjABBW11dNeefbKCtv\nXcSx66G3PWLK7UXsr2MSiOthYZtsVCoOrCw8IxM2ugO8b32gYkIm86QtnMBQ5PYercnkoXKOiQFV\nC/vL8bvOQt3Xf/9zpnz5mVegzVsetM+LtdvOQJvrzz4HdZN9OzGnO8BxqszxvMwz7yEv8Ph8kC2b\n+NQhoaAtJ6CP93HS0XB7C+qmvm+QUODOMvaNTGGbQgghhBBHi16ihBBCCCEaoJcoIYQQQogG6CVK\nCCGEEKIBRy6WUz3UWWtMHqZSJSQIkzY0xNx9AbHm5klWZzBxbrZnZbcdIsl91723Q914Z8+Wb2Fa\n9+C+e005J5JuSY4mdsJtNIfYGkIIHXdxqgMikRPRc7xr9320gxL5jIilkROfe8soQg6cEBsCJgFH\nAWVJxs2rdgX1lVXc9j0PPQB1u1v2Wm2R46vJOucjd64Ohph0vraxAXWZE4NZUj7DJ/hmLRwCygQl\nyyi1wm1vAc/njEjx3rMuSPp6RRK1q8IKobM5Do/NM2ETUuLUyfQksjwmn6v98ZEV6WcFpq9X/iQQ\nab1k0eOwA2ycIttyceu5E6NDCGGwvAh1rdT2qSsvnCffhxxzcvSkxPMyJuMEQs55gduqnCzs76EQ\nQhjv7UGdl8Y7fRTg2x0UyyMnR7PVD9gEJs/+Po7fD7/xHqhbXLeJ79/85BegzRve9X2mvHTqNLTZ\nvHAR6mrXP0sy6SAh9wO7jzxsgkbmnocdkk6epmSVBnf/j8m52yaJ7P5uSMk17g5QZK/ZsgVzov9E\nCSGEEEI0QC9RQgghhBAN0EuUEEIIIUQDjt6JokGafol49vvy4e971FhiHpOvYm1oSOehuxD6Pfy9\n9eaFy3Y7bQw4PH3nOah78VOfN+Vigm7D0vE1+10HuBI6W+o9Suz5rEv8bZyxf9MGTU7G6COM9tFH\nyN2K23WC17O3tgx1/TXrJPUWSVAaWQk9n9pzVZLQNcbaMesfPfuVr0GbV7/9PNS98a1vM+XVuzA8\ndVSj37E/tOfqJvEYrl6+DHUbx46ZcqszX1hcObPnJR/hKudZhMNCmlmHJmnhOQ8J8c5c+GvZwv2c\njjB4tXZeD/NQPK2EDGdE5fCBsTXZbxaoWBS2riQjTk28kMp7isQ/LOc4PuaKMkmp8q4WCRxdWsZ7\nrdizPt6ti9jvVk6gI7hw0t4zV2+iqxKI9+apSvTJIuLLhNgedFHguDgdY7hnVVsXtbWH/hNzdjp9\nW5dk2IfncdpuXcfzEg8w9PTNP/Q9pvwvn/670Ob8558x5XM/8EZoky2g95a4vlcFPOehwj6cZHiu\noA0J7u24EMsWCbVMiEuZT+1zbPfWLWgzOUB/tLdk+/VgCR1a6kTNoSS+FvpPlBBCCCFEA/QSJYQQ\nQgjRAL1ECSGEEEI0QC9RQgghhBANOHKxnCnjUDeHC/7aWzscv615tzJPniHJ0Qs3b1ih8Ngdt0Gb\nHgnpvPh1KzAPloh4fdxKnS986QruEwmaTJ0lX5TzhVHu7Vg5k8muJRF8O24/WUDmYH0N6haWnBxJ\nVgqfEIm0LKzwzoRfxqoTtt/z5/4UtPndf/GrUPev/sE/NOX77n8dtDnzwL1Qd/zeO035xFlcjf2V\nb70Adbcu2evMQkEZZWHP1WSfGJUV1nVd348WUM6MEhRL49SFnnZIhyGXpnDBqzUJYoXNkGTdihxL\n7b7Qi+YhhFCV+Lkit3XE1w5ZxiR1+7mK9OFyevjxseDgkt1/tT2+JCOTOLo4QWP7sh2nxvs46eAY\nmQCTtOwx79/CoNmkPvz+W1xBETom0r+fnFTmeP1GQ5zwMp16Af3wAOcQQihdeGjCwiHneDbkJBT0\n1ZdehLoH3/lmUz71f/4OtPnmH9hJR2ffjAHAvQE+Lybbm6a81EexfX8Xx9M4Ody8TmI8L5F7QETk\nST4d42So8S27n9tbKJYHch0W3XOl3cdxKsvwmMfk2syL/hMlhBBCCNEAvUQJIYQQQjRAL1FCCCGE\nEA3QS5QQQgghRAOOXCxnJjLIZkTSq1nq9hwJ4jWVB+0H+QrVc+wnYTZDQXQ0scmqD/6xB/Fz27hK\n9bVXLpkF2mjtAAAgAElEQVTyvY+8AdqUzmQf72D68waRuCu/Ovqcia19JzB3l1FQ7Sz2oa69YCXH\nrEuSa0nibTGx+7m3twNtxkNMrq2cLBwnKBMyPvdbnzTl7/tTPwJtfupvfRTqfv/XfsuUv/x//R60\nufFvPwV1vS9+3ZTvetProc3t952Dur5bnXz78jVow/AScEGE5vGQJIg7GbogCdtpD1PM/V9pNZl0\nEMfYF3yiPlvpwMMnfjAx2dZ50TyEEEoipAc/OYGtasDGCLdjTFoPPtWcUNNVFHDfI3c8aQv7Pjud\nt65cN+Wkg59bve0E1I3dqgV7uziWtdqHJ163yEoOMesvfvYO2c8WOebSpXWzZwqbiODHkojMHoqY\n4e/okpT/V57B1Q/ue/1Dpvzwu/8YtPnKb/57U77yLArqy8dRLL+waYXtivT9tIXnfFYePvGhJvea\nf9wXM0yXn+zjmL61ZSc5zHJccaK/jGnknYF99mR9nLBVkYddPpVYLoQQQghxpOglSgghhBCiAXqJ\nEkIIIYRowNGHbbJ0Rpcix90j8r7nHAHmP9Ef/93nWIgd1SvmcLDGEwyoy/rWB1hzwZMhhHDhm/ib\ntl/Z/fQDd0Kb7Zs2hKyY4G/H3R46J8O9PVNuzekM9VdtIF7cRdchIqucz5x7MxnjeRoNMXRtuGl/\nL5+NMAguI7/ht7xfFZPVygnHjtuwzV953y9Bm7d9/t1Q90M//mOmfO8bH4I2r37lm1D38peeNeVn\nP/8FaHPt0iWoO/f6+0x5sIJ+AKPtQl2LhARN5ujnjCb22swqdCR6BVk1vm2/L0nJfUy8nsTft/Ec\nf+8R1SgnwZbB3Vc+EDCEECoSDlk6t2k2YyGdWOdVJurUzNE9a3IOmCflB7RWhvdovoce4YFzmVZO\nYfitv/9DCGHP+ZyzEXovXeI7eVhYIxu//XjNPCbwpkIIqQtZZOeOOlFV5srETYsPl0oHiytQd/Pq\nZai7+OJLpnzq9XdAm1eftW02yRhxaukeqOt2rMM6nWDHy1jAaTi8gybkQRo7n6zwLm7gDqZv11/E\nfre4iv2zt2THwZgEAM/Is2c2kRMlhBBCCHGk6CVKCCGEEKIBeokSQgghhGiAXqKEEEIIIRpw9GGb\nxM6GzDMmE1Kr24tsRPij0rgT0qlFjpVU4nQwYXp5Y92UMyKtvvz8RahbOmkl594ahqddf+m8bdPF\ncDEfvhdCCMEH/rXme5+eOee43MPjDbsoiPvAupyIfGw19rqy172XYZftkJDHyl34Op5jVkAI4eEf\nfrspn77zdmjzG3/3n0Pdtz73FVN+g9vOd7Z1Guoe+uPfY8p3baFk+eqzz0Hd5RdeMeUV11deCx+k\nFxOJtM5QLJ9N3YQFEg45m+J1j53EnbWxf7LJJl7sjsk940mYeE2uu/eCmUxMw2fd/Z8SebmK8HyW\nwZ6DhIj0VX54/2SngGSehtiNnzEZt9gEjTi1n+sPcLJCQaTq4Y6dpJLSAMfDJ67U7KSzKieg1xHK\nwzURoSs/EYmcl4IGodpiRM5BMsfwmXVxnGqRSTg3zttnwcoJDDg9cfcpU57uo8w/3sOxJHMTiKoC\n+0HJwqfnGT/pfWQ/x8Tygoz7fkzPOjhudAdkIos7vukInzPjET6zCrbvc6L/RAkhhBBCNEAvUUII\nIYQQDdBLlBBCCCFEA47ciWKBav636pi4DUmMroH/wZw7S/hbp2/Htsw43IgKoSKuyPK6DQUb3sQF\nF3dv3YS6U/dYH+eALG68t2c9lE4ff3efTPD3cv/6HM3pDNVuoc2ELLzJ3IbauzHkerbIvrfa1hmI\nSjy/FXHo/LWK5vDZQgjhU//GLhx8/xtwQeD/8aM/C3Xnv/otU75+8Tq0ef7aJtSlHetzLJLFoo+d\nuw3qRs53mM25gCbcf0SqqRPifKRu0V7iEJRkkVLIuiT+U5qh0xK5/kFDeh35hHkN2M+80pITD4aF\nZnqViS0k7MeyEELInfORsuDQep4wWPY3L1mY3TtDJDy1GGN/id0Y0CJ+JTu+auoW6GWhmXP8ve7P\n03fA6xe7ZNKaBSpTx8WFLNPnDAs0ddsiLtxrrH5tv498rNXBINTpgR2vp2McvztLdqysczze6Yi4\nqS58MsvQVSsK/D4WEOuJybOvduN1meMYEcd47lodu5Bw3MZnQ2eAjrBfBHk6Jc8+wpyPP/7Z5h8V\nQgghhPj/L3qJEkIIIYRogF6ihBBCCCEaoJcoIYQQQogGRPMESP4n5si/UAghhBDijwDVz/WfKCGE\nEEKIBuglSgghhBCiAXqJEkIIIYRogF6ihBBCCCEacOSJ5Y++91Go8yvE9xYxnbQ/GEBd5ZJ4Z1Nc\nkTovZlDn089nM5LoS1ay7nRsuutTH3kK2rz//R+AuplLDB+srUGb4eY1qPPpq8fP3Q5tXvzal035\n1Lk7oE2SYiL05oULprx4HFcKf/KJJ6Du0cfs9eOrnmNdktjk8R5LJ+/giubFzKYTs+s5O8BkXtwH\n7Oq/8Esfg7rHH3/clMduhfoQQlg9eRzqBifsNT3/3HPQphhi/zx26owpVyRpuSAr0vvk34Q4j089\nhcf3wcces9thE0t8NHcIIXJxyzFpw/oCfA6/DROhA8vhRp7+hadN+dGfxiR5uoZB4VKUSQp+OcN+\nhlsjCc3kfEap7Xtxin0xbWNy9S994hOm/Fd+6q/i95ET5a8Nu8RJilcibdm6bh8Ty/0YGEIIsUuz\nLmaYEt1u4TH/7M/asfLx970P2kTkAP1ZZ/2nTfYzc6sf+IT2EEK4cQVXGtjd3DLlE6dOQpvFFVxp\n4HF3r33sE38T2hTkmTUdutUIxji+jQ+Gtg1ZsSAjaej9xRVbXsVnUdLGc+fDyN//cz8DbT70QXz2\ndbr2nGekH7DVAabu/puQ1PYDksheujGoLHDbaQufM3Fin7V/g1yr10L/iRJCCCGEaIBeooQQQggh\nGqCXKCGEEEKIBhy5E9Xu4u+tp+84a8rlGH2ECy+eh7p999txu4+/AXd6+Lt+5IwL/7ttCCGsLC5B\n3WQ0hDpPkuLv7KXzeNIWngPvaYQQQuTchu4S7tNw1/4u3O6ha8Scr8qt+s08DUa7a387jsjq4cUY\nV+revrZpyjcnuE8Ly7gq99op62qtrK5Am5qcl4OJdQ2mwxG0YfQXFk25GuNv6s9++ktQ991/8odM\n+U3vfDu0+Xe/8dtQd+Xl86Z8+uxZaFNHuJJ91rWe28TdC6+F12Nq4jax5eYrJ9Z41+m1Pgffz5rE\neHzehamrwzN6Z2yFeNKucL4FDxzGurRlz3mS4rjBXC7v+sUZOopJcvj9VxHnjCh0oY7tUUfE/WHX\nPc3suJQxdyvBz9XuXJGvo94ZbIc0iUjfTyL7ffkMr/t4hvd7smzP+9KJDWizceYM1L3wjW+a8qWX\nX4E268PDnw11hQeYJHh8wZ3jhDwvWrl91jGHLyqxD/s+xG7ZhFzj18iZNOQFcWFdnffuQgghIz5g\ny/lcrTZe46yF99F4bN2wPCdOVIrnM4qb/z9J/4kSQgghhGiAXqKEEEIIIRqglyghhBBCiAboJUoI\nIYQQogFHLpbHxOF85rM2MPLa5avQZvXEOtTd8eA9pjxwUnAIIUQ1inupC4ebknC4q69egbq6RLnN\nExMB1oeJthf62GaIwWFJx0rxCysL0Gbnmg3pbBGxfDpF6bicumM53NsNIYTQadt96izisaRtPOcL\nx6z8fYOc34svvQh155973pRX1rEfnCIydm/V9oVOF+VFxji3YuIdb7gX2lx69gWo+7f/+NdN+c9/\nFIMR3/yD3wt1X/ydT5ny3s4WtGFybX/NhvuxCQUMvy2itYaKOuO2siJBk8z9TpxlzLbtpfUQQoi9\nyHq41xpaRIRmAjyE+5E2KZG/MyeIt3solnupO4QQUtgvPOslkXI9OZGHfSBvCCF4Vzlhwzyzv915\nSFPcdosEFVbOCI+IIV4zA96RsCBGIo3XTpiuiXA/JeGMw+191waDLu9540NQ98gPvsOUv7WM4/CL\nX38W6gAi87c62M+mU1tX5Xjdi9we38E+jvExmawQufE7IjdWm4jsRTHHA4Ldo/6YiUgfkTBo/4yO\nmQwe4T75SSJxwH4QyD0ak/DZedF/ooQQQgghGqCXKCGEEEKIBuglSgghhBCiAXqJEkIIIYRowJGL\n5dev34S6wYZNqn7Pu74H2qwdPwZ1W9dvmfKtCyik71xHUffmJdtub7gHbY7dht934vZTUOeJYjyl\nPkl5sEzS0PdQLO93rSzcJeL8xAmFbZK+vr2L58CvYB4lc5i7IYTJjpUcW322WjqmxB+/3yYB3/fd\nKHBuXsYV1F/8shU2r714Gdo8/8wzULdyzAroS+u4Wjljf3vHlJPXo1j+th/9Qaj7B4/ZVb8/+6u/\nB23e/qd/COpO3HG7KU/3MWm5GKFYOrxpr+nKKeyvjMSlgxdE+KUJ107YZCnfMUk69mJ3zWKpGW4X\n4jnS0KMM2zBxNmrbe4SlFWdkIkLqVrePiAjNd9NWliRFmQninoKlL5PUZr8TTAlm5xPGBNKmrllE\nuqsj/WeOwPkQEbm308aJK6VfbYFcvzLHfrZ11Y4vm5fweTHc3IW6N7zju0359Y88Am1YCj20IfcH\nTSN3Cd7VFOVoP0GkIMcbSJ1P6/fXPIQQMjJ5IDr88Og5L93hFSzVnMw2q+E5im3Yc6bjVv5g9z+j\nZhMt5kT/iRJCCCGEaIBeooQQQgghGqCXKCGEEEKIBhy5E3X7gw9A3dox66vsXkOH56u/82tQt+P8\nqoisFD6t0SM4c985U37bj74d2iwsL0Pd5RcvQp0nIuu4F26/en30LXISthlOHTdF72SEEEIxsoFx\nKfmNvWZeSOl/O56PvR27Wnm6h11o++o21N28ZOtO338btDl99x1Yd89dprx1FT2G8994Gep2b1hf\nbjxG740xddfh1edegjbv/NH3QN3rvv9hU/7sb/0baHPfW18PdYOB9eNq8ndNfxHrdi7fMOWD3R1o\nw6idnFJWeH9EMfo5czlRpBN5hwZCNAO/Z/zm58mCjcn9wXyZhYHts0kLg0rjjIRYOu+lKNBVqwo8\nn94HYrmTMTnnsB0iFlG3yQUcMk+LnZeWOz4flPqdfWDXytaVBXFjSCCmJ59i+GXWH0Dd0saK3wNo\nMz0YQ13urs3LJCDzG3/wGajbc8+ZR37k3dDm7vvwueahZ4CFs2a2f0YkoLJyx8zCTCvir/lzzO5j\n389D4PctbJtc99R5fGNUPkNNEnir2p6XlNyPLEw0dQHVzMVjxzz3A5Cg/0QJIYQQQjRAL1FCCCGE\nEA3QS5QQQgghRAP0EiWEEEII0YAjF8t3r9yAum99+vOmvH0VQxcXyMrZZ+61AY6rd5yANve8BWXe\nEydtaOa3v/hNaPOpX/t9qJsdoPgIkNfSonISNwldm5GVuhO3ujUTBX3oGhV+2arxfltzhBl+Z2N2\n3ydTFDiLEa68fuO8FcLPf+N5aHP8Trx+px+wsvnxc6ehzZ0Pvw7qdm5aGXT3+ia0Yaws2QkF3/p3\nX4Y2PnwvhBD+6//5z5ry3/5LH4A2z3/uK1B35iErzm+P8dx1Sd/vr9n9zMd4HRi1m2hRVyiDVmzF\ndtc9EiK7QuhiwP7IAhwjsrp9VHsB/vCQzlYfzxMLDk0SL+6iSFuyEFK3nzFZfb4iAnXq9qFOmGJ8\nuHhNoaGZdj8zEsiZEXk4Sd15obI79g1/zCxQMZ9hvwbIxKCta9egbjq2Y+WJc2egzZm774S6Ox+y\n8vfG6ePQ5qu/92mo+/aXv2rKeYmTB97yQ++EOg8LKmWjbu2uKQuD9SGSTCxnMxgqt+9lgdelJMdX\nz/GqMJ3iMyy451NWYr+j+a3uQcoE8Thi94zdzzrC/a7JvRbNNXWFo/9ECSGEEEI0QC9RQgghhBAN\n0EuUEEIIIUQD9BIlhBBCCNGAoxfLXfprCCEcP21XoH/zu94KbVbPoASYLdik4SRGae3iN16Eun/0\n/v/dlK88/yq0uffND0Hd/W99EOo8TMptu1WxS9ImJ15b4laJL0iib6djtz0eoWBM05CdvMjSkBnL\nJ9btPs1IavMExcRu116rbZcoHkIIl77yCtRd+dYFU147cwzabJw7id+3bL+vv7gEbRhrJ+32X/nm\nC9Dm9/7Zr0Pdn/npHzflR37kB6HN+W9iXzx2t5ViYyImT4d43VMnNdft+cRkkKqJfMpWm6/8hAVi\nxLI0ay9js72kcq0XPYlc6/FidAg80bv0Ui4RmktS5wXfTobfl2WHS9U+Nf4734f3DMB8fyblu2OO\nySSAdI5zFRMpn40SkMhOJrfMSJq1p9XCfZqRhOvrr9hx4uYVXMVg7/57oe7132ufKz/wp/9baHP6\nrtuh7nO/+XumfPnl89Dm6yTpPPzUT5liRfpUiMhEIHf/JWQViih115RdK5IEDvOJ2EQkUlfOMe+I\nJc77BP88a0ObPMfzkrvJCZ0urvLRauPz3t/uLCmf3dvJHOPLa6H/RAkhhBBCNEAvUUIIIYQQDdBL\nlBBCCCFEA47cibr9dXdDXX/NrtQ9nkyhzTMkEHPzlSumfOkbL0Gbqy9dhLq733i/Kf/4Uz8NbdbP\nbEDdxVdwWwDxQjLnTpRTPL6MOAqp81dGwwNo01m05y4n5y4l78qJ9znmdKKq2v7u3erj7/XZMq68\nvnzKns9Ts7PQZn9zF+puXbPhrLPdIbS5/hxel67bh8HqIrRhjGb2/D3wloehzRc/jf7DM3/wBVP+\nrh98O7TZuowhsnubW6acJGRF8xID8arSBT+SwEhGmlm3ICGaBguj85oUWwg9ED/HC0/Uf6Krqjs/\nh3zO4z2KEDDoMgQW5Ef8pxL3KXJ9Pyf5kQUJHJyO7edYMGJVzyGdEL8rIf6ad5lYG5at6wNNc6Jp\nkdMJjklJ/afDxxfWYnF1Berazq+8+ire/1/6JIZmvvqSdane+q53QpvbHnwA6rrLdh+e+RTe/1de\nehnqPN4PCiGEknUidz+k3n8KIWTOkwJHKoQQk7vNb4v5QTMSjBq3WPCqg4xTPkQ6Z/fHBF2qrG3H\nqdm0B21YAHfiOvaM+FZEQwsJ69hzov9ECSGEEEI0QC9RQgghhBAN0EuUEEIIIUQD9BIlhBBCCNGA\nIxfL9/Z2oO7CKzbscrSD8nB+gEJa10lyb3z7m6DNn3v8L0Hd2YfuMuXnv/kctPn0v/4k1I12ndiN\nmw45kUZTF7Y5G2IgJg1Uc7LbeA/F8t6yFaaZtF6y0DUfwFfNEfYXQpiO7T5MRpiG51chDyGE2Eny\nnS6Kgt0Ty1B3eqVvymNy7kbDPdxRJ8kOt/DcMQ4O7PGsr+MEg9vvuQvqnvl9K5t+17u/F9qcvA8/\nN3HScX8FZckZES99fylYkB+h1bbnc0aCX4uSrMYO4Zf4Oaae+uBHJjSzcMY5sj0BFhJYEck5ceGz\nCZO6K5Rkc3etpjO8LlNyP0DgZ0TOVHL4UJyQ0Ezazk1S8SGh36kk58oFExY5O+s4vs2cHJ0TgZrP\nRLDk5FpFGR7zgpPNewMcS666Z0oIIVx87nlT/t3rN6DNg297BOrO3mvv29tedz+0mWdeAOvFJZnA\ngOGsZLKSC1nu9PEcFGN8Fvj7sSSzB6jsPkf/bLVwcks+s9tn90wxwTE9dWNeUeCYRObggHBf+XTR\n79RCDZsTMy/6T5QQQgghRAP0EiWEEEII0QC9RAkhhBBCNEAvUUIIIYQQDThysXwyRNltoW9l1+Mb\nx6HNYHkJ6vqrVqZLB7hC9MXrV6Dud5/6TVPevY6y+8nTJ6Hu1OlTUOeJiHCbOuHugIjQLFHby26T\nfZRWvWQ5JYnldYznJes4CXA+MzJkIA8ywRhl0OnMioGj/W1oMxvvQ12c2H3Pungs/Raeu7qYJ0UZ\nSdzhbG/jfp68E9PWr7xkRdZL38b0/P4y7ufe7JYpR8yDJE5u7RLm4zkSoUMIodWyScAxkdbrkonB\nlWsz347W7n5gnmdNJOfISbhMPoft5Nj32QoCE7fafEVE2jxHkdUnThfkPFVEFM467pwzI3YOszUl\nqxpkRLz2KySwFHwvGDOqCu+Zihyzv7e8oB5CmEssj2M8loJI6uORnSTS7Xagzdn77oS63oJ9zmxd\n34Q2r3ztG1C36wT0k+duhzaLa2tQ5/H3bAghlDTF3PU9ctNkqR2HBws4IWVK+pTvCyURtmdjFL1j\n0q89fXd+Qwhh5iY6JRPsd6MD/L7aTW4pyefGZKJF7SYsxSk5ByTdnU1AmRf9J0oIIYQQogF6iRJC\nCCGEaIBeooQQQgghGnDkThT73dSnZhU1/k587cZlqJtcti7DbIiBivUMf8s9tXHClO9/3eugDcmn\nDOMDDAH1sMzDtgsqm+zjb8AZCZ+sXVDZbIjfnzrfopjhuWtneJn9WamJ/8Dwq81XbEX6CPch9Z4G\nWzW7xn0oS+uv1DUJgiMhdj5gsJovpzAkzjXwLlcIIRwQ5WPjzDFTzsnncvK7ftqx4XAzshI6C2L1\nLkWSzPf3UOKctph5NgG/r3b3JNVemB/nrnNJ+gv7nFdo5llkfXcTwxN96GoIIUxGY9cE+ysLOIyc\ns9MZDKBNkpKgWXeO0zY6PPPEiZbsHmWqinNo4givMVvJHnaBeEwxCe6MnHvD3KZ6DicqSjCskV0/\n7xYd7OO42B10oe6Uc5kWltCz3d/egrrpnq27fh73aWkdHVqEhB4TT8qfqnKG35c7r4+5Vaxf+wDn\ncobjzYQ4URmN0rUsLDInyl7TrndxA38WjF1obZGTkOU93Pc6t+clIs++jNx//vn0h0H/iRJCCCGE\naIBeooQQQgghGqCXKCGEEEKIBuglSgghhBCiAdE8wt9/Yo78C4UQQggh/gjQ2R/6T5QQQgghRAP0\nEiWEEEII0QC9RAkhhBBCNEAvUUIIIYQQDTjyxPK/9tM/gTuRtU15aXUd2iytrULdwuKKrSAxyvs7\nu1A3dWmou7cwpXbi2oSAqbu//Lf+OrT5qz/5k1C3duK4KS8ur0Cb2QgTWS+//LLdz50dsu1Tpjwg\nq4kvrWPdzs3rpjzZuQVtfvETfxPqHnvvY6bM0pdTsrp2yyVzp21MFE4yTMoOsT3nJYmEL9nK8rlt\nl48n0OZDH3gc6h57zNZlJNGb2YWRq43nidgOIdQ0OtpSkQT/yvXFiqz0/tRHfgHqfuIv/rj9HEk6\nHpPEYn80S6vL0GZ5He/R/tKiKafkGs9Iyn7hVlXPc2zzxPvfZ8qPPf4BaJOSFdtjl+6edXGfoohc\nP9f1fPpzCDzB31+aMp9Cm7LEfvCRD3/IlH/xE78IbYZbOL5tXrpqyrEbX0MIYf3MGdzPyJ6rVh9X\nUZgOt6EuFLa/kFDzUNd4rj7s+uf73/sotIlS3FjmUvcnEzyfM9JfWm5ViF4fE+fLKY4T+9v2HGdd\nTN1ud/Acf+iJJ0358ccfgzatHkvPtv2xTfaz4/YhSnCcGk/wWIqpvVYFOU8VWW3B99kPP/E0tHn0\n8Q9CXe3Ga/ZfmzjCWr8PBdmnGbnuowP73GYT59odPOe9nj3nv/R3/jbZU47+EyWEEEII0QC9RAkh\nhBBCNEAvUUIIIYQQDThyJypL8bfj/qL1K9aOH8M2A1xxu3LexNaNTWizdf061O3ctO0mB7gKuF+x\nPYQQ+suLUOeZjtGlms7sb9Npm6xWTlwf/5vvbIS/cbdb9rfchDg8REcI04ndz3yCHgyjnNp9qgpc\nSXtGvJCxc0yyDnGiWnheWm3nUrXQX2ll+Lk6s9cvrebr6lP32zv7Td37TyHgXyPUqSE5s6m7XswB\nqavD3ZuCnHPGcM/6HePRAbTJiX/Q7dkV2hPiGnUX0N1od/3n8PrlBd4zzC06jMnBPlYyh66ydQlx\n+CJy3evSe2i47Zq4aQn0T7ye7Hx6SnJOsi76Hb6b5TleTyb2eVcsBPy+nDhDdWG33yaOWVEd7v5F\n5BZtt/F5MRra8Xp3iH14aR290/UN+1xhPtnNyzdxvzK774vr+BzIidfnGZHnzLVXL0Dd7nX7fBre\nQg9ttmfvmTbx3paPoaPYW7HP0dYCem/tJTy+rEN8Vd8mwWtc+D5U4/jG3ELfrzPinLV7+Azxn8tn\n+HwKpC9O57h+r4X+EyWEEEII0QC9RAkhhBBCNEAvUUIIIYQQDdBLlBBCCCFEA45cLB8QaW3JBUQu\nrmA4ZD5F8Wv7hg2IvP7qJWhz7cJFqBsN90y5ReTFJRIcyAIGPbMpSpzeY2PBoZMUpdjRvq1jwaFx\naqXVFpHt2iTQzcunXtJ/LaYuwI0FXU6J6OmFVOLfhoJI6l45bBGRlgnN3b4Vmg/XWv/jPtjjYRI5\nE5FjH3ZHxF0mm9duzxIiWcK2QwhVbk9gNOcRHgx3XRmvVZf0l+5Cx5X70KbNJgu44MA4wXstybAP\nxbntC2V5eHgpyewLw128r4Z79v4vSeCoD2v9f7/BlLIMr4sPggwhhO7Anqt2nwixGblH/beTU9Ai\nYbeJmxQzIaGLFRHuey5cszPA++pg6wbU1aW/Z/Aa13OEz/pA3hBCGB3ghJe9PXtNuys4Lp+99y6o\nm2zZbV369svQpqhwDDp9/zlT7pAxdnKAY7Pn7gfuh7rFYxgsvbhm5e+YjDfDoRXLt6/hpKr9TQxQ\nnhy4vsCCLkm4byjmmeiBY5CfrMCyhXFCA5mowyblkHExSe29lufzieWjIZmUMif6T5QQQgghRAP0\nEiWEEEII0QC9RAkhhBBCNEAvUUIIIYQQDTh6sXyZrPQ+sLJ5MUGx7aZbmTyEEM5/+3lTvvIyioK7\n2yjcdZ1A2VtESXawhrIiq/PUJFXYi8hM2CzIitSTAyv9jvcx8TZ1achpCyXEtIWX2afElkQ0ZfQX\n7b5PyX5XJZEQXQJ0zmRXIuVPR1YGnTgpOIQQRrsodXacbJ6mJCWeULpVzdkK40wQLyN7zFR6ZAJl\nYqCwxi0AACAASURBVLeVEok0yUidSzovmAxK8CJ7t48S8AqZ+LB2bMOU+wsL0Iad4zi2+5kTYZtK\n3C6lnYveljseRHE3n2L/9KsRsKT8lKxYwBLDPRk7B667+JXmQwghzw+/fhWZjdFhYrkfAw7wc5MR\nCtvdRTsOZ2S1+5qcl9zdt60+jqfRHH+vF2SSytb2FtR1Bnb8vvP1eN3TGPv1s5/9jClfOY9p4Q+8\n7fVQd+qO06Z8sIvjcFkSgdnx4teew8r4eaiKOrYPrdx2EtqcuPM2U169+zZos3bXGagb7djxc4+s\n8jEiSe7T4eErWrC0fk/JVgKo8N7O3TMkJkY6u0d9IHqcsRUgcL8iMjbPi/4TJYQQQgjRAL1ECSGE\nEEI0QC9RQgghhBANOHInKkvxt+rCraC8fe0KtHnpm9+Guksv2t+Td25huFjWxt9NF5atz7Fx9hS0\nOXYWf4deXFqCOs+MrBqdO98oJiF9LExs7FYrn4zxd+nI/VbMfB3vgIQQQh28czKfU7PswuHY6uXF\nDN2mmXOgpuRYJiT4cezCEgsSnsZ+i0+ck8TOC8OHhyYlXqtZhcdXRPZzHRI8GSVktXIXRtnqoFPD\nVrL3Ttu0QPeHsX7yhCl32xhw2Bmg79R1dTFZNX40wfOSzGz/nJE2E+LVebdwStwmT0b2qdND/7Dn\n7n8W1uodvhBCGLn7cUa8otkU++d0bPs+C5Ccp3v6cSSEEFhEp3cSWbAmG0u828RCJeMU/+4eu+Pr\nku9LUhyDPNskHDLO8MR4B2p1FQMrP/Prvw91X//3nzflu74LAzkf+r434465XbjwPLq3Q+JJwWaI\nd3OLuL5XX7YB0TcvYIj0/u62KXtHMoQQFtfxvJy466wpr589DW2W1tH9bXfRc/P4Z0oIIZTOd6pY\nP6cJnLZhRe7HirhUtXdYSb9LiefKXOJ50X+ihBBCCCEaoJcoIYQQQogG6CVKCCGEEKIBeokSQggh\nhGjAkYvlLOlquLNjytcuXoY21y9hMNrowK3mPUCxdO0EynV3PXifKZ++GwXD3jJK5AWRxoEazTm/\nqjoT8CqysnRd2joW/Jg5obAmAh6TZH3wI/t+RgdWesdjSYkI7YMKRwcokecscNTLvCSocDLCOvh+\nFgDKcP2zKFCEZucqivw1JiGdMQl+c5tqk4DDfhfrvFjerlAQZ9xx772m3CXCaF7gZIGpC7uMIhw6\nWCDmcGyvX13guZtRady2q8h18Fx47iWoi8kI1+ra/ulDJkMIoWL3qJt0kJPxoJiyiRa5a4PHG/tE\nTkJN+l1KJqn4bUUkwDUmx+cnbXS6PWjD6vzx1eReS7tzhN0SOfrcXXdD3cYJGyL53Oe+BW2+8Duf\ngrqVE3ZM/4Ef+2Foc8fr7oG6z/32H5jypRdR9N7YOA51nnve8hDUveNPvQfq1k/biU69Ht7/By78\ncu/KDWizc+0m1N26YeX9AzIOT6c46aCc4/nAgoI9/nkVAoZRhxBgYGTPtZiMsdUcgbgpEfzZJIp5\n0X+ihBBCCCEaoJcoIYQQQogG6CVKCCGEEKIBeokSQgghhGjAkYvlEyKy7d2y6avbN1GSy6coD/cW\nrBS7enwN2tx+P0rj5+61smJnESXy6Rjlz53NHajzMEE0zaw4VxUopJYk5TdrudRtIsR5YZoJ1ExZ\n9QnCxIenRG6V+haRyAereD77Tt5NMhRNSyI0+7Rln+IeQgiTIfaN0b6ddDDdx37HqJxYnpP0deYu\nRnHpK6CNl/lDCKHdsUJ4WZLE+QTPVRzsTmRktXLGyjErwCZkBYGJS5cPIYTSpWyz5PHR7h7U7WxZ\nkdXL2SEEPvHBCagZEag9+2TFgiLH+9hfUyZes3stadlr5ft0CCH0+yjqd1ru+pFjmU3xnHuYNBsz\naTw5/FxF5Jz7iR0++TwEPmnEDzB+EkkIfDKNZ2FpBeoGC1h36dlXTPkz//fvQJskwTH2Hf/9f2PK\nD//A26DN81/GlTE+99v/zpRbKYreKyePQZ3n87/1SaibEYnbp3UvrGI/6yzbVPH+Iqbu99tk1QR3\n3Uu2WgBZFSKUh4vl7BlS+ZU4SL9jaf1+FQq2KgVsO4RQu3ExIuMw+8KYjLHzov9ECSGEEEI0QC9R\nQgghhBAN0EuUEEIIIUQDjtyJ8sGaIYSwvblpyvkMfyf2/lMIISyu2d+FT507A21O3I51nQW7ivtw\niL7MrvO0Qghh6+YW1HmyNoYeZpmtm5BV3Jlj0nF+RZt8Dn5iZqGdLBzSBYAmLJWQsHnV+mpJhk7G\n/j66MUsbG6a84sohhNBbwN/1vU/WddcuhBCmJICzu2+3VY4Pd05CCCFzq9SXM/wtnvlr3jWY5Xg9\nE+ItFc4RYt4L89yqYPchncODCSGEVtuFJUZ4/dpt3M+ZOw/727vQZmsTw/32duw9ExOPISV+XK9n\n9zPrHR4mWpGwz3KGdfu37L6Ph/vQZrSP7p333HokoK87IE7Uou2z/aVlaDPPKvLMUWJ13jecJ8gz\nhBCqwm6L+YdsU4lzvkri1LD99HS6eP/v3UTP7cWvftN+X4Hj4lvf871Q98gPf58p75Dx/Pf+2W9C\n3Y2L1035e//Eu6BN0jvcqbnrgXuhbkxcze2r9vv2Xt2ENpvPXTRl5vBlJKSzv+L64gr2xXYPA1XT\nuFn/hDYVGTtL3LbfVk0+F8fE2XPObkVcrrzAbc2R0fma6D9RQgghhBAN0EuUEEIIIUQD9BIlhBBC\nCNEAvUQJIYQQQjTgyMXyKRV8rfzFgsNYkObiig1iGxBJLiLBaKORDRjb3UJJducmiuUTIjB7mCQb\nuXCvgz0UWafjw8NE+yQE0YeL1STMsCCSM+wjERMZN65eM+WcrEhfkjBRvwo3E3CX1vEaLyzZ4M4O\nkR5ZiGXpvq+Vzhem1u/a/lKUKK0WBVqIhQsKZauOpzneboWTHHMi5U5JIJ73PONkPnm4yN1+hvnE\neR/EOBlhf52QPlzkts+2fPBk4EGhPoS03T78+rWJ6D1YwokISyurpsxE6JyEX5Yze+6m5BzkpO/H\nri9UM3LPVIeLuxHJO2RhsInrC2zyR9rCvug/VxZk2zERmN019YG1Icz313pFhN9bmzgOF26/7nvz\nA9Dm4Xc8AnW5mxzx+7/6u9Dm+a9g2Oab3v4WUz5+x0los7l5Heo88QI+i06Qbd3zA99typ0OBpy2\n3XOG3cejHXzO+MlR0zGK7TMy3uRTvDYeOoGhsnU1neRweNhuHNiELRY+be/Rkk2qIvdRnM6ZNk3Q\nf6KEEEIIIRqglyghhBBCiAboJUoIIYQQogF6iRJCCCGEaMCRi+U1iQZtd60Q2olRHs6IWNpyImmc\noXyWz1D0HLqU2K1rN6ANk0ZjIu/BPpHE8uDSV4dbKEuy1O3OwAr2CwVK45UTWVnKcNpBoRHSZYkw\nykjcCvT++0MIYTbG/Zy4/dq9junWl154CepaTqDsL+PkgYVVXOm974Ti3gAFY0bqhMZWircIT452\nEi6RF1nf96L3hEy8iANKj6mTKlmiL2N/16fJ43Wvyc4fuBT66YSsPk+Mza5LTWZiObtnOu5zSXq4\neL24ugp13R5KuT03WaG/uAhtMiJe++T/nCSkTw7w/stn9pr6eyGEEMb7h09aCeQS51MyacRNZGm1\n8BwkJIE6cv2M7dNkhNJx6rafJGTb9eH9czbGPuVF4RBCGKzYcfHsPWehTUImknzp337BlL/xH74K\nbe5/+EGou/tNrzPl/SGuyMCeF55bV1E+v3z+FagbT+yYWlVs3HcTREgyt5fPQwih1bfP1g55NqTk\nXkvjw1cMYGNQ7iepkAkUaULSyP24G+EYOCOrEfj+Qub3hIjI7RUR0OdF/4kSQgghhGiAXqKEEEII\nIRqglyghhBBCiAYcuRMVZ/iV3pOI2G/qJDAu69rAxjjC34BHQ/ytevfWlmtDPCLyetmaI/Ava2Hg\nXxTsvhcT/I07H6Pb4H+59auzh4BhjWkLf+9NIhKQl1mPwXsNr0V/yfoj0QIGo/oQ1BBCCC6Aj4V0\njogXNnWeREkC+fZ3iGPmtj8eo7vFaDmvrtshYZTMbXIBnOQnfBry5t2iaQvdA+9phRBCXdtrGrON\nE3yQng8JDSGEQPoLBH4S2aDbR5cximy/apPjy8jx+eC+igSAwmfItkc5Ht/+pnMgN9HPq4mHFiX2\nmNst9EkSMnCkiTs+5oARRwm+P8I2xYz4Mu7apG3mdxGvz3khRMUJWYbXuN22Y15Z4L1dEbcJ9ilg\nG/IoCMdOnjDlTh/HoJeeRb/yZVd3+uwZaPPAm94Adbt79vmwvbkJbfrdw58N3S6eu8EA+1BUu7BU\nct09SYTXuCRjUF3bcTAn93FF+ob3ARkZCT32n6qY30kcrMh9sijZ+I3f5++RlIQQs7F5zqxpiv4T\nJYQQQgjRAL1ECSGEEEI0QC9RQgghhBAN0EuUEEIIIUQDIrba/H9mjvwLhRBCCCH+CBAlXf+JEkII\nIYRohF6ihBBCCCEaoJcoIYQQQogG6CVKCCGEEKIBR55Y/oH3vx/qfDpxCJiYOtzZh7pialOMV0+d\nhjYdt2J7CCEc7O2a8nSEq3K32Krxbjc/8pGnoMmTT34Q6mqXQLu7i98XkcTptY0NU+50MVX81jW7\nMvjBAa6E3lvAVer96t3jCX7uF57+GNT9zM/9tCmzNO1ORlKpY/u+HsXs/Z2k2cZ2+wlJpY9qvFaJ\n+1y3h0nyP/5X/yLUvfe97zXlg32SZk+O+dS5c6bcW1iANnvbO1A33bd9Ye8WpiHnU7w2nYHt1+0B\nft9TT30E6v7y//QXTHl8cABtDvawf/qE+Zhcv5Qk6nfceWfnpd0jKdjuc2kb+/5TH7X33+MfxOON\nyFiSunjiiqW209Xf7edK0igmCclF7vaBRCYn5Hx+1I0lT37wQ7htsu+JG0+ZDVuSBOrarSrAzl2c\n4tamue0bO/s4Vo/HuBrBP/yVf2LKjz/6KLSJSAp9cKsWJOQI4xaez61Nu1LFmXvuhjY3XrqE28rs\n9rtr+EypyDF/5GO/aMrvf/y90KYmaeQ+1ZtdP59qXkeY6B+n5Pq526jdw7Es6+I5L933PfaX8Dn3\n6Ifw2V66lRWiFp67mozfkXsedQo8v4Ecc+WS2yvyXI1q/JxP8H/6F34Jv+810H+ihBBCCCEaoJco\nIYQQQogG6CVKCCGEEKIBR+5EFWSF6JZbqjtJ0a1IW1g32rG+yh5Zjb1NVpZv960PNDogrsoUV41u\nsd/nHWWJx7d9yzpY/WVcdfz4yZNQF+V2H5776regzdC5Bve88UFo0+31oW7rml3Jnq3qzvArxLPk\n1KLC35xzt4o7W5mcra5dRHa/iHISavJ9obLnjq0ezmi1bT/b25phI3KNk9T+PZK2sa8wX8afv7JC\nx4WtoN7uWmeoO8A+RaEumm9Cl393+0T6S411lbvueY73VVxgXVq1Xfnw/lmx7ZBjKUrbX+qSeEXE\niazcdajo8RLXyJVj0vfnCT1mLaKY7Ke/Vuz4EvxcnNi+X0fEqSF9OHGOSZwRz6buQB1sm7iGzN2K\nI9uH8xLv/5UeeqCXt1+2+0Qc0yTD+6Oa2TEgJu5fTvbTE5H/WdTM53JVvOu77yO3LPtY5PoGGxcL\n8sHJDO8tDxkWwXeKyTmIidcXT+wzM4nQC60T7C+1ux/YqM98zipq/v8k/SdKCCGEEKIBeokSQggh\nhGiAXqKEEEIIIRqglyghhBBCiAYcuVgO1lwIYAv7gL4QAgSshRDCbmlF8oPtXWizdAxD3gbH1005\nn6CEeLCDsvk8r5zDIYYzDtaWTfnMmRPQZvvyDah7/mvPmnLVwsv1lnd/nym3uyjSv/jlZ6Eun0xM\neWljDdpQnJiYEUE1EEmvcsJ0WaNM6MXdEEJIY2srdsg5YEqnl7EnsylpRT7n7PaCiNBVit/YcqJ3\nb4Ay/5CEWHoveDqeQJvZBOvWnADf7h0u7oaAgZFRQjo1ES/9eaFiMhGK6f3u94nNKHBX1QdBMmoS\nokeHOPd1/PtJnQvui0nHYyK0bxgRsTyh+2CpyAQKJh3Dpsi26T3jXWV6Hx8u07dbKGxnRMbGfSIH\nU+I+ZO58bk8xMPbs2h1Qt3/zlimnXbxnIjKBaeo+t967E9qMiLyPEEme9TOYiUA25foCm5cQBzJ5\nx5XzCZ7znDxrmTTuqWO816LYnuMsIed8fAvq4sI+RyN2s5F+5scpNiKw6+A/94dB/4kSQgghhGiA\nXqKEEEIIIRqglyghhBBCiAboJUoIIYQQogFHLpbXFQpcXlqriOy6sLECda1LV0355oXr0GawhKvG\nD9bstnpLy9BmuI+y4jzuoE9DDyGEjXX7fRe/9TK0ufzKq1C3fGbDlO9965ugTexEvRe+9A1oU+yh\n7L56wsr15VxiJKbLZyQxmUl6UW27WkEk4KIkErcTKLMExc+YdOPICc0VEdkZdW6/L5+ikM5umtj1\nWV8OIYSYiLNlbtOQh2RCAxPLvWhNpW6CT+JukzT7moiXUeKTgPEat0hKe+ZE3ayD90dCpOPUpRF7\nIZ7BZOmSiNA+kZ1JuUwz9asRMBeV7WbhBzjS9+Pk8MTrqsYvZLJ54neCJTSTg/aTPxIiJjP526et\nZyRJmn2fJybycF6QSRwdO3lmeAMn5SysLUHddNuOgzW5Vt1lnGR09cvPmPJ9y/hMuUZStwGaio3H\nVwY/dmEbv+JDHLHzS/pL6bZNJPIwIxMY5hCvy4jc/04sj8nEi+pgGzc2ceNgD1dkKGm/dvtJjXsi\n3M8xceW10H+ihBBCCCEaoJcoIYQQQogG6CVKCCGEEKIBR+5EFcUM6urI7kZO/JzFVfwdeuPsMVO+\n8hJ6RTdeuQh1q2dOm3J3lfhWbQz8zCfoFnkGfQy7vPbKBVPe3cLfgE+87i6o27jrdlMuY3RHbr5g\nj68eosPTIauVj0bW+cpIiCUjgd+Tmf+En/M/qUfE78iY1wPbIk4Gi1Rz/gEL95yHssSDycjv7P5o\nvAv0WnV+P1nYZkl8i6xtr2mSznf9Wi5g0IeEhhBCm4TddqfWV4tYcCBxFLwGkqR4DhIW+AkdBpt4\nmDOUkLBP73wRTZP6VeCBMVeFhJD6AM6aeVrsHPg2xEspyb5XPqi0JN4U8XP89qknSbwlH1YKTtZ3\nNoZ1sB38XE6cryyzfT8for/aWkG3Kbg+nJPw27U7zkDd5y/bUOc+CTSuSQAvwpy2w+8jFgbrx1jq\nMTKHrnBOVMXuWfK5OZyoOkbfMUutJ5XmJEx4iC5zCLZd1F6HFlWCzzV/a0U0gBdhGbnzov9ECSGE\nEEI0QC9RQgghhBAN0EuUEEIIIUQD9BIlhBBCCNGAIxfLY2Jx1i7cqyABYAlZsfnU3Xal7qsvoUR+\n6bnzULdz9ZopD4hY3m7j95UVSvGe8e4+1E3GY1Nev+M2aNNZ34C6rGWDEJMhip67r1wx5VuXL+G2\nj2Gg4ql77zbllY01aMPwoq4P2nutOg8L5ItI36hcCBoLnouIWJ44Abas5gzbdNtnjiwTqL0cHZMV\nzZlU7Vdxn82wjzGx1AdbJnOGbfb6ti+wEMuaCL4zd48mZJ9YWKpfbT4m22YBjuwcHwYLHPTBmiGg\nfBpHKIOz/fTXoazxeLl/6/cLG7Hv8zAZnAUHerHc30Mh8PMbJ3a/8pzcV+Tvbt/XIybJzyHusrzR\nkvSpzG0/H+FkmkAmyrQHVnzeOn8Z2jz0poehbrg/MuV6imMJ62ceFugYkesH8xeIXB8HL5/jZmjA\nqati8jkbv+e5G+MEhfvMi93716BNPdqCutQ9k+suhm3WEY6ntb8nSYZmTSdHNP9/kv4TJYQQQgjR\nAL1ECSGEEEI0QC9RQgghhBAN0EuUEEIIIUQDjlwsZ9GgYydexx0UxiZjFG5X1m2K+dkH7oQ218+j\nbH7tVZsgvn4bptTGGQp/yfTw0zWeouS4cPKEKfdWUeLu9VD+zvatJPfFX/0daPPcl75gyg+9+63Q\n5q0/+m6oG6ysmvLXPv0ZaMNxachElqzJu7mXclkqLl2I3PWXgqWTEyG99Ps1ZyJt7b4vzXBlcpbI\n7L+uIinjswn2jenU9uuKJKSTEGxIjq/mSIQOIYTMC+lEdvdp6CGE4Od6xESIZasRlLk7PjJpJJ9h\ninHk5dY5/txjfaok6eBepk3JJIeUnPTcSatxTfpBSe4Htw+Y+k/S0ClMkj989XkqyRP5G0Rkaskf\nvp+0D0eHj51s3GC+du0E+LjEzw0PxlC3ctaOw9uvkkk4JK0/dUL6bB8T0pOErEbgqNnqDmRggskt\nVHr2kwdYCyZQJ64N6z9kY4d3s5Cy45vYiVbFPqaTx21yfAtWLC8STEMvZmSn3Ilgk3LYyfLj/h8G\n/SdKCCGEEKIBeokSQgghhGiAXqKEEEIIIRpw5E5UQlayH+/smnK5vQttFnaWoK6/aMO9lk4dgzbH\nbj8BddvX7fb3Nm9Cm2wJv68mDoQn7eHq4QurNkgzLvD3181nXoK6Z//g86Z89cIr0OY9P/FnTPm/\n+sk/D22uXbkBdb/79/6FKe+RNox5fjn2YX8h4OLvRKWiK5p7V4T9xl0wr8D/Ns52lBA5FyZtoROV\ndfD3+eBcg5y4P9MpCaN0n+v00Y1LUxLu6Vwm5pMwvO/U7qAD0iX7UAe7nyyksyLBiLOp9Z2mI/Sf\nmAxXl9Ypm8dZYNoGC5X0wXrUJyEdJnZ9j61sTx1B50mxINZsnnBRGoLIdtR9rCJSHflcSUIdYRfY\n/ef9P9ImJt4ZbJvUsdzOvLL9rN/HIMbdTQxwHJy0LurOixj8OCG+0+KpdVMekTbzhMOyPsUqwWUi\n4ZDQF+b017yDVRPHlLp+c4RRxhXe/9Vkx7aJ0RWtBvjMLDvWdy7Y84J4oAkcz3wj/x8ha1P/iRJC\nCCGEaIJeooQQQgghGqCXKCGEEEKIBuglSgghhBCiAUculvd7KOVO+lYQHw5H0GbrCoqCHRdQuXZ8\nBdqcuf9eqJuOnzHl0f4OtFkkoWtZygRNy4qTyEMI4eC63fedS7h6+M41lBwXT1jh7k/89PugzcM/\n8gOm/JVPfR7a/MZf/xWoS2ZWAnzkXd8PbRggzhKRlge/eUF8vvd3vzp6HJGQx0CERu9mUvFyju9j\noaAsqNCJ0MWM7BMRIb3omXWIyJ7h9+UzG9zZbhPZnZC1rFje6RKxnAS/Jpn9XErOQTHDsM2xE/Uj\nIoiWBZ6rfGbPex0dLj3PSpRWM2YmO1E3z0lIaEGCH12nKkmgakT09lZqh9lOwgJcDx9bInKvpUxo\ndqJ+UeO5K4mpyyRjT0X2AUNOWULm4fd7SUI6MxIGOxnbvt93z48QQjjY2oe6bNmOp3ELJ9OMrt2C\nuoWTNpj4YDyENskc4jwL1izJufKXlE64mUNkh8DaEEBIZxMTWD8LyeETO9Ia76Pg6qoMz1PUw4kB\nZWTHMxbgGrOJFu65wsJa2XmZd+IRQ/+JEkIIIYRogF6ihBBCCCEaoJcoIYQQQogG6CVKCCGEEKIB\nRy6W1wFlzO7Ayq2TCQpqo509qNu5biXAbh/l2sHqGtZtuBWiS/y+fIKptGkHBUbP7nWUFfdu/T/t\nvVnMNUl+pxURuZzzLt9Sa1dXl93u7pke222PBzQzgAGh4QIGCQ0XRkIILtCAMBphTNsed1dX9eJ2\n716amfFscIMsjUBzg+SLESAQixBeQDYyZtxeeqmuXmqv7/ve7ZyTGRFclG/i/38+vznZ9jtt6ffc\nZSgyT2RmZJx83/PEL9p2bo/9ZX/PX/yzruzp935Xs330xOOuzi/9wi8227/63/3Prs5taPcP/tC/\n2WzXzfVi6x/UbLaWr/Nu9gNPkeRvKwZyIjQI20bUtSujPwwrMNLq7DZFPYQQLs5a2bSASHuAtO48\ntefT9SCWj76/ZJN+vot+MgZRTHp2zv56JpCcrcBMYnkmn9jcU5sI/9bnUap4tAX+4Iarg7++0wIh\nPUO6/EhtKuZegX97PPj+sjEi+Zh8nVSvH4pJAi6QMm7nbER62AB7iemZqfB51nvu4ZkhQdx/vj8/\nEu7teL058dduPvfjdzTy9+bUC80Xr/gJTLfN6hWHg/8Oo5Rv9/lwfjQRwd4uPLINLL/20//gWObg\nhe4x2dgLzi8FEMvNZIW48d9Fc/Lf29UkuZNcjzn8dlWBAteX9sM4+WXoP1FCCCGEECvQS5QQQggh\nxAr0EiWEEEIIsYIbd6JoJfKNcT6OT/3vppdn3vl48Gobknl8y68GfXrqwwQfeertzfb+wX1XZ572\nrqwsCDibZ7/fE8882WxvIMhzBi/j5a+3AZxv/N+/6eq88eI3m+3v/2e9W/WuP/u9ruzcnN83v/gV\nV4ewQWwYZgZBms53gjq5QHih6S4d7FfAs3G9bJkW4rJDKYxys/Vl49gGVJJLleF3d5t52JswzBBC\n6CGg7mCcqC76a0fkKf+h2yFwaKZTNwoNHRTcZ1aNR0eB+ktbVsAdscwHP0bMIGplc5PnyYd9Dsmf\n38Z4PSejdzmGwffFjfHcthsIM10QtkmuGoXd2keNnhlSQKoJ5aR7xW6h8eWgv/YLgoozuY09jBPG\nIwyD9wjLwR+rGt9xgJDO8zf9d8GRcUrpmYkkyNnPh1BZGifKAj/HBXdSwjF8X4EB5UvgUOROWbpw\n5cpybM+5UF+ka1BsyLL/PGqR77IwJlEb4FhL0X+ihBBCCCFWoJcoIYQQQogV6CVKCCGEEGIFeokS\nQgghhFhBXBpC+EfIjX+gEEIIIcS3ABr/+k+UEEIIIcQK9BIlhBBCCLECvUQJIYQQQqxAL1FCCCGE\nECu48cTyZz/0YVeWS5tY2kWf/ropPkU5pbaMkqsPlRJh29OuxftiQ/AJ0CelTWR99nM/6+p86Kd+\n0pXZCNiOVqSnxFmTRtxBbGs1+1VYsT1Bcu1sVtcm3f8TH/u8K3v+Q8812zH7HXMP52faTtcg6KVz\nYQAAIABJREFUz/4ex6G9f/PBp/6W2d+rO4/cbbYf3Pdp1p/77Kdd2Q/9xD9stuvWf967xi+4sj81\n/Haz/WR53dV5c/82V/b78/e07aw+zfpu51OUN2XXbN+Ld12dz3/yOVf2sWfbskP0Q0CBlOiS23sT\nK6QvQ9+zq6rTX222D4cQQjRrtEPIcPj4Jz7TbH/yr37WV4J+Zp+Rjh7H5NtUzPBik89DCCHBwapL\nW4cV6eHaPf+32rHyuY/6sSUWf2E6UxYn36YE+0WTGN6BR1vtuBFCyGPb9hm+VfLgr9UnP/YzzfbH\nPvK8qzPAxKdkVncYIM2e0sHtOFjgPhS4D7lrT8gfOYQZxuaf/unPNds/8cGPuzox+bbTygaW3q7k\nAM8QfYfZsk3y97Ovfr9tbZ//v/a5v+3qfOzn/kNXFu1XMnxe6mC1hdSWddDvKoTg28tQoVKB155i\ndvz4X/sH/uAPQf+JEkIIIYRYgV6ihBBCCCFWoJcoIYQQQogV3LgTFeA3596sgN2D/7SJfoXosWu9\nkAncnxCOXMllOW22c/SrgFdwBvoEq9vb/eA3/Gh+LycHBGO8jAgygYPRmVXj7UrsIYQwg2NW3Srg\n8PkLqOACdB04WHP7AZk8BvBQkjn+gKuew0rvxtUqsEI8kU3/POq8S/X2/gVX9u7+S832Zu/NiW9O\n73VlL87f1WwXKzuEEJ4pX3Nlj/atc3UV/XUhknFFuo3v+4X+tkrGLShwPeHZ9n+nkTcFu63ojxH6\nQSRxwn5UR+dCDkY22+DPgLthLx097DgmuEpwX2CcskNAP8M1uPL9ZTD1oCuGksBfye3Nqhu4duDn\nuM8vvk7M0BGMEzXTsw3jcLFjFfTXSt8hpoNG6MMwDPrPB1+O+v5s+geNb8XUGeG+DAW+L8x3wQDf\nFz30/bQglPuQT11ZNPe0AydqLuCvmXG+gjdV4b5Xc0ErfbEW/9oDX5GL0X+ihBBCCCFWoJcoIYQQ\nQogV6CVKCCGEEGIFeokSQgghhFjBjYvlKODlViwbohfNtnHvyo7DebMNmZmhr34/a/Odg5yZXUpY\nCPMCeZf80N4I4hSwZkMJQ/BuJAVUWuewgCgYwZpLVpZcIEaGEELsrPQIlaCwGBF5GPz1rSCkb47a\niQHn5z54spJwb9rQp2Xi9Z101m6Hl12dx+IbriyZLvvS7l2uzm9e/nlfNv+FZvsd2xddnaPx//Jl\npp0JZFAimb+bKvTzMnrZPJuhohwg3A/E4N4a4vB5bpLDWw39JybRAEDBhWYCQwTZNY/+XIoJXsU6\ncB+iOeeUfZv6+foHMJLcC+eX5vbipb2/5v3l1pWNlyb0GNpZe5C/T2wQK4TmLjB3UwZ5eAaJ28jC\niZJYMWTVSsc0kQWeBzue0ffMgg47g7QeQW4/mMkQBSZH2HG/BzmbxvRkvh820F9HEvyXmNcHGGPt\nOYMgHvHaTaYOjPHwPVoWiOUVAqJpgsZS9J8oIYQQQogV6CVKCCGEEGIFeokSQgghhFjBzYdtwm/c\n1hk4BP/bKpVtzO/XQ/S/xW+j/w12bxa67Tr/2+oueC9kV673atBbMuFw9PMrLS5sS2gh4WzOD9Zg\nDnOGMDO7wOtCJ6oYL4N2m8FtCMZ3igO4HOAjWCfi/iveR7r95KOubNi096pcXh+UGkIIp/2bzfaj\n6TVXZ4SgyVcPTzfb/+/+L7o6v777QVf2cnxns/3u6YuuzjEEftqrlxfewGR8hwg+We0gfLZv7w0Z\nWHG6gM9rj4/6CoQJuoW14fP8gcgZhEBF42UUCIfMpz7cd39swn234PBAAGc0Kxf3B9/PyVvyB/fX\nCbQQtyhxN/txq7/0Zd2DdvHreIBQwtGPJUNt3dQM42nor3f26C965yOFEKLpRAUcFxtw/Ba2Hrib\nFO5pjkUOz4IsSowb7YK/79k6UdCvO/Pc0ueTQzeashFcI1rQ2TqtRJ3IiWr70Dz7a9fR99Ngnn8I\nDi3g0C4aBim8FNq1FP0nSgghhBBiBXqJEkIIIYRYgV6ihBBCCCFWoJcoIYQQQogV3LhYXuG9LRth\n+yLcdXUe9I+4slt1a7bPXZ0xeKG4t4FjwQdyzgUkZ1pF3YBeW7QyNomJXgLsuvb2QE5hCMUKhhSU\ndv3q4UtWIQ/BB5VRlmEBYXO7be9xBvm8T15ovrzf3tOrCy9Zv+c7vs+V5UN73893y8TyTdcKxcfJ\n9408+8fmzbkVy79yeI+rcxZvubKnuq832+8Jv+fqPJbedGVn5obl6K8d0e3a80swBKTNiSubjWye\nIby0QL+24jOF5tHz4OotefZopXd61oxIXo52rs4EYvl0uy27OoLPG0FMntprvD33D/IYNn6/BZDP\nnIx0bOX+EEJIGYZ+I5LHCfoU3IdonrU0w7Ndrn/+qJ0Zje22rIMJN7iXK1w66C3YjQZCQ4EdKcJy\nNs9WBrm+cyG2/jg9BGna774I3xf0XRRgAoojw5hgDh873+9qpglF5p5COHOAkFwbdlvpi43CSyFY\ndin6T5QQQgghxAr0EiWEEEIIsQK9RAkhhBBCrEAvUUIIIYQQK7hxsTyBSndVWyHt9fCYq/P67Ms2\nJsn5mfoVV+eZ9HVXtjUi+Un1EimZiRnNbgOlbl/vAIZI0qGx8sCHCyUsSK7tIXnYVlwiDgbfdvIp\nh9FLstHIn/tzEP5Pvcj64PVWqr4D6eRv/65nXNn/87/8cvv5IGcugcLXaeLDq/mpZvs8nbo6T25f\ncGXf2/9Ws/19/a+7Ov3wwJWdp3e027OXwYnRSL958n2/HqBs2x6/gnyeIZO5mP5h+3QIIMkG/zzQ\n5Aj3+fR40urzQ9v3ytb3xWnrZfPdSVu2O/VJy3Pv+1kyCeXJTIgJgScrWGiMQHE+2W1IpR9JijdJ\n7ri0gj8/q/ei1L1keIFbzLnjZnILjLkZkseTSbiulMJNjTd9j9PJr++fOKkK6tlFPSoc200MgjoJ\nTsZ+/0aog4/akplHcDJu0ogdEEIIFSZVlGgk9ckfvEu0MobpwzC24MoY0K6l6D9RQgghhBAr0EuU\nEEIIIcQK9BIlhBBCCLGCG3eixujDEqd01Gzvq3djvlbf4cqKCbHre/8b6SPVBxUe1daJGqt3Imb4\n3XQfvMvgG0VF9jd1//tuAt+qGp+jzH4/d6zof+PGFbDtb+ELnSj72h1hJW3yCg779ppbP+Fh+9l2\nvvN9f9rVOXv1vit77SutC/fO736vPzjQ2csZ/SNymX1o5oN8u9k+Smeuzjs3Pkjzz/f/R1sneW/q\nlc77gC+XJ5vtq+LbRCTjLfVXPqC2H7yj0A1t3++23okqgQI4235dwakp+Xpfbcnq7IVkFfKkUltv\ntjc9hJDBGZqGtmwa/X4TOFF9bPv6vIPP665//sAAQe+ldO3Fmgc4NgSMlty2M22880WOWTkyjhmM\nwzldf48ThQKT15Os2wTeC2Usmv5B3Y7cIt+vwOtZoFyS0xYjBYXacOYF+1EDYIi1qljBC+WLlhAz\njentA0iKYoVg67mY4FcQrmYI24ym79ntEHwgZwghxAX982HoP1FCCCGEECvQS5QQQgghxAr0EiWE\nEEIIsQK9RAkhhBBCrODGxfLHN/dc2cnUyuZnEL71zfqEK3uQW+GWwuEiCNvRpNFZ+fWtMn+saYHc\nGuFYVo6k8DTKgkzBtpNCCY24C59P7mA0xyKhEjHyJ+2VaTV2YzQOg5eQ88GLrCenrcC8AaH5hf/P\nC9tD3x5/OPV9itiEVrhNIGyeBS9xX8TjZvuRjZ/Q8O7ht13ZM0MrklcQ/F+Ovu+/Ud7WFszL7p+V\nVNPsBeMOZPNxbM+Pno8IoY4+jdXvl+iZMdfByrYE3Stakd6W2XDKhxaaNE/wWgN4wm6/Cgm18xIz\nGR5kCuDN1t6Frl8ChN0awb4D4ZcGqmJk+nkLzz8I9xaacEN/5hfTN2xfeasQb2qz1cPklgITc+yx\ncDLNksePjg1t723QLBwqGdGaBPwZ9py69p4e4Jrbzw8hhLokaJoCK01ZzX7cn/d+wlY5mE4LHT3D\nRITUtf263+xdnW70k9v6wT8PS9F/ooQQQgghVqCXKCGEEEKIFeglSgghhBBiBXqJEkIIIYRYwT+F\nxPILV3bat4nTBaROWuX8tdimNj8aX3d1BohI3ZtjVZCc95BUXSDF3NWh4GEjJpLoTQuK24okpAaT\nTlxB/Mx2WfCHtGEJ0ch8OUOOMkidTiQHkZZWXt8ctyL54YHvP/dfe8OV3X3y8fbjFibSdibNdi4+\nPf9BfcSVXabTZvsk+b7YRS8v3o9t0vlrwR/7q/U9ruy1qZ1UcUr3ASibVhCvs5f5O4rdn4xw3/vr\nEkjUdQnwIK1Cn422fyyJLMfnkx7Itl6XIRF68s9/v2/POff+oS0TJJYbmbbbkS0N19NWAXm4I7Hc\n9HW78kEIIdQeRNqtebZh3Ijwd7ddkQHc4RDgWjnSMmG7mP6CLjh1FzuhAPoGBn/37UXOcA1oAoNl\npNRtGNNjtZOFYPw2x6J5EDT5Y57bY0/wCpDhuvRLEudB/rZp5DVDh4VnzYrl+XDk6swVXl86syLD\n7CXyLSSrx+zrLUX/iRJCCCGEWIFeooQQQgghVqCXKCGEEEKIFdy4E3XV+d/+t6n1LZ6YX/E79v59\n7/G5DTTEQL7qXZHd0HohB/jhfd/7hLpCTpIB1RTzWz+t3B1BUppN+OSS4NAEv11XcI2K+U09JRIZ\nPMVLLq5OgnOJxmPgNevhWOZaXT544OuAi3PyaBuIWcoyZ6iz3gLc8qn4a2Wv+hj8581wjV82oZkv\n1ne6Ol+fvtMfK7eu2O38dd9Q4GD6fjnyYXS0srt1b2Lx+0XwCG0AJgUjUtArBhpeA+qIJMeYZ6Ye\nwH/a+ed/Y52r7H0y0rKS8UC6nf+8uF/w/GHwJFQz9UoH7g88DmUwIY90cJA+7bhb6fnvrnei6OPI\nxLHPO4376N4tqGPDaEPw/YrCkhd8NYQeeij1cut4oQprbnLNC8M2rQ8IzyMGKC8Iuw0Udm1dMQoX\nJWfP7DaDx1Rn/y5Ru/bZKhE8tARBs2nZ9wOh/0QJIYQQQqxAL1FCCCGEECvQS5QQQgghxAr0EiWE\nEEIIsYIbF8vvhxNXFo1JN3Z+ZflNPnNlt41EPQcvmk1QdjCmXoHEuoorgy+wByFwrKs2oBLkOhDn\nXbgmpMp1RvjDlexB3LPH6hac2lsfcP0K4yRe5tmEoEFY4wyirr0uh72vszn2xxqOWjH4/PIcWuoZ\njXHbgZB+K3q53XqXt+s9XwWC5h7UR5vtXTh1dY5mL0c+Or/UbD8dvuHbBEybdsX0Eo59JZLwTfck\n77tScF9pJU7K7CORPdpnZoG5G6GfO7E1hBBNiOQIYnmC7L00tyfdj7SyPDTMjAkJJNke2mApic4P\nPtBch0rj1oKxhJIn7USWP6hoKsHH0Rhk60DYZt9BO227oA550OBeQxtISLeTI/yBCqYsG2Z/fjbc\nN4QQSs1m2/czO87bCTghhIfY7nYSgK9BEz0WZImyWG5mC9CtwlkOsS2zE6FCCKHCtbOH7wpMxppg\nYlC//lVI/4kSQgghhFiBXqKEEEIIIVaglyghhBBCiBXoJUoIIYQQYgVxyerTf8Tc+AcKIYQQQnwL\n4OwW/SdKCCGEEGIFeokSQgghhFiBXqKEEEIIIVZw42Gbz/7Mj/jCQxuWmCB4Ll75gKz+6qjZ7s6P\nfJ0Lvxp72JvPo5y0wa/0XMd25foP/rc/5uo895EPwMFaIoSn9Z0/51pM6BqE9B1sKCAtI99DaF4y\nQWVwET7zyU+5so+//8NtG8Gp6+HdvLdhdLP/ebmHpEIbdJfpvZ9WsjfbkAMXPvD3fsqVPfvRj7TH\niRTECsGoJlSuQB06Vkhtvy4QdJmrD5VLoQ0djcHv99lPfMKVfeCnnm22bRDsW8f2ZbMLE4SATFcS\nQjSlFGLbQRhksaGAEA756Z/6TLP9sc//u65Oyj7cN5hxIxwgcHS/dUUxt88oBvJ2/j7UsQ0PjqMf\nW1LvA4aff+7vN9sfffYnXZ1N9KmgQ7hqto/qla9TfWitvQu182PnvkKgqgk0niN9rfh7/Nc/+beb\n7Q9+xp8f5oTaz4f7UGBcckMj9P2u+LbPD9px/7i/7du098/7Rz/30Wb7J571z6MNfg4hhBzaMeEy\n++++Q2nLaoBATlcSQjLj/gDj/kABoCb0+L/8xI+6Ov/1D/vvdhd+Gf3zUeDZtl8FM6T7HiAke9+3\n1+Wq99duhlDXQ2zrffqTH3d1Hob+EyWEEEIIsQK9RAkhhBBCrEAvUUIIIYQQK9BLlBBCCCHECm5c\nLMeVyIdWNqsg28XZC2Jl19YjYTtMXhBNRiylldBj8aJnRQPd7ujb4GTh4kW6CquAWxEyBX8N8q6V\nRre3QaSLXmTth/acC0myQO3MtQKpewapMxsxcOj85+UZ+oYVk0lo9h6kW3U8c06aIxmZP4LUHUDi\n7Mwq6nQ17crrb9Vr90sd3GMQ7t2i7XnZ/XMOJ/VFuFSdkTGtSP9W2fXtJGkdur7bMcbrzy9WmEQy\ngyB+aMvKpRfL6xWU5fb4dtJDCCHE0UvcXTLnDH+6ZjvRAzgkL8lX1xFCiKYsF3/sONNkBXM+cI/p\ngS+mt9tJAUuxE2lCYLHcji8zjF09SMdOnM9wLpMvG1L7fdEX/4zurvz3hWVMXqqmGS+T+R4bgr8u\nViSf4dlLtt+FEKK5pxWOHaAvdgtuKVw6d//AIcfv+2K+L2boCBNMYNibiToH+D4mIf2AkyGWof9E\nCSGEEEKsQC9RQgghhBAr0EuUEEIIIcQK9BIlhBBCCLGCGxfLw0DppEZ2qyDgZUjYNUJ6BPG7grhX\np1Y+Y2fVy4MB0k9dmyhh15wyCn+gIm+PWpH0wTf3rs68b4+VINk1gHhpQ1utwP0wspEAwWsNCc4l\n99cLjR1I3NW85xffDUIP9zgebFL2svMLpl3280MIIZJQnNv9epJrweHsTAJ0HuDzEkyqcPHLC8V5\nuxelhcPzkEwnpskY2PntwXA3eEZtn10gtiZIdq57GOJMGnm8vOOqTOe3XNlshPQEkyPC5r5vgxF1\nU/ITPUI/+jLDLnpxPsPg1dX2+CP0YUqJt5MqaBxOtJ+RnJ2g/tbRoGxJHVrFwNSABOoexuo8tYNH\nBrF8A8/aaPrndAGJ8yCbWzoYvBIJzSZNPtEgaxP94R5PcH72WaPnuMA9rvP196+DvmgnkiSakJKo\nnWb8hmsw2UlOIYRD317PXe8l8glW9Zi665+/h6H/RAkhhBBCrEAvUUIIIYQQK9BLlBBCCCHECm4+\nbBM8AhvWFmlVZ/g9OW7agLO8hWDNI/APDm1ZJG+ih3bCb7CuDoVWmjLrl4QQQj/Cb+pz267z1x+4\nKpuj9rfcDk4Ff603r88UPEfY36pBRwoTJLPVbVuWtyQIXR9Gl3bgd/iF7MPGhKxFcKkI62rRHadg\nVOe9QZjhQAGHU9sXpwp+0OhdmNkGHEKoHFFM2xN8HgXiRdNhKGyTgjRdR6NARXiunBOBwY/m0JPv\n/HGikN42PHF/durq7B887soOh9ZRTJ0PWNze8e3sJuMyFu82ukBeYEp+fCOPaBfazr4Jfr8OwoST\n9R1hKMMgTeN4klOz7K91X6vAfbfBr+SBVnBop337rG3G2/7Y0Iems3aA6bK/nn2ke9MyRn/f6bsu\nJOsI+zqTuQ8URkmjl/WWEoVfY1Tw9dDXowtQJd8KjpVNvQm8tz14b5fOiYL7CWGbs8I2hRBCCCFu\nFr1ECSGEEEKsQC9RQgghhBAr0EuUEEIIIcQKblwsryCW19hKlRkc2R4sR+v35nzh6sQZgtiMqJeu\nvBRYacXtAST1a9oUQgidkX4LiII9hO2dv9oebHfpD373qXa//tgfe977c6lGKCaBk4hWvAaRvvb+\nWFfH7bXbPer3O9vCdTHtOjrzwuitN3yHMTmsoZ8Xhm0mK1CDeE0iqxHEU4ZAvgsfxJjMIzhC3wjB\nh0Faj/yAYqnH3vcKq79HaIOdMNHD318kwEI0oq+Bcq09NhzaAmGbGSTgPLVl88GL5VfnJ77sqhXS\nN1t/DYYjPwaVyYRRwpi0xOU9VBgY45ErsmG+V9AXu3Tl9zNtoL+wc/BtyEbKrTDJYcnwggGu1F/M\nsWjSwQRjXt+3EzS247GrM98782Xn7ZgzHD/qmzlf/1U6QsgqBVRGE8DbRd+vbV5zgolBuUKbzOeN\n0KVSgO8LELtdHfryM+2kiQkzhE9bkXwPM6auoGw3tNfqKvk6tYfPW/b1h+g/UUIIIYQQK9BLlBBC\nCCHECvQSJYQQQgixAr1ECSGEEEKs4ObFclixOZhVzjHBFMzLaETkmv07YQahONqU5p7SgmG/BCnb\nBnDkQsnt8Y+2XmjsQBA9f9NIjiAh3n6sFemmcA6fD0nZRo62q3s/jN4eC9pUO/95+ai9Bq/d8V3v\npbuQBDy1x39b8GL50SWsNm8mMAwLU3jtaugRVnUvlPJtBc0EEenVl83nr7e7UeI9PBFp016rDiYm\nELblHaxojnqvEVcjPAoJ5HZ3NiSRgzVuL4NNTCciZPPXDEOcKcsTJBjPVGZWpIdhI2e4BlaYBkk3\nwX2w1OST63fQX4pNX+58v0uQkF5rK8WP8Gxn6PvZXPcMkzFoXPR1KLGcngdzMErY73xfGPv2mcnn\nkBx/7q9Lqe3YPBw96T/wzE8osGzgoSlw2+1YNVdY/cDMAuhglYgdjPs22ZxWz8AnjeLrDfTdTun1\nrk0wUedgksavIHn8avRjnk0s3w8gluMyFAsnHgH6T5QQQgghxAr0EiWEEEIIsQK9RAkhhBBCrODG\nnagCv93avL9EwZrw2/Fsfs+tAcLMCgRw2sDBzrs4CZwIFEEs8Bt+b1ab3ozefzp7w7f98rxdaf3O\nE76dm9P24l3eBxeHAiPNb8cFfncnrLdQ4HfwHsqyKXsAv4O/AeFpo7nHd3toZwQnyhx++V8LdgV1\n+jxwN0yo2zT4sMZ4fNeVJdNfCnp33t2opf08G9D3MOzjR8Ga5Jgk85CSq8Jhm2Y/cNPSQM+abdL1\nTgYHxoJLaZ7jrvfPTD/6a56mtp91GwhU7XeurO9tiiWNgden/c3wHAdw9nZmPLMBqyGEkGcIqEyt\nY7Kt/hpEeB5iWBC2iaarAX1AeB5MX0xwDYbB+zLTg/benETvpl5BoHEY2rDbW6dPuCrnL73q9zOM\n8GxXCts051xhXLRuaqTnKvhrsLdhqeQskdu44PbljoJ028/L0A+s/xRCCJdmTLjc+HO5ICfKuKIT\nyHiRPLCy7PuP0H+ihBBCCCFWoJcoIYQQQogV6CVKCCGEEGIFeokSQgghhFjBjYvlJGfXzsqnIAqT\n7Da0glgqXoQkL7FmI7uB6FkPXla0gYNEhKjCvms/77DzEuCDe77tvVkl/vRR3yYbVLrfgVgevYBX\nD+1+LOV6ygJRcM5eLE1ze85HO3+d7l76Y3VGoNxeQTshLNHKtEtC30IAcRak3FL8NbYBhxXC/ur2\njivrjBSLkyoGP6GgGHN+iXj91o5tPcy+hBDJYmRe6ueLgPtQQSh2jvoC8TphkC/cq6F91vrNA1fn\n6AT64tjeq/HIH3tz4ieypI2RzZMX0itMjnB1SBC3wZohhBw2po5/PjKsZF9zu98cr1ydIYNwb28f\nuco0ELs6/pq7YOQQQjETOxIEJdYdXOPJCv7+ulzufdl73vu+Zrs79+eyf/VlV2bpISi4x++Ltp3V\nXWAW/F0deGa62vZhO46EAOGwIYR5QRjzDBJ3NvvNcJgdBGJejm1fJIn8AgKGL80kLvpu7+Ha9d/C\n/5P0nyghhBBCiBXoJUoIIYQQYgV6iRJCCCGEWIFeooQQQgghVnDzYrlNTA1egIskAYP4XKyQ3sMK\n3CCtxU0r+CWSF0FI66YFMi1IebG257y7AsEQUluH2+2xjm77Yx92rbQ677w0BwHprpk9JIgTc7GJ\n3nDt4DptLtp6T0Dy+NHVpSuLud3vzpk/9rinNrTXfGkgrfUnK95P/3m2t8ywX+k3rqwzfb2DSRU1\n+b5h5VoSRIlkJGPbNx9GNReQks7rgvRj0sMp6NyJ6wtWkY8g7obeC/5pY8Ty0zNfpwNpPJtJAJ2X\nl4djn1gejVheelhZAVLTHdn3jQh9qpprNwdYkaGjhGtTtlBk783kFk6Evv78MljHsYNJKub8KOT/\ncA73bzhttvd+DkA4feQ7XNndk8eb7S//7//I1TmByQKWhOK8b3xnJlpU+F/H1nw/zdV/PgXc24ct\nw/dxAUE8Lfh/ywxj0GTk/T18z1wOvg+fmcT5y9H34R18Z86dnXAD4xSMsWHhih2E/hMlhBBCCLEC\nvUQJIYQQQqxAL1FCCCGEECu4cSeKHJNqHRr4bZWC2GwGGf12jCZFZ37DB/8BFsAOM/x+bCGfK5ug\nwgw/v3ajb3vXtb/dksdwedEG4pFDEOF3aBteGnEFdY/N7SuFgjX9NdhetGVj9p93x652H0IIJuB0\nmMHJuIDzs37FwrBN6/Uk8DsKSDyuBbAfuVR2BfpKga6wOrp9RMgrIlK1ThT4XXQw+9xSHfAWa2cC\ncSlsE55b62AtyvYEOYae7dq3jlLagv8IjlI1fT114FaMEPLYmc/roJ0k9hiG4IMuMwTbuluFXgiE\n5Jqvgw4GwQQ+ib01qUBY8oKvmlr8Te7AB5wm453BeNOlY1c2pJP2OPCsPXL6qCu797u/02yfv/Rl\nV+fx73uHK7PMMMZGCog1t5SCSnszvgzwgEwU5Oka4I9dYEzo4T5YDvDdc+ja/a6gzhV4iwcTpHmA\nsM8K7pYdlzo4vx7ShEc5UUIIIYQQN4teooQQQgghVqCXKCGEEEKIFeglSgghhBBiBTculkcQy92b\nHKSEUYCbD/yDYEQQNlPfym11BKlsAgmYpF8DyZHZCrcoGEMA59gKcBWCEcvctr0bfJ1eV7uDAAAg\nAElEQVQOxORiVzRfKCYPxskj6ZHk6N6EZoYdSJbUTivlg3ue4F71pg3QfZBqpiJkkBBD8Y2oRmBM\nMAmBJz6YSQ602j0I28GEHtaFYuS8M0Gz8KyVCQI/zbNWsU2+qNj7Dvc4wrXqxrYs02wMu0/y4nUa\nSJw323aGSgghTF4Qt4GDhSYdgGzeDeZYg3/WcXKLoc4gdUd/ztYsjyAFZzT1W5mXA1WvDy/sIfhx\nycSVBEGe095fly627ex7L8DbOiGEkK/atlMo8OHeG67s7MUXm+3Tx3w45OnTT7oyC01S6TEQ047N\nIEebvriFyUMVxi576GxnCoUQengtqBHGQcME4Zd7I5bvOn9f9p0P0jyEVjYvMMmBvg/t+wU92jR/\naUGW70PRf6KEEEIIIVaglyghhBBCiBXoJUoIIYQQYgV6iRJCCCGEWEHEdOI/Xm78A4UQQgghvgVw\n3QT9J0oIIYQQYgV6iRJCCCGEWIFeooQQQgghVnDjYZv/3n/0S66sFLOSPfzyOPQ+VG4znrXbwwPY\n79KVdUN7LFodvY8+MG4wZR/96c+7Oj/2uf/AldmAQQrpi6CK2QWoqU4X3ZLtHgqoNCvSx+LDzD79\n3N9zZb/w888327vJf+Dl3n+gzcy72vnwtowhlu35zRDkaeu8hdkPggr/q7/p79/nP/vZ9ii0yjoE\nB3aDeZR6CIKzdUIIObX1CgQOzvBA7E1Y6gwBmR/7z3/Elb3//T/WbE/7nf+84sP9OrPS+vb4xNU5\nPjl1ZUem3vHWB+tlaHs27Sqzfx4/+OG2L/7oX3/O1aHnwS/+DqGZkOpazX2vcF+oK3adDX71x+5h\nx8/97M8028995O/4NmUfRpns8WEle1rdPpmg0Jz9eHrx4Buu7I3XXmi2r67uuzoj3Pdf/G9+tdn+\nzKf+Y1endP45yjZM1Aa6hhBqhmDi2vbhPPnQzGnvx8HZjo3mOCGEkGffhp//m+2z9vOf+HHfTgjE\n7M39O4LEyKG3fRHq+I4eTDZzyDDeZAjgtQHRP/z8f+GqPPfcs65sO7bXan9+4eq8duWf7ff+me9u\nti++/IKr82DyY9f46GPNdrInHEIIFEJqviQ/8anP+P0egv4TJYQQQgixAr1ECSGEEEKsQC9RQggh\nhBAr0EuUEEIIIcQKblwszyAwz/mo2S64erg/1lCMpIarZHvxcjSrvXcklicQ/hasZN3BatrZiIEd\nrmQP77OmWqq+TjRCHFyCEEHODGYF864u6wpW/j4c/DUpJCaa8+ugTV1Hq4ebVbl7f+1wAe7Yfl6E\niQLE4artUyl4MTHC/aulbXsEsTWCkFrNdZihH1iRNoQQshPLQaAEdhetLHzYeTlzAgnfSuNxe+Tq\n9Mmf8zi059wPXubtoj/nycjtNOnAEkHOjvBAON+W5HPoZznbPuXbnUDmtc9ognuc6ME1VBDwa/b3\n3Y6fODkCJj7Ypsfk++vR9tiVnR63fWOIfszdHPn9LDC8PSSZ2fQFOj/IRYxmsgB9z0wwDjqxvMBY\niWNey/nOtynBM7Mxh6J2boPti/7zpuL3y9lMuIEdaSiJnDPZHgue0YMZS0rv+9RT3/mkK7t85fVm\n+5sv+gkNT/2FP+fKihHJp4vXXZ0KE3xiv/7/SfpPlBBCCCHECvQSJYQQQgixAr1ECSGEEEKsQC9R\nQgghhBAruHGxnFJ+s0nPLiCxperl72q0Q5TIOy/ObuK52c9LxwlkRZKMHSDzWdm0kCQL1yVVIx2S\ncG8PRQHbdGwjR7IM7pnm9gPAaw21gPxtrktPEjmc32wlWZKH4Zrbkrrw74V514rlPU1WAOk4VJsA\nDzI/SKvViqUgKxcwbou1P6/3rkMIIRx2bYL/5cW5qwO3IQyjEefhAzuQM21S9bDxYjklzlth2gqj\nRIV+0MMkANhzQR04P5rtQvslIwHDtRvS9f2T+rmVpUMIoRgpv0ZfZ1owBsHHhRR98vit08eb7dsn\nt10dl+gPJEhRJ2m8N/erwH2gWzMvmBhQghefp9Kec51BTL5+zlGIyU+qirhj2y5ascCOix2kmtME\nhoN51iYYp+blhn/DfvLfo8+8493N9hd+8x+7OndgskK9aMepu9/1jKvTHfu+eO8f/26zffuWnwBz\ngKGZBP+l6D9RQgghhBAr0EuUEEIIIcQK9BIlhBBCCLGCG3eiOvCP7G/FFFjX9d53Gvq92b50dcb+\nzJVtu7ZegmDNCD8Ck8vg6oBblMxv2hSamcADq9nWgdXKXe4crF4Oq5yn2l5zWvWcyNk4USBOTOCv\nVHPOxZ7cQ7CHzxkcAnAbsjn+DKGg+Hn7q3YbfJJ58ufcTeb8IHQ1khdiymqAkE5Yab0zfYo8NKKa\nfkahp5Sr15vQTHJcyCuwvkpGhwfK7H1f4HzRSvaVngfzeRiQCX3KOnvkjpGzZz9vgM9b8tdsD/tl\naENnbiCdC7qF7vPAXwv+ORpNtb4jj3CB8wV+EJyybyc4QwXG7xrbvkDxuxnGwXlqx8oye7cpQd+z\n0BDUReifC+pU80CMg69Dz8zefD8dZujn0BuXfDs89bbHXdkrX3yh2X7zgXcw/7l//X2u7Dd+6X9o\ntoenn3B1ysWFK+tLe5HTKfhWk3+XWOJcPgz9J0oIIYQQYgV6iRJCCCGEWIFeooQQQgghVqCXKCGE\nEEKIFdy4WG5l8BB82F6FgLXN4IW07diuSL/tHrg6R52Xz8aulYcDhLxRtlgCQdPSVR/WVg/2+CSy\nkjx8faNithKpl0HBBQ3VhG0maDdhVxS3onIIIUQIDrQyfSGPD0xdK8mSP02rh9u/D5asQh5CCMUE\nxnFQob+g1YqzIJaniWTz9roXCl3svchqr19d+CgfmYC6cfTKKMnmR8e32iZ10M/h/k2H9nmvIHDO\nOx+Imw+t/HnY+3HDfT6U2f4aAq94744F+zkpHsYDzPa04xt0/kgGtSFBm/D8rFiO4rw/vntGoE7X\nnUDDelOHAocXpDVCHbqe0TyTEa5BIsHf9BBywQuET5ZixPJCY+X1E1cw0BjOL5sJGh1MwplN46/A\nkq804cYMoCSRU3hpxjG2JcGEm9/7ciuW/0v/zg+5Oq/8zpdc2Qu/8/vN9l/+N/5VV+fLv/Krrmw8\nase3PPh7lc9BSId6S9F/ooQQQgghVqCXKCGEEEKIFeglSgghhBBiBXqJEkIIIYRYwY2L5f1w5Qs7\nkzKavEhnJfIQQjgeHphtSCy3EnkIYehaSTXCCtgZMlopWdmSKAHW+XaQWAzJym5VdYigTbW9hRHa\n3YEsGYxYHuqyrlBMlDRdExQ2rawInimdnyXSez99Huy5hDK3e84w6YBE1jm09SiBHucl5Ha/CFJn\npJXs7cEoPhs4vX2n2e5AgCfJsh/aCQuJxHLoC/vzdkLIHu7xtPPSuE2mt/2OoMRykmTtagQJOiPt\n508PnkeIEO/NpRpQoF4glkMZ9UU3H2WGBwSM7Wh3hHYm2C9Fm7oP94FWGjDQ/aOo7GQlbuga1AZ7\ngnQ9K6zukHN7fsWOnQvBFS8g5d8+IjMJ6V0ru9PKEbSKgZ0w0VE/QJn/+v75jRe/7sre9y//C832\n4d59V+fX/tH/6Mp+8N/+K832/tJ/t3/9977oyn7gX/tLbZteetXVGWlVEVq5YSH6T5QQQgghxAr0\nEiWEEEIIsQK9RAkhhBBCrODGnaiu98F6vVlPu0s+OWwzeCfKBnD2nf/dNPV+xeaUTBkEKjo/IIQQ\nu+svV5ogGNFm9JH6A7/FR+NJDeR3uN93fRsL+k7tfhTMRgzmt2PIjwwBVh23KZmoP4Af4MIESSuA\ntlfrky11osx+iRwz6Acu0JBC9MBR6Oz9A/cAF4g39ToK6QRO795uto+2fpXzfoQ+bE7osPPP1f7S\n+4dXZ8aJuvJ1pr1/3qPpQ0uePXKyClxPe6XwcQTHxAYORvi8cePbeWvblh2N8KxjVGhLyZRQC16W\nuVcUHAqClx/zIOSxFn/fazSOEg1wC75pEgaOkuvTblPfh6a7wN9gt0MIFV3Ytixj2Ob1UB/GfmZ6\naKbQzLltE49v4N7ZQ0HXSNX7awN9IRruPvmEK4smBfR3f+O3XJ0f+Fd+0JVtH2ndzV/77/8nV+dP\n/TM/4MqyOcHL199wdR75zmdc2cWVD+Bciv4TJYQQQgixAr1ECSGEEEKsQC9RQgghhBAr0EuUEEII\nIcQKblwsH0As74yYSGL5djx3ZUNqRfK+86F9MUHImwnzJKnTrhQeAourjmnjivrQirr1AGJp9jJv\nNCFvNlgzhABeKYULwqrcdiX0fsG5BS9QJ5A6CwjU9hJH2I9WXu+MFFsmkF0pbO96zxs52GBCCKOM\nEMxmZV665piHaa8VXINIAqy9LgvDNrdHrUh+dHLL1zn2srkNQr0I/nm0wZohhHB1cdZsP3jjTb/f\nlR8ThqF9HjbQTgcY+DTpwOYL0qUjx9keCvzw8Nipl46ffqxt+/HW95/9wY95rk3weXTXq7GqKSCT\n9rTPH14DKjMXkMbObskTCEGlFcczE+6J4jx8npnEkSF0MUJ/KeZC5EzP6PXnd5hhTIB6ViSfQHaf\nTNtx7gmU9eZa9RA03cPEoAknNZjPg3Hxpa98pdl+9/ve6+pkaOlv/Z+/3Gy/68+829U5ffIxV/aF\n32zF9be/42lXZwrLApSXov9ECSGEEEKsQC9RQgghhBAr0EuUEEIIIcQK9BIlhBBCCLGCGxfLt5Qq\nHtsU3CF5QXyTvLQ6dq2MmUAYoxXaLRVsyZl2W7CSdQBBvOZtWzBtXZ0un/r9TPp5Cv7YziikleyD\nTxmOLrX9erE1BEhNXmJ1h+CuHV1JSiy2h++HJXK9l7FRPgUOtgvR6UE7rYyJqfR4fjZFmYRYX2Rl\nzLygn4cQQj+04vO49RMhhtHL0fOhnaBB0jFNvDjs2oTySyOahxDCtPPP+zy2z0i38c+MpYNU5Y4E\n6muPxOdiJzncOvbP45N3vZT/HU89cu1+9878igyWSOMbnHMxHYZkaRrKOiOgUx2a/GGfrQEuMMzP\n8G2iryMQxGeT8p0wkN3364NJGs+FVneghPv2evYwWamDe2OZIqx0AOPSVP7w7RBCKDbVHD6e7p/t\nGyTu4+hMq1AYdhd+NYLHnn57sz3D+X7jSy+4sqdNqvh47O/nC7/3Jf95jz/ebCf4vri875+1oV//\nKqT/RAkhhBBCrEAvUUIIIYQQK9BLlBBCCCHECm7ciep77z90oS0bITRz6Lyz04X2t2lymzhC0pw2\neES0mjf/fmzqTLDf1L6rJvSmTvzB5tavKBC22Zl20irrIUIIaWgDDsuCsL+3drThkBRUuuRAEKwH\nv5cX4z+w2nS9p/GQHR02xI58Elr93QaM4m/sdCgXCgohpNAXbfLi0qy4akIzpz3cd/BC8jT/odsh\nhFALuCLmdIben9+8JNB0QafqQNSinMlojlXh+SeXqjdtR/eHXCNTr4dK3YLzg0sX9tVfc+cWQh0K\nGLZF5FvR+GLHYfJ8Ejwz7tgwvhUItrT9k8IvKzhReW6dKAov7uAbY4ztWFnBH13y34g5eNew0jU2\n41mlMciOCSCGRSjrTEsjhG1GuAZ1gXPZ936cskc6e82H7d599BFXlrbtd+Q3v/Z1V+fklv/O3Jqy\nszfvuzqbwd+HtETaewj6T5QQQgghxAr0EiWEEEIIsQK9RAkhhBBCrEAvUUIIIYQQK7h5sTz5FdtH\nE67ZRZAXI8iRqU0YiyTpkaxog/RA6iTBd9FKz9ULjSkemRJfh6TxFI0AV72451bAhlA0kuRTMmUL\nViEPIYTOCNMJUt5gMfaQrbyLIXr+WFYsLyCRz/CBNjRvOoBwD+xMMynEMkMSax9tHX/szlYKwRnh\nGEJKYXumCRRiRxyuzCQDuA9T76+VDVndXV74Y4Ok3vWtIHp867arEyGAtzdhm8MWgmYNCcT2RDK/\nuZ4UIGkl8hBCGDor5fo6V3ANXnujlVsvL/yzvtv7cdF9/sY/x3P2behMu3AsgzRYd84krWNgpBmH\nYb/h+qzGkKAvVhrzip0Y4NuUZxgHsw3phHYGPwnHXz64BjT5w3A5w9ctTWoyz/JMYbtu4oyvQ4G4\nnbnvI0xyoAla+AGGCINeNQPVBkIzZ3huLx/ca7ZvgUTeb7wgfn6/DfMdBz9uRJj0Mx3gvi9E/4kS\nQgghhFiBXqKEEEIIIVaglyghhBBCiBXoJUoIIYQQYgVx6er2f4Tc+AcKIYQQQnwL4Owr/SdKCCGE\nEGIFeokSQgghhFiBXqKEEEIIIVZw42GbH/7AR1xZOrQBdRECyMLG/xw5vL0N7ptHH3h2ceWD/Gb7\neZBmljKE0Zkgy09/9LOuznOf+JArM1l0ocBlpxW+g1n5nC6LXeW8gxW/u+IDAEdTtpmvXJ3nf/bn\nXNl/9nfe37YJFDdamTyYMqxCYXvFng+sVg4rxNsjpeiDPD//I3/Dlf30B9v+eRj9focNJGluTSho\n8nUoazOZW5P2sLL8HgLjdm29OPmDf+RvfNSV/ehnP9nuZztn8EGeIQSXoBqhEp2fXcfdBd2GEAYI\nrawmgA8yF8PPPv+pZvv9H/tJVyeCxmBLqA66oqadHaQZJko4NEGlefbPYwy+7HMf/4Vm+/kP+vtJ\n7SymDRQzO8Pfz8U8I5vO73l36+/f1vT1w+z762sXPmTx5z7zsWb7ox/w969QuGffdgbIvsX9sg0U\nhlDJakOIqQz2K53f7/PP/3iz/dyHnoM2uaJQ7bgP30WTeSDuXfk2XU1bV2b77O2Nf/5vw/i27dt6\nP/Wpj7s6n/mJH3dl/Xnbhu1936bxzJdVEyI7bXxfnG77Z2Z/2tY7bGGsHuE7xAR8f/jT/rvvYeg/\nUUIIIYQQK9BLlBBCCCHECvQSJYQQQgixAr1ECSGEEEKs4MbF8hBB3DPCX73yElmdvFwXz1pZsdzx\nghqKnuV6yTk4oTkse+UECTCasgryNwnTXtoGSdY2Hk4mwfl1RvjtghcMiRrsuYBkSde82s+DcwFx\n3l6CRHlnJAFbSR1XJvcchvY67I5BXjz2K37vT83124K8SDL2rn0etpcwoeEc7qk51lBhYgJgV1qP\nxd/3HuTvZPosTSiw/TyEEGK0Ex9IvIb9bLfur3/4IkjBCR5a94iQ3Bt8m7rOyPzQ7+yq9SF4UTh1\n/l6lBf3TPesh8MNtDuWE6hBChvOL5gEcQSw/hjJ71Q/Zi+W7nW+mJYEC38HNKYf2YEMHE3U6uqmm\nD8N1wUkV5lLFDoR02M0ywsyLCaz4rjffTz1M/rCfD32/XPh7PJe23h7G3Cuw3SP1M9sGGINqPmq2\n88UtV2e6d9uV1UN7rHLi+0YZHvj9xvO2YOv3y9XL5jC3ZTH6T5QQQgghxAr0EiWEEEIIsQK9RAkh\nhBBCrEAvUUIIIYQQK7hxsTyCdBxN+mrZe/ErX3gzMZ220lo6OXJ1epIOrUU2g7hHgugC+6zCe6kT\n50ECnCNIeUbmRfV0tuKur9JFL0IP5vw6ikMHolEoIySBZ5Bk7VUhiZzcxWTEywjCP3nlVngn152o\nfSsizkdeLD/c9WWXd0xq8zHJ7r5ovGrPp9yHtGDYb5jaPtTnZY9yNH2xh0kONBnDPg9WNP+DQvhA\ns4nmLtxTc/8W9U5IqWbR2+wGWnBKdD1NUnYhQZXGiLb1kdLC+eluqHRfYEJItuMpHQsk9TG2/fou\nTKp4/NgfbW/68Buzb+duur5/pgQTGqofu3ozeGRM3QeZPlrhHe4V9KFg+gKmjC/4boD5GmGAAbvv\n2opHA8jn5l5tBv/5GRp6f9deA0qun+C1gFLvLcVNMYD0dZTP/USEWto2FJgAY48dQgh2WMIVNVzJ\nQ1bZWIj+EyWEEEIIsQK9RAkhhBBCrEAvUUIIIYQQK7hxJ6rCatd2Ve4AHlO+AP/grPWk0l0f5JWO\n/W+wvQm7KyDjVPh9vpB8Y/ejFeFN0QyBo7TqeLFOFPyo3hsvY4B2D9OV329uy7p64eog9mTAPaCc\nO1srQbYn5PiF0YRRpuyvHcWEVntP+4W/eQ9tI6bBeyHTLf+JF3fb+3B25PtrtAGgIYTTsb3HY/F+\nQH/p2zBuTL/eLwtL9Sl9vkpdECKJDgHs5xwh6C/4eaah5He4zxr8tSuT71TWCyNNizwpe8oUmkmp\nfdWE+83FtynBmOCOA9c80nhjvUW4viM8gKdD6x89sfX97tbgP+/qvG37bufHsv10/fkFCEHswLmM\nrp7/vAiOqe2fGRwe9nrM8SlgGPwcSwbvlL4vBnOfx85fg1ubtg/dOQEPlRyzB+2xr2ZwlOAZnWDs\nsoAKF6LxuxL0qXB65oq60rarHnknum4vfdnGOHTwpUJuYaUvrYXoP1FCCCGEECvQS5QQQgghxAr0\nEiWEEEIIsQK9RAkhhBBCrODGxfLQQUDW2Daj22xdHZI4bShnufLSWhr9saKTuMFoBkluyUrrFJrn\nRE8IKiQt2MqtCQzYvrZt30w+nO7o4MW9bW5FPSsAPozOyJl1ptBFEGBze13Gg+96m3MvdY7nrSyc\nDhDWCs7qYWzPpxwviYsLoVjB0HefcOj9sXZGQN8NIHWSRDqbAMcOxMsRTtAIt5HSS4nc1iOpm0Rk\nt5I9/fkFj4ftsiRsVxBubR7tkr/2JgprhT2je47JiKXJJiY0Fy4CBr+6cF049oL7R2IyfqB5/np4\nHo96P048ZqTfu5DyWg7+nO9fts/o/Ssv+O8ziN4GCnmNELLYx3bcp/7TwYhqr0KmcNa0gZa1989O\negiBA1QtGYKCZ+ov5vDg8odbppmPbP35jpRebB7I1/yco7CHyTs0TljmASbTmLDieBcmMFkZPIRQ\njMg+j37MnU/8WDkfmbDk0bcbboOfiPRPgP4TJYQQQgixAr1ECSGEEEKsQC9RQgghhBAr0EuUEEII\nIcQKblwsp9WYk0ksT0deTBxunfpjBZMEfOVTTfsjf4qdWfGaBNEM8qBdWZ7oQFbMRnIsi2RXn0ac\nQKAcjJA6zj7FdTzcc2W9kelr8tecsEHH6BvOXkwcJpPMfeFF082b3uLevH7cHmcP0iOkzcZTkzx+\n9xwa6knFHD/DfYF04s7US3syRn3f70y9CNeukglp+tAS8TOEEA679rr00Kd6Ei/N8SOsPh97eD5M\nsyj1H3xiH4y/IPCabPcCgrHTykmIp8Ryu4IANhyKbNo6fOCUr0+cx1BzWjHAbkM6+UnvJeA7m7Yv\ndCDcv7nz4vWrZ+1ze2/vn+Oarv+qybAiwwDPTDLjfgfPo081h1UTnPD/kGRuk0JPEy8owN9S4F5l\nSvA3Y8mDKxr32/Mb4XkcQJa+awT0/QwrgUC/npbMWxn9vZpSO94UmHBT/EIjodq+AN1nhmPZ+QsZ\nxrICN2vJpLGHof9ECSGEEEKsQC9RQgghhBAr0EuUEEIIIcQKbt6Jgt+4iw3gHMHPAU8qmt+vnXsQ\nQqh7Clk0p42ruF/vKBF0fhjmZ8DsQuOrJPA7OvPbf199cFkX/e/eNqBuSdhfCD40M4CP4LyiEEK3\nb/cbziFs880jV3b80p322Ge+TtlA2x9vA0bj4K8Lkcxq8+kC/KcHfr+joT2fBCGdNqg0hBBOjOO1\nvfKf13vVL9SD6Rv04z+w37UBdYXcPxgVovFHUufvcb/kbzJaQR1FIteCaw9NjlKEdlLoqdsP+rXd\njUIeIQ/X+2oYkHm99EWBquTnVOPwdMnvN0LocTXP7f1LX+eb933Hfu2qfSavsu9AW3geLKmD8Evw\nAau7yDDmZh/E2HXGoYWb1UEftp8XaYwnl8pArlGFfjaZw8+z/+4rF+2xDtl/z93aQOCo8frIm9rg\n43i99AW33YVYlsHfF+s2h+Ad4QzOkntvCH7YoFZXCsSmINuF6D9RQgghhBAr0EuUEEIIIcQK9BIl\nhBBCCLECvUQJIYQQQqzgn0LYppfIfAgZhJkNIIhaX7OD8C1r6dGxSCxfsLo2UUE6tPKgFcbfKoN2\nmsCxyAZ8g7+6IcyjtzpTbmuW7vpV1t86WHvtIoifaQYZ24RtdgeQzy+9QNmdtWGb6d5t36YehPuN\nCZV8ZNnfC92VEb0HHy5YQSxPsRUmjyHkNUHQ7PbQtmtz4T9vgOsyHNqybl52/6wgGhMEFcKlSiaB\nEwMqISzRyt4UKrugW2MQo9tn8Ne8zNAmuw1tQpHW1OMxgtpp9ushAJjkaFuHgicxYNSGZnrK7M/5\norR9aMoQrHnhJ3Zcmr43QrjnEQQjujZB8CQFE2eTOhpBjo4wYcIK/Sn6dubiBW07qYKCPDNNRDB0\n0M4AIav2/GaYNHJe7JhAkjUF6drvFJpAQWGi14vzGcJ27X2Y6ZpDO5MJD82QtouTYux3K3w/0Zl8\nC1mb+k+UEEIIIcQa9BIlhBBCCLECvUQJIYQQQqzgxp2oRN6EDYOE3/kr/N5aZ/vbLfz+CYFqMdsQ\nSw/kdi7J+3vI763twTr6vR4XPDW/4UOwXjafmMHhod+hS98eKy9YIDSEEKJJYqwUMge/X9tg1AAL\nNVNvLCb5rQ4LQ9fsYrEL/17ozAKrG1iNl0JXO+OKlYH8FVj4ct/2hWHv71+38x5KtzdOBCxcTBwf\nt/uNEABIuY/2KlA4awd+lV8YGcIhwRF0wYTgO1rIm6q04Ll9/sgLIwfElOEQQa6Yue+F5MoFK9jS\nwtCTGwODu4Fz9p+3AwVr7tq+d7H3/e5s79076ySdDN4remR7/f2rYG8VGBRyMG3Axbd9O22XihBQ\n2Se/n3Vv7Lj8VhPIRjWfD/fdBqOGEEJvzofWH7eu2J68qYNv59b4wHjpqHDJAstwXWw2Mw37tNC1\nXQCcvCkKenYjFQacwm7L1m9H9J8oIYQQQogV6CVKCCGEEGIFeokSQgghhFiBXqKEEEIIIVZw82I5\niHQ2pC+C1Z3I2DSrfkcIrEOJzK7KDVVodXQqc3VQPjfnRyJt9atb2xBAWsXdhYYQnnsAAA7kSURB\nVG2SFdz5sMZsDL8Cq90jVhBfEMIWgpcjc+9FzOnkypV1d9tky9j5/Sr04vzIRfv5R/sFrQwh7dvr\n0JMIbW3JEEI4tEJqTb6dQwdhdKavUwhp2kFwpwnpTL77MFbMBymfwjatIE4roc8L0mhxogfIn1Ys\nxUbZ45B8Cs+MrUdhmxQKbE8v0gQYtM3NeANtyhCk6dpEgYoksptCkuRnEKj3JhD3bIKxGu7VdtOe\nz8noO+PxeP35VZiQkukryqWl+oteIgjw5j73cM2n7Nve2TEVJuos+X8E9Y2UIBCzs3X8sfemCTNc\nO1snhBC67npJnkZ0DAo1cN6okeTh6PT8u8zMBc9VCH7SD31n1wgTGBZM7HgY+k+UEEIIIcQK9BIl\nhBBCCLECvUQJIYQQQqxAL1FCCCGEECu4cbE8QKpwsuIe+KGU8uukMdzP23XRiMGJ0tBBtM4LxNk8\ngBhsRNJKci143dWs8D3DtbMp0RmESvKgq3l/LgsTy638meBcKIHaua0bSFG/7WXeObVC+PCIbyem\nRJ+0acT19NJXAvr99X1xKL4Nh6lte4Vo3g76ohW0E8i8Xfb3NJiEYvDYmY21VkGqJmHTTcbw7SQ5\nOtkbj0ng1/eXQpMqDODIh5nOxTwzKNeSkGoLSLalNGvTifj5uP78nGwfQqgoxJr0fEgCn+BYk5n9\nMYPQPPo5KqFP7X0/GuiaLxCTQTqm8czeGppQQOnnbmIA7JeiTzFnYdrsR53PVaJCf12sxF0hcb6z\nB8P5PTRhoj02fF2FEdqJE7vsp3XXS+o4zwvKUnf95Aj7HfZWmb3JMDkCUv6Xzqsi9J8oIYQQQogV\n6CVKCCGEEGIFeokSQgghhFhB9Kus/7Fz4x8ohBBCCPEtgGKY/hMlhBBCCLECvUQJIYQQQqxAL1FC\nCCGEECvQS5QQQgghxApuPGzz3//hz7qy464NazsZ967OneOdK9set/tRGF2B1a1tehqtjj5lCkFr\nvbKPffRTrs5/+slPujKbg1jsMt0hhAxhdNkEnFUIDvOhgBQc6IrCaII8aaXwv/uTz7qy5z74wXY/\nSGvLcKxpau/pU6d3XJ2vfumLruyJ731fsz2/eubq7M7OXVn3+HGzXYsP0fvUxz/tyj783HPtfpCC\nmulvD3Ov7GribxX6xy2ZcLgu+9RMG7r6VsV2c4Iwuk9/6uOu7D/5mfb+2eDJEHiRerP4e0gUWAf9\nbLDZd3BsGxwaQnDPaIIdP/XJ9vn7yAefd3UoNDOZk8nJx/1l23Aoy0e+T81HfuyqowlPhHtVoLv8\nrb/6932hEOLbCv0nSgghhBBiBXqJEkIIIYRYgV6ihBBCCCFWoJcoIYQQQogV3LhYfnbpy6pZqPtk\n4y3LLSwtPRohFFzXsAOR1S6KTauHzxlWjS7Xr7Q+zl42TUZIzzMcJ4FZ2re3Z4J3XiukJmhjX6FN\nuS3ryGwFat+2YXt07Op89atfc2Xv+u53N9tnL77h6ux7v2L7o297qtn+wq/8tqtz611PurLudNts\nT2/4iQlENYJ/Kb4DVbscfPCruBdY+r2rXhpP9lj5AI3ybShGTq4LH2W78nmE1e4LiNZWgAc3Ggvt\nI9mRcE8HM/2xg3Za4uyvQZxoYknbqgRVytbfq5jawStGeI7hWFZcr4UmiJBxL4T4dkf/iRJCCCGE\nWIFeooQQQgghVqCXKCGEEEKIFdy4E3W19+LS8dCWbUdfZ+N1mdCH1iPI4PVUcFOqERcKBPJhWOKC\nd84OnCQfPgkBgCBTTMW0E0I6bTMrJGuSg5GMCBLB/SEGcyPefNW7TaeP3nJld4/bsl/+wq+6Ot/7\nb/0lV3bx4ivN9r2XX3J13vNX/nlX9pXf/t1m+xjuMXN9vRR934il3a+DrtJbGS+EMOSrZrvMENaI\nulp7/9Kw8O8hcx0qeD0Fzq+a/SCDNARS/UwfThBiGylsM1sn6nr6HfTzM+/sxd2m2a4DtOnOhS8z\nIcCZUmw78N5MWU4wmPFNFkJ8m6P/RAkhhBBCrEAvUUIIIYQQK9BLlBBCCCHECvQSJYQQQgixghsX\nyzdbX3ZsykYQPStYqzWagEOQwcFjdaGZHVjAkKcYnMUNDCCWVxvciZKzF7t7o9NWEJOtSJ7g2D1l\nApqygS4UcGnSUrvt6Oo88fQTruyLv/5bzfbJ04+5Ok++4xlX9r/+w19stt/9L36/qzMl3/azr7YC\n+qPf8y5XhyhOFoZ7TkU2wHH297M7nPv9Lu+1dUDwzxBoWtNRs13SskfZ9nTbD0IIIVOYqLksJIiP\n0PdGk4A7zF6qTgcQu41oba8vMV7BNXjj1BXV+4+02xsKqAW5/ri9f90d36YCgaoeCE9dsJcQ4tsP\n/SdKCCGEEGIFeokSQgghhFiBXqKEEEIIIVaglyghhBBCiBXcuFh+69RLlSfHbVkfvZxpE5NDCGEy\n8ucM7mmhFHMnbJO0Cu+XII27vUDK7YxYnqBNqfg2dN1kjgNieWeOTWJ5Bml9bq9xWqi29mM7C+Do\neOPqvP7CN/yOpp3f+f3f46r8/q/9hivbHLci8jv+3He7Or/8v/2KK3vqbU8127VbknkdQrRp3TSX\nABK9kxHC+zK5Ov3ei+X54n673XtRPxyf+P1MvdJ7+Zyw/SxRyjiktvembID9trO/LqN5lIcdSOR7\n/6xZvz+61H9POsBxdkeubD5vZfNCbTr2ieX9oe2L8+T7VJ68OJ9NKnyEsaVbGqgvhPi2Qv+JEkII\nIYRYgV6ihBBCCCFWoJcoIYQQQogV3LgTdefI+znHNuwOVkefwCOKtX0HBPUHQzOz8YYgazNk8J8W\naBmuTSE4HQgb1UM4oz3WXL1nk93HgcSzIGwzgedDdH1b7/LeA18H9rv7zNPN9isvvuLqDLu9K3vX\nD/zpZvurX/maq7OxYaYhhEff3gZ+vvTqy9AqTzT3psLfGbVCR7MBiuXgahQKjN0Yl+nklqszn97x\nn9a1bloZvJtGWJeJ/CfqQ3a/DQiI/c4faTS+0wa8pQIhmdEE6Yb++hDLCOMGdA3Iul12DdzBDr7d\nae+dNhugWhI9a4rbFOJPIvpPlBBCCCHECvQSJYQQQgixAr1ECSGEEEKsQC9RQgghhBAruHGxfAMp\nfRtjOWeQyEv2unIyIXYYrAmrsVvRO4JE6mTwEEJEAdW0CfxQ24YheEm2L74s7c35YfBjuzlHf53m\n5G9zMTtGlF091YR0WhE7hBBOHn3Elb326pvN9jD4Nj3xtidc2Te+9vVm+/j4SVfn7uP+887u3Wu2\ne7gGRDTWMfr2cM7RisEQ7lmsRB5CyNvbbZ3jU1dnHn1gZDH3OUNYK5FMsCyFsw5wqK05PQzW9LMc\nwrA3YbA7f12GyUvxxbSrLji/PPr7kk/Adp/b0NPa+0kA4ejSt8me3gzBqHuYIGLuFQXb1l5/zwrx\nJxE9uUIIIYQQK9BLlBBCCCHECvQSJYQQQgixAr1ECSGEEEKs4MbFckoHt2m9NlE8hBCqszpDGEyE\neIHE4gpmsD0SpXUXijpf4O4OkxdLRyPAd5BmPWSfRr6xsjm105RliFXfJ7+y/NS3t34GAZ+wtYaN\nP/bllU8et/L+7bteoH71ZZ8qfvRIm+CdbJJ1COHyzEvAW3P8lJaJ19XG3kN/LXCtrAidoZ112Lqy\nOZnk8c7L5yWCwGxSsGP215wYzH1IEL5OYrlNuO9gv+i7cIhmQkjcw3UBr9smliceOBrKkT9QvX3u\nyvKmfa7S4BtejryQnkeTPA7PY60wpM7txePxhlLwhRDf7ug/UUIIIYQQK9BLlBBCCCHECvQSJYQQ\nQgixgpt3oqJ3jWyOHvlPFIhpwycruFSpQLCd8SsKrqDuj0VtsGwyfJ5pw0ABhzOUmXbBpQvVhDrO\ncC4x+SDPaEMX+4VdwfhAaHJAKug4tO7U7urK1elG71elbVt29cA7LkfHPqzRynf5EsQbIJpQzgpu\nU6CyzuwHfaVGCj01ZZ33nyjwMxmHpi50aqJ5tqzrFEIICdqejCtWJ38NcobQWtNfZvo8evxMJmdc\n4Ozljb8G8x3fz2Jufafc+b5RfFd0TpR1OUMIIVEirrkuhfrPQidRCPHthf4TJYQQQgixAr1ECSGE\nEEKsQC9RQgghhBAr0EuUEEIIIcQKblwsx8RKa5aTDA4hkm5ldzh0hP2s+91BECO434veOCk00zaT\nwgzBYw2dFXUppM8I4gOEErrrFPwljvPSsD/bBpCQIfR0MtflaDhxdfLeX7vpqpWAN1sfWFlhv8Oh\nlen7heK89YILCuJwjU01CgXNdCyzHWd/LhGk8WqCWMlVRtwkDl8Fp1mYEEnqLTV1rmxv++wIEzag\nEXaiQ11wfhnqTFt/PZN5Hjqw6zOUFdOFaKJJzf4a2MZHOHaEMU8I8e2P/hMlhBBCCLECvUQJIYQQ\nQqxAL1FCCCGEECvQS5QQQgghxApuXiwHqToYIbUmL2xSnm800moEJbaAVN0ZC7en1dhBNl+Smrw5\n7H0bYnt+ffYJ4n3xZZ2x2yNcvGqvAbSRJOdk1GA6XyKaNlEy95y9dtwftUncefYp0dPsr93m9q12\nvwmU5tlfu7RpU8wrGdSEEZoLKP+V/vYwfXa2kdshhAp2tBXXE9zjDtoek03BXnb/7CQDmnhhE7ZD\nCCG7yR/UF6Gd5vLBox1q5481V3NPMdbctJFGCdgv28+Lvk8V8sPNvcmwsgJNivF/q8LEhLR0YocQ\n4tsJ/SdKCCGEEGIFeokSQgghhFiBXqKEEEIIIVYQK6VK/vFy4x8ohBBCCPEtgFK0/hMlhBBCCLEC\nvUQJIYQQQqxAL1FCCCGEECvQS5QQQgghxApuPmzzIXKWEEIIIcSfJPSfKCGEEEKIFeglSgghhBBi\nBXqJEkIIIYRYgV6ihBBCCCFWoJcoIYQQQogV6CVKCCGEEGIFeokSQgghhFiBXqKEEEIIIVaglygh\nhBBCiBXoJUoIIYQQYgV6iRJCCCGEWIFeooQQQgghVqCXKCGEEEKIFeglSgghhBBiBXqJEkIIIYRY\ngV6ihBBCCCFWoJcoIYQQQogV6CVKCCGEEGIFeokSQgghhFiBXqKEEEIIIVbw/wPsXGYtEDecEQAA\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# the parameters are a list of [weights, biases]\n", + "filters = net.params['conv1'][0].data\n", + "vis_square(filters.transpose(0, 2, 3, 1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The first layer output, `conv1` (rectified responses of the filters above, first 36 only)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = net.blobs['conv1'].data[0, :36]\n", + "vis_square(feat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The fifth layer after pooling, `pool5`" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\ngySWe81HTeSR119/PWtdm0TfE7mfpQsLC3Wn03ruRAEAFFBEAQAUUEQBABRQRAEAFNBYnmHv3rzT\nVGXiL/XLbf7cjY3luaLpww+73EnkTdizJ/137M7OTq3HyG36fuyxx7LWvf/++1XSabXo9RgZGUli\nUQN6tO2g2NzcTGJRA3o0oX1paSmJPchE8LYb3FcdAKCHFFEAAAUUUQAABRRRAAAFNJZnGJSG8dwG\n+d0oalRcXl7uQyZxM/fGxkYfMul0VldX+3LcSDT1uE35tUUTzeZt9+qrr/b8GFWaw3Ob9XMfbmmT\nW7duJbHo+jt69GjW/q5fv145pzZzJwoAoIAiCgCggCIKAKCAIgoAoMDgdhrz0OtXM3e/jhu5dOlS\nv1NonajB/cCBA0lscXExia2vr9eaS5saxi9fvtzvFPouej3a9H5uQu6DDSdPnsza33vvvVc5pzZz\nJwoAoIAiCgCggCIKAKCAIgoAoIDG8odINImWakZGRpLY+Ph4Eoum3t++fTuJRU3PbTc7O5vEFhYW\nktja2loSi85fZHNz88ETu48zZ84ksf379yex6DWru7E80o9z0unEE7xzc8k1PDycxKJfG4gmgkfr\nco/RhEGZvh9NWY+ujdyp7YPOnSgAgAKKKACAAoooAIACiigAgALd3Ga9GjV+QACACrpR0J0oAIAC\niigAgAKKKACAAoooAIACjU8sj6Y5b2xs1HqMaPrw8vJyEut20z6xKFal+T76e6PJzdFxc42Ojiax\naMJsJPrbnn322SR2/PjxJLayspLEHn300ST2ne98J4k9/vjjSeyll15KYkePHk1iuZPXc6+rI0eO\nJLFr164lsdzXaHJyMolF08lzRa9RleulirbkEuVx8uTJJBad9+izINf09HQSu3nzZhLLPSfR9R2J\nrsdIldfnwIEDWetyz1/duVR53arksndv+jUZTbOvksuePen9jCYe+qr7/Rydq0h0/try2dLpPNi5\ndycKAKCAIgoAoIAiCgCggCIKAKBA443ldTeRR3IbjyNRg9/s7GzWttevX09i6+vrxbnkym0iz/XO\nO+8ksUuXLiWx+fn5JPbyyy8nsagZ9+LFi1m5ROe0bnUfo0oTOeXGxsaS2MjISBKr0qA8NTVVvO2g\nqLvR+sknn0xiv/7rv5617Te/+c0klvvZkiv626LvicjOzk7Wuj78ckhP5D6csLCw0ONMmuNOFABA\n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\nos+lqLE+V9S4/fTTT2dte+7cueLj3rp1q3jbyOrqaq37a7vHH388a917773X40w6nRMnTmSty20s\n343m5ub6ncL/4U4UAEABRRQAQAFFFABAAUUUAECBVjSWV2nWrFvUTBpNyB7kJvJI1FRdd8N4rmja\ncjS5/mETNZY///zzfcgk9q1vfSuJRU3kbXkt636QgN2piYbxXK+88kq/U+i76NdHLl++nLVtL97T\n7kQBABRQRAEAFFBEAQAUUEQBABToNt082e12+9KtGf2d0RTuJsglJpdYbi7RQxGf+cxnklj0UMT3\nv//9WnPptbbk0ekMTi7j4+NJLHqIo4lc6iaX2G7MZXh4OGt/0edcbr1zn3XhiXEnCgCggCIKAKCA\nIgoAoIAiCgCgwK5vLM+deLwbG+iaMCi5TExMJLFosu2dO3d6nkvd5NLePDqdwcnls5/9bBLbt29f\nErt06VISe+ONN2rNZXR0NInlvncjg/Ia1W035hL9MkNkcXGx1lw6GssBAOqjiAIAKKCIAgAooIgC\nACiwt+kDRlOVd3Z2ktinP/3prP2trq4msajJkcEWNaJGNjc3k1jTD1c0KZruu7W11YdMem9kZCSJ\nRa93roMHD1ZJpzVyr4GjR48msZMnTyaxaBJ03Z+50UMhD5v9+/dnrbt161YSm52dTWLR9+xuVKVh\nvBfciQIAKKCIAgAooIgCACigiAIAKND4xPJOpzO4XbwAwCAysRwAoC6KKACAAoooAIACiigAgAKN\nTyzvdtPerCeffDJr24WFhax10TTeaNsolyZEzfy5ufzGb/xG1rp/+Zd/6XkudauSSzQJP5I7tXdQ\nzkvd6s7lq1/9ata6r3/960V55E6yn56eTmLRpO9Lly4lsSrn5DOf+UzWuu9973tZ63JzqTINO1eV\n8/K5z30ua927776bxK5du1ZrLnWrksuJEyeS2N696dd49LotLS0V5xL9GsBzzz2XxObm5pLY1atX\nk9idO3eKc8k1NTWVxPbt25fEopwf5IE7d6IAAAooogAACiiiAAAKKKIAAAo03lgeiZq+f/M3fzNr\n229+85tJbHl5uXJObfWDH/yg3yn8j9/7vd/LWvdP//RPPc7k4RM10uc2zZ88eTJr3eXLlx8opzaK\nGlgjuY3MUWM5+aKG9irN6w+bK1euJLHooYi6ffnLX05if/VXf5W17Z//+Z8nsX/9138tzuUTn/hE\n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\nHzreW7zFsFB/AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = net.blobs['pool5'].data[0]\n", + "vis_square(feat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The first fully connected layer, `fc6` (rectified)\n", + "\n", + " We show the output values and the histogram of the positive values" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nbhFlX7zTbm/fdzXm/d6VV+b7nk9lXc++/W3p4ovz54X1KpkHq8jA3Icf9lOeLHxehLMcJKEDjzvv\nlG65Zf3fPg/gLBfx0HfaxfIrOKSkeh3XEjLqu6GkCRCrnESy31ve0vk/Txfy4NQIPbG3QpQ1TUPI\nfK6/Pky6ZZ1HqvrR18v34IOlww/PlwY2VHkX4biZnAc36hOfuOHYlKxdZHnGClU1yN1Xvocd5ied\nIppyEU/z/ZDrmvaX/7Jl0jOfmbxMDINoRwXBzuXbPqHuGt5jj+zfSTvEIWu6ZaXpo1WzKvvsEybd\nrHVx1lnSqaeGzwfxqryLcFhf/6iTwMqVyWnVQZ67pYqeZIeNCfn85/3lU7ftULS8vgb1z5oVphyj\nnqm2SYaj3vecQoMX7rSPykkT0PraB2Pal6tqfQ0dlOdN7/jjO/9X3bWfxtvf7ncW9qr3yzb0BPgW\nXRdhiJ0oqVWoqkHuvseWFCnbWWdt+LfPfndfXaEf/KD04hcXK0uIVsFBeVs8r71WWrIk32SQvqQN\ncvJKO3ZpsDzjlgslT/dV2vL1/zhEdl/9arHvxzYu9957/aeZxEfZqw7w6qjyLsKewV+2aTem752+\nN0g3hmg9hjIMM277fPrTG/6dd10uukiaPz/fd3tCB+1Fbbed9J73pFt2WICS5U7TEK0Tvn+ENPVk\n/jd/s+HfZQ3mv+GGbMunPR9XtZ2y5ltk3G/ePNO477705fBxEwrKVXkX4eB7IQ6cLMv/8Y/Z0suq\nTtNDZDG4Xtdcs+HfdVqXNEZ1afd/lnZ7L1nitzyjPiu7e2XU5Lm9v++/P2wZfCjy4Pm8fG2rO+/M\nlmbouhwW5Jd9d2CMqlqXmH/Q11Ulj8pJczHw2S1W1q9EH+nGNo1BGbKs3xve4Cf9suq0rJPl6tXS\nz35WLI0quk+H5Vm3fb7InY9lrOt++0m77pr/+00KYOqKbVA/lYzByrOc2Ya/wvrfb5JRrXtJyl7/\nqrpue847L3veWeu0qCrGC01OdmabziNpW51+ejUtNmklzbdV5bkg1Db3uU6zZw//bNgP21gv6lnr\nxfeNEHVjVvx5ok271pahVi1YSZMyZg0+qh7kniXfOu3QMZ24YiqLb3km5Bw3L1hSGm97W+dfFcbt\n9zfdJL3kJRufK+p4F2EV++rZZ49fpk7nHqnZx3xP0TFYt91WXf5tFc0YrGGfVTWwL8sJJssdYFnK\n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\nOWY2u/ve1mY2y8wWmNlMM9uqb/kjunVxi5m9vrqSZ2NmPzazKTOb1/de5vU0s5ea2bzuZ98oez2y\nGt4Q1O8AABf9SURBVLLe081scXebzzGzffo+a8p6b29mF5vZTWZ2o5kd0n2/0dt8xHo3epub2RZm\ndpWZzTWz+WZ2bPf9pm/vYevd6O3dY2abdtfv3O7fjd7ePQnrHX57O+e8/lOnu/A2STtI2lzSXEkv\n9J1Plf8k3SFp64H3viTpE93Xn5R0XPf1i7p1sHm3Tm6TtEnV65ByPV8laWdJ83KuZ6+FdLakXbuv\nz1Pn7tPK1y/jeh8l6aMJyzZpvbeVtFP39VMk/VHSC5u+zUesdxu2+ZO6/28m6UpJr2z69h6x3o3f\n3t1yflTSKZLO6f7d+O09ZL2Db+8QLVhtmYB08A7J/STN6L6eIWn/7us3STrVObfGObdQnY21aykl\nLMg5d5mkgdmEMq3nbma2naSnOudmd5f7ad93ojRkvaWNt7nUrPVe4pyb2329StLN6sx31+htPmK9\npeZv894sTk9Q58fxcjV8e0tD11tq+PY2s2dL2lfSj7R+XRu/vYestynw9g4RYCVNQPqsIcvWlZP0\nOzO7xsze231vmnOuN3/ylKRp3dfP1IbTV9S9PrKu5+D7f1Z91/9gM7vezE7sa0Zv5Hqb2Q7qtOJd\npRZt8771vrL7VqO3uZltYmZz1dmuFzvnblILtveQ9ZYavr0lfV3SYZL6519v/PZW8no7Bd7eIQKs\nNoya3905t7OkfSR90Mxe1f+h67QfjqqHRtRRivVsku9Jeo6knSTdI+mr1RYnHDN7iqSzJB3qnHug\n/7Mmb/Puep+pznqvUgu2uXNunXNuJ0nPlvRqM9tj4PNGbu+E9Z5Qw7e3mb1R0lLn3Bwlt9w0cnuP\nWO/g2ztEgDV2AtK6c87d0/3/Xkm/UqfLb8rMtpWkblPi0u7ig/Xx7O57dZVlPRd333/2wPu1W3/n\n3FLXpU4zc6+bt1HrbWabqxNcneycO7v7duO3ed96/6y33m3Z5pLknFsh6TeSXqoWbO+evvV+WQu2\n9/+RtJ+Z3SHpVEmvNbOT1fztnbTePy1je4cIsBo9AamZPcnMntp9/WRJr5c0T511PLC72IGSehen\ncyS9zcyeYGbPkfR8dQbK1VWm9XTOLZG00sx2MzOT9I6+79RG98TT82Z1trnUoPXulvNESfOdcyf0\n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\nFLIAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = net.blobs['fc6'].data[0]\n", + "plt.subplot(2, 1, 1)\n", + "plt.plot(feat.flat)\n", + "plt.subplot(2, 1, 2)\n", + "_ = plt.hist(feat.flat[feat.flat > 0], bins=100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The final probability output, `prob`" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = net.blobs['prob'].data[0]\n", + "plt.figure(figsize=(15, 3))\n", + "plt.plot(feat.flat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note the cluster of strong predictions; the labels are sorted semantically. The top peaks correspond to the top predicted labels, as shown above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. Try your own image\n", + "\n", + "Now we'll grab an image from the web and classify it using the steps above.\n", + "\n", + "* Try setting `my_image_url` to any JPEG image URL." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# download an image\n", + "my_image_url = \"...\" # paste your URL here\n", + "# for example:\n", + "# my_image_url = \"https://upload.wikimedia.org/wikipedia/commons/b/be/Orang_Utan%2C_Semenggok_Forest_Reserve%2C_Sarawak%2C_Borneo%2C_Malaysia.JPG\"\n", + "!wget -O image.jpg $my_image_url\n", + "\n", + "# transform it and copy it into the net\n", + "image = caffe.io.load_image('image.jpg')\n", + "net.blobs['data'].data[...] = transformer.preprocess('data', image)\n", + "\n", + "# perform classification\n", + "net.forward()\n", + "\n", + "# obtain the output probabilities\n", + "output_prob = net.blobs['prob'].data[0]\n", + "\n", + "# sort top five predictions from softmax output\n", + "top_inds = output_prob.argsort()[::-1][:5]\n", + "\n", + "plt.imshow(image)\n", + "\n", + "print 'probabilities and labels:'\n", + "zip(output_prob[top_inds], labels[top_inds])" + ] + } + ], + "metadata": { + "description": "Instant recognition with a pre-trained model and a tour of the net interface for visualizing features and parameters layer-by-layer.", + "example_name": "Image Classification and Filter Visualization", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "priority": 1 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/01-learning-lenet.ipynb b/3rdparty/caffe/examples/01-learning-lenet.ipynb new file mode 100644 index 00000000..1c328260 --- /dev/null +++ b/3rdparty/caffe/examples/01-learning-lenet.ipynb @@ -0,0 +1,1288 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Solving in Python with LeNet\n", + "\n", + "In this example, we'll explore learning with Caffe in Python, using the fully-exposed `Solver` interface." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Setup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Set up the Python environment: we'll use the `pylab` import for numpy and plot inline." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pylab import *\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Import `caffe`, adding it to `sys.path` if needed. Make sure you've built pycaffe." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "caffe_root = '../' # this file should be run from {caffe_root}/examples (otherwise change this line)\n", + "\n", + "import sys\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "import caffe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* We'll be using the provided LeNet example data and networks (make sure you've downloaded the data and created the databases, as below)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading...\n", + "Creating lmdb...\n", + "Done.\n" + ] + } + ], + "source": [ + "# run scripts from caffe root\n", + "import os\n", + "os.chdir(caffe_root)\n", + "# Download data\n", + "!data/mnist/get_mnist.sh\n", + "# Prepare data\n", + "!examples/mnist/create_mnist.sh\n", + "# back to examples\n", + "os.chdir('examples')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Creating the net \n", + "\n", + "Now let's make a variant of LeNet, the classic 1989 convnet architecture.\n", + "\n", + "We'll need two external files to help out:\n", + "* the net `prototxt`, defining the architecture and pointing to the train/test data\n", + "* the solver `prototxt`, defining the learning parameters\n", + "\n", + "We start by creating the net. We'll write the net in a succinct and natural way as Python code that serializes to Caffe's protobuf model format.\n", + "\n", + "This network expects to read from pregenerated LMDBs, but reading directly from `ndarray`s is also possible using `MemoryDataLayer`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe import layers as L, params as P\n", + "\n", + "def lenet(lmdb, batch_size):\n", + " # our version of LeNet: a series of linear and simple nonlinear transformations\n", + " n = caffe.NetSpec()\n", + " \n", + " n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb,\n", + " transform_param=dict(scale=1./255), ntop=2)\n", + " \n", + " n.conv1 = L.Convolution(n.data, kernel_size=5, num_output=20, weight_filler=dict(type='xavier'))\n", + " n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", + " n.conv2 = L.Convolution(n.pool1, kernel_size=5, num_output=50, weight_filler=dict(type='xavier'))\n", + " n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", + " n.fc1 = L.InnerProduct(n.pool2, num_output=500, weight_filler=dict(type='xavier'))\n", + " n.relu1 = L.ReLU(n.fc1, in_place=True)\n", + " n.score = L.InnerProduct(n.relu1, num_output=10, weight_filler=dict(type='xavier'))\n", + " n.loss = L.SoftmaxWithLoss(n.score, n.label)\n", + " \n", + " return n.to_proto()\n", + " \n", + "with open('mnist/lenet_auto_train.prototxt', 'w') as f:\n", + " f.write(str(lenet('mnist/mnist_train_lmdb', 64)))\n", + " \n", + "with open('mnist/lenet_auto_test.prototxt', 'w') as f:\n", + " f.write(str(lenet('mnist/mnist_test_lmdb', 100)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The net has been written to disk in a more verbose but human-readable serialization format using Google's protobuf library. You can read, write, and modify this description directly. Let's take a look at the train net." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "layer {\r\n", + " name: \"data\"\r\n", + " type: \"Data\"\r\n", + " top: \"data\"\r\n", + " top: \"label\"\r\n", + " transform_param {\r\n", + " scale: 0.00392156862745\r\n", + " }\r\n", + " data_param {\r\n", + " source: \"mnist/mnist_train_lmdb\"\r\n", + " batch_size: 64\r\n", + " backend: LMDB\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"conv1\"\r\n", + " type: \"Convolution\"\r\n", + " bottom: \"data\"\r\n", + " top: \"conv1\"\r\n", + " convolution_param {\r\n", + " num_output: 20\r\n", + " kernel_size: 5\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"pool1\"\r\n", + " type: \"Pooling\"\r\n", + " bottom: \"conv1\"\r\n", + " top: \"pool1\"\r\n", + " pooling_param {\r\n", + " pool: MAX\r\n", + " kernel_size: 2\r\n", + " stride: 2\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"conv2\"\r\n", + " type: \"Convolution\"\r\n", + " bottom: \"pool1\"\r\n", + " top: \"conv2\"\r\n", + " convolution_param {\r\n", + " num_output: 50\r\n", + " kernel_size: 5\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"pool2\"\r\n", + " type: \"Pooling\"\r\n", + " bottom: \"conv2\"\r\n", + " top: \"pool2\"\r\n", + " pooling_param {\r\n", + " pool: MAX\r\n", + " kernel_size: 2\r\n", + " stride: 2\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"fc1\"\r\n", + " type: \"InnerProduct\"\r\n", + " bottom: \"pool2\"\r\n", + " top: \"fc1\"\r\n", + " inner_product_param {\r\n", + " num_output: 500\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"relu1\"\r\n", + " type: \"ReLU\"\r\n", + " bottom: \"fc1\"\r\n", + " top: \"fc1\"\r\n", + "}\r\n", + "layer {\r\n", + " name: \"score\"\r\n", + " type: \"InnerProduct\"\r\n", + " bottom: \"fc1\"\r\n", + " top: \"score\"\r\n", + " inner_product_param {\r\n", + " num_output: 10\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"loss\"\r\n", + " type: \"SoftmaxWithLoss\"\r\n", + " bottom: \"score\"\r\n", + " bottom: \"label\"\r\n", + " top: \"loss\"\r\n", + "}\r\n" + ] + } + ], + "source": [ + "!cat mnist/lenet_auto_train.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's see the learning parameters, which are also written as a `prototxt` file (already provided on disk). We're using SGD with momentum, weight decay, and a specific learning rate schedule." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# The train/test net protocol buffer definition\r\n", + "train_net: \"mnist/lenet_auto_train.prototxt\"\r\n", + "test_net: \"mnist/lenet_auto_test.prototxt\"\r\n", + "# test_iter specifies how many forward passes the test should carry out.\r\n", + "# In the case of MNIST, we have test batch size 100 and 100 test iterations,\r\n", + "# covering the full 10,000 testing images.\r\n", + "test_iter: 100\r\n", + "# Carry out testing every 500 training iterations.\r\n", + "test_interval: 500\r\n", + "# The base learning rate, momentum and the weight decay of the network.\r\n", + "base_lr: 0.01\r\n", + "momentum: 0.9\r\n", + "weight_decay: 0.0005\r\n", + "# The learning rate policy\r\n", + "lr_policy: \"inv\"\r\n", + "gamma: 0.0001\r\n", + "power: 0.75\r\n", + "# Display every 100 iterations\r\n", + "display: 100\r\n", + "# The maximum number of iterations\r\n", + "max_iter: 10000\r\n", + "# snapshot intermediate results\r\n", + "snapshot: 5000\r\n", + "snapshot_prefix: \"mnist/lenet\"\r\n" + ] + } + ], + "source": [ + "!cat mnist/lenet_auto_solver.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Loading and checking the solver\n", + "\n", + "* Let's pick a device and load the solver. We'll use SGD (with momentum), but other methods (such as Adagrad and Nesterov's accelerated gradient) are also available." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "caffe.set_device(0)\n", + "caffe.set_mode_gpu()\n", + "\n", + "### load the solver and create train and test nets\n", + "solver = None # ignore this workaround for lmdb data (can't instantiate two solvers on the same data)\n", + "solver = caffe.SGDSolver('mnist/lenet_auto_solver.prototxt')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* To get an idea of the architecture of our net, we can check the dimensions of the intermediate features (blobs) and parameters (these will also be useful to refer to when manipulating data later)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('data', (64, 1, 28, 28)),\n", + " ('label', (64,)),\n", + " ('conv1', (64, 20, 24, 24)),\n", + " ('pool1', (64, 20, 12, 12)),\n", + " ('conv2', (64, 50, 8, 8)),\n", + " ('pool2', (64, 50, 4, 4)),\n", + " ('fc1', (64, 500)),\n", + " ('score', (64, 10)),\n", + " ('loss', ())]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# each output is (batch size, feature dim, spatial dim)\n", + "[(k, v.data.shape) for k, v in solver.net.blobs.items()]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('conv1', (20, 1, 5, 5)),\n", + " ('conv2', (50, 20, 5, 5)),\n", + " ('fc1', (500, 800)),\n", + " ('score', (10, 500))]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# just print the weight sizes (we'll omit the biases)\n", + "[(k, v[0].data.shape) for k, v in solver.net.params.items()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Before taking off, let's check that everything is loaded as we expect. We'll run a forward pass on the train and test nets and check that they contain our data." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'loss': array(2.365971088409424, dtype=float32)}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solver.net.forward() # train net\n", + "solver.test_nets[0].forward() # test net (there can be more than one)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train labels: [ 5. 0. 4. 1. 9. 2. 1. 3.]\n" + ] + }, + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# we use a little trick to tile the first eight images\n", + "imshow(solver.net.blobs['data'].data[:8, 0].transpose(1, 0, 2).reshape(28, 8*28), cmap='gray'); axis('off')\n", + "print 'train labels:', solver.net.blobs['label'].data[:8]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "test labels: [ 7. 2. 1. 0. 4. 1. 4. 9.]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWwAAABKCAYAAACfHW4mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztndlTm/d+/1/aN4SEECCQ2MS+L8Y4OMHGS+I4mbTHMznt\nmbbT02WmnXOu+zf0ttOr3nQ6016kaZxOTtOck9ixseMFbGyIzb6DAIFYBQjtEvpd5Pc88XZibCME\np89rxjdGiI8ePc/7+/18vp9FlkgkkJCQkJA4/MhTbYCEhISExN6QBFtCQkLiiCAJtoSEhMQRQRJs\nCQkJiSOCJNgSEhISRwRJsCUkJCSOCJJgS0hISBwRJMGWkJCQOCJIgi0hISFxRJAEW0JCQuKIoEzW\nG8tkMqnmXUJCQuI1SCQSshf9v7TDlpCQkDgiSIItISEhcURIWkjkDx2tVktxcTF6vR61Wo3RaCQr\nKwuLxQLA8vIyi4uLbG5u4vF4WFtbS7HFEhISRx1JsF8DjUaDzWbj3Llz5OTkYDAYcDgc1NfXU1FR\nAcD3339Pd3c3ExMT3Llzh42NDXZ3d1Ns+e9HLpej0+nQaDSEQiEikQixWCxl9shkMlQqFRqNBpVK\nBUAsFiMYDBKLxZDaAkv8X0QS7NfgxIkTfPTRR5w6dQqz2YxSqUSr1WI0GkUhKS4uJi0tjerqagKB\nANPT02xvb6dUBH8fKpUKi8XCxx9/THt7O1euXKGrq4uxsbGU2COTyVCr1bS0tHD69Gmam5uJRCKM\njY3x+eefMzs7i9/vT4ltEhKpRBLsV8BgMFBTU8OFCxe4cOECTqcTnU5HPB4nEAiwsbHB/Pw8Op2O\njIwMCgsLycjIoK6ujkePHjE0NHRoBdtms9HU1MTbb7/N4OAger0+ZfbI5XL0ej319fV89NFH1NTU\nEI1GcTgcjIyM4PP5UibYCoUCo9FIaWkpmZmZdHd3s729/dLfMxqNGAwGAoEAwWCQaDR6ANb+NCqV\niszMTCoqKrDZbExMTDA/P8/a2tqBeDBKpRKTyURNTQ0AGxsbLC4usrOzQyQS2fP7KBQKNBoNJpOJ\nQCCAz+c71N7smyAdOu4RmUxGZmYmf/Znf8bPfvYzampq0Gq1xGIx/H4/brebhw8fcvXqVbq7u1lY\nWEChUGCxWKisrKShoQGdTpfqj/FCVCoVdrsdk8lELBbD6/USCARSZo9SqSQjI4Pq6mpaWlrQ6XSY\nTCacTid1dXXk5OSkzDa1Wo3D4eBP//RP+Yd/+Ic925KTk0N1dTV5eXmkpaUl2cq9odPpqK2t5de/\n/jX/9E//xM9//nNKS0uRy+XIZC/MKttXDAYDZWVl/OpXv+Lv/u7v+OCDDygoKHjl50Sr1ZKdnU1D\nQwP5+fkoFIqk2i+TyVAqlahUKlQq1YFcKwFph71HMjIyKCsro6mpiby8PKLRKGtra3R2dnLz5k02\nNjZYW1vD5/Oh1+v5+OOPMZlMZGdno1ar0ev1yOWHc31UqVSikGxtbTEwMMDi4mJKbNFoNOTn5/OL\nX/yClpaWlNjwU2i1WsrLy8nNzX0lYcjLy6OtrQ2ZTMatW7e4detWki39aTQaDXa7nY8//pjGxkbM\nZjM/+9nPWFhYoLe3N6k7VLlcjlar5cMPP+QXv/gFNTU1uN1uXC4X29vbe94syOVyNBoN77//Pn/0\nR39ETk4O//u//8vKygobGxtJ8WZVKhVWq5VTp05RUFBAOBzm8uXLLC8vH8iuPmWCLcRNs7OzMZlM\nRCIR4vE4kUiEtbU1gsEgkUiEUCh0KNybtLQ0cnNzycvLQ6VS4fF4uH37Nl9++SU3btwQ7VUoFBQU\nFBAKhUS3MhgMsrW1RTweT/GneB6NRkNWVhZ1dXVotVpmZmZwu934fL4DtUOtVovXt6amhvPnz+N0\nOp96jbDzzs/PZ319Hb/fj8/nOzBvQCaTodPpqKysJDc395UWYKVSidlsxul0Mjs7i0KhYHd3N2WH\np0ajkaKiIlpaWnA4HCgUCtLT09FqtUm1SaFQYDKZqKur4/z587z99tt4vV7m5uYYGxtja2trz+Ei\njUZDeXk57e3tdHR0sLS0hEwmS4peCEJdVFRETU0N586do7CwkPX1da5fv87a2toftmDrdDrq6+vp\n6Oigrq4Or9dLKBRifX2dO3fu4Ha72djYYHl5+ZXiWcm0Nz09HYVCgc/nY3BwkH/5l39hcHDwqRim\n2Wzm9OnTHDt2jJycHJRKJUtLS4yMjBAKhVL4CV6MyWSitLSUjo4OfD4f33//fUrCIWlpabzzzju0\ntbXR3NxMdXU1BoPhqddoNBqcTid+vx+LxYLL5WJsbIy5ubkDsVEmk6HX66mqqsJms7G6urrn3/V6\nvSwvL9PS0kJGRgZqtZpwOJwywbZarZSWlpKVlYVOp2Nra4tHjx4xOzub1CwcjUZDQUEBf/VXf0V7\n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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "imshow(solver.test_nets[0].blobs['data'].data[:8, 0].transpose(1, 0, 2).reshape(28, 8*28), cmap='gray'); axis('off')\n", + "print 'test labels:', solver.test_nets[0].blobs['label'].data[:8]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Stepping the solver\n", + "\n", + "Both train and test nets seem to be loading data, and to have correct labels.\n", + "\n", + "* Let's take one step of (minibatch) SGD and see what happens." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "solver.step(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do we have gradients propagating through our filters? Let's see the updates to the first layer, shown here as a $4 \\times 5$ grid of $5 \\times 5$ filters." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 24.5, 19.5, -0.5)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ndLqQU7pBHUaf1OoE9YYRGtO9MzEyvcX1zHc6G6igxo5zuSzt2sVEvsRbzu68mlEq6lfp7oXA5FON\nHah1My0zgJyf90w/E2EG3IHN1cXOZMB0gVvOV6CqzqnIbhKdIdBQZ9gntiRTToyPF1SZ7jms14GZ\ngvMkr2rnjk85cvcfeKyMoJo11CB0QMOZ0PkGrZtFVN8qgHVwq4zGWXo77cD2TMGG1zpQY9fmPOxv\nthMGtGrp6T4jm0RleJ/SKY6HWv65Tjx1bNRj3jOYYV1O9OVGcqoOdxKcCJ8KTjnllC8l7sTyb5cT\naKec8hfIkQjt3yQn0E75VNl1zH+7Q58Rmicn0E75VNl1zH+7Q//bge7KCbRTTvkL5N8OdFceTkWd\ncsop30XOCO2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2U\nU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRT\nTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk28n9AwRVK\nLtEpzAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "imshow(solver.net.params['conv1'][0].diff[:, 0].reshape(4, 5, 5, 5)\n", + " .transpose(0, 2, 1, 3).reshape(4*5, 5*5), cmap='gray'); axis('off')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. Writing a custom training loop\n", + "\n", + "Something is happening. Let's run the net for a while, keeping track of a few things as it goes.\n", + "Note that this process will be the same as if training through the `caffe` binary. In particular:\n", + "* logging will continue to happen as normal\n", + "* snapshots will be taken at the interval specified in the solver prototxt (here, every 5000 iterations)\n", + "* testing will happen at the interval specified (here, every 500 iterations)\n", + "\n", + "Since we have control of the loop in Python, we're free to compute additional things as we go, as we show below. We can do many other things as well, for example:\n", + "* write a custom stopping criterion\n", + "* change the solving process by updating the net in the loop" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration 0 testing...\n", + "Iteration 25 testing...\n", + "Iteration 50 testing...\n", + "Iteration 75 testing...\n", + "Iteration 100 testing...\n", + "Iteration 125 testing...\n", + "Iteration 150 testing...\n", + "Iteration 175 testing...\n", + "CPU times: user 12.6 s, sys: 2.4 s, total: 15 s\n", + "Wall time: 14.4 s\n" + ] + } + ], + "source": [ + "%%time\n", + "niter = 200\n", + "test_interval = 25\n", + "# losses will also be stored in the log\n", + "train_loss = zeros(niter)\n", + "test_acc = zeros(int(np.ceil(niter / test_interval)))\n", + "output = zeros((niter, 8, 10))\n", + "\n", + "# the main solver loop\n", + "for it in range(niter):\n", + " solver.step(1) # SGD by Caffe\n", + " \n", + " # store the train loss\n", + " train_loss[it] = solver.net.blobs['loss'].data\n", + " \n", + " # store the output on the first test batch\n", + " # (start the forward pass at conv1 to avoid loading new data)\n", + " solver.test_nets[0].forward(start='conv1')\n", + " output[it] = solver.test_nets[0].blobs['score'].data[:8]\n", + " \n", + " # run a full test every so often\n", + " # (Caffe can also do this for us and write to a log, but we show here\n", + " # how to do it directly in Python, where more complicated things are easier.)\n", + " if it % test_interval == 0:\n", + " print 'Iteration', it, 'testing...'\n", + " correct = 0\n", + " for test_it in range(100):\n", + " solver.test_nets[0].forward()\n", + " correct += sum(solver.test_nets[0].blobs['score'].data.argmax(1)\n", + " == solver.test_nets[0].blobs['label'].data)\n", + " test_acc[it // test_interval] = correct / 1e4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Let's plot the train loss and test accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_, ax1 = subplots()\n", + "ax2 = ax1.twinx()\n", + "ax1.plot(arange(niter), train_loss)\n", + "ax2.plot(test_interval * arange(len(test_acc)), test_acc, 'r')\n", + "ax1.set_xlabel('iteration')\n", + "ax1.set_ylabel('train loss')\n", + "ax2.set_ylabel('test accuracy')\n", + "ax2.set_title('Test Accuracy: {:.2f}'.format(test_acc[-1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The loss seems to have dropped quickly and coverged (except for stochasticity), while the accuracy rose correspondingly. Hooray!\n", + "\n", + "* Since we saved the results on the first test batch, we can watch how our prediction scores evolved. We'll plot time on the $x$ axis and each possible label on the $y$, with lightness indicating confidence." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEkhJREFUeJzt3XuwXWV5x/HfL5eTK8bQJCYniQ2h0BJGKwQhIIJU26GM\noG2tSFultkOno9aUKiMy0/7VjlamIzpOO2OhKHhrixZ1WhBaKCKWxBwSCCRyaaQlSXOhBUzI9SRP\n/9g74eRwLus5K+/Ze8H3M8Ow197Pftd71rv22k/WWvt9HBECAADA2E3odAcAAACajoQKAACgJhIq\nAACAmkioAAAAaiKhAgAAqImECgAAoKZJnVy5beZsAAAAjRERHur5ogmV7Ysl3SBpoqQbI+IvB8dc\nddVVL3tfX1+fli9fPub1ZufWOnToUJG2Dx8+XCS2VH+zbQ/X5w0bNmjZsmXHPNff31+53VKxknTg\nwIHKsQcPHizS7r59+yrH7t+/v3Jsdqztlx8Tnn32Wc2ZM+dlz0+cODHVdlWZ/W3v3r2VYzPbONt2\nZqwz+2dmWww1dlJrHxjqtUmTqh/qe3p6KsdOnjy5cmymDxnDbYvhZD4nmdjM+A21X+zfv19Tpkyp\nFDuSzHdJqW1Ran7L7FiXaHuk74Vil/xsT5T0BUkXS1om6Qrbp5VaHwAAQKeUvIfqbElPRcTTEXFQ\n0jckvavg+gAAADqiZEK1UNIzA5Y3t58b1YIFC4p0CONj7ty5ne4Cxmj69Omd7gLwqlTqsjrGT8mE\naswXUXt7e49nPzDOSKiai4Sq2UreY4KySt1jhvFTcgS3SFo8YHmxWmepjtHX13f08YIFC0imAABA\nVzh8+HDlm+xLJlRrJJ1ie4mkrZIul3TF4KA6v+YDAAAoZcKEYy/kjfQrymIJVUT02/6IpO+pNW3C\nTRGxsdT6AAAAOqXoRduIuEPSHSXXAQAA0GmNuQsuc8Ne9tcSpdrOtDv4tGIn2s3K3ACbic30OTOx\noCRNnTq1SOyMGTMqx2Zu/M5MspiJlXLbOROb+YxkYjN/X/YYkPn7St34XeozIpWb2DMTO9SklcOZ\nOXNmkXalcr+mKzU5cyY2249MbGai4+MxQXTddrPxVSfsPfnkk4d9jVp+AAAANZFQAQAA1ERCBQAA\nUBMJFQAAQE0kVAAAADWRUAEAANREQgUAAFATCRUAAEBNJFQAAAA1kVABAADUREIFAABQU8dr+VWt\na1aqflZWpjZQf39/5diIKBJbUqYfper+ZfeLUm1n6oNl6rCVHOtSbWfqxmVqMWZis/tFpp5YqbqG\nmfHI9LekzLbI9HnPnj2VYzPHWSlXk65UbEa29mCpeqXTpk2rHJs5BpSs05v5TFWt5TeSomeobC+2\nfa/tx2w/avujJdcHAADQCaXPUB2UdHVErLM9U1Kf7bsjYmPh9QIAAIybomeoImJbRKxrP94taaOk\n3pLrBAAAGG/jdlO67SWSzpC0arzWCQAAMB7GJaFqX+67TdLK9pkqAACAV4ziv/KzPVnSNyV9JSJu\nH/z6gw8+ePTxokWLtGjRotJdAgAAGNWmTZu0adOmSrFFEyq3frt8k6QNEXHDUDErVqwo2QUAAIAx\nWbp0qZYuXXp0+Z577hk2tvQlv7dI+h1JF9le2/7v4sLrBAAAGFdFz1BFxA/EbOwAAOAVjmQHAACg\npo6XnsmWDSihW8o4VNUt5UiaWHomI1NWoxv6XHI/7oaSPZl2MyWipHL7fakyNVOmTKkcm43v6emp\nHJvpc6bdzHbLlKmRyu3LmdIspWKl3FiXKueU+fxlSvZkx3r//v2VY7u+9AwAAMCrAQkVAABATSRU\nAAAANZFQAQAA1ERCBQAAUBMJFQAAQE0kVAAAADWRUAEAANREQgUAAFATCRUAAEBNHS89k5kavpRS\nJUZKlbPIlBjJliPJ9CNTXqAbtkVWqbYzf1+mHMK+fftS/ch89jLlITIypS8mTap+uMp8pqXc5zqz\n3bIlcKrKlHzJyoxJdjtXVbKkVEbm7+uWEmaZz0lGqZI9pfahbNvHY58bdsvb/g1JIWmotUREfKvK\nCmxPlLRG0uaIuHRMvQQAAOhiI6Wyl6qVUA2nUkIlaaWkDZJOqNopAACAJhk2oYqI363buO1Fki6R\n9BeS/qRuewAAAN1o1AuMtufbvsn2ne3lZbZ/v2L7n5V0jaTuuLgMAABQQJU7tr4k6S5Jve3lJyVd\nPdqbbL9T0o6IWKuh78MCAAB4Rajyc4A5EfH3tq+VpIg4aLu/wvvOk3SZ7UskTZX0Gtu3RMQHBgb1\n9fUdfbxgwQL19vYKAACg03bs2KGdO3dWiq2SUO22/TNHFmyvkPTCaG+KiOskXdd+z4WSPj44mZKk\n5cuXV+ooAADAeJo3b57mzZt3dHnjxo3DxlZJqD4m6buSltr+oaS5kt4zhn5Vn3wHAACgQUZNqCKi\nz/YFkn5erXuhHo+I1Cx/EXGfpPvG1kUAAIDuNmpCZXuapA9JOl+ts0z32/6biMhNywwAAPAKVeWS\n3y2Sfirp82qdofotSbdK+s2C/QIAAGiMKgnV6RGxbMDyPbY3HLcOFKg71MQ6UN3S50ztsUztqlJ1\n/7K10krVFMzIjPXs2bOL9EEqV0Mrs90ydfEydQ337NlTOVbK9XnGjBmVY3t6eirHTp06tXJstpZf\nyc9Up/uQ2S+ybWeOcZl9LtPnbB3NTJ8zx6LMd3UmNrMvZ49ZmbaPRy5SpXcP2T73yEL7V359I8QD\nAAC8qoxUHHn9gJgHbD+j1j1Ur5f0+Dj0DQAAoBFGK44MAACAUYxUHPnpgcu256k14zkAAAAGqFIc\n+TLbT0r6iVpzST0t6Y7C/QIAAGiMKjel/7mkcyU9EREnSXq7pFVFewUAANAgVRKqgxHxrKQJtidG\nxL2SzircLwAAgMaoMvHCc7ZPkHS/pK/a3iFpd9luAQAANEeVM1TvlrRH0tWS7pT0lPgFIAAAwFFV\niiMfORt1SNKXivYGAACggUaa2HO3WhN5DiUi4jXHpQMVp3svVQZEKleKoL+/v0i7mdgmypQXyJbg\nKLXtSpXVePHFF8fSnUpKbedSpSQmT55cOXbWrFmVY6VceY9Sx4vdu6vfSZE9HpbaPzPtZsa65DEg\nsx9l2p4+fXrl2Mw2zpRnknJlbUp9R2VK2mS2cWbssvHTpk1LtT2Ukeahmlm3cduvlXSjpNPVSs5+\nLyIerNsuAABANzn+lYmP9TlJ/xIR77E9SVL1qqIAAAANUSyhsj1L0lsj4kpJioh+SS+UWh8AAECn\nVL9QnXeSpJ22b7b9kO2/tV39IjMAAEBDlEyoJkk6U9JfR8SZkl6UdG3B9QEAAHREyXuoNkvaHBE/\nai/fpiESqlWrXqpis3DhQi1atKhglwAAAKrZtm2btm/fXim2WEIVEdtsP2P71Ih4QtI7JD02OO6c\nc84p1QUAAIAxmz9/vubPn390ef369cPGlv6V3x+pVa6mR9J/Svpg4fUBAACMu6IJVUQ8LOnNJdcB\nAADQaSVvSgcAAHhVKH3Jb1RVp77PTGWfVaqsRjeUiClZsqdU26XKkUj5MhVVlSons2/fvsqx2RIV\nmT5nZMYkU64jUxpiypQplWMlqaenp3JspkxNZvwyZUAysVK50laZY0DmGF61JJmUGzupXAmcTD8y\n7Wa/RzJjktmPMseLzN9XqkyNlNuPMrHD4QwVAABATSRUAAAANZFQAQAA1ERCBQAAUBMJFQAAQE0k\nVAAAADWRUAEAANREQgUAAFATCRUAAEBNJFQAAAA1dbz0TNVp8jPT3pcst5JRakr9Jk7VnylFkBm/\n7FiXKsGRMXv27MqxmRIq2TI8mf0oU6IiUwInE3vgwIHKsdlSVZn9c9asWZVj58+fXzk2W0IlI7Mv\nZ7bz3r17K8fu2rWrcmymZE9WtmxPVZl9LvNZnTp1aqofmf2o1PdO5vu61DFAypWJ2rNnT6rtoRQ9\nQ2X7k7Yfs73e9tds5wpsAQAANECxhMr2EklXSTozIt4gaaKk95VaHwAAQKeUvOT3U0kHJU23fUjS\ndElbCq4PAACgI4qdoYqI/5P0V5L+W9JWSc9HxL+WWh8AAECnlLzkd7KkP5a0RFKvpJm2f7vU+gAA\nADql5CW/syT9MCL+V5Jsf0vSeZK+OjBozZo1Rx/39vaqt7e3YJcAAACq2bJli7Zu3VoptmRC9WNJ\nf2p7mqR9kt4hafXgoLPOOqtgFwAAAMZm4cKFWrhw4dHlgSeBBit5D9XDkm6RtEbSI+2nv1hqfQAA\nAJ1SdGLPiPiMpM+UXAcAAECnUXoGAACgJhIqAACAmjpey69qDa1MLapMHaFukakvlak7lq1plqmV\nlOlHRqY+X6ZWk9QdtfwyMvUSs7XgMvXEMp+pTH23TM22zFhn9/uStdWqyhwDsnXHMts503amDlvm\n85TZ77PjkYnP7BelajFm65VmPieZ432p79WStWkz8Zl9bjicoQIAAKiJhAoAAKAmEioAAICaSKgA\nAABqIqECAACoiYQKAACgpq5MqLZs2dLpLqCGqoUk0X02b97c6S6ghp07d3a6CxijHTt2dLoLqKkr\nEyq+kJuN8Wsu/jHTbCRUzUVC1XxdmVABAAA0CQkVAABATc5Oa39cV253buUAAABJETFkvZyOJlQA\nAACvBFzyAwAAqImECgAAoKauS6hsX2z7x7aftP2JTvcHw7P9d7a3214/4LkTbd9t+wnbd9l+bSf7\niOHZXmz7XtuP2X7U9kfbzzOGXc72VNurbK+zvcH2p9rPM3YNYnui7bW2v9teZvwarKsSKtsTJX1B\n0sWSlkm6wvZpne0VRnCzWmM10LWS7o6IUyX9W3sZ3emgpKsj4nRJKyR9uP15Ywy7XETsk3RRRLxJ\n0hslXWT7fDF2TbNS0gZJR25mZvwarKsSKklnS3oqIp6OiIOSviHpXR3uE4YREfdLem7Q05dJ+nL7\n8ZclvXtcO4XKImJbRKxrP94taaOkhWIMGyEi9rQf9kiaqNZnkbFrCNuLJF0i6UZJR341xvg1WLcl\nVAslPTNgeXP7OTTH6yJie/vxdkmv62RnUI3tJZLOkLRKjGEj2J5ge51aY3RvRDwmxq5JPivpGkmH\nBzzH+DVYtyVUzOHwChKtOTkY0y5ne6akb0paGRG7Br7GGHaviDjcvuS3SNIFti8a9Dpj16Vsv1PS\njohYq5fOTh2D8WuebkuotkhaPGB5sVpnqdAc223PlyTbCyRRoKqL2Z6sVjJ1a0Tc3n6aMWyQiHhB\n0j9LWi7GrinOk3SZ7Z9I+rqkX7J9qxi/Ruu2hGqNpFNsL7HdI+lySd/pcJ+Q8x1JV7YfXynp9hFi\n0UG2LekmSRsi4oYBLzGGXc72nCO/ALM9TdIvS1orxq4RIuK6iFgcESdJep+keyLi/WL8Gq3rZkq3\n/auSblDrJsubIuJTHe4ShmH765IulDRHrev9fybp25L+QdLrJT0t6b0R8Xyn+ojhtX8V9n1Jj+il\nSwuflLRajGFXs/0GtW5antD+79aIuN72iWLsGsX2hZI+FhGXMX7N1nUJFQAAQNN02yU/AACAxiGh\nAgAAqImECgAAoCYSKgAAgJpIqAAAAGoioQIAAKiJhApAx9l+oP3/n7V9xXFu+7qh1gUAxxPzUAHo\nGrbfptYkh5cm3jMpIvpHeH1XRJxwPPoHAMPhDBWAjrO9u/3w05Leanut7ZW2J9i+3vZq2w/b/oN2\n/Nts32/725IebT93u+01th+1fVX7uU9LmtZu79aB63LL9bbX237E9nsHtP3vtv/R9kbbXxnfrQGg\niSZ1ugMAoJdK33xC0sePnKFqJ1DPR8TZtqdI+oHtu9qxZ0g6PSL+q738wYh4rl3bbrXt2yLiWtsf\njogzhljXr0v6RUlvlDRX0o9sf7/92pskLZP0P5IesP2WiOBSIYBhcYYKQDfxoOVfkfQB22slPSjp\nREk/135t9YBkSpJW2l4n6T8kLZZ0yijrOl/S16Jlh6T7JL1ZrYRrdURsjdY9EeskLanxNwF4FeAM\nFYBu95GIuHvgE+17rV4ctPx2SSsiYp/teyVNHaXd0MsTuCNnr/YPeO6QOFYCGAVnqAB0k12SBt5A\n/j1JH7I9SZJsn2p7+hDve42k59rJ1C9IWjHgtYNH3j/I/ZIub9+nNVfSBZJW6+VJFgCMin91AegG\nR84MPSzpUPvS3c2SPq/W5baHbFvSDkm/1o4f+BPlOyX9oe0Nkh5X67LfEV+U9Ijtvoh4/5H3RcQ/\n2T63vc6QdE1E7LB92qC2NcQyAByDaRMAAABq4pIfAABATSRUAAAANZFQAQAA1ERCBQAAUBMJFQAA\nQE0kVAAAADWRUAEAANREQgUAAFDT/wMd8Optey5//QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nT5UJ3wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nJhIqAACAmv4fGZAJwEI7dFcAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(8):\n", + " figure(figsize=(2, 2))\n", + " imshow(solver.test_nets[0].blobs['data'].data[i, 0], cmap='gray')\n", + " figure(figsize=(10, 2))\n", + " imshow(output[:50, i].T, interpolation='nearest', cmap='gray')\n", + " xlabel('iteration')\n", + " ylabel('label')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We started with little idea about any of these digits, and ended up with correct classifications for each. If you've been following along, you'll see the last digit is the most difficult, a slanted \"9\" that's (understandably) most confused with \"4\".\n", + "\n", + "* Note that these are the \"raw\" output scores rather than the softmax-computed probability vectors. The latter, shown below, make it easier to see the confidence of our net (but harder to see the scores for less likely digits)." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEaRJREFUeJzt3X2wXVV5x/HfL/ct9yYhJA0vCYSGptDyohWqDCBKUNuh\njqBtrUhbpbZjp6PWlCojMtP+wbSjlelIHaedsVAUrNgWLeq0ILQliliJQAKEIC8daAM0pCEv3OTm\n5d7k6R/nBG5u7sta2Vn37H35fmbucM6+z9lr3bP2OXlYe+/1OCIEAACAwzer0x0AAABoOhIqAACA\nikioAAAAKiKhAgAAqIiECgAAoCISKgAAgIq6O9m4bdZsAAAAjRERHm970YTK9sWSrpfUJemGiPiL\nsTFLly495HXbt2/X/PnzD9rW09OT3O6sWTN74i3n7+vuzhvinPe5q6tr3O0vvPCClixZctC2nD6X\nis2N37t3b5HYl19+OTl2165dybG9vb3JsZI0b968Q7Zt2rRJxx577CHbFy9enLzfhQsXJscODw8n\nx65bty459qWXXkqOlfLe55GRkeTY/fv3J8fmrAloj/t9rv379497jOcc9xN9rsfT19eXHDve8TaR\n4447Ljl2wYIFybHSxO9d1djBwcHk2I0bNx6ybevWreP+LVu2bEneryQNDQ0lx+7bty85ljUrp1Ys\n87DdJemLki6WdLqky22fVqo9AACATik5lXOOpKcj4tmIGJb0dUnvLtgeAABAR5RMqE6QtGHU8+fa\n26aUM42M+smZ2ke9zJkzp9NdQAU5p6hQL7Nnz+50F1BRyYTqsE+4cmA1GwlVc5FQNRsJVXP19/d3\nuguoqORF6c9LGn3F+VK1ZqkOsn379lce9/X1kUwBAIDGKZlQPSDpFNvLJL0g6TJJl48NGns3HwAA\nQNMUS6giYsT2xyR9V61lE26MiMdLtQcAANApRdehiog7JN1Rsg0AAIBOcycX67Idxx9/fFJszgKV\nuYtZllpIMmeBvFIXk+YsQpgbv2fPnuTYnAUcSy42l/M+12Ex0pzxyFlcVMobkzosZlkXTezzTMaF\n+Afj+CxvopXSZ/aS4gAAANOAhAoAAKAiEioAAICKSKgAAAAqIqECAACoiIQKAACgIhIqAACAikio\nAAAAKiKhAgAAqIiECgAAoCISKgAAgIqKFkdOMX/+/KS4np6e5H3m1Eo7nPhUpWoq5dS6y61rmGPu\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nT5UJ3wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nv+YAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAD49JREFUeJzt3X2wXVdZx/HvLzc3bw1YWiIIDQ0qWNoBKQJT3imgUxko\nqAhUBUQHxwGkVmR4mdG/dEAYh8owOoNUXoqAClhgVKBKhQLSUEj6lvLmUG1BmqrhJQmxN7ePf9yT\n9PZyk7t3dtY956Tfz8ydnL3POnute9Y5d56stfZ6UlVIkiTp2K0ZdwMkSZKmnQGVJEnSQAZUkiRJ\nAxlQSZIkDWRAJUmSNJABlSRJ0kBrx1l5EvdskCRJU6Oqstz5pgFVkvOAi4EZ4O1V9SdLy5xyyik/\n9Lr9+/ezadOmu5zrs19W37217rjjjqkq2/K9OB7Xnp+fZ2Zm5rhfd2jZvtyjTZLUVbMpvyQzwFuB\n84AzgQuSPKRVfZIkSePScg3Vo4GvV9VNVTUHvB94VsP6JEmSxqJlQHV/4OZFx7eMzq1odna2SYO0\nOpJlp5clSTphtQyojnkBigHVdFuzxptHJUl3Ly0XpX8T2LroeCsLo1R3sX///sOPZ2dnDaYkSdLU\naRlQXQ08KMk24FvA84ALlhZaejefJEnStGkWUFXVwSQvBz7OwrYJl1TVja3qkyRJGpeMc6+dJLXc\nPlTLcR+qO036PlSTWrYv96GSJC01lo09u+h6R9i6des6X7NP2b7lN2zY0Llsn+nMPmU3btzYuez6\n9es7l4V+d+j1WXy+dKPPo+nz+5188smdywKcdtppnctu27atc9nTTz+9c9ktW7Z0Ltvn87Z2bb+v\nc5/+63PtVp+LSbnZoU+g3eo/VX31eZ/79HWrvxeT0tfTaBL+89qn7KTcFd61zUdb5+2nVpIkaSAD\nKkmSpIEMqCRJkgYyoJIkSRrIgEqSJGkgAypJkqSBDKgkSZIGMqCSJEkayIBKkiRpIAMqSZKkgQyo\nJEmSBhp7cuQzzjijU9k+uahamp+f71y2VR6vgwcPdi47KYmiW+nbhj791+d9npuba1K2T3snJRH2\npOTm6uNET4Td6vc70d83TbcWf4uq6ojJkZuOUCXZmuSKJDckuT7JK1rWJ0mSNA790tP3NwdcVFU7\nk2wGvpjk8qq6sXG9kiRJq6bpCFVVfbuqdo4e7wVuBO7Xsk5JkqTVtmqL0pNsA84GrlqtOiVJklbD\nqgRUo+m+DwAXjkaqJEmSThit11CRZBb4IPCeqrps6fO33Xbb4cebNm3ipJNOat0kSZKkFfW5k7Vp\nQJWFexYvAXZV1cXLldmyZUvLJkiSJB2TpVsvHC3Aaj3l9zjg14Bzk+wY/ZzXuE5JkqRV1XSEqqo+\ng7uxS5KkE5zBjiRJ0kDNF6WvZN++fcf9mi1TcPRJddIqtUerNvQt3yodSct0Fn1SubRKU9MqfVHL\n9+1E/1xMQgqVlil7Wl27Vf9NQn9Mq0no61Ym/XPhCJUkSdJABlSSJEkDGVBJkiQNZEAlSZI0kAGV\nJEnSQAZUkiRJAxlQSZIkDWRAJUmSNJABlSRJ0kAGVJIkSQONPfXM/v37x90E1qzpHle2SrXQKiXK\npKThmYSUPX3bMQltnvRUC0Od6L9fHyd6ah2tjlZ97WdoZUcMqJL8ElDAchFEVdWHulSQZAa4Gril\nqp55TK2UJEmaYEcboXomCwHVkXQKqIALgV3APbo2SpIkaZocMaCqql8fevEkpwFPB/4Y+L2h15Mk\nSZpEKy4eSnLfJJck+djo+Mwkv9nx+m8GXgV0X4wiSZI0Zbqsxn4n8AngfqPjrwEXrfSiJM8AdlfV\nDpZfhyVJknRC6BJQ3buq/gaYB6iqOeBgh9c9Fjg/yTeA9wFPSfLupYX2799/+Gdubq5H0yVJkiZD\nl4Bqb5JTDx0kOQf47kovqqrXVdXWqnog8Hzgk1X1wqXlNm3adPhndna2T9slSZImQpd9qF4JfBT4\n8SSfA7YAzzmGutzEQpIknZDSZbOuJGuBn2JhLdRXRtN+wytP6tRTT125YGNu7Hls5adtk8y+7ZiE\nNruZniRNlqpaNhBYcYQqyUbgpcDjWRhlujLJX1TVgePbREmSpOnUZcrv3cD3gLewMEL1K8ClwC83\nbJckSdLU6BJQnVVVZy46/mSSXcerAevWrTtelzqsz7TcJF27hb5TRgcPdrmBs23ZPlNtfaY/od/7\n0Wp6t49p+7yB05SS7p66LB76UpLHHDoY3eX3xXZNkiRJmi5HS4583aIyn01yMwtrqB4AfGUV2iZJ\nkjQVVkqOLEmSpBUcLTnyTYuPk/wosKF1gyRJkqZNl+TI5yf5GvAN4FPATcA/NW6XJEnS1OiyKP2P\ngMcAXx2lkXkqcFXTVkmSJE2RLgHVXFX9N7AmyUxVXQE8snG7JEmSpkaXfaj2JLkHcCXw10l2A3vb\nNkuSJGl6dBmhejawH7gI+BjwdbwDUJIk6bAVR6iq6tBo1DzwzqatkSRJmkJH29hzLwsbeS6nquqe\nx6MB69ev71SuTzqLlulW5ubmOpftkxalT9k+v1+fNC4tteq/vqlZ+pSfhLQvpnGRpOlwtH2oNg+9\neJKTgbcDZ7EQnP1GVX1+6HUlSZImSZdF6UP8GfCPVfWcJGuBkxrXJ0mStOqaBVRJfgR4QlW9CKCq\nDgLfbVWfJEnSuHS5y+9YPRC4Lck7knwpyV8m2dSwPkmSpLFoGVCtBR4B/HlVPQLYB7ymYX2SJElj\n0XIN1S3ALVX1hdHxB1gmoNqzZ8/hxxs2bGDjxo0NmyRJknT8NQuoqurbSW5O8uCq+irwNOCGpeXu\nda97tWqCJEnSqmh9l9/vsJCuZh3w78CLG9cnSZK06poGVFV1DfColnVIkiSNW8tF6ZIkSXcLraf8\nVvSDH/ygU7k1a7rHfi3Tkaxd2/0tm5mZ6Vy2T4qYlml4Wl27T9k+71uf/ujbjttvv71z2a6f477X\nbfW5mEYtUwH1uXbL75+k8ej6N+Bo32lHqCRJkgYyoJIkSRrIgEqSJGkgAypJkqSBDKgkSZIGMqCS\nJEkayIBKkiRpIAMqSZKkgQyoJEmSBjKgkiRJGmjsqWe6pmaYm5s77tc81vJd9Uln0Se1Tp/ULH3T\ndaxbt65z2Y0bN3Yu2ydFzMGDBzuXPXDgQOeyfcvPz8/3unZXs7OzTa7bUp/3ok+6nFapdfp+7ltd\nu893tc/fgL5a9UmfstIkOx5xQNMRqiSvTXJDkuuSvDfJ+pb1SZIkjUOzgCrJNuAlwCOq6qHADPD8\nVvVJkiSNS8spv+8Bc8CmJPPAJuCbDeuTJEkai2YjVFX1v8CfAv8JfAv4TlX9c6v6JEmSxqXllN9P\nAL8LbAPuB2xO8qut6pMkSRqXlovSHwl8rqr+p6oOAh8CHru00N69ew//3H777Q2bI0mS1EbLNVRf\nBv4gyUbgAPA0YPvSQps3b27YBEmSpPZarqG6Bng3cDVw7ej021rVJ0mSNC5NN/asqjcCb2xZhyRJ\n0riZekaSJGkgAypJkqSBxp7Lr2terD45o/rmYGuVy6+VPrnE+uY065Prbt++fZ3L9nmP+/R1nxyP\n0C9PYKv8ddP2eeurz+/X6r1o+R63+ixLmm6OUEmSJA1kQCVJkjSQAZUkSdJABlSSJEkDGVBJkiQN\nZEAlSZI00EQGVCZJnm723/Q60bd0kKRWDKh03PXdG0qTw4BKko7NRAZUkiRJ08SASpIkaaCMc4g/\nifMLkiRpalTVsjndxhpQSZIknQic8pMkSRrIgEqSJGmgiQuokpyX5MtJvpbk1eNuj44syV8luTXJ\ndYvOnZLk8iRfTfKJJCePs406siRbk1yR5IYk1yd5xei8fTjhkmxIclWSnUl2JXn96Lx9N0WSzCTZ\nkeSjo2P7b4pNVECVZAZ4K3AecCZwQZKHjLdVOop3sNBXi70GuLyqHgz8y+hYk2kOuKiqzgLOAV42\n+r7ZhxOuqg4A51bVw4GHAecmeTz23bS5ENgFHFrMbP9NsYkKqIBHA1+vqpuqag54P/CsMbdJR1BV\nVwJ7lpw+H3jX6PG7gGevaqPUWVV9u6p2jh7vBW4E7o99OBWqav/o4TpghoXvon03JZKcBjwdeDtw\n6K4x+2+KTVpAdX/g5kXHt4zOaXrcp6puHT2+FbjPOBujbpJsA84GrsI+nApJ1iTZyUIfXVFVN2Df\nTZM3A68C7lh0zv6bYpMWULmHwwmkFvbksE8nXJLNwAeBC6vq+4ufsw8nV1XdMZryOw14YpJzlzxv\n302oJM8AdlfVDu4cnboL+2/6TFpA9U1g66LjrSyMUml63JrkvgBJfgzYPeb26CiSzLIQTF1aVZeN\nTtuHU6Sqvgv8A/Az2HfT4rHA+Um+AbwPeEqSS7H/ptqkBVRXAw9Ksi3JOuB5wEfG3Cb18xHgRaPH\nLwIuO0pZjVGSAJcAu6rq4kVP2YcTLsm9D90BlmQj8LPADuy7qVBVr6uqrVX1QOD5wCer6gXYf1Nt\n4nZKT/LzwMUsLLK8pKpeP+Ym6QiSvA94EnBvFub7/xD4MPC3wAOAm4DnVtV3xtVGHdnorrBPA9dy\n59TCa4Ht2IcTLclDWVi0vGb0c2lVvSnJKdh3UyXJk4BXVtX59t90m7iASpIkadpM2pSfJEnS1DGg\nkiRJGsiASpIkaSADKkmSpIEMqCRJkgYyoJIkSRrIgErS2CX57Ojf05NccJyv/brl6pKk48l9qCRN\njCRPZmGTw2f2eM3aqjp4lOe/X1X3OB7tk6QjcYRK0tgl2Tt6+AbgCUl2JLkwyZokb0qyPck1SX5r\nVP7JSa5M8mHg+tG5y5JcneT6JC8ZnXsDsHF0vUsX15UFb0pyXZJrkzx30bX/NcnfJbkxyXtW992Q\nNI3WjrsBksSdqW9eDfz+oRGqUQD1nap6dJL1wGeSfGJU9mzgrKr6j9Hxi6tqzyi33fYkH6iq1yR5\nWVWdvUxdvwj8NPAwYAvwhSSfHj33cOBM4L+AzyZ5XFU5VSjpiByhkjRJsuT454AXJtkBfB44BfjJ\n0XPbFwVTABcm2Qn8G7AVeNAKdT0eeG8t2A18CngUCwHX9qr6Vi2sidgJbBvwO0m6G3CEStKke3lV\nXb74xGit1b4lx08FzqmqA0muADascN3ihwO4Q6NX/7fo3Dz+rZS0AkeoJE2S7wOLF5B/HHhpkrUA\nSR6cZNMyr7snsGcUTJ0BnLPoublDr1/iSuB5o3VaW4AnAtv54SBLklbk/7okTYJDI0PXAPOjqbt3\nAG9hYbrtS0kC7AZ+YVR+8S3KHwN+O8ku4CssTPsd8jbg2iRfrKoXHHpdVf19kseM6izgVVW1O8lD\nllybZY4l6S7cNkGSJGkgp/wkSZIGMqCSJEkayIBKkiRpIAMqSZKkgQyoJEmSBjKgkiRJGsiASpIk\naSADKkmSpIH+H12Zh6umpBoZAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(8):\n", + " figure(figsize=(2, 2))\n", + " imshow(solver.test_nets[0].blobs['data'].data[i, 0], cmap='gray')\n", + " figure(figsize=(10, 2))\n", + " imshow(exp(output[:50, i].T) / exp(output[:50, i].T).sum(0), interpolation='nearest', cmap='gray')\n", + " xlabel('iteration')\n", + " ylabel('label')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. Experiment with architecture and optimization\n", + "\n", + "Now that we've defined, trained, and tested LeNet there are many possible next steps:\n", + "\n", + "- Define new architectures for comparison\n", + "- Tune optimization by setting `base_lr` and the like or simply training longer\n", + "- Switching the solver type from `SGD` to an adaptive method like `AdaDelta` or `Adam`\n", + "\n", + "Feel free to explore these directions by editing the all-in-one example that follows.\n", + "Look for \"`EDIT HERE`\" comments for suggested choice points.\n", + "\n", + "By default this defines a simple linear classifier as a baseline.\n", + "\n", + "In case your coffee hasn't kicked in and you'd like inspiration, try out\n", + "\n", + "1. Switch the nonlinearity from `ReLU` to `ELU` or a saturing nonlinearity like `Sigmoid`\n", + "2. Stack more fully connected and nonlinear layers\n", + "3. Search over learning rate 10x at a time (trying `0.1` and `0.001`)\n", + "4. Switch the solver type to `Adam` (this adaptive solver type should be less sensitive to hyperparameters, but no guarantees...)\n", + "5. Solve for longer by setting `niter` higher (to 500 or 1,000 for instance) to better show training differences" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration 0 testing...\n", + "Iteration 25 testing...\n", + "Iteration 50 testing...\n", + "Iteration 75 testing...\n", + "Iteration 100 testing...\n", + "Iteration 125 testing...\n", + "Iteration 150 testing...\n", + "Iteration 175 testing...\n", + "Iteration 200 testing...\n", + "Iteration 225 testing...\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "train_net_path = 'mnist/custom_auto_train.prototxt'\n", + "test_net_path = 'mnist/custom_auto_test.prototxt'\n", + "solver_config_path = 'mnist/custom_auto_solver.prototxt'\n", + "\n", + "### define net\n", + "def custom_net(lmdb, batch_size):\n", + " # define your own net!\n", + " n = caffe.NetSpec()\n", + " \n", + " # keep this data layer for all networks\n", + " n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb,\n", + " transform_param=dict(scale=1./255), ntop=2)\n", + " \n", + " # EDIT HERE to try different networks\n", + " # this single layer defines a simple linear classifier\n", + " # (in particular this defines a multiway logistic regression)\n", + " n.score = L.InnerProduct(n.data, num_output=10, weight_filler=dict(type='xavier'))\n", + " \n", + " # EDIT HERE this is the LeNet variant we have already tried\n", + " # n.conv1 = L.Convolution(n.data, kernel_size=5, num_output=20, weight_filler=dict(type='xavier'))\n", + " # n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", + " # n.conv2 = L.Convolution(n.pool1, kernel_size=5, num_output=50, weight_filler=dict(type='xavier'))\n", + " # n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", + " # n.fc1 = L.InnerProduct(n.pool2, num_output=500, weight_filler=dict(type='xavier'))\n", + " # EDIT HERE consider L.ELU or L.Sigmoid for the nonlinearity\n", + " # n.relu1 = L.ReLU(n.fc1, in_place=True)\n", + " # n.score = L.InnerProduct(n.fc1, num_output=10, weight_filler=dict(type='xavier'))\n", + " \n", + " # keep this loss layer for all networks\n", + " n.loss = L.SoftmaxWithLoss(n.score, n.label)\n", + " \n", + " return n.to_proto()\n", + "\n", + "with open(train_net_path, 'w') as f:\n", + " f.write(str(custom_net('mnist/mnist_train_lmdb', 64))) \n", + "with open(test_net_path, 'w') as f:\n", + " f.write(str(custom_net('mnist/mnist_test_lmdb', 100)))\n", + "\n", + "### define solver\n", + "from caffe.proto import caffe_pb2\n", + "s = caffe_pb2.SolverParameter()\n", + "\n", + "# Set a seed for reproducible experiments:\n", + "# this controls for randomization in training.\n", + "s.random_seed = 0xCAFFE\n", + "\n", + "# Specify locations of the train and (maybe) test networks.\n", + "s.train_net = train_net_path\n", + "s.test_net.append(test_net_path)\n", + "s.test_interval = 500 # Test after every 500 training iterations.\n", + "s.test_iter.append(100) # Test on 100 batches each time we test.\n", + "\n", + "s.max_iter = 10000 # no. of times to update the net (training iterations)\n", + " \n", + "# EDIT HERE to try different solvers\n", + "# solver types include \"SGD\", \"Adam\", and \"Nesterov\" among others.\n", + "s.type = \"SGD\"\n", + "\n", + "# Set the initial learning rate for SGD.\n", + "s.base_lr = 0.01 # EDIT HERE to try different learning rates\n", + "# Set momentum to accelerate learning by\n", + "# taking weighted average of current and previous updates.\n", + "s.momentum = 0.9\n", + "# Set weight decay to regularize and prevent overfitting\n", + "s.weight_decay = 5e-4\n", + "\n", + "# Set `lr_policy` to define how the learning rate changes during training.\n", + "# This is the same policy as our default LeNet.\n", + "s.lr_policy = 'inv'\n", + "s.gamma = 0.0001\n", + "s.power = 0.75\n", + "# EDIT HERE to try the fixed rate (and compare with adaptive solvers)\n", + "# `fixed` is the simplest policy that keeps the learning rate constant.\n", + "# s.lr_policy = 'fixed'\n", + "\n", + "# Display the current training loss and accuracy every 1000 iterations.\n", + "s.display = 1000\n", + "\n", + "# Snapshots are files used to store networks we've trained.\n", + "# We'll snapshot every 5K iterations -- twice during training.\n", + "s.snapshot = 5000\n", + "s.snapshot_prefix = 'mnist/custom_net'\n", + "\n", + "# Train on the GPU\n", + "s.solver_mode = caffe_pb2.SolverParameter.GPU\n", + "\n", + "# Write the solver to a temporary file and return its filename.\n", + "with open(solver_config_path, 'w') as f:\n", + " f.write(str(s))\n", + "\n", + "### load the solver and create train and test nets\n", + "solver = None # ignore this workaround for lmdb data (can't instantiate two solvers on the same data)\n", + "solver = caffe.get_solver(solver_config_path)\n", + "\n", + "### solve\n", + "niter = 250 # EDIT HERE increase to train for longer\n", + "test_interval = niter / 10\n", + "# losses will also be stored in the log\n", + "train_loss = zeros(niter)\n", + "test_acc = zeros(int(np.ceil(niter / test_interval)))\n", + "\n", + "# the main solver loop\n", + "for it in range(niter):\n", + " solver.step(1) # SGD by Caffe\n", + " \n", + " # store the train loss\n", + " train_loss[it] = solver.net.blobs['loss'].data\n", + " \n", + " # run a full test every so often\n", + " # (Caffe can also do this for us and write to a log, but we show here\n", + " # how to do it directly in Python, where more complicated things are easier.)\n", + " if it % test_interval == 0:\n", + " print 'Iteration', it, 'testing...'\n", + " correct = 0\n", + " for test_it in range(100):\n", + " solver.test_nets[0].forward()\n", + " correct += sum(solver.test_nets[0].blobs['score'].data.argmax(1)\n", + " == solver.test_nets[0].blobs['label'].data)\n", + " test_acc[it // test_interval] = correct / 1e4\n", + "\n", + "_, ax1 = subplots()\n", + "ax2 = ax1.twinx()\n", + "ax1.plot(arange(niter), train_loss)\n", + "ax2.plot(test_interval * arange(len(test_acc)), test_acc, 'r')\n", + "ax1.set_xlabel('iteration')\n", + "ax1.set_ylabel('train loss')\n", + "ax2.set_ylabel('test accuracy')\n", + "ax2.set_title('Custom Test Accuracy: {:.2f}'.format(test_acc[-1]))" + ] + } + ], + "metadata": { + "description": "Define, train, and test the classic LeNet with the Python interface.", + "example_name": "Learning LeNet", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "priority": 2 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/02-fine-tuning.ipynb b/3rdparty/caffe/examples/02-fine-tuning.ipynb new file mode 100644 index 00000000..422259de --- /dev/null +++ b/3rdparty/caffe/examples/02-fine-tuning.ipynb @@ -0,0 +1,1175 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fine-tuning a Pretrained Network for Style Recognition\n", + "\n", + "In this example, we'll explore a common approach that is particularly useful in real-world applications: take a pre-trained Caffe network and fine-tune the parameters on your custom data.\n", + "\n", + "The advantage of this approach is that, since pre-trained networks are learned on a large set of images, the intermediate layers capture the \"semantics\" of the general visual appearance. Think of it as a very powerful generic visual feature that you can treat as a black box. On top of that, only a relatively small amount of data is needed for good performance on the target task." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we will need to prepare the data. This involves the following parts:\n", + "(1) Get the ImageNet ilsvrc pretrained model with the provided shell scripts.\n", + "(2) Download a subset of the overall Flickr style dataset for this demo.\n", + "(3) Compile the downloaded Flickr dataset into a database that Caffe can then consume." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "caffe_root = '../' # this file should be run from {caffe_root}/examples (otherwise change this line)\n", + "\n", + "import sys\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "import caffe\n", + "\n", + "caffe.set_device(0)\n", + "caffe.set_mode_gpu()\n", + "\n", + "import numpy as np\n", + "from pylab import *\n", + "%matplotlib inline\n", + "import tempfile\n", + "\n", + "# Helper function for deprocessing preprocessed images, e.g., for display.\n", + "def deprocess_net_image(image):\n", + " image = image.copy() # don't modify destructively\n", + " image = image[::-1] # BGR -> RGB\n", + " image = image.transpose(1, 2, 0) # CHW -> HWC\n", + " image += [123, 117, 104] # (approximately) undo mean subtraction\n", + "\n", + " # clamp values in [0, 255]\n", + " image[image < 0], image[image > 255] = 0, 255\n", + "\n", + " # round and cast from float32 to uint8\n", + " image = np.round(image)\n", + " image = np.require(image, dtype=np.uint8)\n", + "\n", + " return image" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Setup and dataset download\n", + "\n", + "Download data required for this exercise.\n", + "\n", + "- `get_ilsvrc_aux.sh` to download the ImageNet data mean, labels, etc.\n", + "- `download_model_binary.py` to download the pretrained reference model\n", + "- `finetune_flickr_style/assemble_data.py` downloads the style training and testing data\n", + "\n", + "We'll download just a small subset of the full dataset for this exercise: just 2000 of the 80K images, from 5 of the 20 style categories. (To download the full dataset, set `full_dataset = True` in the cell below.)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading...\n", + "--2016-02-24 00:28:36-- http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz\n", + "Resolving dl.caffe.berkeleyvision.org (dl.caffe.berkeleyvision.org)... 169.229.222.251\n", + "Connecting to dl.caffe.berkeleyvision.org (dl.caffe.berkeleyvision.org)|169.229.222.251|:80... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 17858008 (17M) [application/octet-stream]\n", + "Saving to: ‘caffe_ilsvrc12.tar.gz’\n", + "\n", + "100%[======================================>] 17,858,008 112MB/s in 0.2s \n", + "\n", + "2016-02-24 00:28:36 (112 MB/s) - ‘caffe_ilsvrc12.tar.gz’ saved [17858008/17858008]\n", + "\n", + "Unzipping...\n", + "Done.\n", + "Model already exists.\n", + "Downloading 2000 images with 7 workers...\n", + "Writing train/val for 1996 successfully downloaded images.\n" + ] + } + ], + "source": [ + "# Download just a small subset of the data for this exercise.\n", + "# (2000 of 80K images, 5 of 20 labels.)\n", + "# To download the entire dataset, set `full_dataset = True`.\n", + "full_dataset = False\n", + "if full_dataset:\n", + " NUM_STYLE_IMAGES = NUM_STYLE_LABELS = -1\n", + "else:\n", + " NUM_STYLE_IMAGES = 2000\n", + " NUM_STYLE_LABELS = 5\n", + "\n", + "# This downloads the ilsvrc auxiliary data (mean file, etc),\n", + "# and a subset of 2000 images for the style recognition task.\n", + "import os\n", + "os.chdir(caffe_root) # run scripts from caffe root\n", + "!data/ilsvrc12/get_ilsvrc_aux.sh\n", + "!scripts/download_model_binary.py models/bvlc_reference_caffenet\n", + "!python examples/finetune_flickr_style/assemble_data.py \\\n", + " --workers=-1 --seed=1701 \\\n", + " --images=$NUM_STYLE_IMAGES --label=$NUM_STYLE_LABELS\n", + "# back to examples\n", + "os.chdir('examples')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define `weights`, the path to the ImageNet pretrained weights we just downloaded, and make sure it exists." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\n", + "weights = os.path.join(caffe_root, 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", + "assert os.path.exists(weights)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load the 1000 ImageNet labels from `ilsvrc12/synset_words.txt`, and the 5 style labels from `finetune_flickr_style/style_names.txt`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded ImageNet labels:\n", + "n01440764 tench, Tinca tinca\n", + "n01443537 goldfish, Carassius auratus\n", + "n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias\n", + "n01491361 tiger shark, Galeocerdo cuvieri\n", + "n01494475 hammerhead, hammerhead shark\n", + "n01496331 electric ray, crampfish, numbfish, torpedo\n", + "n01498041 stingray\n", + "n01514668 cock\n", + "n01514859 hen\n", + "n01518878 ostrich, Struthio camelus\n", + "...\n", + "\n", + "Loaded style labels:\n", + "Detailed, Pastel, Melancholy, Noir, HDR\n" + ] + } + ], + "source": [ + "# Load ImageNet labels to imagenet_labels\n", + "imagenet_label_file = caffe_root + 'data/ilsvrc12/synset_words.txt'\n", + "imagenet_labels = list(np.loadtxt(imagenet_label_file, str, delimiter='\\t'))\n", + "assert len(imagenet_labels) == 1000\n", + "print 'Loaded ImageNet labels:\\n', '\\n'.join(imagenet_labels[:10] + ['...'])\n", + "\n", + "# Load style labels to style_labels\n", + "style_label_file = caffe_root + 'examples/finetune_flickr_style/style_names.txt'\n", + "style_labels = list(np.loadtxt(style_label_file, str, delimiter='\\n'))\n", + "if NUM_STYLE_LABELS > 0:\n", + " style_labels = style_labels[:NUM_STYLE_LABELS]\n", + "print '\\nLoaded style labels:\\n', ', '.join(style_labels)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Defining and running the nets\n", + "\n", + "We'll start by defining `caffenet`, a function which initializes the *CaffeNet* architecture (a minor variant on *AlexNet*), taking arguments specifying the data and number of output classes." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "from caffe import layers as L\n", + "from caffe import params as P\n", + "\n", + "weight_param = dict(lr_mult=1, decay_mult=1)\n", + "bias_param = dict(lr_mult=2, decay_mult=0)\n", + "learned_param = [weight_param, bias_param]\n", + "\n", + "frozen_param = [dict(lr_mult=0)] * 2\n", + "\n", + "def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1,\n", + " param=learned_param,\n", + " weight_filler=dict(type='gaussian', std=0.01),\n", + " bias_filler=dict(type='constant', value=0.1)):\n", + " conv = L.Convolution(bottom, kernel_size=ks, stride=stride,\n", + " num_output=nout, pad=pad, group=group,\n", + " param=param, weight_filler=weight_filler,\n", + " bias_filler=bias_filler)\n", + " return conv, L.ReLU(conv, in_place=True)\n", + "\n", + "def fc_relu(bottom, nout, param=learned_param,\n", + " weight_filler=dict(type='gaussian', std=0.005),\n", + " bias_filler=dict(type='constant', value=0.1)):\n", + " fc = L.InnerProduct(bottom, num_output=nout, param=param,\n", + " weight_filler=weight_filler,\n", + " bias_filler=bias_filler)\n", + " return fc, L.ReLU(fc, in_place=True)\n", + "\n", + "def max_pool(bottom, ks, stride=1):\n", + " return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride)\n", + "\n", + "def caffenet(data, label=None, train=True, num_classes=1000,\n", + " classifier_name='fc8', learn_all=False):\n", + " \"\"\"Returns a NetSpec specifying CaffeNet, following the original proto text\n", + " specification (./models/bvlc_reference_caffenet/train_val.prototxt).\"\"\"\n", + " n = caffe.NetSpec()\n", + " n.data = data\n", + " param = learned_param if learn_all else frozen_param\n", + " n.conv1, n.relu1 = conv_relu(n.data, 11, 96, stride=4, param=param)\n", + " n.pool1 = max_pool(n.relu1, 3, stride=2)\n", + " n.norm1 = L.LRN(n.pool1, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv2, n.relu2 = conv_relu(n.norm1, 5, 256, pad=2, group=2, param=param)\n", + " n.pool2 = max_pool(n.relu2, 3, stride=2)\n", + " n.norm2 = L.LRN(n.pool2, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv3, n.relu3 = conv_relu(n.norm2, 3, 384, pad=1, param=param)\n", + " n.conv4, n.relu4 = conv_relu(n.relu3, 3, 384, pad=1, group=2, param=param)\n", + " n.conv5, n.relu5 = conv_relu(n.relu4, 3, 256, pad=1, group=2, param=param)\n", + " n.pool5 = max_pool(n.relu5, 3, stride=2)\n", + " n.fc6, n.relu6 = fc_relu(n.pool5, 4096, param=param)\n", + " if train:\n", + " n.drop6 = fc7input = L.Dropout(n.relu6, in_place=True)\n", + " else:\n", + " fc7input = n.relu6\n", + " n.fc7, n.relu7 = fc_relu(fc7input, 4096, param=param)\n", + " if train:\n", + " n.drop7 = fc8input = L.Dropout(n.relu7, in_place=True)\n", + " else:\n", + " fc8input = n.relu7\n", + " # always learn fc8 (param=learned_param)\n", + " fc8 = L.InnerProduct(fc8input, num_output=num_classes, param=learned_param)\n", + " # give fc8 the name specified by argument `classifier_name`\n", + " n.__setattr__(classifier_name, fc8)\n", + " if not train:\n", + " n.probs = L.Softmax(fc8)\n", + " if label is not None:\n", + " n.label = label\n", + " n.loss = L.SoftmaxWithLoss(fc8, n.label)\n", + " n.acc = L.Accuracy(fc8, n.label)\n", + " # write the net to a temporary file and return its filename\n", + " with tempfile.NamedTemporaryFile(delete=False) as f:\n", + " f.write(str(n.to_proto()))\n", + " return f.name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let's create a *CaffeNet* that takes unlabeled \"dummy data\" as input, allowing us to set its input images externally and see what ImageNet classes it predicts." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dummy_data = L.DummyData(shape=dict(dim=[1, 3, 227, 227]))\n", + "imagenet_net_filename = caffenet(data=dummy_data, train=False)\n", + "imagenet_net = caffe.Net(imagenet_net_filename, weights, caffe.TEST)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define a function `style_net` which calls `caffenet` on data from the Flickr style dataset.\n", + "\n", + "The new network will also have the *CaffeNet* architecture, with differences in the input and output:\n", + "\n", + "- the input is the Flickr style data we downloaded, provided by an `ImageData` layer\n", + "- the output is a distribution over 20 classes rather than the original 1000 ImageNet classes\n", + "- the classification layer is renamed from `fc8` to `fc8_flickr` to tell Caffe not to load the original classifier (`fc8`) weights from the ImageNet-pretrained model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def style_net(train=True, learn_all=False, subset=None):\n", + " if subset is None:\n", + " subset = 'train' if train else 'test'\n", + " source = caffe_root + 'data/flickr_style/%s.txt' % subset\n", + " transform_param = dict(mirror=train, crop_size=227,\n", + " mean_file=caffe_root + 'data/ilsvrc12/imagenet_mean.binaryproto')\n", + " style_data, style_label = L.ImageData(\n", + " transform_param=transform_param, source=source,\n", + " batch_size=50, new_height=256, new_width=256, ntop=2)\n", + " return caffenet(data=style_data, label=style_label, train=train,\n", + " num_classes=NUM_STYLE_LABELS,\n", + " classifier_name='fc8_flickr',\n", + " learn_all=learn_all)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use the `style_net` function defined above to initialize `untrained_style_net`, a *CaffeNet* with input images from the style dataset and weights from the pretrained ImageNet model.\n", + "\n", + "\n", + "Call `forward` on `untrained_style_net` to get a batch of style training data." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "untrained_style_net = caffe.Net(style_net(train=False, subset='train'),\n", + " weights, caffe.TEST)\n", + "untrained_style_net.forward()\n", + "style_data_batch = untrained_style_net.blobs['data'].data.copy()\n", + "style_label_batch = np.array(untrained_style_net.blobs['label'].data, dtype=np.int32)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pick one of the style net training images from the batch of 50 (we'll arbitrarily choose #8 here). Display it, then run it through `imagenet_net`, the ImageNet-pretrained network to view its top 5 predicted classes from the 1000 ImageNet classes.\n", + "\n", + "Below we chose an image where the network's predictions happen to be reasonable, as the image is of a beach, and \"sandbar\" and \"seashore\" both happen to be ImageNet-1000 categories. For other images, the predictions won't be this good, sometimes due to the network actually failing to recognize the object(s) present in the image, but perhaps even more often due to the fact that not all images contain an object from the (somewhat arbitrarily chosen) 1000 ImageNet categories. Modify the `batch_index` variable by changing its default setting of 8 to another value from 0-49 (since the batch size is 50) to see predictions for other images in the batch. (To go beyond this batch of 50 images, first rerun the *above* cell to load a fresh batch of data into `style_net`.)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def disp_preds(net, image, labels, k=5, name='ImageNet'):\n", + " input_blob = net.blobs['data']\n", + " net.blobs['data'].data[0, ...] = image\n", + " probs = net.forward(start='conv1')['probs'][0]\n", + " top_k = (-probs).argsort()[:k]\n", + " print 'top %d predicted %s labels =' % (k, name)\n", + " print '\\n'.join('\\t(%d) %5.2f%% %s' % (i+1, 100*probs[p], labels[p])\n", + " for i, p in enumerate(top_k))\n", + "\n", + "def disp_imagenet_preds(net, image):\n", + " disp_preds(net, image, imagenet_labels, name='ImageNet')\n", + "\n", + "def disp_style_preds(net, image):\n", + " disp_preds(net, image, style_labels, name='style')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "actual label = Melancholy\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "batch_index = 8\n", + "image = style_data_batch[batch_index]\n", + "plt.imshow(deprocess_net_image(image))\n", + "print 'actual label =', style_labels[style_label_batch[batch_index]]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted ImageNet labels =\n", + "\t(1) 69.89% n09421951 sandbar, sand bar\n", + "\t(2) 21.76% n09428293 seashore, coast, seacoast, sea-coast\n", + "\t(3) 3.22% n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty\n", + "\t(4) 1.89% n04592741 wing\n", + "\t(5) 1.23% n09332890 lakeside, lakeshore\n" + ] + } + ], + "source": [ + "disp_imagenet_preds(imagenet_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also look at `untrained_style_net`'s predictions, but we won't see anything interesting as its classifier hasn't been trained yet.\n", + "\n", + "In fact, since we zero-initialized the classifier (see `caffenet` definition -- no `weight_filler` is passed to the final `InnerProduct` layer), the softmax inputs should be all zero and we should therefore see a predicted probability of 1/N for each label (for N labels). Since we set N = 5, we get a predicted probability of 20% for each class." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 20.00% Detailed\n", + "\t(2) 20.00% Pastel\n", + "\t(3) 20.00% Melancholy\n", + "\t(4) 20.00% Noir\n", + "\t(5) 20.00% HDR\n" + ] + } + ], + "source": [ + "disp_style_preds(untrained_style_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also verify that the activations in layer `fc7` immediately before the classification layer are the same as (or very close to) those in the ImageNet-pretrained model, since both models are using the same pretrained weights in the `conv1` through `fc7` layers." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "diff = untrained_style_net.blobs['fc7'].data[0] - imagenet_net.blobs['fc7'].data[0]\n", + "error = (diff ** 2).sum()\n", + "assert error < 1e-8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Delete `untrained_style_net` to save memory. (Hang on to `imagenet_net` as we'll use it again later.)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "del untrained_style_net" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Training the style classifier\n", + "\n", + "Now, we'll define a function `solver` to create our Caffe solvers, which are used to train the network (learn its weights). In this function we'll set values for various parameters used for learning, display, and \"snapshotting\" -- see the inline comments for explanations of what they mean. You may want to play with some of the learning parameters to see if you can improve on the results here!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe.proto import caffe_pb2\n", + "\n", + "def solver(train_net_path, test_net_path=None, base_lr=0.001):\n", + " s = caffe_pb2.SolverParameter()\n", + "\n", + " # Specify locations of the train and (maybe) test networks.\n", + " s.train_net = train_net_path\n", + " if test_net_path is not None:\n", + " s.test_net.append(test_net_path)\n", + " s.test_interval = 1000 # Test after every 1000 training iterations.\n", + " s.test_iter.append(100) # Test on 100 batches each time we test.\n", + "\n", + " # The number of iterations over which to average the gradient.\n", + " # Effectively boosts the training batch size by the given factor, without\n", + " # affecting memory utilization.\n", + " s.iter_size = 1\n", + " \n", + " s.max_iter = 100000 # # of times to update the net (training iterations)\n", + " \n", + " # Solve using the stochastic gradient descent (SGD) algorithm.\n", + " # Other choices include 'Adam' and 'RMSProp'.\n", + " s.type = 'SGD'\n", + "\n", + " # Set the initial learning rate for SGD.\n", + " s.base_lr = base_lr\n", + "\n", + " # Set `lr_policy` to define how the learning rate changes during training.\n", + " # Here, we 'step' the learning rate by multiplying it by a factor `gamma`\n", + " # every `stepsize` iterations.\n", + " s.lr_policy = 'step'\n", + " s.gamma = 0.1\n", + " s.stepsize = 20000\n", + "\n", + " # Set other SGD hyperparameters. Setting a non-zero `momentum` takes a\n", + " # weighted average of the current gradient and previous gradients to make\n", + " # learning more stable. L2 weight decay regularizes learning, to help prevent\n", + " # the model from overfitting.\n", + " s.momentum = 0.9\n", + " s.weight_decay = 5e-4\n", + "\n", + " # Display the current training loss and accuracy every 1000 iterations.\n", + " s.display = 1000\n", + "\n", + " # Snapshots are files used to store networks we've trained. Here, we'll\n", + " # snapshot every 10K iterations -- ten times during training.\n", + " s.snapshot = 10000\n", + " s.snapshot_prefix = caffe_root + 'models/finetune_flickr_style/finetune_flickr_style'\n", + " \n", + " # Train on the GPU. Using the CPU to train large networks is very slow.\n", + " s.solver_mode = caffe_pb2.SolverParameter.GPU\n", + " \n", + " # Write the solver to a temporary file and return its filename.\n", + " with tempfile.NamedTemporaryFile(delete=False) as f:\n", + " f.write(str(s))\n", + " return f.name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we'll invoke the solver to train the style net's classification layer.\n", + "\n", + "For the record, if you want to train the network using only the command line tool, this is the command:\n", + "\n", + "\n", + "build/tools/caffe train \\\n", + " -solver models/finetune_flickr_style/solver.prototxt \\\n", + " -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \\\n", + " -gpu 0\n", + "\n", + "\n", + "However, we will train using Python in this example.\n", + "\n", + "We'll first define `run_solvers`, a function that takes a list of solvers and steps each one in a round robin manner, recording the accuracy and loss values each iteration. At the end, the learned weights are saved to a file." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def run_solvers(niter, solvers, disp_interval=10):\n", + " \"\"\"Run solvers for niter iterations,\n", + " returning the loss and accuracy recorded each iteration.\n", + " `solvers` is a list of (name, solver) tuples.\"\"\"\n", + " blobs = ('loss', 'acc')\n", + " loss, acc = ({name: np.zeros(niter) for name, _ in solvers}\n", + " for _ in blobs)\n", + " for it in range(niter):\n", + " for name, s in solvers:\n", + " s.step(1) # run a single SGD step in Caffe\n", + " loss[name][it], acc[name][it] = (s.net.blobs[b].data.copy()\n", + " for b in blobs)\n", + " if it % disp_interval == 0 or it + 1 == niter:\n", + " loss_disp = '; '.join('%s: loss=%.3f, acc=%2d%%' %\n", + " (n, loss[n][it], np.round(100*acc[n][it]))\n", + " for n, _ in solvers)\n", + " print '%3d) %s' % (it, loss_disp) \n", + " # Save the learned weights from both nets.\n", + " weight_dir = tempfile.mkdtemp()\n", + " weights = {}\n", + " for name, s in solvers:\n", + " filename = 'weights.%s.caffemodel' % name\n", + " weights[name] = os.path.join(weight_dir, filename)\n", + " s.net.save(weights[name])\n", + " return loss, acc, weights" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create and run solvers to train nets for the style recognition task. We'll create two solvers -- one (`style_solver`) will have its train net initialized to the ImageNet-pretrained weights (this is done by the call to the `copy_from` method), and the other (`scratch_style_solver`) will start from a *randomly* initialized net.\n", + "\n", + "During training, we should see that the ImageNet pretrained net is learning faster and attaining better accuracies than the scratch net." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running solvers for 200 iterations...\n", + " 0) pretrained: loss=1.609, acc=28%; scratch: loss=1.609, acc=28%\n", + " 10) pretrained: loss=1.293, acc=52%; scratch: loss=1.626, acc=14%\n", + " 20) pretrained: loss=1.110, acc=56%; scratch: loss=1.646, acc=10%\n", + " 30) pretrained: loss=1.084, acc=60%; scratch: loss=1.616, acc=20%\n", + " 40) pretrained: loss=0.898, acc=64%; scratch: loss=1.588, acc=26%\n", + " 50) pretrained: loss=1.024, acc=54%; scratch: loss=1.607, acc=32%\n", + " 60) pretrained: loss=0.925, acc=66%; scratch: loss=1.616, acc=20%\n", + " 70) pretrained: loss=0.861, acc=74%; scratch: loss=1.598, acc=24%\n", + " 80) pretrained: loss=0.967, acc=60%; scratch: loss=1.588, acc=30%\n", + " 90) pretrained: loss=1.274, acc=52%; scratch: loss=1.608, acc=20%\n", + "100) pretrained: loss=1.113, acc=62%; scratch: loss=1.588, acc=30%\n", + "110) pretrained: loss=0.922, acc=62%; scratch: loss=1.578, acc=36%\n", + "120) pretrained: loss=0.918, acc=62%; scratch: loss=1.599, acc=20%\n", + "130) pretrained: loss=0.959, acc=58%; scratch: loss=1.594, acc=22%\n", + "140) pretrained: loss=1.228, acc=50%; scratch: loss=1.608, acc=14%\n", + "150) pretrained: loss=0.727, acc=76%; scratch: loss=1.623, acc=16%\n", + "160) pretrained: loss=1.074, acc=66%; scratch: loss=1.607, acc=20%\n", + "170) pretrained: loss=0.887, acc=60%; scratch: loss=1.614, acc=20%\n", + "180) pretrained: loss=0.961, acc=62%; scratch: loss=1.614, acc=18%\n", + "190) pretrained: loss=0.737, acc=76%; scratch: loss=1.613, acc=18%\n", + "199) pretrained: loss=0.836, acc=70%; scratch: loss=1.614, acc=16%\n", + "Done.\n" + ] + } + ], + "source": [ + "niter = 200 # number of iterations to train\n", + "\n", + "# Reset style_solver as before.\n", + "style_solver_filename = solver(style_net(train=True))\n", + "style_solver = caffe.get_solver(style_solver_filename)\n", + "style_solver.net.copy_from(weights)\n", + "\n", + "# For reference, we also create a solver that isn't initialized from\n", + "# the pretrained ImageNet weights.\n", + "scratch_style_solver_filename = solver(style_net(train=True))\n", + "scratch_style_solver = caffe.get_solver(scratch_style_solver_filename)\n", + "\n", + "print 'Running solvers for %d iterations...' % niter\n", + "solvers = [('pretrained', style_solver),\n", + " ('scratch', scratch_style_solver)]\n", + "loss, acc, weights = run_solvers(niter, solvers)\n", + "print 'Done.'\n", + "\n", + "train_loss, scratch_train_loss = loss['pretrained'], loss['scratch']\n", + "train_acc, scratch_train_acc = acc['pretrained'], acc['scratch']\n", + "style_weights, scratch_style_weights = weights['pretrained'], weights['scratch']\n", + "\n", + "# Delete solvers to save memory.\n", + "del style_solver, scratch_style_solver, solvers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the training loss and accuracy produced by the two training procedures. Notice how quickly the ImageNet pretrained model's loss value (blue) drops, and that the randomly initialized model's loss value (green) barely (if at all) improves from training only the classifier layer." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ncoiIiIb/AxSD6Sq0YLMCAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(np.vstack([train_loss, scratch_train_loss]).T)\n", + "xlabel('Iteration #')\n", + "ylabel('Loss')" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nFwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(np.vstack([train_acc, scratch_train_acc]).T)\n", + "xlabel('Iteration #')\n", + "ylabel('Accuracy')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's take a look at the testing accuracy after running 200 iterations of training. Note that we're classifying among 5 classes, giving chance accuracy of 20%. We expect both results to be better than chance accuracy (20%), and we further expect the result from training using the ImageNet pretraining initialization to be much better than the one from training from scratch. Let's see." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def eval_style_net(weights, test_iters=10):\n", + " test_net = caffe.Net(style_net(train=False), weights, caffe.TEST)\n", + " accuracy = 0\n", + " for it in xrange(test_iters):\n", + " accuracy += test_net.forward()['acc']\n", + " accuracy /= test_iters\n", + " return test_net, accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy, trained from ImageNet initialization: 50.0%\n", + "Accuracy, trained from random initialization: 23.6%\n" + ] + } + ], + "source": [ + "test_net, accuracy = eval_style_net(style_weights)\n", + "print 'Accuracy, trained from ImageNet initialization: %3.1f%%' % (100*accuracy, )\n", + "scratch_test_net, scratch_accuracy = eval_style_net(scratch_style_weights)\n", + "print 'Accuracy, trained from random initialization: %3.1f%%' % (100*scratch_accuracy, )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. End-to-end finetuning for style\n", + "\n", + "Finally, we'll train both nets again, starting from the weights we just learned. The only difference this time is that we'll be learning the weights \"end-to-end\" by turning on learning in *all* layers of the network, starting from the RGB `conv1` filters directly applied to the input image. We pass the argument `learn_all=True` to the `style_net` function defined earlier in this notebook, which tells the function to apply a positive (non-zero) `lr_mult` value for all parameters. Under the default, `learn_all=False`, all parameters in the pretrained layers (`conv1` through `fc7`) are frozen (`lr_mult = 0`), and we learn only the classifier layer `fc8_flickr`.\n", + "\n", + "Note that both networks start at roughly the accuracy achieved at the end of the previous training session, and improve significantly with end-to-end training. To be more scientific, we'd also want to follow the same additional training procedure *without* the end-to-end training, to ensure that our results aren't better simply because we trained for twice as long. Feel free to try this yourself!" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running solvers for 200 iterations...\n", + " 0) pretrained, end-to-end: loss=0.781, acc=64%; scratch, end-to-end: loss=1.585, acc=28%\n", + " 10) pretrained, end-to-end: loss=1.178, acc=62%; scratch, end-to-end: loss=1.638, acc=14%\n", + " 20) pretrained, end-to-end: loss=1.084, acc=60%; scratch, end-to-end: loss=1.637, acc= 8%\n", + " 30) pretrained, end-to-end: loss=0.902, acc=76%; scratch, end-to-end: loss=1.600, acc=20%\n", + " 40) pretrained, end-to-end: loss=0.865, acc=64%; scratch, end-to-end: loss=1.574, acc=26%\n", + " 50) pretrained, end-to-end: loss=0.888, acc=60%; scratch, end-to-end: loss=1.604, acc=26%\n", + " 60) pretrained, end-to-end: loss=0.538, acc=78%; scratch, end-to-end: loss=1.555, acc=34%\n", + " 70) pretrained, end-to-end: loss=0.717, acc=72%; scratch, end-to-end: loss=1.563, acc=30%\n", + " 80) pretrained, end-to-end: loss=0.695, acc=74%; scratch, end-to-end: loss=1.502, acc=42%\n", + " 90) pretrained, end-to-end: loss=0.708, acc=68%; scratch, end-to-end: loss=1.523, acc=26%\n", + "100) pretrained, end-to-end: loss=0.432, acc=78%; scratch, end-to-end: loss=1.500, acc=38%\n", + "110) pretrained, end-to-end: loss=0.611, acc=78%; scratch, end-to-end: loss=1.618, acc=18%\n", + "120) pretrained, end-to-end: loss=0.610, acc=76%; scratch, end-to-end: loss=1.473, acc=30%\n", + "130) pretrained, end-to-end: loss=0.471, acc=78%; scratch, end-to-end: loss=1.488, acc=26%\n", + "140) pretrained, end-to-end: loss=0.500, acc=76%; scratch, end-to-end: loss=1.514, acc=38%\n", + "150) pretrained, end-to-end: loss=0.476, acc=80%; scratch, end-to-end: loss=1.452, acc=46%\n", + "160) pretrained, end-to-end: loss=0.368, acc=82%; scratch, end-to-end: loss=1.419, acc=34%\n", + "170) pretrained, end-to-end: loss=0.556, acc=76%; scratch, end-to-end: loss=1.583, acc=36%\n", + "180) pretrained, end-to-end: loss=0.574, acc=72%; scratch, end-to-end: loss=1.556, acc=22%\n", + "190) pretrained, end-to-end: loss=0.360, acc=88%; scratch, end-to-end: loss=1.429, acc=44%\n", + "199) pretrained, end-to-end: loss=0.458, acc=78%; scratch, end-to-end: loss=1.370, acc=44%\n", + "Done.\n" + ] + } + ], + "source": [ + "end_to_end_net = style_net(train=True, learn_all=True)\n", + "\n", + "# Set base_lr to 1e-3, the same as last time when learning only the classifier.\n", + "# You may want to play around with different values of this or other\n", + "# optimization parameters when fine-tuning. For example, if learning diverges\n", + "# (e.g., the loss gets very large or goes to infinity/NaN), you should try\n", + "# decreasing base_lr (e.g., to 1e-4, then 1e-5, etc., until you find a value\n", + "# for which learning does not diverge).\n", + "base_lr = 0.001\n", + "\n", + "style_solver_filename = solver(end_to_end_net, base_lr=base_lr)\n", + "style_solver = caffe.get_solver(style_solver_filename)\n", + "style_solver.net.copy_from(style_weights)\n", + "\n", + "scratch_style_solver_filename = solver(end_to_end_net, base_lr=base_lr)\n", + "scratch_style_solver = caffe.get_solver(scratch_style_solver_filename)\n", + "scratch_style_solver.net.copy_from(scratch_style_weights)\n", + "\n", + "print 'Running solvers for %d iterations...' % niter\n", + "solvers = [('pretrained, end-to-end', style_solver),\n", + " ('scratch, end-to-end', scratch_style_solver)]\n", + "_, _, finetuned_weights = run_solvers(niter, solvers)\n", + "print 'Done.'\n", + "\n", + "style_weights_ft = finetuned_weights['pretrained, end-to-end']\n", + "scratch_style_weights_ft = finetuned_weights['scratch, end-to-end']\n", + "\n", + "# Delete solvers to save memory.\n", + "del style_solver, scratch_style_solver, solvers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's now test the end-to-end finetuned models. Since all layers have been optimized for the style recognition task at hand, we expect both nets to get better results than the ones above, which were achieved by nets with only their classifier layers trained for the style task (on top of either ImageNet pretrained or randomly initialized weights)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy, finetuned from ImageNet initialization: 53.6%\n", + "Accuracy, finetuned from random initialization: 39.2%\n" + ] + } + ], + "source": [ + "test_net, accuracy = eval_style_net(style_weights_ft)\n", + "print 'Accuracy, finetuned from ImageNet initialization: %3.1f%%' % (100*accuracy, )\n", + "scratch_test_net, scratch_accuracy = eval_style_net(scratch_style_weights_ft)\n", + "print 'Accuracy, finetuned from random initialization: %3.1f%%' % (100*scratch_accuracy, )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll first look back at the image we started with and check our end-to-end trained model's predictions." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 55.67% Melancholy\n", + "\t(2) 27.21% HDR\n", + "\t(3) 16.46% Pastel\n", + "\t(4) 0.63% Detailed\n", + "\t(5) 0.03% Noir\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(deprocess_net_image(image))\n", + "disp_style_preds(test_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whew, that looks a lot better than before! But note that this image was from the training set, so the net got to see its label at training time.\n", + "\n", + "Finally, we'll pick an image from the test set (an image the model hasn't seen) and look at our end-to-end finetuned style model's predictions for it." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "actual label = Pastel\n" + ] + }, + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "batch_index = 1\n", + "image = test_net.blobs['data'].data[batch_index]\n", + "plt.imshow(deprocess_net_image(image))\n", + "print 'actual label =', style_labels[int(test_net.blobs['label'].data[batch_index])]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 99.76% Pastel\n", + "\t(2) 0.13% HDR\n", + "\t(3) 0.11% Detailed\n", + "\t(4) 0.00% Melancholy\n", + "\t(5) 0.00% Noir\n" + ] + } + ], + "source": [ + "disp_style_preds(test_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also look at the predictions of the network trained from scratch. We see that in this case, the scratch network also predicts the correct label for the image (*Pastel*), but is much less confident in its prediction than the pretrained net." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 49.81% Pastel\n", + "\t(2) 19.76% Detailed\n", + "\t(3) 17.06% Melancholy\n", + "\t(4) 11.66% HDR\n", + "\t(5) 1.72% Noir\n" + ] + } + ], + "source": [ + "disp_style_preds(scratch_test_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course, we can again look at the ImageNet model's predictions for the above image:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted ImageNet labels =\n", + "\t(1) 34.90% n07579787 plate\n", + "\t(2) 21.63% n04263257 soup bowl\n", + "\t(3) 17.75% n07875152 potpie\n", + "\t(4) 5.72% n07711569 mashed potato\n", + "\t(5) 5.27% n07584110 consomme\n" + ] + } + ], + "source": [ + "disp_imagenet_preds(imagenet_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So we did finetuning and it is awesome. Let's take a look at what kind of results we are able to get with a longer, more complete run of the style recognition dataset. Note: the below URL might be occasionally down because it is run on a research machine.\n", + "\n", + "http://demo.vislab.berkeleyvision.org/" + ] + } + ], + "metadata": { + "description": "Fine-tune the ImageNet-trained CaffeNet on new data.", + "example_name": "Fine-tuning for Style Recognition", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "priority": 3 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/CMakeLists.txt b/3rdparty/caffe/examples/CMakeLists.txt new file mode 100644 index 00000000..43bbcb83 --- /dev/null +++ b/3rdparty/caffe/examples/CMakeLists.txt @@ -0,0 +1,32 @@ +file(GLOB_RECURSE examples_srcs "${PROJECT_SOURCE_DIR}/examples/*.cpp") + +foreach(source_file ${examples_srcs}) + # get file name + get_filename_component(name ${source_file} NAME_WE) + + # get folder name + get_filename_component(path ${source_file} PATH) + get_filename_component(folder ${path} NAME_WE) + + add_executable(${name} ${source_file}) + target_link_libraries(${name} ${Caffe_LINK}) + caffe_default_properties(${name}) + + # set back RUNTIME_OUTPUT_DIRECTORY + set_target_properties(${name} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/examples/${folder}") + + caffe_set_solution_folder(${name} examples) + + # install + install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR}) + + + if(UNIX OR APPLE) + # Funny command to make tutorials work + # TODO: remove in future as soon as naming is standardized everywhere + set(__outname ${PROJECT_BINARY_DIR}/examples/${folder}/${name}${Caffe_POSTFIX}) + add_custom_command(TARGET ${name} POST_BUILD + COMMAND ln -sf "${__outname}" "${__outname}.bin") + endif() +endforeach() diff --git a/3rdparty/caffe/examples/brewing-logreg.ipynb b/3rdparty/caffe/examples/brewing-logreg.ipynb new file mode 100644 index 00000000..c053b73b --- /dev/null +++ b/3rdparty/caffe/examples/brewing-logreg.ipynb @@ -0,0 +1,1164 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Brewing Logistic Regression then Going Deeper\n", + "\n", + "While Caffe is made for deep networks it can likewise represent \"shallow\" models like logistic regression for classification. We'll do simple logistic regression on synthetic data that we'll generate and save to HDF5 to feed vectors to Caffe. Once that model is done, we'll add layers to improve accuracy. That's what Caffe is about: define a model, experiment, and then deploy." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "import os\n", + "os.chdir('..')\n", + "\n", + "import sys\n", + "sys.path.insert(0, './python')\n", + "import caffe\n", + "\n", + "\n", + "import os\n", + "import h5py\n", + "import shutil\n", + "import tempfile\n", + "\n", + "import sklearn\n", + "import sklearn.datasets\n", + "import sklearn.linear_model\n", + "\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Synthesize a dataset of 10,000 4-vectors for binary classification with 2 informative features and 2 noise features." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nYUrRHkzzFQYHxykVFlldXCAd78J1SyTVTYSejqCbxHImd717D2E4x//5+7/LM888w6X2X1FtxvAs\nAd8XSCQ02uVVjFDEpIFCChUJnRY6V5BIE/gVFFw8ZogRsIRLJx0YqHg4FKlxmTabQpHhiM50INJG\npRHLEuIh+T6hopDLd1AtXERtOyTCDhzBZp4EuqJQFzJkh7dw662/wMLCy9x6676rUgkf/tjH+MaD\nD/LsF/4HUTmGksiQjYJh5JicnGbHjszVWpEf51Hzg2zcvp3nT56kO5u9Gox4vk8pCLjzZyiM/XH8\n3AQj1WqVpYkJ8HSSmbWJ9P2ApJ5hojTH/HydzZvv4UKrgyBaZrF5kRtynfQlI2iCwMqVK4xt2sTw\n0ABTU4eRggiubQLgOBaq5rA1lyOp63zn9GkqxSLZMGRQddGFIiecLA0maKMjEEGmC4FttDhNjAIZ\nerFJsiC01wpYQ4sm2npFvQzrYkkeJaaKa+1ugS8icIlIUsTIjKNWlmk1isQiCTKJkKnSLLqRYand\nSf1SiXOTT9Jq1SBo0J26DtNKc2G2SChI5DoT9PdvQpZlFhYe43TzErds3PiaY+j6/j+oM/JO5Nln\nYWhoLU3zdqe3FzZuXEs7vec913o0PxvtdpszL77IzQMDV9vUI7rOtq4uXv7e9/jMv/pXlHt7+dvT\nUxw6Mcvjj7/I3r3jVFeX15xKRZErxSIvfvcF3pXbALpD0GrTdhxCW8UNBQreDLIcxTcFfLdFu30S\nXRvAtpM05Tgxt0U6cBmkQZFLFNFwEUhKIWOyQTEQMYM1KXELWCCkzsj6vqdPgovIgosbBphBBpEe\n1hK6ZQIMNGqAj6pYjMSvR5XKKGYFz66x7DfoGNhANBLBjEaZn7/IoUOHuO666zl59GWU1iI3jefY\ntWNtm/2V06d5VJY5/soKg4P7mLlymsXLxwlsk4vH23R2Jrn//l94w+fJsizOnTvP/PwKHR1ptm3b\n+pq24XK5zpYt13Pq1GlqNQ9dz+C6LRqNC8TjBvV6gXq9TRhmSSRGEAKLuB/geR5B4LO4WEQQIK8n\nEBI5KpLFhQtHaNZW0JQUlrMW5JhSnVQkhZzsI5evEoul6OqSkSSJXbt2cf2u03R37+OZZ77D0pJA\nsShRqywyTIIo0GCKEJcMFmlclnBRxDphUEOnShSVWRLUaZOkRYhPC40GnZxprjJVWSYiGDjCBSpB\n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\nVFRUMsr/B18y5d10ojlGAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "X, y = sklearn.datasets.make_classification(\n", + " n_samples=10000, n_features=4, n_redundant=0, n_informative=2, \n", + " n_clusters_per_class=2, hypercube=False, random_state=0\n", + ")\n", + "\n", + "# Split into train and test\n", + "X, Xt, y, yt = sklearn.cross_validation.train_test_split(X, y)\n", + "\n", + "# Visualize sample of the data\n", + "ind = np.random.permutation(X.shape[0])[:1000]\n", + "df = pd.DataFrame(X[ind])\n", + "_ = pd.scatter_matrix(df, figsize=(9, 9), diagonal='kde', marker='o', s=40, alpha=.4, c=y[ind])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Learn and evaluate scikit-learn's logistic regression with stochastic gradient descent (SGD) training. Time and check the classifier's accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.781\n", + "Accuracy: 0.781\n", + "Accuracy: 0.781\n", + "Accuracy: 0.781\n", + "1 loop, best of 3: 372 ms per loop\n" + ] + } + ], + "source": [ + "%%timeit\n", + "# Train and test the scikit-learn SGD logistic regression.\n", + "clf = sklearn.linear_model.SGDClassifier(\n", + " loss='log', n_iter=1000, penalty='l2', alpha=5e-4, class_weight='auto')\n", + "\n", + "clf.fit(X, y)\n", + "yt_pred = clf.predict(Xt)\n", + "print('Accuracy: {:.3f}'.format(sklearn.metrics.accuracy_score(yt, yt_pred)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Save the dataset to HDF5 for loading in Caffe." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Write out the data to HDF5 files in a temp directory.\n", + "# This file is assumed to be caffe_root/examples/hdf5_classification.ipynb\n", + "dirname = os.path.abspath('./examples/hdf5_classification/data')\n", + "if not os.path.exists(dirname):\n", + " os.makedirs(dirname)\n", + "\n", + "train_filename = os.path.join(dirname, 'train.h5')\n", + "test_filename = os.path.join(dirname, 'test.h5')\n", + "\n", + "# HDF5DataLayer source should be a file containing a list of HDF5 filenames.\n", + "# To show this off, we'll list the same data file twice.\n", + "with h5py.File(train_filename, 'w') as f:\n", + " f['data'] = X\n", + " f['label'] = y.astype(np.float32)\n", + "with open(os.path.join(dirname, 'train.txt'), 'w') as f:\n", + " f.write(train_filename + '\\n')\n", + " f.write(train_filename + '\\n')\n", + " \n", + "# HDF5 is pretty efficient, but can be further compressed.\n", + "comp_kwargs = {'compression': 'gzip', 'compression_opts': 1}\n", + "with h5py.File(test_filename, 'w') as f:\n", + " f.create_dataset('data', data=Xt, **comp_kwargs)\n", + " f.create_dataset('label', data=yt.astype(np.float32), **comp_kwargs)\n", + "with open(os.path.join(dirname, 'test.txt'), 'w') as f:\n", + " f.write(test_filename + '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's define logistic regression in Caffe through Python net specification. This is a quick and natural way to define nets that sidesteps manually editing the protobuf model." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe import layers as L\n", + "from caffe import params as P\n", + "\n", + "def logreg(hdf5, batch_size):\n", + " # logistic regression: data, matrix multiplication, and 2-class softmax loss\n", + " n = caffe.NetSpec()\n", + " n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)\n", + " n.ip1 = L.InnerProduct(n.data, num_output=2, weight_filler=dict(type='xavier'))\n", + " n.accuracy = L.Accuracy(n.ip1, n.label)\n", + " n.loss = L.SoftmaxWithLoss(n.ip1, n.label)\n", + " return n.to_proto()\n", + "\n", + "train_net_path = 'examples/hdf5_classification/logreg_auto_train.prototxt'\n", + "with open(train_net_path, 'w') as f:\n", + " f.write(str(logreg('examples/hdf5_classification/data/train.txt', 10)))\n", + "\n", + "test_net_path = 'examples/hdf5_classification/logreg_auto_test.prototxt'\n", + "with open(test_net_path, 'w') as f:\n", + " f.write(str(logreg('examples/hdf5_classification/data/test.txt', 10)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we'll define our \"solver\" which trains the network by specifying the locations of the train and test nets we defined above, as well as setting values for various parameters used for learning, display, and \"snapshotting\"." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe.proto import caffe_pb2\n", + "\n", + "def solver(train_net_path, test_net_path):\n", + " s = caffe_pb2.SolverParameter()\n", + "\n", + " # Specify locations of the train and test networks.\n", + " s.train_net = train_net_path\n", + " s.test_net.append(test_net_path)\n", + "\n", + " s.test_interval = 1000 # Test after every 1000 training iterations.\n", + " s.test_iter.append(250) # Test 250 \"batches\" each time we test.\n", + "\n", + " s.max_iter = 10000 # # of times to update the net (training iterations)\n", + "\n", + " # Set the initial learning rate for stochastic gradient descent (SGD).\n", + " s.base_lr = 0.01 \n", + "\n", + " # Set `lr_policy` to define how the learning rate changes during training.\n", + " # Here, we 'step' the learning rate by multiplying it by a factor `gamma`\n", + " # every `stepsize` iterations.\n", + " s.lr_policy = 'step'\n", + " s.gamma = 0.1\n", + " s.stepsize = 5000\n", + "\n", + " # Set other optimization parameters. Setting a non-zero `momentum` takes a\n", + " # weighted average of the current gradient and previous gradients to make\n", + " # learning more stable. L2 weight decay regularizes learning, to help prevent\n", + " # the model from overfitting.\n", + " s.momentum = 0.9\n", + " s.weight_decay = 5e-4\n", + "\n", + " # Display the current training loss and accuracy every 1000 iterations.\n", + " s.display = 1000\n", + "\n", + " # Snapshots are files used to store networks we've trained. Here, we'll\n", + " # snapshot every 10K iterations -- just once at the end of training.\n", + " # For larger networks that take longer to train, you may want to set\n", + " # snapshot < max_iter to save the network and training state to disk during\n", + " # optimization, preventing disaster in case of machine crashes, etc.\n", + " s.snapshot = 10000\n", + " s.snapshot_prefix = 'examples/hdf5_classification/data/train'\n", + "\n", + " # We'll train on the CPU for fair benchmarking against scikit-learn.\n", + " # Changing to GPU should result in much faster training!\n", + " s.solver_mode = caffe_pb2.SolverParameter.CPU\n", + " \n", + " return s\n", + "\n", + "solver_path = 'examples/hdf5_classification/logreg_solver.prototxt'\n", + "with open(solver_path, 'w') as f:\n", + " f.write(str(solver(train_net_path, test_net_path)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to learn and evaluate our Caffeinated logistic regression in Python." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.770\n", + "Accuracy: 0.770\n", + "Accuracy: 0.770\n", + "Accuracy: 0.770\n", + "1 loop, best of 3: 195 ms per loop\n" + ] + } + ], + "source": [ + "%%timeit\n", + "caffe.set_mode_cpu()\n", + "solver = caffe.get_solver(solver_path)\n", + "solver.solve()\n", + "\n", + "accuracy = 0\n", + "batch_size = solver.test_nets[0].blobs['data'].num\n", + "test_iters = int(len(Xt) / batch_size)\n", + "for i in range(test_iters):\n", + " solver.test_nets[0].forward()\n", + " accuracy += solver.test_nets[0].blobs['accuracy'].data\n", + "accuracy /= test_iters\n", + "\n", + "print(\"Accuracy: {:.3f}\".format(accuracy))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do the same through the command line interface for detailed output on the model and solving." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I0224 00:32:03.232779 655 caffe.cpp:178] Use CPU.\n", + "I0224 00:32:03.391911 655 solver.cpp:48] Initializing solver from parameters: \n", + "train_net: \"examples/hdf5_classification/logreg_auto_train.prototxt\"\n", + "test_net: \"examples/hdf5_classification/logreg_auto_test.prototxt\"\n", + "test_iter: 250\n", + "test_interval: 1000\n", + "base_lr: 0.01\n", + "display: 1000\n", + "max_iter: 10000\n", + "lr_policy: \"step\"\n", + "gamma: 0.1\n", + "momentum: 0.9\n", + "weight_decay: 0.0005\n", + "stepsize: 5000\n", + "snapshot: 10000\n", + "snapshot_prefix: \"examples/hdf5_classification/data/train\"\n", + "solver_mode: CPU\n", + "I0224 00:32:03.392065 655 solver.cpp:81] Creating training net from train_net file: examples/hdf5_classification/logreg_auto_train.prototxt\n", + "I0224 00:32:03.392215 655 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TRAIN\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/train.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:03.392365 655 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:03.392382 655 net.cpp:106] Creating Layer data\n", + "I0224 00:32:03.392395 655 net.cpp:411] data -> data\n", + "I0224 00:32:03.392423 655 net.cpp:411] data -> label\n", + "I0224 00:32:03.392442 655 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/train.txt\n", + "I0224 00:32:03.392473 655 hdf5_data_layer.cpp:93] Number of HDF5 files: 2\n", + "I0224 00:32:03.393473 655 hdf5.cpp:32] Datatype class: H5T_FLOAT\n", + "I0224 00:32:03.393862 655 net.cpp:150] Setting up data\n", + "I0224 00:32:03.393884 655 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:03.393894 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.393901 655 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:03.393911 655 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:03.393924 655 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:03.393934 655 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:03.393945 655 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:03.393956 655 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:03.393970 655 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:03.393978 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.393986 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.393995 655 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:03.394001 655 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:03.394012 655 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:03.394021 655 net.cpp:454] ip1 <- data\n", + "I0224 00:32:03.394029 655 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:03.394311 655 net.cpp:150] Setting up ip1\n", + "I0224 00:32:03.394323 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.394331 655 net.cpp:165] Memory required for data: 360\n", + "I0224 00:32:03.394348 655 layer_factory.hpp:77] Creating layer ip1_ip1_0_split\n", + "I0224 00:32:03.394358 655 net.cpp:106] Creating Layer ip1_ip1_0_split\n", + "I0224 00:32:03.394366 655 net.cpp:454] ip1_ip1_0_split <- ip1\n", + "I0224 00:32:03.394374 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_0\n", + "I0224 00:32:03.394386 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_1\n", + "I0224 00:32:03.394395 655 net.cpp:150] Setting up ip1_ip1_0_split\n", + "I0224 00:32:03.394404 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.394424 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.394443 655 net.cpp:165] Memory required for data: 520\n", + "I0224 00:32:03.394450 655 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:03.394462 655 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:03.394479 655 net.cpp:454] accuracy <- ip1_ip1_0_split_0\n", + "I0224 00:32:03.394489 655 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:03.394497 655 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:03.394510 655 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:03.394536 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.394543 655 net.cpp:165] Memory required for data: 524\n", + "I0224 00:32:03.394551 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.394562 655 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:03.394569 655 net.cpp:454] loss <- ip1_ip1_0_split_1\n", + "I0224 00:32:03.394577 655 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:03.394587 655 net.cpp:411] loss -> loss\n", + "I0224 00:32:03.394603 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.394624 655 net.cpp:150] Setting up loss\n", + "I0224 00:32:03.394634 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.394641 655 net.cpp:160] with loss weight 1\n", + "I0224 00:32:03.394659 655 net.cpp:165] Memory required for data: 528\n", + "I0224 00:32:03.394665 655 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:03.394673 655 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:03.394682 655 net.cpp:226] ip1_ip1_0_split needs backward computation.\n", + "I0224 00:32:03.394690 655 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:03.394697 655 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:03.394706 655 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:03.394712 655 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:03.394721 655 net.cpp:270] This network produces output loss\n", + "I0224 00:32:03.394731 655 net.cpp:283] Network initialization done.\n", + "I0224 00:32:03.394804 655 solver.cpp:181] Creating test net (#0) specified by test_net file: examples/hdf5_classification/logreg_auto_test.prototxt\n", + "I0224 00:32:03.394836 655 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TEST\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/test.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:03.394953 655 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:03.394964 655 net.cpp:106] Creating Layer data\n", + "I0224 00:32:03.394973 655 net.cpp:411] data -> data\n", + "I0224 00:32:03.394984 655 net.cpp:411] data -> label\n", + "I0224 00:32:03.394994 655 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/test.txt\n", + "I0224 00:32:03.395009 655 hdf5_data_layer.cpp:93] Number of HDF5 files: 1\n", + "I0224 00:32:03.395937 655 net.cpp:150] Setting up data\n", + "I0224 00:32:03.395953 655 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:03.395963 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.395970 655 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:03.395978 655 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:03.395989 655 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:03.395997 655 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:03.396005 655 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:03.396016 655 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:03.396028 655 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:03.396036 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.396044 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.396051 655 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:03.396059 655 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:03.396069 655 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:03.396075 655 net.cpp:454] ip1 <- data\n", + "I0224 00:32:03.396085 655 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:03.396100 655 net.cpp:150] Setting up ip1\n", + "I0224 00:32:03.396109 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.396116 655 net.cpp:165] Memory required for data: 360\n", + "I0224 00:32:03.396138 655 layer_factory.hpp:77] Creating layer ip1_ip1_0_split\n", + "I0224 00:32:03.396148 655 net.cpp:106] Creating Layer ip1_ip1_0_split\n", + "I0224 00:32:03.396157 655 net.cpp:454] ip1_ip1_0_split <- ip1\n", + "I0224 00:32:03.396164 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_0\n", + "I0224 00:32:03.396174 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_1\n", + "I0224 00:32:03.396185 655 net.cpp:150] Setting up ip1_ip1_0_split\n", + "I0224 00:32:03.396194 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.396203 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.396209 655 net.cpp:165] Memory required for data: 520\n", + "I0224 00:32:03.396216 655 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:03.396225 655 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:03.396234 655 net.cpp:454] accuracy <- ip1_ip1_0_split_0\n", + "I0224 00:32:03.396241 655 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:03.396250 655 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:03.396260 655 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:03.396270 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.396276 655 net.cpp:165] Memory required for data: 524\n", + "I0224 00:32:03.396283 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.396291 655 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:03.396299 655 net.cpp:454] loss <- ip1_ip1_0_split_1\n", + "I0224 00:32:03.396307 655 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:03.396317 655 net.cpp:411] loss -> loss\n", + "I0224 00:32:03.396327 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.396339 655 net.cpp:150] Setting up loss\n", + "I0224 00:32:03.396349 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.396356 655 net.cpp:160] with loss weight 1\n", + "I0224 00:32:03.396365 655 net.cpp:165] Memory required for data: 528\n", + "I0224 00:32:03.396373 655 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:03.396381 655 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:03.396389 655 net.cpp:226] ip1_ip1_0_split needs backward computation.\n", + "I0224 00:32:03.396396 655 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:03.396404 655 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:03.396412 655 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:03.396420 655 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:03.396427 655 net.cpp:270] This network produces output loss\n", + "I0224 00:32:03.396437 655 net.cpp:283] Network initialization done.\n", + "I0224 00:32:03.396455 655 solver.cpp:60] Solver scaffolding done.\n", + "I0224 00:32:03.396473 655 caffe.cpp:219] Starting Optimization\n", + "I0224 00:32:03.396482 655 solver.cpp:280] Solving \n", + "I0224 00:32:03.396489 655 solver.cpp:281] Learning Rate Policy: step\n", + "I0224 00:32:03.396499 655 solver.cpp:338] Iteration 0, Testing net (#0)\n", + "I0224 00:32:03.932615 655 solver.cpp:406] Test net output #0: accuracy = 0.4268\n", + "I0224 00:32:03.932656 655 solver.cpp:406] Test net output #1: loss = 1.33093 (* 1 = 1.33093 loss)\n", + "I0224 00:32:03.932723 655 solver.cpp:229] Iteration 0, loss = 1.06081\n", + "I0224 00:32:03.932737 655 solver.cpp:245] Train net output #0: accuracy = 0.4\n", + "I0224 00:32:03.932749 655 solver.cpp:245] Train net output #1: loss = 1.06081 (* 1 = 1.06081 loss)\n", + "I0224 00:32:03.932765 655 sgd_solver.cpp:106] Iteration 0, lr = 0.01\n", + "I0224 00:32:03.945551 655 solver.cpp:338] Iteration 1000, Testing net (#0)\n", + "I0224 00:32:03.948048 655 solver.cpp:406] Test net output #0: accuracy = 0.694\n", + "I0224 00:32:03.948065 655 solver.cpp:406] Test net output #1: loss = 0.60406 (* 1 = 0.60406 loss)\n", + "I0224 00:32:03.948091 655 solver.cpp:229] Iteration 1000, loss = 0.505853\n", + "I0224 00:32:03.948102 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:03.948113 655 solver.cpp:245] Train net output #1: loss = 0.505853 (* 1 = 0.505853 loss)\n", + "I0224 00:32:03.948122 655 sgd_solver.cpp:106] Iteration 1000, lr = 0.01\n", + "I0224 00:32:03.960741 655 solver.cpp:338] Iteration 2000, Testing net (#0)\n", + "I0224 00:32:03.963214 655 solver.cpp:406] Test net output #0: accuracy = 0.7372\n", + "I0224 00:32:03.963249 655 solver.cpp:406] Test net output #1: loss = 0.595267 (* 1 = 0.595267 loss)\n", + "I0224 00:32:03.963276 655 solver.cpp:229] Iteration 2000, loss = 0.549211\n", + "I0224 00:32:03.963289 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:03.963299 655 solver.cpp:245] Train net output #1: loss = 0.549211 (* 1 = 0.549211 loss)\n", + "I0224 00:32:03.963309 655 sgd_solver.cpp:106] Iteration 2000, lr = 0.01\n", + "I0224 00:32:03.975945 655 solver.cpp:338] Iteration 3000, Testing net (#0)\n", + "I0224 00:32:03.978435 655 solver.cpp:406] Test net output #0: accuracy = 0.7732\n", + "I0224 00:32:03.978451 655 solver.cpp:406] Test net output #1: loss = 0.594998 (* 1 = 0.594998 loss)\n", + "I0224 00:32:03.978884 655 solver.cpp:229] Iteration 3000, loss = 0.66133\n", + "I0224 00:32:03.978911 655 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:03.978932 655 solver.cpp:245] Train net output #1: loss = 0.66133 (* 1 = 0.66133 loss)\n", + "I0224 00:32:03.978950 655 sgd_solver.cpp:106] Iteration 3000, lr = 0.01\n", + "I0224 00:32:03.992017 655 solver.cpp:338] Iteration 4000, Testing net (#0)\n", + "I0224 00:32:03.994509 655 solver.cpp:406] Test net output #0: accuracy = 0.694\n", + "I0224 00:32:03.994525 655 solver.cpp:406] Test net output #1: loss = 0.60406 (* 1 = 0.60406 loss)\n", + "I0224 00:32:03.994551 655 solver.cpp:229] Iteration 4000, loss = 0.505853\n", + "I0224 00:32:03.994562 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:03.994573 655 solver.cpp:245] Train net output #1: loss = 0.505853 (* 1 = 0.505853 loss)\n", + "I0224 00:32:03.994583 655 sgd_solver.cpp:106] Iteration 4000, lr = 0.01\n", + "I0224 00:32:04.007200 655 solver.cpp:338] Iteration 5000, Testing net (#0)\n", + "I0224 00:32:04.009686 655 solver.cpp:406] Test net output #0: accuracy = 0.7372\n", + "I0224 00:32:04.009702 655 solver.cpp:406] Test net output #1: loss = 0.595267 (* 1 = 0.595267 loss)\n", + "I0224 00:32:04.009727 655 solver.cpp:229] Iteration 5000, loss = 0.549211\n", + "I0224 00:32:04.009738 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:04.009749 655 solver.cpp:245] Train net output #1: loss = 0.549211 (* 1 = 0.549211 loss)\n", + "I0224 00:32:04.009758 655 sgd_solver.cpp:106] Iteration 5000, lr = 0.001\n", + "I0224 00:32:04.022734 655 solver.cpp:338] Iteration 6000, Testing net (#0)\n", + "I0224 00:32:04.025177 655 solver.cpp:406] Test net output #0: accuracy = 0.7824\n", + "I0224 00:32:04.025193 655 solver.cpp:406] Test net output #1: loss = 0.593367 (* 1 = 0.593367 loss)\n", + "I0224 00:32:04.025545 655 solver.cpp:229] Iteration 6000, loss = 0.654873\n", + "I0224 00:32:04.025562 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:04.025573 655 solver.cpp:245] Train net output #1: loss = 0.654873 (* 1 = 0.654873 loss)\n", + "I0224 00:32:04.025583 655 sgd_solver.cpp:106] Iteration 6000, lr = 0.001\n", + "I0224 00:32:04.038586 655 solver.cpp:338] Iteration 7000, Testing net (#0)\n", + "I0224 00:32:04.041016 655 solver.cpp:406] Test net output #0: accuracy = 0.7704\n", + "I0224 00:32:04.041033 655 solver.cpp:406] Test net output #1: loss = 0.593842 (* 1 = 0.593842 loss)\n", + "I0224 00:32:04.041059 655 solver.cpp:229] Iteration 7000, loss = 0.46611\n", + "I0224 00:32:04.041071 655 solver.cpp:245] Train net output #0: accuracy = 0.6\n", + "I0224 00:32:04.041082 655 solver.cpp:245] Train net output #1: loss = 0.46611 (* 1 = 0.46611 loss)\n", + "I0224 00:32:04.041091 655 sgd_solver.cpp:106] Iteration 7000, lr = 0.001\n", + "I0224 00:32:04.053722 655 solver.cpp:338] Iteration 8000, Testing net (#0)\n", + "I0224 00:32:04.056171 655 solver.cpp:406] Test net output #0: accuracy = 0.7788\n", + "I0224 00:32:04.056187 655 solver.cpp:406] Test net output #1: loss = 0.592847 (* 1 = 0.592847 loss)\n", + "I0224 00:32:04.056213 655 solver.cpp:229] Iteration 8000, loss = 0.615126\n", + "I0224 00:32:04.056224 655 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:04.056236 655 solver.cpp:245] Train net output #1: loss = 0.615126 (* 1 = 0.615126 loss)\n", + "I0224 00:32:04.056244 655 sgd_solver.cpp:106] Iteration 8000, lr = 0.001\n", + "I0224 00:32:04.068853 655 solver.cpp:338] Iteration 9000, Testing net (#0)\n", + "I0224 00:32:04.071291 655 solver.cpp:406] Test net output #0: accuracy = 0.7808\n", + "I0224 00:32:04.071307 655 solver.cpp:406] Test net output #1: loss = 0.593293 (* 1 = 0.593293 loss)\n", + "I0224 00:32:04.071650 655 solver.cpp:229] Iteration 9000, loss = 0.654997\n", + "I0224 00:32:04.071666 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:04.071677 655 solver.cpp:245] Train net output #1: loss = 0.654998 (* 1 = 0.654998 loss)\n", + "I0224 00:32:04.071687 655 sgd_solver.cpp:106] Iteration 9000, lr = 0.001\n", + "I0224 00:32:04.084717 655 solver.cpp:456] Snapshotting to binary proto file examples/hdf5_classification/data/train_iter_10000.caffemodel\n", + "I0224 00:32:04.084885 655 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/hdf5_classification/data/train_iter_10000.solverstate\n", + "I0224 00:32:04.084960 655 solver.cpp:318] Iteration 10000, loss = 0.466505\n", + "I0224 00:32:04.084977 655 solver.cpp:338] Iteration 10000, Testing net (#0)\n", + "I0224 00:32:04.087514 655 solver.cpp:406] Test net output #0: accuracy = 0.77\n", + "I0224 00:32:04.087532 655 solver.cpp:406] Test net output #1: loss = 0.593815 (* 1 = 0.593815 loss)\n", + "I0224 00:32:04.087541 655 solver.cpp:323] Optimization Done.\n", + "I0224 00:32:04.087548 655 caffe.cpp:222] Optimization Done.\n" + ] + } + ], + "source": [ + "!./build/tools/caffe train -solver examples/hdf5_classification/logreg_solver.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you look at output or the `logreg_auto_train.prototxt`, you'll see that the model is simple logistic regression.\n", + "We can make it a little more advanced by introducing a non-linearity between weights that take the input and weights that give the output -- now we have a two-layer network.\n", + "That network is given in `nonlinear_auto_train.prototxt`, and that's the only change made in `nonlinear_logreg_solver.prototxt` which we will now use.\n", + "\n", + "The final accuracy of the new network should be higher than logistic regression!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from caffe import layers as L\n", + "from caffe import params as P\n", + "\n", + "def nonlinear_net(hdf5, batch_size):\n", + " # one small nonlinearity, one leap for model kind\n", + " n = caffe.NetSpec()\n", + " n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)\n", + " # define a hidden layer of dimension 40\n", + " n.ip1 = L.InnerProduct(n.data, num_output=40, weight_filler=dict(type='xavier'))\n", + " # transform the output through the ReLU (rectified linear) non-linearity\n", + " n.relu1 = L.ReLU(n.ip1, in_place=True)\n", + " # score the (now non-linear) features\n", + " n.ip2 = L.InnerProduct(n.ip1, num_output=2, weight_filler=dict(type='xavier'))\n", + " # same accuracy and loss as before\n", + " n.accuracy = L.Accuracy(n.ip2, n.label)\n", + " n.loss = L.SoftmaxWithLoss(n.ip2, n.label)\n", + " return n.to_proto()\n", + "\n", + "train_net_path = 'examples/hdf5_classification/nonlinear_auto_train.prototxt'\n", + "with open(train_net_path, 'w') as f:\n", + " f.write(str(nonlinear_net('examples/hdf5_classification/data/train.txt', 10)))\n", + "\n", + "test_net_path = 'examples/hdf5_classification/nonlinear_auto_test.prototxt'\n", + "with open(test_net_path, 'w') as f:\n", + " f.write(str(nonlinear_net('examples/hdf5_classification/data/test.txt', 10)))\n", + "\n", + "solver_path = 'examples/hdf5_classification/nonlinear_logreg_solver.prototxt'\n", + "with open(solver_path, 'w') as f:\n", + " f.write(str(solver(train_net_path, test_net_path)))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.838\n", + "Accuracy: 0.837\n", + "Accuracy: 0.838\n", + "Accuracy: 0.834\n", + "1 loop, best of 3: 277 ms per loop\n" + ] + } + ], + "source": [ + "%%timeit\n", + "caffe.set_mode_cpu()\n", + "solver = caffe.get_solver(solver_path)\n", + "solver.solve()\n", + "\n", + "accuracy = 0\n", + "batch_size = solver.test_nets[0].blobs['data'].num\n", + "test_iters = int(len(Xt) / batch_size)\n", + "for i in range(test_iters):\n", + " solver.test_nets[0].forward()\n", + " accuracy += solver.test_nets[0].blobs['accuracy'].data\n", + "accuracy /= test_iters\n", + "\n", + "print(\"Accuracy: {:.3f}\".format(accuracy))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do the same through the command line interface for detailed output on the model and solving." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I0224 00:32:05.654265 658 caffe.cpp:178] Use CPU.\n", + "I0224 00:32:05.810444 658 solver.cpp:48] Initializing solver from parameters: \n", + "train_net: \"examples/hdf5_classification/nonlinear_auto_train.prototxt\"\n", + "test_net: \"examples/hdf5_classification/nonlinear_auto_test.prototxt\"\n", + "test_iter: 250\n", + "test_interval: 1000\n", + "base_lr: 0.01\n", + "display: 1000\n", + "max_iter: 10000\n", + "lr_policy: \"step\"\n", + "gamma: 0.1\n", + "momentum: 0.9\n", + "weight_decay: 0.0005\n", + "stepsize: 5000\n", + "snapshot: 10000\n", + "snapshot_prefix: \"examples/hdf5_classification/data/train\"\n", + "solver_mode: CPU\n", + "I0224 00:32:05.810634 658 solver.cpp:81] Creating training net from train_net file: examples/hdf5_classification/nonlinear_auto_train.prototxt\n", + "I0224 00:32:05.810835 658 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TRAIN\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/train.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 40\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu1\"\n", + " type: \"ReLU\"\n", + " bottom: \"ip1\"\n", + " top: \"ip1\"\n", + "}\n", + "layer {\n", + " name: \"ip2\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"ip1\"\n", + " top: \"ip2\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:05.811061 658 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:05.811079 658 net.cpp:106] Creating Layer data\n", + "I0224 00:32:05.811092 658 net.cpp:411] data -> data\n", + "I0224 00:32:05.811121 658 net.cpp:411] data -> label\n", + "I0224 00:32:05.811143 658 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/train.txt\n", + "I0224 00:32:05.811189 658 hdf5_data_layer.cpp:93] Number of HDF5 files: 2\n", + "I0224 00:32:05.812254 658 hdf5.cpp:32] Datatype class: H5T_FLOAT\n", + "I0224 00:32:05.812677 658 net.cpp:150] Setting up data\n", + "I0224 00:32:05.812705 658 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:05.812721 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.812729 658 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:05.812739 658 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:05.812752 658 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:05.812762 658 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:05.812774 658 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:05.812785 658 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:05.812798 658 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:05.812808 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.812816 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.812824 658 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:05.812831 658 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:05.812841 658 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:05.812849 658 net.cpp:454] ip1 <- data\n", + "I0224 00:32:05.812860 658 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:05.813179 658 net.cpp:150] Setting up ip1\n", + "I0224 00:32:05.813196 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.813210 658 net.cpp:165] Memory required for data: 1880\n", + "I0224 00:32:05.813230 658 layer_factory.hpp:77] Creating layer relu1\n", + "I0224 00:32:05.813241 658 net.cpp:106] Creating Layer relu1\n", + "I0224 00:32:05.813251 658 net.cpp:454] relu1 <- ip1\n", + "I0224 00:32:05.813258 658 net.cpp:397] relu1 -> ip1 (in-place)\n", + "I0224 00:32:05.813271 658 net.cpp:150] Setting up relu1\n", + "I0224 00:32:05.813279 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.813287 658 net.cpp:165] Memory required for data: 3480\n", + "I0224 00:32:05.813294 658 layer_factory.hpp:77] Creating layer ip2\n", + "I0224 00:32:05.813304 658 net.cpp:106] Creating Layer ip2\n", + "I0224 00:32:05.813313 658 net.cpp:454] ip2 <- ip1\n", + "I0224 00:32:05.813321 658 net.cpp:411] ip2 -> ip2\n", + "I0224 00:32:05.813336 658 net.cpp:150] Setting up ip2\n", + "I0224 00:32:05.813345 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.813379 658 net.cpp:165] Memory required for data: 3560\n", + "I0224 00:32:05.813401 658 layer_factory.hpp:77] Creating layer ip2_ip2_0_split\n", + "I0224 00:32:05.813417 658 net.cpp:106] Creating Layer ip2_ip2_0_split\n", + "I0224 00:32:05.813426 658 net.cpp:454] ip2_ip2_0_split <- ip2\n", + "I0224 00:32:05.813434 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_0\n", + "I0224 00:32:05.813446 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_1\n", + "I0224 00:32:05.813457 658 net.cpp:150] Setting up ip2_ip2_0_split\n", + "I0224 00:32:05.813465 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.813473 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.813480 658 net.cpp:165] Memory required for data: 3720\n", + "I0224 00:32:05.813488 658 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:05.813499 658 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:05.813508 658 net.cpp:454] accuracy <- ip2_ip2_0_split_0\n", + "I0224 00:32:05.813515 658 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:05.813524 658 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:05.813539 658 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:05.813547 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.813555 658 net.cpp:165] Memory required for data: 3724\n", + "I0224 00:32:05.813565 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.813585 658 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:05.813599 658 net.cpp:454] loss <- ip2_ip2_0_split_1\n", + "I0224 00:32:05.813616 658 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:05.813627 658 net.cpp:411] loss -> loss\n", + "I0224 00:32:05.813642 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.813663 658 net.cpp:150] Setting up loss\n", + "I0224 00:32:05.813671 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.813679 658 net.cpp:160] with loss weight 1\n", + "I0224 00:32:05.813695 658 net.cpp:165] Memory required for data: 3728\n", + "I0224 00:32:05.813704 658 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:05.813712 658 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:05.813720 658 net.cpp:226] ip2_ip2_0_split needs backward computation.\n", + "I0224 00:32:05.813729 658 net.cpp:226] ip2 needs backward computation.\n", + "I0224 00:32:05.813735 658 net.cpp:226] relu1 needs backward computation.\n", + "I0224 00:32:05.813743 658 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:05.813751 658 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:05.813760 658 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:05.813772 658 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:05.813787 658 net.cpp:270] This network produces output loss\n", + "I0224 00:32:05.813809 658 net.cpp:283] Network initialization done.\n", + "I0224 00:32:05.813905 658 solver.cpp:181] Creating test net (#0) specified by test_net file: examples/hdf5_classification/nonlinear_auto_test.prototxt\n", + "I0224 00:32:05.813944 658 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TEST\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/test.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 40\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu1\"\n", + " type: \"ReLU\"\n", + " bottom: \"ip1\"\n", + " top: \"ip1\"\n", + "}\n", + "layer {\n", + " name: \"ip2\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"ip1\"\n", + " top: \"ip2\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:05.814131 658 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:05.814142 658 net.cpp:106] Creating Layer data\n", + "I0224 00:32:05.814152 658 net.cpp:411] data -> data\n", + "I0224 00:32:05.814162 658 net.cpp:411] data -> label\n", + "I0224 00:32:05.814180 658 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/test.txt\n", + "I0224 00:32:05.814220 658 hdf5_data_layer.cpp:93] Number of HDF5 files: 1\n", + "I0224 00:32:05.815207 658 net.cpp:150] Setting up data\n", + "I0224 00:32:05.815227 658 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:05.815243 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.815253 658 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:05.815260 658 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:05.815270 658 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:05.815279 658 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:05.815287 658 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:05.815299 658 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:05.815310 658 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:05.815318 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.815326 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.815335 658 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:05.815341 658 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:05.815351 658 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:05.815358 658 net.cpp:454] ip1 <- data\n", + "I0224 00:32:05.815367 658 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:05.815383 658 net.cpp:150] Setting up ip1\n", + "I0224 00:32:05.815398 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.815413 658 net.cpp:165] Memory required for data: 1880\n", + "I0224 00:32:05.815435 658 layer_factory.hpp:77] Creating layer relu1\n", + "I0224 00:32:05.815450 658 net.cpp:106] Creating Layer relu1\n", + "I0224 00:32:05.815459 658 net.cpp:454] relu1 <- ip1\n", + "I0224 00:32:05.815469 658 net.cpp:397] relu1 -> ip1 (in-place)\n", + "I0224 00:32:05.815479 658 net.cpp:150] Setting up relu1\n", + "I0224 00:32:05.815486 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.815495 658 net.cpp:165] Memory required for data: 3480\n", + "I0224 00:32:05.815501 658 layer_factory.hpp:77] Creating layer ip2\n", + "I0224 00:32:05.815510 658 net.cpp:106] Creating Layer ip2\n", + "I0224 00:32:05.815518 658 net.cpp:454] ip2 <- ip1\n", + "I0224 00:32:05.815527 658 net.cpp:411] ip2 -> ip2\n", + "I0224 00:32:05.815542 658 net.cpp:150] Setting up ip2\n", + "I0224 00:32:05.815551 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.815559 658 net.cpp:165] Memory required for data: 3560\n", + "I0224 00:32:05.815570 658 layer_factory.hpp:77] Creating layer ip2_ip2_0_split\n", + "I0224 00:32:05.815579 658 net.cpp:106] Creating Layer ip2_ip2_0_split\n", + "I0224 00:32:05.815587 658 net.cpp:454] ip2_ip2_0_split <- ip2\n", + "I0224 00:32:05.815600 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_0\n", + "I0224 00:32:05.815619 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_1\n", + "I0224 00:32:05.815640 658 net.cpp:150] Setting up ip2_ip2_0_split\n", + "I0224 00:32:05.815654 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.815662 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.815670 658 net.cpp:165] Memory required for data: 3720\n", + "I0224 00:32:05.815677 658 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:05.815685 658 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:05.815693 658 net.cpp:454] accuracy <- ip2_ip2_0_split_0\n", + "I0224 00:32:05.815702 658 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:05.815711 658 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:05.815722 658 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:05.815732 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.815738 658 net.cpp:165] Memory required for data: 3724\n", + "I0224 00:32:05.815747 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.815754 658 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:05.815762 658 net.cpp:454] loss <- ip2_ip2_0_split_1\n", + "I0224 00:32:05.815770 658 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:05.815779 658 net.cpp:411] loss -> loss\n", + "I0224 00:32:05.815790 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.815811 658 net.cpp:150] Setting up loss\n", + "I0224 00:32:05.815829 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.815843 658 net.cpp:160] with loss weight 1\n", + "I0224 00:32:05.815867 658 net.cpp:165] Memory required for data: 3728\n", + "I0224 00:32:05.815876 658 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:05.815884 658 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:05.815892 658 net.cpp:226] ip2_ip2_0_split needs backward computation.\n", + "I0224 00:32:05.815901 658 net.cpp:226] ip2 needs backward computation.\n", + "I0224 00:32:05.815908 658 net.cpp:226] relu1 needs backward computation.\n", + "I0224 00:32:05.815915 658 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:05.815923 658 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:05.815932 658 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:05.815938 658 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:05.815946 658 net.cpp:270] This network produces output loss\n", + "I0224 00:32:05.815958 658 net.cpp:283] Network initialization done.\n", + "I0224 00:32:05.815978 658 solver.cpp:60] Solver scaffolding done.\n", + "I0224 00:32:05.816000 658 caffe.cpp:219] Starting Optimization\n", + "I0224 00:32:05.816016 658 solver.cpp:280] Solving \n", + "I0224 00:32:05.816030 658 solver.cpp:281] Learning Rate Policy: step\n", + "I0224 00:32:05.816048 658 solver.cpp:338] Iteration 0, Testing net (#0)\n", + "I0224 00:32:05.831967 658 solver.cpp:406] Test net output #0: accuracy = 0.4464\n", + "I0224 00:32:05.832033 658 solver.cpp:406] Test net output #1: loss = 0.909841 (* 1 = 0.909841 loss)\n", + "I0224 00:32:05.832186 658 solver.cpp:229] Iteration 0, loss = 0.798509\n", + "I0224 00:32:05.832218 658 solver.cpp:245] Train net output #0: accuracy = 0.6\n", + "I0224 00:32:05.832247 658 solver.cpp:245] Train net output #1: loss = 0.798509 (* 1 = 0.798509 loss)\n", + "I0224 00:32:05.832281 658 sgd_solver.cpp:106] Iteration 0, lr = 0.01\n", + "I0224 00:32:05.859506 658 solver.cpp:338] Iteration 1000, Testing net (#0)\n", + "I0224 00:32:05.862799 658 solver.cpp:406] Test net output #0: accuracy = 0.8156\n", + "I0224 00:32:05.862818 658 solver.cpp:406] Test net output #1: loss = 0.44259 (* 1 = 0.44259 loss)\n", + "I0224 00:32:05.862853 658 solver.cpp:229] Iteration 1000, loss = 0.537015\n", + "I0224 00:32:05.862864 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:05.862875 658 solver.cpp:245] Train net output #1: loss = 0.537015 (* 1 = 0.537015 loss)\n", + "I0224 00:32:05.862885 658 sgd_solver.cpp:106] Iteration 1000, lr = 0.01\n", + "I0224 00:32:05.883155 658 solver.cpp:338] Iteration 2000, Testing net (#0)\n", + "I0224 00:32:05.886435 658 solver.cpp:406] Test net output #0: accuracy = 0.8116\n", + "I0224 00:32:05.886451 658 solver.cpp:406] Test net output #1: loss = 0.434079 (* 1 = 0.434079 loss)\n", + "I0224 00:32:05.886484 658 solver.cpp:229] Iteration 2000, loss = 0.43109\n", + "I0224 00:32:05.886497 658 solver.cpp:245] Train net output #0: accuracy = 0.9\n", + "I0224 00:32:05.886508 658 solver.cpp:245] Train net output #1: loss = 0.43109 (* 1 = 0.43109 loss)\n", + "I0224 00:32:05.886518 658 sgd_solver.cpp:106] Iteration 2000, lr = 0.01\n", + "I0224 00:32:05.907243 658 solver.cpp:338] Iteration 3000, Testing net (#0)\n", + "I0224 00:32:05.910521 658 solver.cpp:406] Test net output #0: accuracy = 0.8168\n", + "I0224 00:32:05.910537 658 solver.cpp:406] Test net output #1: loss = 0.425661 (* 1 = 0.425661 loss)\n", + "I0224 00:32:05.910905 658 solver.cpp:229] Iteration 3000, loss = 0.430245\n", + "I0224 00:32:05.910922 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:05.910933 658 solver.cpp:245] Train net output #1: loss = 0.430245 (* 1 = 0.430245 loss)\n", + "I0224 00:32:05.910943 658 sgd_solver.cpp:106] Iteration 3000, lr = 0.01\n", + "I0224 00:32:05.931205 658 solver.cpp:338] Iteration 4000, Testing net (#0)\n", + "I0224 00:32:05.934479 658 solver.cpp:406] Test net output #0: accuracy = 0.8324\n", + "I0224 00:32:05.934496 658 solver.cpp:406] Test net output #1: loss = 0.404891 (* 1 = 0.404891 loss)\n", + "I0224 00:32:05.934530 658 solver.cpp:229] Iteration 4000, loss = 0.628955\n", + "I0224 00:32:05.934542 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:05.934553 658 solver.cpp:245] Train net output #1: loss = 0.628955 (* 1 = 0.628955 loss)\n", + "I0224 00:32:05.934583 658 sgd_solver.cpp:106] Iteration 4000, lr = 0.01\n", + "I0224 00:32:05.955108 658 solver.cpp:338] Iteration 5000, Testing net (#0)\n", + "I0224 00:32:05.958377 658 solver.cpp:406] Test net output #0: accuracy = 0.8364\n", + "I0224 00:32:05.958395 658 solver.cpp:406] Test net output #1: loss = 0.404235 (* 1 = 0.404235 loss)\n", + "I0224 00:32:05.958432 658 solver.cpp:229] Iteration 5000, loss = 0.394939\n", + "I0224 00:32:05.958444 658 solver.cpp:245] Train net output #0: accuracy = 0.9\n", + "I0224 00:32:05.958456 658 solver.cpp:245] Train net output #1: loss = 0.39494 (* 1 = 0.39494 loss)\n", + "I0224 00:32:05.958466 658 sgd_solver.cpp:106] Iteration 5000, lr = 0.001\n", + "I0224 00:32:05.978703 658 solver.cpp:338] Iteration 6000, Testing net (#0)\n", + "I0224 00:32:05.981973 658 solver.cpp:406] Test net output #0: accuracy = 0.838\n", + "I0224 00:32:05.981991 658 solver.cpp:406] Test net output #1: loss = 0.385743 (* 1 = 0.385743 loss)\n", + "I0224 00:32:05.982347 658 solver.cpp:229] Iteration 6000, loss = 0.411537\n", + "I0224 00:32:05.982362 658 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:05.982373 658 solver.cpp:245] Train net output #1: loss = 0.411537 (* 1 = 0.411537 loss)\n", + "I0224 00:32:05.982383 658 sgd_solver.cpp:106] Iteration 6000, lr = 0.001\n", + "I0224 00:32:06.003015 658 solver.cpp:338] Iteration 7000, Testing net (#0)\n", + "I0224 00:32:06.006283 658 solver.cpp:406] Test net output #0: accuracy = 0.8388\n", + "I0224 00:32:06.006301 658 solver.cpp:406] Test net output #1: loss = 0.384648 (* 1 = 0.384648 loss)\n", + "I0224 00:32:06.006335 658 solver.cpp:229] Iteration 7000, loss = 0.521072\n", + "I0224 00:32:06.006347 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:06.006358 658 solver.cpp:245] Train net output #1: loss = 0.521073 (* 1 = 0.521073 loss)\n", + "I0224 00:32:06.006368 658 sgd_solver.cpp:106] Iteration 7000, lr = 0.001\n", + "I0224 00:32:06.026715 658 solver.cpp:338] Iteration 8000, Testing net (#0)\n", + "I0224 00:32:06.029965 658 solver.cpp:406] Test net output #0: accuracy = 0.8404\n", + "I0224 00:32:06.029983 658 solver.cpp:406] Test net output #1: loss = 0.380889 (* 1 = 0.380889 loss)\n", + "I0224 00:32:06.030015 658 solver.cpp:229] Iteration 8000, loss = 0.329477\n", + "I0224 00:32:06.030028 658 solver.cpp:245] Train net output #0: accuracy = 0.9\n", + "I0224 00:32:06.030040 658 solver.cpp:245] Train net output #1: loss = 0.329477 (* 1 = 0.329477 loss)\n", + "I0224 00:32:06.030048 658 sgd_solver.cpp:106] Iteration 8000, lr = 0.001\n", + "I0224 00:32:06.050626 658 solver.cpp:338] Iteration 9000, Testing net (#0)\n", + "I0224 00:32:06.053889 658 solver.cpp:406] Test net output #0: accuracy = 0.8376\n", + "I0224 00:32:06.053906 658 solver.cpp:406] Test net output #1: loss = 0.382756 (* 1 = 0.382756 loss)\n", + "I0224 00:32:06.054271 658 solver.cpp:229] Iteration 9000, loss = 0.412227\n", + "I0224 00:32:06.054291 658 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:06.054314 658 solver.cpp:245] Train net output #1: loss = 0.412228 (* 1 = 0.412228 loss)\n", + "I0224 00:32:06.054337 658 sgd_solver.cpp:106] Iteration 9000, lr = 0.001\n", + "I0224 00:32:06.074646 658 solver.cpp:456] Snapshotting to binary proto file examples/hdf5_classification/data/train_iter_10000.caffemodel\n", + "I0224 00:32:06.074808 658 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/hdf5_classification/data/train_iter_10000.solverstate\n", + "I0224 00:32:06.074889 658 solver.cpp:318] Iteration 10000, loss = 0.532798\n", + "I0224 00:32:06.074906 658 solver.cpp:338] Iteration 10000, Testing net (#0)\n", + "I0224 00:32:06.078208 658 solver.cpp:406] Test net output #0: accuracy = 0.8388\n", + "I0224 00:32:06.078225 658 solver.cpp:406] Test net output #1: loss = 0.382042 (* 1 = 0.382042 loss)\n", + "I0224 00:32:06.078234 658 solver.cpp:323] Optimization Done.\n", + "I0224 00:32:06.078241 658 caffe.cpp:222] Optimization Done.\n" + ] + } + ], + "source": [ + "!./build/tools/caffe train -solver examples/hdf5_classification/nonlinear_logreg_solver.prototxt" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Clean up (comment this out if you want to examine the hdf5_classification/data directory).\n", + "shutil.rmtree(dirname)" + ] + } + ], + "metadata": { + "description": "Use Caffe as a generic SGD optimizer to train logistic regression on non-image HDF5 data.", + "example_name": "Off-the-shelf SGD for classification", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "priority": 4 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full.prototxt new file mode 100644 index 00000000..83cf0d86 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full.prototxt @@ -0,0 +1,155 @@ +name: "CIFAR10_full_deploy" +# N.B. input image must be in CIFAR-10 format +# as described at http://www.cs.toronto.edu/~kriz/cifar.html +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 1 dim: 3 dim: 32 dim: 32 } } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "pool1" + top: "pool1" +} +layer { + name: "norm1" + type: "LRN" + bottom: "pool1" + top: "norm1" + lrn_param { + local_size: 3 + alpha: 5e-05 + beta: 0.75 + norm_region: WITHIN_CHANNEL + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "norm1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm2" + type: "LRN" + bottom: "pool2" + top: "norm2" + lrn_param { + local_size: 3 + alpha: 5e-05 + beta: 0.75 + norm_region: WITHIN_CHANNEL + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "norm2" + top: "conv3" + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "conv3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + decay_mult: 250 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 10 + } +} +layer { + name: "prob" + type: "Softmax" + bottom: "ip1" + top: "prob" +} diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver.prototxt new file mode 100644 index 00000000..a8e55399 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver.prototxt @@ -0,0 +1,28 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_full_sigmoid_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 10 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +#weight_decay: 0.004 +# The learning rate policy +lr_policy: "step" +gamma: 1 +stepsize: 5000 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 60000 +# snapshot intermediate results +snapshot: 10000 +snapshot_prefix: "examples/cifar10_full_sigmoid" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt new file mode 100644 index 00000000..a4dabd67 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt @@ -0,0 +1,28 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 10 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +#weight_decay: 0.004 +# The learning rate policy +lr_policy: "step" +gamma: 1 +stepsize: 5000 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 60000 +# snapshot intermediate results +snapshot: 10000 +snapshot_prefix: "examples/cifar10_full_sigmoid_bn" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt new file mode 100644 index 00000000..fba69b81 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt @@ -0,0 +1,212 @@ +name: "CIFAR10_full" +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_train_lmdb" + batch_size: 111 + backend: LMDB + } +} +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_test_lmdb" + batch_size: 1000 + backend: LMDB + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} + + + +layer { + name: "Sigmoid1" + type: "Sigmoid" + bottom: "pool1" + top: "Sigmoid1" +} + +layer { + name: "conv2" + type: "Convolution" + bottom: "Sigmoid1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} + + +layer { + name: "Sigmoid2" + type: "Sigmoid" + bottom: "conv2" + top: "Sigmoid2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "Sigmoid2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "pool2" + top: "conv3" + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } + param { + lr_mult: 1 + } + param { + lr_mult: 1 + } + +} + +layer { + name: "Sigmoid3" + type: "Sigmoid" + bottom: "conv3" + top: "Sigmoid3" +} + +layer { + name: "pool3" + type: "Pooling" + bottom: "Sigmoid3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} + +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + decay_mult: 0 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip1" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip1" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt new file mode 100644 index 00000000..1a810751 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt @@ -0,0 +1,240 @@ +name: "CIFAR10_full" +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_train_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_test_lmdb" + batch_size: 1000 + backend: LMDB + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + bias_term: false + weight_filler { + type: "gaussian" + std: 0.0001 + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} + +layer { + name: "bn1" + type: "BatchNorm" + bottom: "pool1" + top: "bn1" + param { + lr_mult: 0 + } + param { + lr_mult: 0 + } + param { + lr_mult: 0 + } +} + +layer { + name: "Sigmoid1" + type: "Sigmoid" + bottom: "bn1" + top: "Sigmoid1" +} + +layer { + name: "conv2" + type: "Convolution" + bottom: "Sigmoid1" + top: "conv2" + param { + lr_mult: 1 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + bias_term: false + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} + +layer { + name: "bn2" + type: "BatchNorm" + bottom: "conv2" + top: "bn2" + param { + lr_mult: 0 + } + param { + lr_mult: 0 + } + param { + lr_mult: 0 + } +} + +layer { + name: "Sigmoid2" + type: "Sigmoid" + bottom: "bn2" + top: "Sigmoid2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "Sigmoid2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "pool2" + top: "conv3" + param { + lr_mult: 1 + } + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + bias_term: false + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} + +layer { + name: "bn3" + type: "BatchNorm" + bottom: "conv3" + top: "bn3" + param { + lr_mult: 0 + } + param { + lr_mult: 0 + } + param { + lr_mult: 0 + } +} + +layer { + name: "Sigmoid3" + type: "Sigmoid" + bottom: "bn3" + top: "Sigmoid3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "Sigmoid3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} + +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip1" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip1" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_solver.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_solver.prototxt new file mode 100644 index 00000000..882daa2d --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_solver.prototxt @@ -0,0 +1,27 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_full_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 200 iterations +display: 200 +# The maximum number of iterations +max_iter: 60000 +# snapshot intermediate results +snapshot: 10000 +snapshot_format: HDF5 +snapshot_prefix: "examples/cifar10/cifar10_full" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr1.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr1.prototxt new file mode 100644 index 00000000..55f4be44 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr1.prototxt @@ -0,0 +1,27 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_full_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.0001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 200 iterations +display: 200 +# The maximum number of iterations +max_iter: 65000 +# snapshot intermediate results +snapshot: 5000 +snapshot_format: HDF5 +snapshot_prefix: "examples/cifar10/cifar10_full" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr2.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr2.prototxt new file mode 100644 index 00000000..7c3d2da3 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_solver_lr2.prototxt @@ -0,0 +1,27 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_full_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.00001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 200 iterations +display: 200 +# The maximum number of iterations +max_iter: 70000 +# snapshot intermediate results +snapshot: 5000 +snapshot_format: HDF5 +snapshot_prefix: "examples/cifar10/cifar10_full" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/cifar10/cifar10_full_train_test.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_full_train_test.prototxt new file mode 100644 index 00000000..d45fc61e --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_full_train_test.prototxt @@ -0,0 +1,220 @@ +name: "CIFAR10_full" +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_train_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_test_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "pool1" + top: "pool1" +} +layer { + name: "norm1" + type: "LRN" + bottom: "pool1" + top: "norm1" + lrn_param { + local_size: 3 + alpha: 5e-05 + beta: 0.75 + norm_region: WITHIN_CHANNEL + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "norm1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm2" + type: "LRN" + bottom: "pool2" + top: "norm2" + lrn_param { + local_size: 3 + alpha: 5e-05 + beta: 0.75 + norm_region: WITHIN_CHANNEL + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "norm2" + top: "conv3" + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "conv3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + decay_mult: 250 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip1" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip1" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/cifar10/cifar10_quick.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_quick.prototxt new file mode 100644 index 00000000..cf3b2a35 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_quick.prototxt @@ -0,0 +1,148 @@ +name: "CIFAR10_quick_test" +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 1 dim: 3 dim: 32 dim: 32 } } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "pool1" + top: "pool1" +} +layer { + name: "conv2" + type: "Convolution" + bottom: "pool1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "pool2" + top: "conv3" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "conv3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 64 + } +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 10 + } +} +layer { + name: "prob" + type: "Softmax" + bottom: "ip2" + top: "prob" +} diff --git a/3rdparty/caffe/examples/cifar10/cifar10_quick_solver.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_quick_solver.prototxt new file mode 100644 index 00000000..14b4401b --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_quick_solver.prototxt @@ -0,0 +1,25 @@ +# reduce the learning rate after 8 epochs (4000 iters) by a factor of 10 + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_quick_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 4000 +# snapshot intermediate results +snapshot: 4000 +snapshot_prefix: "examples/cifar10/cifar10_quick" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/cifar10/cifar10_quick_solver_lr1.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_quick_solver_lr1.prototxt new file mode 100644 index 00000000..f8f1efd5 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_quick_solver_lr1.prototxt @@ -0,0 +1,26 @@ +# reduce the learning rate after 8 epochs (4000 iters) by a factor of 10 + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_quick_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.0001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 5000 +# snapshot intermediate results +snapshot: 5000 +snapshot_format: HDF5 +snapshot_prefix: "examples/cifar10/cifar10_quick" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/cifar10/cifar10_quick_train_test.prototxt b/3rdparty/caffe/examples/cifar10/cifar10_quick_train_test.prototxt new file mode 100644 index 00000000..23177393 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/cifar10_quick_train_test.prototxt @@ -0,0 +1,222 @@ +name: "CIFAR10_quick" +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_train_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_test_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "pool1" + top: "pool1" +} +layer { + name: "conv2" + type: "Convolution" + bottom: "pool1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "pool2" + top: "conv3" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "conv3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 64 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip2" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip2" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/cifar10/convert_cifar_data.cpp b/3rdparty/caffe/examples/cifar10/convert_cifar_data.cpp new file mode 100644 index 00000000..7385a74a --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/convert_cifar_data.cpp @@ -0,0 +1,110 @@ +// +// This script converts the CIFAR dataset to the leveldb format used +// by caffe to perform classification. +// Usage: +// convert_cifar_data input_folder output_db_file +// The CIFAR dataset could be downloaded at +// http://www.cs.toronto.edu/~kriz/cifar.html + +#include // NOLINT(readability/streams) +#include + +#include "boost/scoped_ptr.hpp" +#include "glog/logging.h" +#include "google/protobuf/text_format.h" +#include "stdint.h" + +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" +#include "caffe/util/format.hpp" + +using caffe::Datum; +using boost::scoped_ptr; +using std::string; +namespace db = caffe::db; + +const int kCIFARSize = 32; +const int kCIFARImageNBytes = 3072; +const int kCIFARBatchSize = 10000; +const int kCIFARTrainBatches = 5; + +void read_image(std::ifstream* file, int* label, char* buffer) { + char label_char; + file->read(&label_char, 1); + *label = label_char; + file->read(buffer, kCIFARImageNBytes); + return; +} + +void convert_dataset(const string& input_folder, const string& output_folder, + const string& db_type) { + scoped_ptr train_db(db::GetDB(db_type)); + train_db->Open(output_folder + "/cifar10_train_" + db_type, db::NEW); + scoped_ptr txn(train_db->NewTransaction()); + // Data buffer + int label; + char str_buffer[kCIFARImageNBytes]; + Datum datum; + datum.set_channels(3); + datum.set_height(kCIFARSize); + datum.set_width(kCIFARSize); + + LOG(INFO) << "Writing Training data"; + for (int fileid = 0; fileid < kCIFARTrainBatches; ++fileid) { + // Open files + LOG(INFO) << "Training Batch " << fileid + 1; + string batchFileName = input_folder + "/data_batch_" + + caffe::format_int(fileid+1) + ".bin"; + std::ifstream data_file(batchFileName.c_str(), + std::ios::in | std::ios::binary); + CHECK(data_file) << "Unable to open train file #" << fileid + 1; + for (int itemid = 0; itemid < kCIFARBatchSize; ++itemid) { + read_image(&data_file, &label, str_buffer); + datum.set_label(label); + datum.set_data(str_buffer, kCIFARImageNBytes); + string out; + CHECK(datum.SerializeToString(&out)); + txn->Put(caffe::format_int(fileid * kCIFARBatchSize + itemid, 5), out); + } + } + txn->Commit(); + train_db->Close(); + + LOG(INFO) << "Writing Testing data"; + scoped_ptr test_db(db::GetDB(db_type)); + test_db->Open(output_folder + "/cifar10_test_" + db_type, db::NEW); + txn.reset(test_db->NewTransaction()); + // Open files + std::ifstream data_file((input_folder + "/test_batch.bin").c_str(), + std::ios::in | std::ios::binary); + CHECK(data_file) << "Unable to open test file."; + for (int itemid = 0; itemid < kCIFARBatchSize; ++itemid) { + read_image(&data_file, &label, str_buffer); + datum.set_label(label); + datum.set_data(str_buffer, kCIFARImageNBytes); + string out; + CHECK(datum.SerializeToString(&out)); + txn->Put(caffe::format_int(itemid, 5), out); + } + txn->Commit(); + test_db->Close(); +} + +int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; + + if (argc != 4) { + printf("This script converts the CIFAR dataset to the leveldb format used\n" + "by caffe to perform classification.\n" + "Usage:\n" + " convert_cifar_data input_folder output_folder db_type\n" + "Where the input folder should contain the binary batch files.\n" + "The CIFAR dataset could be downloaded at\n" + " http://www.cs.toronto.edu/~kriz/cifar.html\n" + "You should gunzip them after downloading.\n"); + } else { + google::InitGoogleLogging(argv[0]); + convert_dataset(string(argv[1]), string(argv[2]), string(argv[3])); + } + return 0; +} diff --git a/3rdparty/caffe/examples/cifar10/create_cifar10.sh b/3rdparty/caffe/examples/cifar10/create_cifar10.sh new file mode 100755 index 00000000..7ee1d6ad --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/create_cifar10.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env sh +# This script converts the cifar data into leveldb format. +set -e + +EXAMPLE=examples/cifar10 +DATA=data/cifar10 +DBTYPE=lmdb + +echo "Creating $DBTYPE..." + +rm -rf $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/cifar10_test_$DBTYPE + +./build/examples/cifar10/convert_cifar_data.bin $DATA $EXAMPLE $DBTYPE + +echo "Computing image mean..." + +./build/tools/compute_image_mean -backend=$DBTYPE \ + $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/mean.binaryproto + +echo "Done." diff --git a/3rdparty/caffe/examples/cifar10/readme.md b/3rdparty/caffe/examples/cifar10/readme.md new file mode 100644 index 00000000..5d8d81e3 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/readme.md @@ -0,0 +1,97 @@ +--- +title: CIFAR-10 tutorial +category: example +description: Train and test Caffe on CIFAR-10 data. +include_in_docs: true +priority: 5 +--- + +Alex's CIFAR-10 tutorial, Caffe style +===================================== + +Alex Krizhevsky's [cuda-convnet](https://code.google.com/p/cuda-convnet/) details the model definitions, parameters, and training procedure for good performance on CIFAR-10. This example reproduces his results in Caffe. + +We will assume that you have Caffe successfully compiled. If not, please refer to the [Installation page](/installation.html). In this tutorial, we will assume that your caffe installation is located at `CAFFE_ROOT`. + +We thank @chyojn for the pull request that defined the model schemas and solver configurations. + +*This example is a work-in-progress. It would be nice to further explain details of the network and training choices and benchmark the full training.* + +Prepare the Dataset +------------------- + +You will first need to download and convert the data format from the [CIFAR-10 website](http://www.cs.toronto.edu/~kriz/cifar.html). To do this, simply run the following commands: + + cd $CAFFE_ROOT + ./data/cifar10/get_cifar10.sh + ./examples/cifar10/create_cifar10.sh + +If it complains that `wget` or `gunzip` are not installed, you need to install them respectively. After running the script there should be the dataset, `./cifar10-leveldb`, and the data set image mean `./mean.binaryproto`. + +The Model +--------- + +The CIFAR-10 model is a CNN that composes layers of convolution, pooling, rectified linear unit (ReLU) nonlinearities, and local contrast normalization with a linear classifier on top of it all. We have defined the model in the `CAFFE_ROOT/examples/cifar10` directory's `cifar10_quick_train_test.prototxt`. + +Training and Testing the "Quick" Model +-------------------------------------- + +Training the model is simple after you have written the network definition protobuf and solver protobuf files (refer to [MNIST Tutorial](../examples/mnist.html)). Simply run `train_quick.sh`, or the following command directly: + + cd $CAFFE_ROOT + ./examples/cifar10/train_quick.sh + +`train_quick.sh` is a simple script, so have a look inside. The main tool for training is `caffe` with the `train` action, and the solver protobuf text file as its argument. + +When you run the code, you will see a lot of messages flying by like this: + + I0317 21:52:48.945710 2008298256 net.cpp:74] Creating Layer conv1 + I0317 21:52:48.945716 2008298256 net.cpp:84] conv1 <- data + I0317 21:52:48.945725 2008298256 net.cpp:110] conv1 -> conv1 + I0317 21:52:49.298691 2008298256 net.cpp:125] Top shape: 100 32 32 32 (3276800) + I0317 21:52:49.298719 2008298256 net.cpp:151] conv1 needs backward computation. + +These messages tell you the details about each layer, its connections and its output shape, which may be helpful in debugging. After the initialization, the training will start: + + I0317 21:52:49.309370 2008298256 net.cpp:166] Network initialization done. + I0317 21:52:49.309376 2008298256 net.cpp:167] Memory required for Data 23790808 + I0317 21:52:49.309422 2008298256 solver.cpp:36] Solver scaffolding done. + I0317 21:52:49.309447 2008298256 solver.cpp:47] Solving CIFAR10_quick_train + +Based on the solver setting, we will print the training loss function every 100 iterations, and test the network every 500 iterations. You will see messages like this: + + I0317 21:53:12.179772 2008298256 solver.cpp:208] Iteration 100, lr = 0.001 + I0317 21:53:12.185698 2008298256 solver.cpp:65] Iteration 100, loss = 1.73643 + ... + I0317 21:54:41.150030 2008298256 solver.cpp:87] Iteration 500, Testing net + I0317 21:54:47.129461 2008298256 solver.cpp:114] Test score #0: 0.5504 + I0317 21:54:47.129500 2008298256 solver.cpp:114] Test score #1: 1.27805 + +For each training iteration, `lr` is the learning rate of that iteration, and `loss` is the training function. For the output of the testing phase, **score 0 is the accuracy**, and **score 1 is the testing loss function**. + +And after making yourself a cup of coffee, you are done! + + I0317 22:12:19.666914 2008298256 solver.cpp:87] Iteration 5000, Testing net + I0317 22:12:25.580330 2008298256 solver.cpp:114] Test score #0: 0.7533 + I0317 22:12:25.580379 2008298256 solver.cpp:114] Test score #1: 0.739837 + I0317 22:12:25.587262 2008298256 solver.cpp:130] Snapshotting to cifar10_quick_iter_5000 + I0317 22:12:25.590215 2008298256 solver.cpp:137] Snapshotting solver state to cifar10_quick_iter_5000.solverstate + I0317 22:12:25.592813 2008298256 solver.cpp:81] Optimization Done. + +Our model achieved ~75% test accuracy. The model parameters are stored in binary protobuf format in + + cifar10_quick_iter_5000 + +which is ready-to-deploy in CPU or GPU mode! Refer to the `CAFFE_ROOT/examples/cifar10/cifar10_quick.prototxt` for the deployment model definition that can be called on new data. + +Why train on a GPU? +------------------- + +CIFAR-10, while still small, has enough data to make GPU training attractive. + +To compare CPU vs. GPU training speed, simply change one line in all the `cifar*solver.prototxt`: + + # solver mode: CPU or GPU + solver_mode: CPU + +and you will be using CPU for training. diff --git a/3rdparty/caffe/examples/cifar10/train_full.sh b/3rdparty/caffe/examples/cifar10/train_full.sh new file mode 100755 index 00000000..fe46e60d --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/train_full.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env sh +set -e + +TOOLS=./build/tools + +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_full_solver.prototxt $@ + +# reduce learning rate by factor of 10 +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_full_solver_lr1.prototxt \ + --snapshot=examples/cifar10/cifar10_full_iter_60000.solverstate $@ + +# reduce learning rate by factor of 10 +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_full_solver_lr2.prototxt \ + --snapshot=examples/cifar10/cifar10_full_iter_65000.solverstate $@ diff --git a/3rdparty/caffe/examples/cifar10/train_full_sigmoid.sh b/3rdparty/caffe/examples/cifar10/train_full_sigmoid.sh new file mode 100755 index 00000000..9b5d5213 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/train_full_sigmoid.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +set -e + +TOOLS=./build/tools + +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_full_sigmoid_solver.prototxt $@ + diff --git a/3rdparty/caffe/examples/cifar10/train_full_sigmoid_bn.sh b/3rdparty/caffe/examples/cifar10/train_full_sigmoid_bn.sh new file mode 100755 index 00000000..05547f3a --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/train_full_sigmoid_bn.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +set -e + +TOOLS=./build/tools + +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt $@ + diff --git a/3rdparty/caffe/examples/cifar10/train_quick.sh b/3rdparty/caffe/examples/cifar10/train_quick.sh new file mode 100755 index 00000000..257479e0 --- /dev/null +++ b/3rdparty/caffe/examples/cifar10/train_quick.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh +set -e + +TOOLS=./build/tools + +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_quick_solver.prototxt $@ + +# reduce learning rate by factor of 10 after 8 epochs +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \ + --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate $@ diff --git a/3rdparty/caffe/examples/cpp_classification/classification.cpp b/3rdparty/caffe/examples/cpp_classification/classification.cpp new file mode 100644 index 00000000..6b67c537 --- /dev/null +++ b/3rdparty/caffe/examples/cpp_classification/classification.cpp @@ -0,0 +1,265 @@ +#include +#ifdef USE_OPENCV +#include +#include +#include +#endif // USE_OPENCV +#include +#include +#include +#include +#include +#include + +#ifdef USE_OPENCV +using namespace caffe; // NOLINT(build/namespaces) +using std::string; + +/* Pair (label, confidence) representing a prediction. */ +typedef std::pair Prediction; + +class Classifier { + public: + Classifier(const string& model_file, + const string& trained_file, + const string& mean_file, + const string& label_file); + + std::vector Classify(const cv::Mat& img, int N = 5); + + private: + void SetMean(const string& mean_file); + + std::vector Predict(const cv::Mat& img); + + void WrapInputLayer(std::vector* input_channels); + + void Preprocess(const cv::Mat& img, + std::vector* input_channels); + + private: + shared_ptr > net_; + cv::Size input_geometry_; + int num_channels_; + cv::Mat mean_; + std::vector labels_; +}; + +Classifier::Classifier(const string& model_file, + const string& trained_file, + const string& mean_file, + const string& label_file) { +#ifdef CPU_ONLY + Caffe::set_mode(Caffe::CPU); +#else + Caffe::set_mode(Caffe::GPU); +#endif + + /* Load the network. */ + net_.reset(new Net(model_file, TEST)); + net_->CopyTrainedLayersFrom(trained_file); + + CHECK_EQ(net_->num_inputs(), 1) << "Network should have exactly one input."; + CHECK_EQ(net_->num_outputs(), 1) << "Network should have exactly one output."; + + Blob* input_layer = net_->input_blobs()[0]; + num_channels_ = input_layer->channels(); + CHECK(num_channels_ == 3 || num_channels_ == 1) + << "Input layer should have 1 or 3 channels."; + input_geometry_ = cv::Size(input_layer->width(), input_layer->height()); + + /* Load the binaryproto mean file. */ + SetMean(mean_file); + + /* Load labels. */ + std::ifstream labels(label_file.c_str()); + CHECK(labels) << "Unable to open labels file " << label_file; + string line; + while (std::getline(labels, line)) + labels_.push_back(string(line)); + + Blob* output_layer = net_->output_blobs()[0]; + CHECK_EQ(labels_.size(), output_layer->channels()) + << "Number of labels is different from the output layer dimension."; +} + +static bool PairCompare(const std::pair& lhs, + const std::pair& rhs) { + return lhs.first > rhs.first; +} + +/* Return the indices of the top N values of vector v. */ +static std::vector Argmax(const std::vector& v, int N) { + std::vector > pairs; + for (size_t i = 0; i < v.size(); ++i) + pairs.push_back(std::make_pair(v[i], i)); + std::partial_sort(pairs.begin(), pairs.begin() + N, pairs.end(), PairCompare); + + std::vector result; + for (int i = 0; i < N; ++i) + result.push_back(pairs[i].second); + return result; +} + +/* Return the top N predictions. */ +std::vector Classifier::Classify(const cv::Mat& img, int N) { + std::vector output = Predict(img); + + N = std::min(labels_.size(), N); + std::vector maxN = Argmax(output, N); + std::vector predictions; + for (int i = 0; i < N; ++i) { + int idx = maxN[i]; + predictions.push_back(std::make_pair(labels_[idx], output[idx])); + } + + return predictions; +} + +/* Load the mean file in binaryproto format. */ +void Classifier::SetMean(const string& mean_file) { + BlobProto blob_proto; + ReadProtoFromBinaryFileOrDie(mean_file.c_str(), &blob_proto); + + /* Convert from BlobProto to Blob */ + Blob mean_blob; + mean_blob.FromProto(blob_proto); + CHECK_EQ(mean_blob.channels(), num_channels_) + << "Number of channels of mean file doesn't match input layer."; + + /* The format of the mean file is planar 32-bit float BGR or grayscale. */ + std::vector channels; + float* data = mean_blob.mutable_cpu_data(); + for (int i = 0; i < num_channels_; ++i) { + /* Extract an individual channel. */ + cv::Mat channel(mean_blob.height(), mean_blob.width(), CV_32FC1, data); + channels.push_back(channel); + data += mean_blob.height() * mean_blob.width(); + } + + /* Merge the separate channels into a single image. */ + cv::Mat mean; + cv::merge(channels, mean); + + /* Compute the global mean pixel value and create a mean image + * filled with this value. */ + cv::Scalar channel_mean = cv::mean(mean); + mean_ = cv::Mat(input_geometry_, mean.type(), channel_mean); +} + +std::vector Classifier::Predict(const cv::Mat& img) { + Blob* input_layer = net_->input_blobs()[0]; + input_layer->Reshape(1, num_channels_, + input_geometry_.height, input_geometry_.width); + /* Forward dimension change to all layers. */ + net_->Reshape(); + + std::vector input_channels; + WrapInputLayer(&input_channels); + + Preprocess(img, &input_channels); + + net_->Forward(); + + /* Copy the output layer to a std::vector */ + Blob* output_layer = net_->output_blobs()[0]; + const float* begin = output_layer->cpu_data(); + const float* end = begin + output_layer->channels(); + return std::vector(begin, end); +} + +/* Wrap the input layer of the network in separate cv::Mat objects + * (one per channel). This way we save one memcpy operation and we + * don't need to rely on cudaMemcpy2D. The last preprocessing + * operation will write the separate channels directly to the input + * layer. */ +void Classifier::WrapInputLayer(std::vector* input_channels) { + Blob* input_layer = net_->input_blobs()[0]; + + int width = input_layer->width(); + int height = input_layer->height(); + float* input_data = input_layer->mutable_cpu_data(); + for (int i = 0; i < input_layer->channels(); ++i) { + cv::Mat channel(height, width, CV_32FC1, input_data); + input_channels->push_back(channel); + input_data += width * height; + } +} + +void Classifier::Preprocess(const cv::Mat& img, + std::vector* input_channels) { + /* Convert the input image to the input image format of the network. */ + cv::Mat sample; + if (img.channels() == 3 && num_channels_ == 1) + cv::cvtColor(img, sample, cv::COLOR_BGR2GRAY); + else if (img.channels() == 4 && num_channels_ == 1) + cv::cvtColor(img, sample, cv::COLOR_BGRA2GRAY); + else if (img.channels() == 4 && num_channels_ == 3) + cv::cvtColor(img, sample, cv::COLOR_BGRA2BGR); + else if (img.channels() == 1 && num_channels_ == 3) + cv::cvtColor(img, sample, cv::COLOR_GRAY2BGR); + else + sample = img; + + cv::Mat sample_resized; + if (sample.size() != input_geometry_) + cv::resize(sample, sample_resized, input_geometry_); + else + sample_resized = sample; + + cv::Mat sample_float; + if (num_channels_ == 3) + sample_resized.convertTo(sample_float, CV_32FC3); + else + sample_resized.convertTo(sample_float, CV_32FC1); + + cv::Mat sample_normalized; + cv::subtract(sample_float, mean_, sample_normalized); + + /* This operation will write the separate BGR planes directly to the + * input layer of the network because it is wrapped by the cv::Mat + * objects in input_channels. */ + cv::split(sample_normalized, *input_channels); + + CHECK(reinterpret_cast(input_channels->at(0).data) + == net_->input_blobs()[0]->cpu_data()) + << "Input channels are not wrapping the input layer of the network."; +} + +int main(int argc, char** argv) { + if (argc != 6) { + std::cerr << "Usage: " << argv[0] + << " deploy.prototxt network.caffemodel" + << " mean.binaryproto labels.txt img.jpg" << std::endl; + return 1; + } + + ::google::InitGoogleLogging(argv[0]); + + string model_file = argv[1]; + string trained_file = argv[2]; + string mean_file = argv[3]; + string label_file = argv[4]; + Classifier classifier(model_file, trained_file, mean_file, label_file); + + string file = argv[5]; + + std::cout << "---------- Prediction for " + << file << " ----------" << std::endl; + + cv::Mat img = cv::imread(file, -1); + CHECK(!img.empty()) << "Unable to decode image " << file; + std::vector predictions = classifier.Classify(img); + + /* Print the top N predictions. */ + for (size_t i = 0; i < predictions.size(); ++i) { + Prediction p = predictions[i]; + std::cout << std::fixed << std::setprecision(4) << p.second << " - \"" + << p.first << "\"" << std::endl; + } +} +#else +int main(int argc, char** argv) { + LOG(FATAL) << "This example requires OpenCV; compile with USE_OPENCV."; +} +#endif // USE_OPENCV diff --git a/3rdparty/caffe/examples/cpp_classification/readme.md b/3rdparty/caffe/examples/cpp_classification/readme.md new file mode 100644 index 00000000..4f683aa6 --- /dev/null +++ b/3rdparty/caffe/examples/cpp_classification/readme.md @@ -0,0 +1,77 @@ +--- +title: CaffeNet C++ Classification example +description: A simple example performing image classification using the low-level C++ API. +category: example +include_in_docs: true +priority: 10 +--- + +# Classifying ImageNet: using the C++ API + +Caffe, at its core, is written in C++. It is possible to use the C++ +API of Caffe to implement an image classification application similar +to the Python code presented in one of the Notebook examples. To look +at a more general-purpose example of the Caffe C++ API, you should +study the source code of the command line tool `caffe` in `tools/caffe.cpp`. + +## Presentation + +A simple C++ code is proposed in +`examples/cpp_classification/classification.cpp`. For the sake of +simplicity, this example does not support oversampling of a single +sample nor batching of multiple independent samples. This example is +not trying to reach the maximum possible classification throughput on +a system, but special care was given to avoid unnecessary +pessimization while keeping the code readable. + +## Compiling + +The C++ example is built automatically when compiling Caffe. To +compile Caffe you should follow the documented instructions. The +classification example will be built as `examples/classification.bin` +in your build directory. + +## Usage + +To use the pre-trained CaffeNet model with the classification example, +you need to download it from the "Model Zoo" using the following +script: +``` +./scripts/download_model_binary.py models/bvlc_reference_caffenet +``` +The ImageNet labels file (also called the *synset file*) is also +required in order to map a prediction to the name of the class: +``` +./data/ilsvrc12/get_ilsvrc_aux.sh +``` +Using the files that were downloaded, we can classify the provided cat +image (`examples/images/cat.jpg`) using this command: +``` +./build/examples/cpp_classification/classification.bin \ + models/bvlc_reference_caffenet/deploy.prototxt \ + models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \ + data/ilsvrc12/imagenet_mean.binaryproto \ + data/ilsvrc12/synset_words.txt \ + examples/images/cat.jpg +``` +The output should look like this: +``` +---------- Prediction for examples/images/cat.jpg ---------- +0.3134 - "n02123045 tabby, tabby cat" +0.2380 - "n02123159 tiger cat" +0.1235 - "n02124075 Egyptian cat" +0.1003 - "n02119022 red fox, Vulpes vulpes" +0.0715 - "n02127052 lynx, catamount" +``` + +## Improving Performance + +To further improve performance, you will need to leverage the GPU +more, here are some guidelines: + +* Move the data on the GPU early and perform all preprocessing +operations there. +* If you have many images to classify simultaneously, you should use +batching (independent images are classified in a single forward pass). +* Use multiple classification threads to ensure the GPU is always fully +utilized and not waiting for an I/O blocked CPU thread. diff --git a/3rdparty/caffe/examples/detection.ipynb b/3rdparty/caffe/examples/detection.ipynb new file mode 100644 index 00000000..6a03c996 --- /dev/null +++ b/3rdparty/caffe/examples/detection.ipynb @@ -0,0 +1,8392 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[R-CNN](https://github.com/rbgirshick/rcnn) is a state-of-the-art detector that classifies region proposals by a finetuned Caffe model. For the full details of the R-CNN system and model, refer to its project site and the paper:\n", + "\n", + "> *Rich feature hierarchies for accurate object detection and semantic segmentation*. Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik. CVPR 2014. [Arxiv 2013](http://arxiv.org/abs/1311.2524).\n", + "\n", + "In this example, we do detection by a pure Caffe edition of the R-CNN model for ImageNet. The R-CNN detector outputs class scores for the 200 detection classes of ILSVRC13. Keep in mind that these are raw one vs. all SVM scores, so they are not probabilistically calibrated or exactly comparable across classes. Note that this off-the-shelf model is simply for convenience, and is not the full R-CNN model.\n", + "\n", + "Let's run detection on an image of a bicyclist riding a fish bike in the desert (from the ImageNet challenge—no joke).\n", + "\n", + "First, we'll need region proposals and the Caffe R-CNN ImageNet model:\n", + "\n", + "- [Selective Search](http://koen.me/research/selectivesearch/) is the region proposer used by R-CNN. The [selective_search_ijcv_with_python](https://github.com/sergeyk/selective_search_ijcv_with_python) Python module takes care of extracting proposals through the selective search MATLAB implementation. To install it, download the module and name its directory `selective_search_ijcv_with_python`, run the demo in MATLAB to compile the necessary functions, then add it to your `PYTHONPATH` for importing. (If you have your own region proposals prepared, or would rather not bother with this step, [detect.py](https://github.com/BVLC/caffe/blob/master/python/detect.py) accepts a list of images and bounding boxes as CSV.)\n", + "\n", + "-Run `./scripts/download_model_binary.py models/bvlc_reference_rcnn_ilsvrc13` to get the Caffe R-CNN ImageNet model.\n", + "\n", + "With that done, we'll call the bundled `detect.py` to generate the region proposals and run the network. For an explanation of the arguments, do `./detect.py --help`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: Logging before InitGoogleLogging() is written to STDERR\n", + "I0218 20:43:25.383932 2099749632 net.cpp:42] Initializing net from parameters: \n", + "name: \"R-CNN-ilsvrc13\"\n", + "input: \"data\"\n", + "input_dim: 10\n", + "input_dim: 3\n", + "input_dim: 227\n", + "input_dim: 227\n", + "state {\n", + " phase: TEST\n", + "}\n", + "layer {\n", + " name: \"conv1\"\n", + " type: \"Convolution\"\n", + " bottom: \"data\"\n", + " top: \"conv1\"\n", + " convolution_param {\n", + " num_output: 96\n", + " kernel_size: 11\n", + " stride: 4\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu1\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv1\"\n", + " top: \"conv1\"\n", + "}\n", + "layer {\n", + " name: \"pool1\"\n", + " type: \"Pooling\"\n", + " bottom: \"conv1\"\n", + " top: \"pool1\"\n", + " pooling_param {\n", + " pool: MAX\n", + " kernel_size: 3\n", + " stride: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"norm1\"\n", + " type: \"LRN\"\n", + " bottom: \"pool1\"\n", + " top: \"norm1\"\n", + " lrn_param {\n", + " local_size: 5\n", + " alpha: 0.0001\n", + " beta: 0.75\n", + " }\n", + "}\n", + "layer {\n", + " name: \"conv2\"\n", + " type: \"Convolution\"\n", + " bottom: \"norm1\"\n", + " top: \"conv2\"\n", + " convolution_param {\n", + " num_output: 256\n", + " pad: 2\n", + " kernel_size: 5\n", + " group: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu2\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv2\"\n", + " top: \"conv2\"\n", + "}\n", + "layer {\n", + " name: \"pool2\"\n", + " type: \"Pooling\"\n", + " bottom: \"conv2\"\n", + " top: \"pool2\"\n", + " pooling_param {\n", + " pool: MAX\n", + " kernel_size: 3\n", + " stride: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"norm2\"\n", + " type: \"LRN\"\n", + " bottom: \"pool2\"\n", + " top: \"norm2\"\n", + " lrn_param {\n", + " local_size: 5\n", + " alpha: 0.0001\n", + " beta: 0.75\n", + " }\n", + "}\n", + "layer {\n", + " name: \"conv3\"\n", + " type: \"Convolution\"\n", + " bottom: \"norm2\"\n", + " top: \"conv3\"\n", + " convolution_param {\n", + " num_output: 384\n", + " pad: 1\n", + " kernel_size: 3\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu3\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv3\"\n", + " top: \"conv3\"\n", + "}\n", + "layer {\n", + " name: \"conv4\"\n", + " type: \"Convolution\"\n", + " bottom: \"conv3\"\n", + " top: \"conv4\"\n", + " convolution_param {\n", + " num_output: 384\n", + " pad: 1\n", + " kernel_size: 3\n", + " group: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu4\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv4\"\n", + " top: \"conv4\"\n", + "}\n", + "layer {\n", + " name: \"conv5\"\n", + " type: \"Convolution\"\n", + " bottom: \"conv4\"\n", + " top: \"conv5\"\n", + " convolution_param {\n", + " num_output: 256\n", + " pad: 1\n", + " kernel_size: 3\n", + " group: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu5\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv5\"\n", + " top: \"conv5\"\n", + "}\n", + "layer {\n", + " name: \"pool5\"\n", + " type: \"Pooling\"\n", + " bottom: \"conv5\"\n", + " top: \"pool5\"\n", + " pooling_param {\n", + " pool: MAX\n", + " kernel_size: 3\n", + " stride: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"fc6\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"pool5\"\n", + " top: \"fc6\"\n", + " inner_product_param {\n", + " num_output: 4096\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu6\"\n", + " type: \"ReLU\"\n", + " bottom: \"fc6\"\n", + " top: \"fc6\"\n", + "}\n", + "layer {\n", + " name: \"drop6\"\n", + " type: \"Dropout\"\n", + " bottom: \"fc6\"\n", + " top: \"fc6\"\n", + " dropout_param {\n", + " dropout_ratio: 0.5\n", + " }\n", + "}\n", + "layer {\n", + " name: \"fc7\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"fc6\"\n", + " top: \"fc7\"\n", + " inner_product_param {\n", + " num_output: 4096\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu7\"\n", + " type: \"ReLU\"\n", + " bottom: \"fc7\"\n", + " top: \"fc7\"\n", + "}\n", + "layer {\n", + " name: \"drop7\"\n", + " type: \"Dropout\"\n", + " bottom: \"fc7\"\n", + " top: \"fc7\"\n", + " dropout_param {\n", + " dropout_ratio: 0.5\n", + " }\n", + "}\n", + "layer {\n", + " name: \"fc-rcnn\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"fc7\"\n", + " top: \"fc-rcnn\"\n", + " inner_product_param {\n", + " num_output: 200\n", + " }\n", + "}\n", + "I0218 20:43:25.385720 2099749632 net.cpp:336] Input 0 -> data\n", + "I0218 20:43:25.385769 2099749632 layer_factory.hpp:74] Creating layer conv1\n", + "I0218 20:43:25.385783 2099749632 net.cpp:76] Creating Layer conv1\n", + "I0218 20:43:25.385790 2099749632 net.cpp:372] conv1 <- data\n", + "I0218 20:43:25.385802 2099749632 net.cpp:334] conv1 -> conv1\n", + "I0218 20:43:25.385815 2099749632 net.cpp:105] Setting up conv1\n", + "I0218 20:43:25.386574 2099749632 net.cpp:112] Top shape: 10 96 55 55 (2904000)\n", + "I0218 20:43:25.386610 2099749632 layer_factory.hpp:74] Creating layer relu1\n", + "I0218 20:43:25.386625 2099749632 net.cpp:76] Creating Layer relu1\n", + "I0218 20:43:25.386631 2099749632 net.cpp:372] relu1 <- conv1\n", + "I0218 20:43:25.386641 2099749632 net.cpp:323] relu1 -> conv1 (in-place)\n", + "I0218 20:43:25.386649 2099749632 net.cpp:105] Setting up relu1\n", + "I0218 20:43:25.386656 2099749632 net.cpp:112] Top shape: 10 96 55 55 (2904000)\n", + "I0218 20:43:25.386663 2099749632 layer_factory.hpp:74] Creating layer pool1\n", + "I0218 20:43:25.386675 2099749632 net.cpp:76] Creating Layer pool1\n", + "I0218 20:43:25.386682 2099749632 net.cpp:372] pool1 <- conv1\n", + "I0218 20:43:25.386690 2099749632 net.cpp:334] pool1 -> pool1\n", + "I0218 20:43:25.386699 2099749632 net.cpp:105] Setting up pool1\n", + "I0218 20:43:25.386716 2099749632 net.cpp:112] Top shape: 10 96 27 27 (699840)\n", + "I0218 20:43:25.386725 2099749632 layer_factory.hpp:74] Creating layer norm1\n", + "I0218 20:43:25.386736 2099749632 net.cpp:76] Creating Layer norm1\n", + "I0218 20:43:25.386744 2099749632 net.cpp:372] norm1 <- pool1\n", + "I0218 20:43:25.386803 2099749632 net.cpp:334] norm1 -> norm1\n", + "I0218 20:43:25.386819 2099749632 net.cpp:105] Setting up norm1\n", + "I0218 20:43:25.386832 2099749632 net.cpp:112] Top shape: 10 96 27 27 (699840)\n", + "I0218 20:43:25.386842 2099749632 layer_factory.hpp:74] Creating layer conv2\n", + "I0218 20:43:25.386852 2099749632 net.cpp:76] Creating Layer conv2\n", + "I0218 20:43:25.386865 2099749632 net.cpp:372] conv2 <- norm1\n", + "I0218 20:43:25.386878 2099749632 net.cpp:334] conv2 -> conv2\n", + "I0218 20:43:25.386899 2099749632 net.cpp:105] Setting up conv2\n", + "I0218 20:43:25.387024 2099749632 net.cpp:112] Top shape: 10 256 27 27 (1866240)\n", + "I0218 20:43:25.387042 2099749632 layer_factory.hpp:74] Creating layer relu2\n", + "I0218 20:43:25.387050 2099749632 net.cpp:76] Creating Layer relu2\n", + "I0218 20:43:25.387058 2099749632 net.cpp:372] relu2 <- conv2\n", + "I0218 20:43:25.387066 2099749632 net.cpp:323] relu2 -> conv2 (in-place)\n", + "I0218 20:43:25.387075 2099749632 net.cpp:105] Setting up relu2\n", + "I0218 20:43:25.387081 2099749632 net.cpp:112] Top shape: 10 256 27 27 (1866240)\n", + "I0218 20:43:25.387089 2099749632 layer_factory.hpp:74] Creating layer pool2\n", + "I0218 20:43:25.387097 2099749632 net.cpp:76] Creating Layer pool2\n", + "I0218 20:43:25.387104 2099749632 net.cpp:372] pool2 <- conv2\n", + "I0218 20:43:25.387112 2099749632 net.cpp:334] pool2 -> pool2\n", + "I0218 20:43:25.387121 2099749632 net.cpp:105] Setting up pool2\n", + "I0218 20:43:25.387130 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.387137 2099749632 layer_factory.hpp:74] Creating layer norm2\n", + "I0218 20:43:25.387145 2099749632 net.cpp:76] Creating Layer norm2\n", + "I0218 20:43:25.387152 2099749632 net.cpp:372] norm2 <- pool2\n", + "I0218 20:43:25.387161 2099749632 net.cpp:334] norm2 -> norm2\n", + "I0218 20:43:25.387168 2099749632 net.cpp:105] Setting up norm2\n", + "I0218 20:43:25.387176 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.387228 2099749632 layer_factory.hpp:74] Creating layer conv3\n", + "I0218 20:43:25.387249 2099749632 net.cpp:76] Creating Layer conv3\n", + "I0218 20:43:25.387258 2099749632 net.cpp:372] conv3 <- norm2\n", + "I0218 20:43:25.387266 2099749632 net.cpp:334] conv3 -> conv3\n", + "I0218 20:43:25.387276 2099749632 net.cpp:105] Setting up conv3\n", + "I0218 20:43:25.389375 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.389408 2099749632 layer_factory.hpp:74] Creating layer relu3\n", + "I0218 20:43:25.389421 2099749632 net.cpp:76] Creating Layer relu3\n", + "I0218 20:43:25.389430 2099749632 net.cpp:372] relu3 <- conv3\n", + "I0218 20:43:25.389438 2099749632 net.cpp:323] relu3 -> conv3 (in-place)\n", + "I0218 20:43:25.389447 2099749632 net.cpp:105] Setting up relu3\n", + "I0218 20:43:25.389456 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.389462 2099749632 layer_factory.hpp:74] Creating layer conv4\n", + "I0218 20:43:25.389472 2099749632 net.cpp:76] Creating Layer conv4\n", + "I0218 20:43:25.389478 2099749632 net.cpp:372] conv4 <- conv3\n", + "I0218 20:43:25.389487 2099749632 net.cpp:334] conv4 -> conv4\n", + "I0218 20:43:25.389497 2099749632 net.cpp:105] Setting up conv4\n", + "I0218 20:43:25.391810 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.391856 2099749632 layer_factory.hpp:74] Creating layer relu4\n", + "I0218 20:43:25.391871 2099749632 net.cpp:76] Creating Layer relu4\n", + "I0218 20:43:25.391880 2099749632 net.cpp:372] relu4 <- conv4\n", + "I0218 20:43:25.391888 2099749632 net.cpp:323] relu4 -> conv4 (in-place)\n", + "I0218 20:43:25.391898 2099749632 net.cpp:105] Setting up relu4\n", + "I0218 20:43:25.391906 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.391913 2099749632 layer_factory.hpp:74] Creating layer conv5\n", + "I0218 20:43:25.391923 2099749632 net.cpp:76] Creating Layer conv5\n", + "I0218 20:43:25.391929 2099749632 net.cpp:372] conv5 <- conv4\n", + "I0218 20:43:25.391937 2099749632 net.cpp:334] conv5 -> conv5\n", + "I0218 20:43:25.391947 2099749632 net.cpp:105] Setting up conv5\n", + "I0218 20:43:25.393072 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.393108 2099749632 layer_factory.hpp:74] Creating layer relu5\n", + "I0218 20:43:25.393122 2099749632 net.cpp:76] Creating Layer relu5\n", + "I0218 20:43:25.393129 2099749632 net.cpp:372] relu5 <- conv5\n", + "I0218 20:43:25.393138 2099749632 net.cpp:323] relu5 -> conv5 (in-place)\n", + "I0218 20:43:25.393148 2099749632 net.cpp:105] Setting up relu5\n", + "I0218 20:43:25.393157 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.393167 2099749632 layer_factory.hpp:74] Creating layer pool5\n", + "I0218 20:43:25.393175 2099749632 net.cpp:76] Creating Layer pool5\n", + "I0218 20:43:25.393182 2099749632 net.cpp:372] pool5 <- conv5\n", + "I0218 20:43:25.393190 2099749632 net.cpp:334] pool5 -> pool5\n", + "I0218 20:43:25.393199 2099749632 net.cpp:105] Setting up pool5\n", + "I0218 20:43:25.393209 2099749632 net.cpp:112] Top shape: 10 256 6 6 (92160)\n", + "I0218 20:43:25.393218 2099749632 layer_factory.hpp:74] Creating layer fc6\n", + "I0218 20:43:25.393226 2099749632 net.cpp:76] Creating Layer fc6\n", + "I0218 20:43:25.393232 2099749632 net.cpp:372] fc6 <- pool5\n", + "I0218 20:43:25.393240 2099749632 net.cpp:334] fc6 -> fc6\n", + "I0218 20:43:25.393249 2099749632 net.cpp:105] Setting up fc6\n", + "I0218 20:43:25.516396 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.516445 2099749632 layer_factory.hpp:74] Creating layer relu6\n", + "I0218 20:43:25.516463 2099749632 net.cpp:76] Creating Layer relu6\n", + "I0218 20:43:25.516470 2099749632 net.cpp:372] relu6 <- fc6\n", + "I0218 20:43:25.516480 2099749632 net.cpp:323] relu6 -> fc6 (in-place)\n", + "I0218 20:43:25.516490 2099749632 net.cpp:105] Setting up relu6\n", + "I0218 20:43:25.516497 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.516505 2099749632 layer_factory.hpp:74] Creating layer drop6\n", + "I0218 20:43:25.516515 2099749632 net.cpp:76] Creating Layer drop6\n", + "I0218 20:43:25.516521 2099749632 net.cpp:372] drop6 <- fc6\n", + "I0218 20:43:25.516530 2099749632 net.cpp:323] drop6 -> fc6 (in-place)\n", + "I0218 20:43:25.516538 2099749632 net.cpp:105] Setting up drop6\n", + "I0218 20:43:25.516557 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.516566 2099749632 layer_factory.hpp:74] Creating layer fc7\n", + "I0218 20:43:25.516576 2099749632 net.cpp:76] Creating Layer fc7\n", + "I0218 20:43:25.516582 2099749632 net.cpp:372] fc7 <- fc6\n", + "I0218 20:43:25.516589 2099749632 net.cpp:334] fc7 -> fc7\n", + "I0218 20:43:25.516599 2099749632 net.cpp:105] Setting up fc7\n", + "I0218 20:43:25.604786 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.604838 2099749632 layer_factory.hpp:74] Creating layer relu7\n", + "I0218 20:43:25.604852 2099749632 net.cpp:76] Creating Layer relu7\n", + "I0218 20:43:25.604859 2099749632 net.cpp:372] relu7 <- fc7\n", + "I0218 20:43:25.604868 2099749632 net.cpp:323] relu7 -> fc7 (in-place)\n", + "I0218 20:43:25.604878 2099749632 net.cpp:105] Setting up relu7\n", + "I0218 20:43:25.604885 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.604893 2099749632 layer_factory.hpp:74] Creating layer drop7\n", + "I0218 20:43:25.604902 2099749632 net.cpp:76] Creating Layer drop7\n", + "I0218 20:43:25.604908 2099749632 net.cpp:372] drop7 <- fc7\n", + "I0218 20:43:25.604917 2099749632 net.cpp:323] drop7 -> fc7 (in-place)\n", + "I0218 20:43:25.604924 2099749632 net.cpp:105] Setting up drop7\n", + "I0218 20:43:25.604933 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.604939 2099749632 layer_factory.hpp:74] Creating layer fc-rcnn\n", + "I0218 20:43:25.604948 2099749632 net.cpp:76] Creating Layer fc-rcnn\n", + "I0218 20:43:25.604954 2099749632 net.cpp:372] fc-rcnn <- fc7\n", + "I0218 20:43:25.604962 2099749632 net.cpp:334] fc-rcnn -> fc-rcnn\n", + "I0218 20:43:25.604971 2099749632 net.cpp:105] Setting up fc-rcnn\n", + "I0218 20:43:25.606878 2099749632 net.cpp:112] Top shape: 10 200 1 1 (2000)\n", + "I0218 20:43:25.606904 2099749632 net.cpp:165] fc-rcnn does not need backward computation.\n", + "I0218 20:43:25.606909 2099749632 net.cpp:165] drop7 does not need backward computation.\n", + "I0218 20:43:25.606916 2099749632 net.cpp:165] relu7 does not need backward computation.\n", + "I0218 20:43:25.606922 2099749632 net.cpp:165] fc7 does not need backward computation.\n", + "I0218 20:43:25.606928 2099749632 net.cpp:165] drop6 does not need backward computation.\n", + "I0218 20:43:25.606935 2099749632 net.cpp:165] relu6 does not need backward computation.\n", + "I0218 20:43:25.606940 2099749632 net.cpp:165] fc6 does not need backward computation.\n", + "I0218 20:43:25.606946 2099749632 net.cpp:165] pool5 does not need backward computation.\n", + "I0218 20:43:25.606952 2099749632 net.cpp:165] relu5 does not need backward computation.\n", + "I0218 20:43:25.606958 2099749632 net.cpp:165] conv5 does not need backward computation.\n", + "I0218 20:43:25.606964 2099749632 net.cpp:165] relu4 does not need backward computation.\n", + "I0218 20:43:25.606971 2099749632 net.cpp:165] conv4 does not need backward computation.\n", + "I0218 20:43:25.606976 2099749632 net.cpp:165] relu3 does not need backward computation.\n", + "I0218 20:43:25.606982 2099749632 net.cpp:165] conv3 does not need backward computation.\n", + "I0218 20:43:25.606988 2099749632 net.cpp:165] norm2 does not need backward computation.\n", + "I0218 20:43:25.606995 2099749632 net.cpp:165] pool2 does not need backward computation.\n", + "I0218 20:43:25.607002 2099749632 net.cpp:165] relu2 does not need backward computation.\n", + "I0218 20:43:25.607007 2099749632 net.cpp:165] conv2 does not need backward computation.\n", + "I0218 20:43:25.607013 2099749632 net.cpp:165] norm1 does not need backward computation.\n", + "I0218 20:43:25.607199 2099749632 net.cpp:165] pool1 does not need backward computation.\n", + "I0218 20:43:25.607213 2099749632 net.cpp:165] relu1 does not need backward computation.\n", + "I0218 20:43:25.607219 2099749632 net.cpp:165] conv1 does not need backward computation.\n", + "I0218 20:43:25.607225 2099749632 net.cpp:201] This network produces output fc-rcnn\n", + "I0218 20:43:25.607239 2099749632 net.cpp:446] Collecting Learning Rate and Weight Decay.\n", + "I0218 20:43:25.607255 2099749632 net.cpp:213] Network initialization done.\n", + "I0218 20:43:25.607262 2099749632 net.cpp:214] Memory required for data: 62425920\n", + "E0218 20:43:26.388214 2099749632 upgrade_proto.cpp:618] Attempting to upgrade input file specified using deprecated V1LayerParameter: ../models/bvlc_reference_rcnn_ilsvrc13/bvlc_reference_rcnn_ilsvrc13.caffemodel\n", + "I0218 20:43:27.089423 2099749632 upgrade_proto.cpp:626] Successfully upgraded file specified using deprecated V1LayerParameter\n", + "GPU mode\n", + "Loading input...\n", + "selective_search_rcnn({'/Users/shelhamer/h/desk/caffe/caffe-dev/examples/images/fish-bike.jpg'}, '/var/folders/bk/dtkn5qjd11bd17b2j36zplyw0000gp/T/tmpakaRLL.mat')\n", + "Processed 1570 windows in 102.895 s.\n", + "/Users/shelhamer/anaconda/lib/python2.7/site-packages/pandas/io/pytables.py:2453: PerformanceWarning: \n", + "your performance may suffer as PyTables will pickle object types that it cannot\n", + "map directly to c-types [inferred_type->mixed,key->block1_values] [items->['prediction']]\n", + "\n", + " warnings.warn(ws, PerformanceWarning)\n", + "Saved to _temp/det_output.h5 in 0.298 s.\n" + ] + } + ], + "source": [ + "!mkdir -p _temp\n", + "!echo `pwd`/images/fish-bike.jpg > _temp/det_input.txt\n", + "!../python/detect.py --crop_mode=selective_search --pretrained_model=../models/bvlc_reference_rcnn_ilsvrc13/bvlc_reference_rcnn_ilsvrc13.caffemodel --model_def=../models/bvlc_reference_rcnn_ilsvrc13/deploy.prototxt --gpu --raw_scale=255 _temp/det_input.txt _temp/det_output.h5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This run was in GPU mode. For CPU mode detection, call `detect.py` without the `--gpu` argument.\n", + "\n", + "Running this outputs a DataFrame with the filenames, selected windows, and their detection scores to an HDF5 file.\n", + "(We only ran on one image, so the filenames will all be the same.)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1570, 5)\n", + "prediction [-2.62247, -2.84579, -2.85122, -3.20838, -1.94...\n", + "ymin 79.846\n", + "xmin 9.62\n", + "ymax 246.31\n", + "xmax 339.624\n", + "Name: /Users/shelhamer/h/desk/caffe/caffe-dev/examples/images/fish-bike.jpg, dtype: object\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "df = pd.read_hdf('_temp/det_output.h5', 'df')\n", + "print(df.shape)\n", + "print(df.iloc[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1570 regions were proposed with the R-CNN configuration of selective search. The number of proposals will vary from image to image based on its contents and size -- selective search isn't scale invariant.\n", + "\n", + "In general, `detect.py` is most efficient when running on a lot of images: it first extracts window proposals for all of them, batches the windows for efficient GPU processing, and then outputs the results.\n", + "Simply list an image per line in the `images_file`, and it will process all of them.\n", + "\n", + "Although this guide gives an example of R-CNN ImageNet detection, `detect.py` is clever enough to adapt to different Caffe models’ input dimensions, batch size, and output categories. You can switch the model definition and pretrained model as desired. Refer to `python detect.py --help` for the parameters to describe your data set. There's no need for hardcoding.\n", + "\n", + "Anyway, let's now load the ILSVRC13 detection class names and make a DataFrame of the predictions. Note you'll need the auxiliary ilsvrc2012 data fetched by `data/ilsvrc12/get_ilsvrc12_aux.sh`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "name\n", + "accordion -2.622471\n", + "airplane -2.845788\n", + "ant -2.851219\n", + "antelope -3.208377\n", + "apple -1.949950\n", + "armadillo -2.472935\n", + "artichoke -2.201684\n", + "axe -2.327404\n", + "baby bed -2.737925\n", + "backpack -2.176763\n", + "bagel -2.681061\n", + "balance beam -2.722538\n", + "banana -2.390628\n", + "band aid -1.598909\n", + "banjo -2.298197\n", + "...\n", + "trombone -2.582361\n", + "trumpet -2.352853\n", + "turtle -2.360859\n", + "tv or monitor -2.761043\n", + "unicycle -2.218467\n", + "vacuum -1.907717\n", + "violin -2.757079\n", + "volleyball -2.723689\n", + "waffle iron -2.418540\n", + "washer -2.408994\n", + "water bottle -2.174899\n", + "watercraft -2.837425\n", + "whale -3.120338\n", + "wine bottle -2.772960\n", + "zebra -2.742913\n", + "Name: 0, Length: 200, dtype: float32\n" + ] + } + ], + "source": [ + "with open('../data/ilsvrc12/det_synset_words.txt') as f:\n", + " labels_df = pd.DataFrame([\n", + " {\n", + " 'synset_id': l.strip().split(' ')[0],\n", + " 'name': ' '.join(l.strip().split(' ')[1:]).split(',')[0]\n", + " }\n", + " for l in f.readlines()\n", + " ])\n", + "labels_df.sort('synset_id')\n", + "predictions_df = pd.DataFrame(np.vstack(df.prediction.values), columns=labels_df['name'])\n", + "print(predictions_df.iloc[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the activations." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAALMAAAOoCAYAAACa7cU2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvUmMZel1Jvbd9+6b75vnMV5MGZlZmSlmJYulEkWCpIQ2\n", + "e+O2V+0GBBE25AXhCTQBEe2FbEAbw4AhayFIC9NA24s2BAluSAuBLUEDSIKqYjIzq3KKOd48z/fN\n", + "0/Ui8juMYIsSkZESuwJ5gUJlRUW+8b//f843HcUwDLy93l7X4TL9vF/A2+vt9aaut4v57XVtrreL\n", + "+e11ba63i/ntdW2ut4v57XVtrreL+e11ba5rsZgVRfmqoij7iqIcKYryrX+k58gpivKJoiiPFUX5\n", + "6NXPAoqi/LmiKIeKovx7RVF8V3j8/0tRlLqiKE8v/OynPr6iKP/61fvdVxTln73B5/xfFEUpvXqf\n", + "jxVF+edv6jkVRUkrivJXiqI8VxTlmaIo//0bfZ+GYXyq/wFgBnAMIAvAAuAJgFv/CM9zBiDwEz/7\n", + "3wD85qs/fwvA/3qFx/8CgPsAnv5Djw/g9qv3aXn1vo8BmN7Qc/7PAP7Hv+N3r/ycAGIAPvPqzxqA\n", + "AwC33tT7vA478+cAHBuGkTMMYwHg/wXwL/6Rnkv5if/+TwH8m1d//jcA/rPXfWDDML4LoPszPv6/\n", + "APBvDcNYGIaRw/mX/Lk39JzAf/g+38hzGoZRMwzjyas/DwG8BJDEG3qf12ExJwEUL/x36dXP3vRl\n", + "APgLRVEeKoryX7/6WdQwjPqrP9cBRN/wc/60x0/g/H3yetPv+b9TFOVjRVG+feHIf6PPqShKFuen\n", + "wod4Q+/zOizmfyo+/vOGYdwH8M8B/DeKonzh0os4Pxf/0V7Lz/D4b+q5fx/AJoDPAKgC+N/f9HMq\n", + "iqIB+GMA/4NhGPqlB7zC+7wOi7kMIH3hv9O4fDe/kcswjOqrfzcB/H84P+7qiqLEAEBRlDiAxht+\n", + "2p/2+D/5nlOvfnblyzCMhvHqAvB/4sfH+ht5TkVRLDhfyP+PYRj/7tWP38j7vA6L+SGAXUVRsoqi\n", + "WAH8SwB/8iafQFEUp6Io7ld/dgH4ZwCevnqer736ta8B+Hd/9yO89vXTHv9PAPwXiqJYFUXZBLAL\n", + "4KM38YSvFhOv/xzn7/ONPKeiKAqAbwN4YRjG/3Hhf72Z9/mmu/6fxz84P/oPcN4g/Ot/hMffxHlX\n", + "/QTAMz4HgACAvwBwCODfA/Bd4Tn+LYAKgDnOe4D/8u97fAD/06v3uw/gP3lDz/lfAfi/AXwC4ONX\n", + "iyr6pp4TwC8DWL/6HB+/+uerb+p9Kq/+wtvr7fWpvz41ZcY/BTHy9vp0X5+KnVlRFDPOy4hfxXkD\n", + "8EMA/8owjJc/1xf29vqP6vq07Mz/lMTI2+tTen1aFvM/FTHy9voUX5+Wxfwffy309vq5X+rP+wX8\n", + "jNc/SIwoivJ2wV+TyzCMv0sb8g9en5bFLMQIznHRfwngX/3kL/36r/86gsEgJpMJRqMRNE3DcrlE\n", + "JpOBruvQdR2TyQTVahWbm5tYr9eo1+vQNA07OzsYjUbodrtQFAWz2Qwmkwnz+Rxmsxmr1Qq3b99G\n", + "Pp+H3W7HbDbD3/zN3+BXfuVXsFqt4Pf7USqVYLFYsFqt4HQ6MZlMEAwGMRgM5OcAEI/Hoes6LBYL\n", + "3G43yuUyFEWBruvY3t7GeDxGsViExWLB2dkZ7t69i1qthmazid3dXUynU6zXa7zzzjs4PDyE2+3G\n", + "YDCQz2E6ncJqtSIcDmMymaDf72NzcxPL5RI+nw/Hx8eYTqfIZDLI5XJwuVxQFAXBYBBnZ2cIhUII\n", + "hUL48z//c3zhC19AuVxGJBLBdDpFs9lEIpHAcrlEKpXCcrnEy5cvsbe3h3w+j42NDVgsFjx79gzh\n", + "cBiapgEAGo1zUm8ymcDlcmGxWCAWi+Hs7AyJRAIWiwWTyQS/93u/99qL5FOxmA3DWCqK8t8C+A7O\n", + "JZ/f/ruQjGg0Kov3ww8/RDQahWEYWK/XmM1mCAQCMJvNsFgsMJvNsFqtGI/HuHnzJvr9PqxWK6xW\n", + "K7rdLrLZLCqVCvb29tBqtRCJRAAAe3t7mEwmMJvNePbsGex2O/x+P0ajEaxWK2KxGOx2O6rVKpLJ\n", + "JFRVRSAQwHg8BgCMRiPEYjGMx2N0Oh3EYjEoigKz2YxwOCwL0zAMqKqKBw8eYDwew+PxoFarYWNj\n", + "AwBQrVZhs9kQi8VgsVhgt9sxHo/h9XqRTCZRqVQwGo1gs9nks2k2m5jP50gkEmi321BVFaFQCG63\n", + "G91uF5FIBKvVCuFwGKvVClarFT7fuc7I4XDAMAwEAgHM53M4HA4AwHK5RDKZxHK5xMbGBlRVhaqq\n", + "cLvdcLlcMJlMMJvNsNvt2NzcRKvVgtlslsdaLBZwOp1wuVzo9/tXWiefisUMAIZh/BmAP/v7fqfX\n", + "68HpdOLg4ADL5RIA8OGHH+Lzn/88qtUqarUaYrEYFosFUqkUjo6OoOs6Dg8PEQ6H0el0oCgKKpUK\n", + "HA4HTk9PYbVasVwu4XQ6oes61us17HY7Go0GdF3HfD7H8+fP5Uv86KOP8ODBA7RaLVgsFqiqikaj\n", + "gfV6LQsrl8vh+fPnePfdd1GtVrFarTCfzzGfz/HRRx/B5XJhOp1iPB5jPB6j1WrB7XZD13UcHBzA\n", + "brejVqvB6XTCZDJhOBzK7j8YDHBycoJAIIBu91zdWSwW4fF40Ov1sLm5ibOzMwQCAUwmE/R6Pezv\n", + "7yMcDuPly5cYDocol8t49913USqVUCgUoKoqjo+PYbfb0ev15JTp9/tyk4xGI2xsbGA8HsNkMiGX\n", + "yyEUCkHXdTSbTaxWKyyXS8xmM4xGI/h8PhwdHaHX6yEYDMLn8+HZs2dXWiOfCpz5Z7kURTF++7d/\n", + "G4ZhoNvtYjQaIZ1Oo91uY2trC5VKBeFwGGdnZ5hOp3A4HLDb7TAMAxaLBdPpFH6/H8PhEGazGTab\n", + "Dfl8HtFoVH6fi3E6ncLtduPRo0e4c+cOOp0OQqEQhsMhfD4fFosFrFYrCoUC/H4/1uu1PE6n05Ej\n", + "VdM0BAIBDAYDLBYLeDwetNttWK1W9Pt9KZNMJhM0TcMPfvADpFIpWCwWZDIZ9Ho9WK1WOJ1O7O/v\n", + "y07o9XqxXq8xHo/l35ubm+h0OvB4PPjkk08Qj8cRiURQLpdhs9ng8XhgtVpRqVSgqirS6TSePXuG\n", + "W7duYTabYTgcYj6fYzabwW63YzAYYGtrC4ZhwOl0olw+1/+EQiEAkMdar9eIRCLodruYTCawWq3w\n", + "er0wmUxot9sIhUI4OTlBMBhEr9fDt7/97WtfM/9MV6lUQiAQOOfpX9W9rInr9TpyuRwikQj6/T68\n", + "Xi+Ojo4wGo2QTJ6jfL1eD6FQCC9evEA6nUav14PP50O1WsWtW7dgGAZarRZ8Pp/8P5PJhMlkglwu\n", + "J19gMpnE0dEREokEFosFRqMRZrMZxuMxptMpstksarUa4vG47FZOpxNnZ2cAAEVRsFgsMB6PsVwu\n", + "MZ/PsVqtsLGxAZPJBIfDgSdPniCbzWI+n2M8HsPpdGK5XMJsNiOXy0FVVVitVqiqKrv+aDSCyWRC\n", + "IpGAruvweDyw2+1oNpswDEMWWDgcxnK5hMPhwHw+x2KxQK/Xg6ZpGAwGUFUV0+kU/X4fLpcLx8fH\n", + "0DQNi8UCuq5DURScnp4iHA7D6XSiUChgPp/D5XLBbrejXq/Ld1apVGCz2aCqKkqlq4kdr9ViBs53\n", + "TTZAZrMZOzs7cLvd8Hg8ODk5gcPhkF00FArB4XDA7XbDbDYjEonAbDZDVVVYLBYoioJoNAqn0yk7\n", + "kqIoGI/HWCwWOBeBQR6n2WwiHo/DbDZjd3cXzWYTZrMZbrcbJpNJSpn5fI5kMgmTyQSTyYTFYoHV\n", + "agWXyyVlDGvWWq2G7e1tFAoFWK1WaRR9Ph+8Xi/6/T4Mw5Bd2WKxYDweIxAIYL1ew+v1wmw2o1Qq\n", + "SX08nU7h8XjkebPZLMxmM3RdRzabxXq9hqqqSKVSACBlgaZpUBRFPlu73Q6r1QqPx4NQKIRqtYpQ\n", + "KIT5fI6trS10u13MZjNYrVbY7Xb5ffYf8/kcxWJRmsadnR185zvfee3v/tOCM/9MF5smRVHQ7/dh\n", + "NpuxXC5ht9vR7Xbh9Xphs9mwXC5htVrx1a9+Fd1uFw6HA2azGYPBAI1GA4PBAIqi4HOf+xyq1SpG\n", + "oxFarRZWq5U0VYPBAE6nE6qqYjKZSNPW7/dlNwuFQtLscFcfDodwOBzweDwAIGUNj/H1eo1er4fV\n", + "aoXVaiWPabFYMJvNYDab4fF4kEqlMB6PYbfbpQTyeDyYzWZYrVZwOBzSYOm6jnA4LI3vbDbDfD5H\n", + "NBpFq9XCbDZDs9kUlMZsNmMymWCxWMhn2263MZvNMBgMYDKZpNZlGeNyuaSkYt3MTcTj8cBisQCA\n", + "IES9Xg+pVAo2mw3D4RBOpxOtVutK3/+1WsysLa1Wq+yohmFgPp/DZrPB7XYDOD/GnU6ndOVEAzY2\n", + "NhAOh2G322XRcDcOBoNwuVwIhUKw2WwIh8NYLBYwm81wOBxwuVxyUywWC2iaJjeX1WqVXZNNm2EY\n", + "srupqgqXywWn04lMJgOXy4VgMCiPrWkanE6noB28WQ3DwHK5hKqqMJvNePfdd2XnBM7rVpvNBk3T\n", + "4Pf7oWkabDYbHA6H1KhutxsWiwWhUEhe33w+h8VigdfrBQAsFguEw2HM53NYrVZsbW3B7/dDVVXM\n", + "ZjN5TS6XC2azGYFAAG63G5qmyfs2mUxyeqxWK/h8PkwmE0GDptMpAoHAlb7/a1Vm+P1+NJtNRKNR\n", + "PHr0CGazGb1eDzabDfV6XdCF2WyG9XqNv/zLv0Sz2ZRFeXx8jMFgICjCs2fPsLe3h8FgII0aS47Z\n", + "bAabzYaTkxP4/X40Gg1MJhO43W7BnK1Wq9wo/X4fTqdTXt/x8TGcTicSiQSazabsvIFAAIqi4OXL\n", + "l1BVFU6nE5VKBfP5HPF4HLPZDKFQCE+fPsWNGzcwHA4FzTg4OJCbtt1u4+TkBKFQCGdnZ9IrLJdL\n", + "aJqGYrGIRCKB0Wgk5cb29jb6/b6UT/l8HjabDWazGe12G+l0GoPBAB9++CHm8zny+TxcLhcmkwkK\n", + "hQLW6zVWqxXi8TgePnyIjY0NubGazSYAyG7PGl5VVTSbTdksrnJdq515Op3CYrGgWCxCVVX0+32B\n", + "zLjzzedz+fdyuUSv15MjdTabwe/3S40XCATQ7/exXq/R6XQQCASQy+Wk8ZlOp4jH42g0GrIDLhYL\n", + "tNttAOclxGKxQKVSgaIo6HQ6cLlcsjNFo1GsViu43W44nU5p3nRdh6ZpSCQSUFUVJpMJNpsNTqcT\n", + "0+kUpVJJmsThcAhN0zCfz6FpmpA0q9UKHo8HqqrC7/djPB7LydHr9aSpZIngcrnQ7XYxHo8xm83+\n", + "gxPF7/fL52mz2WC326WvGAwGcDgc0HVdyCI2ydPpVH6X5RPret7kqqpitVphOBxe6fu/Vjvzer2W\n", + "49Lv98NisQj05na75YvvdDpIJBJYr9d47733pHmJx+NYr9dIpVKYzWYoFovY2toCcF6Pj0YjbG9v\n", + "S2OjaZqgGiQKLBYLut0u1us14vE4xuOx7KgOhwOTyQTr9VoayPV6LSXJYDBALBaDw+GQXXQ+n8Pv\n", + "96Pb7Qoyw3LAbDYLqREKhTCZTORGYelhs9nQ7XYFGw6FQtLMBgIBYfF4IiiKAsMwpDEeDodCrhiG\n", + "gXq9jnA4jHa7LU0r2UE2qHa7XW5Aj8cjJVKr1bpUang8HgyHQ6TTaSwWC8Tj8b/v6/0Hr2u1mE0m\n", + "k+woxD+5aNxut1DUxItZP6qqKrUxG6pOp4Pt7W24XC4YhiEd/Hq9lkXCGhKANFeqqsLn8wmbdfFx\n", + "AUhzyNqWmDRJFTaLLIlWq5XU1g6HA+v1GhaLRd6D1+uVJtLv98vuzTp2PB7LIluv1/B4PBgMBphM\n", + "JlAURero4XAIr9eL0WgEv98PAPJY7D2IcvDzWK/X8lqXyyXcbjfcbjfsdvulv8Od2el0ygkzHA4F\n", + "c+Z3papXW47XajGzk2ZpQJhuc3MTx8fHWC6XWCwWwuixM282m3jvvffw9OlTwTwbjYZguuFwGPF4\n", + "HIVCAcC5vsDpdEq5wWOVdaPJZEIkEkEul8POzo7UxKVSCR6PB4FAAHa7HaVSCZqm4dmzZ4jFYvB6\n", + "vahUKrDb7Wi323A4HGi320gmk7LYisWisHAejwf5fB5+vx/lchnhcBi6rqNYLAqGHY1Gkc/nEQ6H\n", + "oaoqOp0ODg4OEAgEUKlUMBwOMR6PsVqtBKPnjdput6HrOnq9HgDAbDajXC5jZ2cHiqLAYrFgvV4L\n", + "IhIKhdDpdLBcLmEYhpAr7EN8Ph8Mw8CLFy8QiUTw5MkTAMDZ2RmSySSKxeJP/W5/luta1cxOpxPj\n", + "8RixWEzqVKvVina7DcMwpKsn6D+bzfDw4UOEw2EUi0U4nU6MRiM5Svv9PsLhMGq1GlqtljR0qqpC\n", + "13Wpm/1+P3Rdx3K5hMfjQSwWQ7vdRiQSga7r2Nvbw3q9RjqdhslkQjKZxHQ6xXA4hN/vh8/nkzJg\n", + "d3dXdCOTyQSxWAyTyURecywWw+7uruy4fr8fs9kMFosFuq5jMBjg/fffF4hO13XRSRCmS6VS6HQ6\n", + "iEajGI/Hsjun02lYrVbMZjNZkJFIRAgZAPD5fGg0GqjVagDO+wKWEzxV/H4/er0eDMOQfoBwKLH7\n", + "1WqFdDoNt9uNYDAopchVrmu1mGu1GtbrNUqlEsLhMBRFkcVG/JaKMzaELD/YlKTTafh8PmGsyOwN\n", + "BgP0+33ZzQFIudHr9aSUaLVaODw8hNfrRb1ex3K5xJMnT2AymdDv9zGZTHB6eio0b7FYFChwNpvh\n", + "0aNHMAxDVHXtdhsulwuDwQC6rmOxWODjjz+G2+3GfD4XjDYYDMJms8HlcuG73/2uqNXYWBUKBei6\n", + "jtlshnw+D6/XK83ZcrnEcDjEZDIRWI6NcbValROO+DNvDuLgFFlxMxgMBvD5fFLnt9ttmEwmjMdj\n", + "jEYjHB4eYjgcYr1e4/Hjx6Ihefr06U/9bn+W61otZqfTKX8mRTsej9FsNqEoijRmq9VKSpJsNovx\n", + "eCyNT7PZRKPREE2E3+8XUkNVVazXawCQsuHil93pdAAAHo8H0+kUiqLA5/MJ8rBer+F2u4UmXq1W\n", + "UFUVvV5PbrZQKITFYgG32y2NIutWvg5FUdBoNDCdTjGZTDCdTlEoFGCz2bBYLEQItVwuMRqNBFdm\n", + "4xcMBjGfz6HrupBFZrMZo9EIiqKgXq9Lv8FewWQyiUSWRBBJlOl0ilqtJiUStSV8zYZhCPyn6zqi\n", + "0Sg8Hg8ajQbS6TTMZjO63a7cgK97Xaua2eFwwOl0QtM0qV0TiYRQupubm2g2m5hMJjAMAz6fDz/6\n", + "0Y/wwQcfwGw2I5lMXmLLBoMB7Ha71MSBQABHR0eIRqMYDocIBoOiGdY0TZAFRVEwn8+xsbGB1WqF\n", + "RCIhwiHgfLFzB/R4PFgul7DZbMKasWZnHcuTw2KxIB6PC1tHUoOUOUsVljOKoggjarfbkU6nhSRq\n", + "NpsCnyWTScxmM3g8Hui6Lo1kPB4XEVQoFBJSio/BRtFmswniYjaboWkaXC4XbDYbfD4f/H4/isWi\n", + "vCaSKNSZK4oCm82Gmzdv4k//9E9f+/u/dos5l8vBZDKhVqvh7t27KBaLWK/XGA6HGI1GsrPlcjkE\n", + "g0FomoZSqQSv1wuHw4HVaoXHjx/j/v378Pl8cDqd6Ha7cDqdqNVq8Hq9mEwmoqngEdnr9VAoFHDj\n", + "xg2B56bTqezmhLFI5ebzedE7T6dT2elY7qiqinK5jGQyiZOTE6xWK9y4cQOHh4fweDzSXBIrnkwm\n", + "cnpwxyaeznKgXC7D4/FgNBqhUqkgEAhgOp0CgLCSy+US7XYbwWAQR0dH2NjYQLlchqqqqFQqiEQi\n", + "sNlsWK/XmEwmcDgcmM1moq9erVZot9tot9twOp1oNBoYjUZYLpeIxWJSdrA273a7cLvdWK1Worx7\n", + "3etalRnD4RCbm5vw+/0iGHe73QgEAhiNRqIeo5Ccu5LL5cKtW7dEdXbv3j0Mh0O0Wi2RcdINwSPU\n", + "7XbLMUwMOZVKYTQaoVqtIhaLYTqdIhKJiAC9VCpJ+bGxsSEEA3c/KtiIDft8PpTLZezu7iKTycDj\n", + "8cBkMsnuSRbN6/UKBOjxeFAul+FyuTCbzeDz+VAsFrFYLOD1euU5U6kUdF0X3cpsNpP6PJFIwOFw\n", + "wO/3o91uy3/funULq9UKkUhEqHUKmogds3zLZDIAzqFJ1vadTgd2ux3T6RSapsmmQOLkqqTJtVrM\n", + "7XZbFqvdbpcOm1RwIBCAx+MRwXssFsPjx4/lg9za2oKmaUJMRKNRuFwujMdjHB0dwePxoNPpwOFw\n", + "oFqtyvHudrsRj8eFdGADSf1BOBxGt9tFNBqVGpT4tMfjQTgcFtYxlUpBVVURIlFmSnbT5/NJrc33\n", + "xrqaKA4RGyrzCO2FQiGkUikpbagr5o1FRISCqK2tLYHXbDab3MyUdhLNIbFDvD6ZTEofwBKE6Mx0\n", + "OhWxF0mqUCgERVFEivu617VazGazGfP5XHxvg8EA9Xodi8UCtVoNz549E9IDAMbjMba3t2EYBiqV\n", + "Cl6+fInpdIoXL16IBpq1MzUEPGLJMNKZksvl0G63BV1ot9sYjUYYj8fQdR0Oh0OazNVqhWKxKN5C\n", + "Noe6rqNWq8nPCHV1u120Wi2Uy2VRq5VKJZjNZgSDQdlhy+WynCAX3StUrD158gSnp6eo1+uXqP56\n", + "vS6wGZtNq9WK58+fAzgnZpbLJdbrNebzOUqlEvb39wWLXywWODw8FJJmMpkgn89jsVig2Wzi5ORE\n", + "UCAqGXu9Hk5PT9Hv99FqtaCqKqrV6pW+/2u1mCORCFwuF3w+H0ajkSjnVFWVJovsVyQSQbvdRqvV\n", + "EqaK/55Op6JfIBxFFotoxnA4hK7rGA6H4vEjPOXxeKAoCvx+v/gDqZleLBaCUxN9GI/HcLvd8Pl8\n", + "QhvPZjOB4rrdLoLBoODYbKAoGgoGg7Db7fD5fJcE/Y1GA51OB91uV9R5s9kMsVhMqGoSSe12Wyhp\n", + "ylR1/Tw6mWUP6+/5fC6NJckQi8UiiEWn04HNZpOTiPix1WqFw+EQ/yB9jzRRXNX1dK0Ws6ZpmE6n\n", + "aLfbl2hk0rar1Qper1dqaE3TcHZ2JsJzr9crOmIC/Wze6NhgM3PRga0oimh8TSaT1MCDwUBkmPy7\n", + "3IFtNpuIepLJJObzOabTqezOFotFdnNN0zAej+XUASC7OmtOLloK/slwkvVrNBpCPfN1ES9nOTAe\n", + "j2VRDodDaVrNZjMURRFsmLs9kYtOp4P1eo1+vy/mB/4+f5dMIfXgiUQCNpsNtVpNTAlkWF/3ulZo\n", + "Rr1el91tMBig2+1K7enxeBCNRtHtdkXEQ8yVWloSILdu3ZJaDoAIheiqJipBAU6n08Hm5qbsyGyw\n", + "eAOQRSS6QDobgCwGs9ksNTjNqIvFQrQhPAE0TUO1WkU2m4XdbkelUhG4zO/3X8J6b9y4IYL/RCIh\n", + "2giTySS753w+RyaTkViEcrkszpjPfe5zggbFYjHpLUKhkLhVgPO6nvpoOtxpzYpEIvD5fJjNZlJi\n", + "kZ0kscVa/Etf+pJQ3K9zXaudmdrcTqcDt9uNbDYrWgPWoRQWKYqCDz74AMlkUnYpTdOkIYvH4/jq\n", + "V78q7JzdbsdisYDP5xPBDUVNbH646EwmE6LRqLwmAPI7VPI5nU4EAgE4HA7ZTe12O2KxmEhAicg4\n", + "nU4pc4hFc/EHg0E4HA4kEgncv39fMGZN05DJZOD1euFyuUTUFAqF0G634ff7YTKZ4PF44PV65X0F\n", + "AgFp7Ig1s8lkbZ9IJIRip1fQ7XYjkUgglUrBbDYjkUhgd3dXSCHGMPCz9Xg84lRxuVxwu91y6rzu\n", + "da12ZtZoLpdLsNHZbCY6iKOjI/HXhUIh/PEf/zHW6zWq1So8Hg+Oj49FaE58l7tZpVKB1+uV0Bab\n", + "zYZisYhWqyVlAMX7lEo2Gg3cu3cPz549g9PpvKTlpZ53tVrh+PgYiUQCxWIR4XBYMGHi41arFdPp\n", + "VBRt/X4fs9kMiURC7GC1Wk0sXGwu9/f3BcqLRqMoFAoCI/I1dDodtFotKU2sVis6nQ5u376N4+Nj\n", + "IW5arZb0EnyP/X5fmrxGowG73S4Sz3a7Lbgy3zOpbxJWjx49gqIo+OSTT7C9vX2lXRm4Zjtzu91G\n", + "rVbDYrHAfD5Hv98XQqLT6WBra0vw0fl8ji9+8Yt49OgRIpEIXr58KU0cpZcX3dW0OdGhMRgMEA6H\n", + "EQqF0Gq1xJ1BnJW7UavVgtPpFC3zfD4Xva/b7UY4HMbW1pZIJJllQQlpLBZDsVjEdDoVhIP2LcYK\n", + "UHJZq9UwnU4RjUZFl00cnbEDg8EAo9EIjUZDJJ5kEllWud1uKQlcLhd6vR50XZfAmuVyiUKhIKcP\n", + "yyOq69gf1Ot1iXS4GMjD+p4nTyQSkRPuKte1Wsy03qTTafkivF4vFosFgsEgAIhmVlVVPHv2DOl0\n", + "GhaLBRsbG6KpCAQC8Pv92N/fRyKRgKIoyGazcpwTXaDTeWdnR7x6wWBQHM4+nw/L5RI3b94UBRoA\n", + "WYilUklwXOpAdnd3EQqFLkUm0FOXzWbhdrslwosGXYryl8ulwI3L5VKc4IQSWTdHIhHBsi9mh2ia\n", + "Jhg4dd/UUbPuZbCL1+uVG8Ln88FqtYrLmyekz+cTcT4p+Gg0is3NTSmVWNZomobd3d0rff/XajGz\n", + "ZqVgxuFw4OTkRPBTpgQRnXA4HBIYU61WoSgKVquVeO6azSYGg4FkU1itVvGymUwmie1iidFsNtHr\n", + "9dBut9HpdESo/9FHHwnNPBgMxPHN0BdCdoPBAJ1OB7quiyi/Wq2i1WqJvrjX6wnaQTgRAE5PT+V1\n", + "7e/vYzabSRQWSwGSLLQvUWjEXZg0NJnQfD6PwWAgbGi9Xpe8DfoOWdpczOVot9soFApSVhACrVQq\n", + "osY7OjrCfD6XaLLxeIxKpXKl7/9aJRp985vfFI1ur9cThosZEbTs12o1JJNJgag0TRNLFb9ILiiH\n", + "wyGCI3rpgXcGAAAgAElEQVT8JpOJEBOkcG02m7BkrG8pKGK9DEB+3u12EQ6HRePAPAzu+Iz+oqKP\n", + "aAbdNIS8qMjTdV1uUGo82MgVCgVsbW1hPB4jGAxKk0yh0avPDy6XS3QZ4XAYw+FQtCcMhmk2m4jF\n", + "YqLvZsadw+GQml5VVezv78Pv98Nms8FqtULXdXHAOJ1O1Ot1JJNJiQaj7ew3f/M33yYaAYCu69JY\n", + "nZycSDLl3t4eLBYLjo+PEYlEUK/XxdVRqVRw7949SdqZzWY4PT3FvXv3cHh4iLt37+L58+e4ceOG\n", + "7JT0FLLZ4S5DnDsUCmE0GgkzV6/X4ff7JamzWq1KXsfFpspms2E6nUpjyXqTATOVSgXRaBTBYBD1\n", + "el1yKVhTU2HHBKaXL1/CbDbj6dOnl2IB6ERZLBaCP5P27nQ6gpfTCeP1evGjH/1IwhuZqKqqKj7z\n", + "mc/g8PAQAETu6nK5hNUbDAaX3Oq8eb1eLwaDAcrlsqA3xL1f97pWO/PXvvY1JBIJ1Go1BAIBbG9v\n", + "4+DgAPF4HNVqVaSh/JIePHiAP/qjP8KdO3dgsViQzWYl7GU2m+HevXv45JNPMBgMJLtiMBgIwwYA\n", + "iURCcjlqtZrseKlUCt1uV8oAitsXiwUCgYDoGEwmE6rVqsgj4/E4crmcMJfNZlN2cmZpsJkju0gC\n", + "5f3338fDhw/RarWQTCYRDAbRarUEWQCAZDKJH/zgBwiFQlBVVVRrhmFI7U1vZDweR6fTQaFQgMlk\n", + "ElSFFrNYLCaUORlKn88HXdeF9ez1egLrsYcg6hMIBEQF6HA40Gg08Ad/8Advd2bgx9FcpFSdTieq\n", + "1aqI0UulksBS6/UaP/rRj6DrunzZh4eHUlc7nU5873vfE7tQrVaTxxmPx7KAWq0WWq0Wtre3MRgM\n", + "MJvNBB4DzmWpvV5PvsCL7ufBYCBIQr1eRyQSkXqXiaTdblfez0WTLBV79XodLpcLnU5HYDDWyuv1\n", + "Gt1uF+VyWUoS0vPtdhs2m008fvP5HF6vV3LvaMotl8tCqe/u7iKfz6NYLEoQjcPhwPPnz8UCRSnq\n", + "ixcv8MEHH6Db7Qpt3mg0xDNZLBZx69YtqdEZA3yV61ot5mg0KouDH2AmkxGigOk5JCBu376NFy9e\n", + "IJvNSo1NyxDF4kyyVFVVogXS6TRqtRqsVqugDvxiWfuFQiHx11HySScKPXB0fvDE+MnaXFEU7O7u\n", + "4uTkRBADZiiTfibyQnJntVoJ3svXzNDvi3Af47EODw8lDIYQnsfjgaZp6Ha7SCQSAktyx2bN/eUv\n", + "f1nqcU3T5DGcTifef/99kafyJGK/QQOC3W6XBClmlFzlulZoRq/XEyuPx+MRmpbZxQxL6Xa7smPQ\n", + "t+Z2u+Vo3tnZgd/vF3aOZYTD4YDVakWv1xP2i6whAxNXq5UIdoipmkwm1Ot1YQ3JVHIRs6EMBAK4\n", + "deuWiIbozmaJwKkA3W5XUBXutIZh4Ctf+YqUIQ6HQwwHjF7Y2NgQ9i4ajUozCkCaRWos+v0+QqEQ\n", + "lsulnG6NRgOBQAC3b99GLBaTm5PiLjpZmF1y0aDK9CLqmQnZ8e8DkI3oda9rtTPv7u7KEdtsNiWN\n", + "nYJ1TdPQbDYxHo+xtbUlwd1M62Rj+MMf/hDpdBqPHj3CrVu3UK/Xsbe3h1KphF6vh93dXXQ6HRmZ\n", + "cHBwIOUD0ZOHDx+K1arX62E0GkniPj1z29vbIuJxOBwSaUvPIp0cz58/lxuLzN/BwQHu3LkDj8eD\n", + "SqWC09NTiR2j8IdwHQmc09NTsXDVajXs7OwIDBkIBBAIBCQrOZ1O46OPPoLf74eiKOIkyeVyAjHy\n", + "FKDemzkYmqah0WggEolITV+r1QR/7vV6YqAlW8v6+SrXtWoAf+3Xfg3pdBqNRgN+vx/b29t48eIF\n", + "EomE0K0AUCgU4Ha78d577+EP//APcefOHQlOrNfrYiS9d+8eHj9+LLFTbrdbRErUKaTTaZGKNptN\n", + "0T0kEgkRqNOISn0ETbLckS4iCqlUCqenpzJnhF495iYDEPVdMBiUHW+xWOBLX/oSvve976HVaiGV\n", + "SiEQCIhiLpVKwWQyIRaL4fvf//6lHA2PxyOjMqjE83g8EhJO7TQRkQ8++ABPnjyRxKbZbCajIxhK\n", + "Qzy60+kIoUOokhJTWrPYADabTfz+7//+azeA12oxf/Ob34TP55NMDCbIUzfM2rdarYoplVRwqVSS\n", + "fOblconJZILJZCLOFMMwEAwGJUaLBAsA2V2JqbIJ4mtheUEnB7v8YDAohA5F/rQoMeiFODMNscR2\n", + "AUiyEL1/dDiPx2OEQqFLxAtLBqZ5djodSTBi2hFfC0uS4XAosCIXPKcEMH42GAyi0+lIWpSmaQiF\n", + "QhKnQHktYx6o+S6Xy9jY2MDBwYE4TMxmM37rt37rLZoBQOhbpuik02l0Oh3s7Ozg2bNnElZCXLdY\n", + "LOLo6Ai/9Eu/BJPJhNPTU0SjURwdHYm4BvixdWk0Gol/jSJ1NkpskE5OTiTettvtSuYF2T5FUUQZ\n", + "Rziu1+vB5XJhNBpJ6UNV2mAwEMlpq9WC1+uFruswDAM3btxAtVqV+n08HouGeDgcolKpIBgMolar\n", + "iQ6brKbT6bykIe71erh9+7bk2fV6PRweHkLTNJn9srW1hf39fWQyGdFhc7YLwxYnkwnK5bLk2zF6\n", + "l2wlk5zS6TSOj49xdHSE4XCIeDyOR48eXen7v1YNIO3+Pp8PmUwGsVhMPkgygyQuWDoAuJSwmc/n\n", + "ZRKTxWLB/fv3MZlMZAZIPB6Hz+cT0oSLjbVrKBRCJpMR4TqllTS38r8pxp9Op+LrYwIQM+yY00aR\n", + "EcuJcDgsoieiFmQwqXOgwo8sJwVUgUDg0pEfCASg67o0bWQwAUhjmk6nYbPZpA8hXV8ul6UGZonC\n", + "7+FiBC/ZSiYlMfqB6AwjDiiXfd3rWu3M/X5f4lsDgQC8Xq+Ij0ajEe7du4f1eo1cLof1eo1f/MVf\n", + "RKFQEBf3r/7qr6LdbmN3dxfr9Rq//Mu/jMPDQ/lS6FBhc7Zer7G7u4vZbAaXy4Xlcim75t27d8Vg\n", + "u7m5iW63KwIeQncU+XQ6HVitVqRSKSQSCZnwxMgCegqZ2EnHNJPuuSi+8pWv4Lvf/a7Y/D//+c+j\n", + "1Wqh0WiIN5DmWjpI+v0+7t69KygMhfmLxQJf+cpXxHsYi8Ukfvezn/0sjo+P5UZIp9NIJpOy+FVV\n", + "FSc4R67REU9ZAbXcvLF4mj18+PC1v/9rVTP/xm/8hgSOx+NxoYopWD84OJAEIy58kgkM2bZYLJjP\n", + "57hx4wa+//3v486dO4JyOBwO5PN5ZDIZ2VnD4TAODg7gdDrR6XSQSqVkxz47O5OJTGz2iAAUi0Xs\n", + "7u6KCIgCKKrO6DKv1Wrw+XzybzKBdH9wgZVKJYxGI8nNY0QtpaFUEFosFmkgycjRysRSxDAMiQpg\n", + "2hEx9NPTUwmX5MSAer0uDhQmI1HjQQyeJ+T29rYwgnSGc7zGw4cP8Sd/8idva2YAl/LTTk5OkMlk\n", + "RKzPzDhivGSiSqWSgP5Ucem6jhcvXogQh40krVMU1U+nU9TrdSEp2L3Te0h7EbFqKueI5xKpuJia\n", + "xEaMfyeRSIimghYqivy5ABlzexFRCAaDkqF8kWbmdKxgMChZdsxGJvLCcqPZbEpaKHCuU3a73RKT\n", + "wPfD8qbdbiObzcLr9YqakDpoBk1e9ExSJ0Ip6duogQtXr9cTL1y9XhdXcaPRkGaOKjIOaCwWixgO\n", + "h+j3+9B1HZ1OB6VSCcvlEq1WC5PJRMbzAucTSSuVClarlUR9DQYDFItFVKtVybB48eIF/H6/sGwU\n", + "ELXbbWENaZjN5XLyxQPn4xcePXqEZrOJ/f19iZZ9+fKlHNvdbhf5fB69Xk8gQebPMXCl2WzKv5ld\n", + "x5mGpPHZHH700UeXXiNwLiut1WoYDodCz1erVZycnOCjjz6SiQP7+/uXUkEHgwH++q//Whg9Mn9U\n", + "EzKXg+E0tJz98Ic/vNL3f612ZsZdUYTDwBWKYIh5sllSFEUEN5FIBBaLBdVqVVKMOBaiUqkglUpJ\n", + "LAEhtXg8jlQqhfl8jtPTUxHqM2eNKT8Mn6FYh0gFa06Xy4VAICDHNIXzbKoikQh6vZ4YcGOxmEgn\n", + "iSUfHx/j/fffx2AwQK1WQyQSkcfj6eB0OhEKhVAuly9N3qL1iuaE0WgkzpfVaoVMJoNGoyGoTTab\n", + "lXR+ZnhwABBw3gDev39f6PF4PI5arYZsNivZcqzh+dy6rl85Of9a7cyse7vdLjY2NjAajcSSw2gA\n", + "fpBMHNrd3RWtcLFYhMPhwAcffCBw2XA4xP379y8lwnOK6Ww2k6ziVCoFTdOQz+dl+A4F8bFYTHZ6\n", + "1qBUpLG+Zj7c2dkZlsulBJlfLDvu3buHVquFWq0mU6+Ojo4AnLtXLqYIcehQLBaTG5PBjjw9qF+h\n", + "0L/f78Nmswkzubu7K3G+DGrkfEKOq+Bzc+oVoxaIXjAzj3U+iZ/pdIqzszO0Wi10Oh1EIhFx4rzu\n", + "da0WM0MEedRdPMq501AcztqVc7OPj49FYD8cDkWrTHz34OBAJJccJkl9Ba1YFDKx1tY0TSBARVEk\n", + "uJs5dcFgEFarFbu7u9JIUaNMPx5vSmK2xMoZysIoMTq3V6uVMIz0JRIn56nF/Ds2aD6fD9lsVnKs\n", + "yUgSleCQn9VqJZ7CVqslOXIul0sE+2Q4OVtQVVWZ90fzLMu/3d1dsaIBEJ3I617XajFHo1HxyjFr\n", + "jSIb4LzepcTzopOYXT/F7aPRCMFg8JJL5aIwhynwwWBQ0ISLY8moT6AskjNHmLQJnBM8vNlo108k\n", + "Epfm41HOyh2amDTjAbhDslyg04UiqYupRZx2xRuUN5TFYkG9XpeIrvV6LVOpSLCwDOBnVa/XJdeZ\n", + "aBDFWhy1xrFwlAZwhBwAubEp2KLV7arjhq/VYqbHjaMJSGK43W5EIhHJkgiHwzCZTPjGN74h9enF\n", + "3ZM7zu3bt6GqKjY2NpDP50VzkEwmpYRgCihJCS4aTdOkkWJYDONgZ7MZ0um0mDkJZ5G9JEphMpmE\n", + "OSNxQmPp/fv3xZ2xXq9x48YNRKNRCcC5mOi0ubkpRAwpd2Ljq9VK4nsJ9/GGDQaDcjLYbLZLUtn1\n", + "eo1sNivGBZZZvGlJhtAl73K5kEqlJCeaTCgD2JmncZXrWi1mBqMAkJ2XGC79f4xvtVgs+N3f/V2B\n", + "kJj03m635QN++vQpPB4PCoWCDNCJx+Oi8wUg5ljuRjy2qVVg88UZH9xtdV1Ht9uV3Zy1K28KwzAQ\n", + "CoXEo8jFdnh4iNlshkqlIrssiZdCoSCxsfQAMqSRr+0iEUNJZqPREP0IP5/1ei11fyQSwXq9Rj6f\n", + "lxiGxWKBs7Mz0bgUCgUMh0OZgtvpdFCr1SRdaTAY4PDwUDLw1uu1jMAgucTv7nWva7WYCa15vV6Z\n", + "trpardDv99Hr9UThRYeyrut48uSJNCrValUWf7PZRLPZxGw2kwR6jnoYDAbo9XpYLpeo1+sAzskF\n", + "SkSn06mI+pfLpUw25fxpjmTg8E2KcihCYrYFQ2lqtZrMHWQUVj6fF3qe8BthOr/fj1wuh7OzMwlS\n", + "BCAWrVAohHw+j+l0KtoKDjSi2Ii1M8Nu2CMQmuTi43QpPn6tVsNyuZSkfAY8kjKnhIAacc7q5glz\n", + "letaQXPdblfS4Cm8Zy1IZRe9emyCqEzjF7VcLsV8ydkhTNFknUn5JuEx4tLMkqOAnmqzP/uzP8PN\n", + "mzelsWLcLlP4J5OJ1M2cbUIEoFQqSbJ8Pp/H7u6uRBWUy2WZoMoTwul04vj4WGxZxKQNw5BTh8J9\n", + "yl1nsxnG4zEajQba7bYYU3O5HOLxuDB4RGAYS0AGks0x7VakwGnv4vAhOsGp075oAm40Gm8H9Fy8\n", + "7Ha7hB/evHlTglISiYTMKSFExQ79wYMHmE6nuHPnDlRVRTwex+c//3nRC6uqir29Pezt7QGAfDHE\n", + "bGlz4iTXyWSC0WiEW7duodVqST1rtVpl8DyDwWmMJYvGkoei/kAgAIvFIlG9X/jCF7BYLGCz2ZBM\n", + "JhGNRuUGZRA5bf0mk0kEV3zf8Xhc3Dcsjbxer9TWZA8pZHrnnXdgGIY0nDS87u3t4b333pMmc2Nj\n", + "A5qmSTOqqqrAmbxBORErlUqJu50eRTa2b0NgLlysvxKJBE5OTmTHYbCKy+WSBU+56Icffgiv1yu5\n", + "cqenpzg7O4PX65XdsVwuo1arCRFis9nQaDQAQPDqSqUi6fbBYBCFQkG0FFy49NNxNPB8PkcoFBJI\n", + "ajQaYWdnR2r/fr8vtDRwznD6/X5ks1lBFKivGI/H6Ha70HUd9+7dk3hceh8pSqJovt1ui/aZ5leq\n", + "DBl8Q6wdOO8NOCelXC6jWCzKjcjPhG4ap9OJs7Mz0XirqiqnHxvG6XSKTCYjoiuGU17lulaLmePO\n", + "Dg4OsLe3JzYdMmfPnz+XcJf1ei3/jyHYtFwxmJBA/0UJI3FVAGK9Z/RUv9+XnYbjwjweDw4ODkRj\n", + "bbVacXZ2Jk1krVZDPB4XAdDx8bFkTlD0RAd1rVZDrVYT10w+nxcUxul0yjFPkQ+H3qxWKxwdHaFc\n", + "LsuUVe7qjNsi9HcxXIZzDKlb4XzCyWQiZYnFYpGsDeZSc1GrqoqXL1/KaVKtVqWUWa1WaDQaKBQK\n", + "6Pf7Qt1f5bpWNTMpW5vNhrOzM3H9khb+hV/4BYlYJcZLS5PH40EqlQIAHB8fCxXLY5Y1bjQaFa0D\n", + "m0IaTZkFx+aGOuV3331XBkl2u11sb2/j8PAQuVwOd+7cwcuXL5HNZmXeB61KzOoggcFRxXTChMNh\n", + "afhY5wYCAaG7Cf01m03cunULjUYDDocDW1tbElAzmUxw8+ZNsWVRQ71YLJDJZGTMMo2zJFrcbjf8\n", + "fr8I6ymBJc7MyNxMJiM3GrFlirRYc1NPAwB/9Vd/9drf/7VazPyCAAjiQG0EXdDUKjCSi116r9eD\n", + "z+dDvV4XbJQNJZVkw+EQw+FQxjSwSSQZ0m63ZSYg0/UXiwUqlYpkdZByp0KPdXQ+n5dxCkRKKDxi\n", + "gmir1RIyp9VqyQChVqslC4mjH6jKG41GKBaL2NzchMlkEhKl0+lcYuqoFmw0GjLtlWo2lhsUDjmd\n", + "TgkPJyZP0wPnCc5mM9RqNcGsq9Wq3FgARB8D/Dg1dDweX+n7v1ZlhtfrhWEYQooAELaOXTU/dMJJ\n", + "jL/iImcsFus6Cvu5g9AadHHsA1N66ARhtgSz6OiqoG6CyAfrRJpSiX+T4CEdTe8c/YgApAShPprJ\n", + "QbwBer2ePD4TUCnx5ONejOHt9/uXyin2Fsy5YF0MnDe5xNEpKeX4NFL7JF2YcsoShcmjfr9fSCc2\n", + "o2/p7AtXPp+HYRhyxIbDYclEowCJaAfhNuDH0tH5fI5kMimIw/b2tjRQ1WpVspNp8eGRzClPZPIo\n", + "pGfKZrVaRb1eFwz64OBA0BRS5P1+H3a7Haenp1Izq6oqxANd1s+fP8fBwYEsZir5eJOs12vs7+9L\n", + "xCxxY07d0jQNtVpNfH4sWS6eIEQtyPA1m03k83kEg0H0+31sbGxIVDB9hKTMSbxwI6CICoCI+Dud\n", + "jkSSES8fDoc4Pj6+0vd/rcqMbDYr0FupVMJisZAoAArKWZtNp1Msl0upNznfw2KxoFwuY3t7G51O\n", + "RwgPzgcMh8Oye3NqKScmud1u+X0KkkwmEx48eIBcLifYbzabxYsXLwBAdtubN28CgCzKg4MDaJqG\n", + "O3fuoNlsSt4xg84phmKaEWFETdPwxS9+EScnJ3LDWiwWiT5YLpdIpVKXBksyTejGjRuo1WryfiqV\n", + "CrLZLBqNhhA0LpdLCCHe9BsbG5LrQadMLpeTGz6RSFyaheLz+YTc4qajKApu376N73znO6/9/V+r\n", + "xUzT6Gg0ws2bN2W4JDFYhh4Sp2Xjx1RNqti+/OUvXzK1MvqKRyqd2Ryyzi+R5lLGupJkGQwGUrcz\n", + "RsDtdiOVSkmjBUAyLKxWK+7fvy8qQE5TpaieTpLVaoVUKiUjlEmH53I50SdPJhMZLq+qKmKxmCQW\n", + "UU3H8oE0Nhc4zar0U7KeZ+NnGAa8Xu8llpGqxI2NDQlUZNnH98cJASR8SPaQCn/d61otZgBCXfPD\n", + "yufzuHHjBp49ewafzyeeO2ZA5PN53L17FwBwdHQkKZxMQcpkMhiNRkilUmg2mzJplWMOMpmMDLBk\n", + "TobX6xUfXjQaxenpqZAZlFFWq1WxQtXrdWEuB4OBjJKgXgM437HL5bLkJNfrdRH3cN4IAJlv4vF4\n", + "RILZ7/elxqcvkjoNUtMUP7GM0jQNP/jBD3Dz5k2h6UOhEEqlkuiiOV6OJxFnZTscDpRKJdGxkLpn\n", + "w8dm9y/+4i+QSqWENudp9brXtVrMgUBARPjEkblTkDHL5/PQNE0cIz6fTySWsVgMzWYTiURCnNjR\n", + "aFQICtLTi8UCkUhE/IYWiwVbW1vi8ubgRu7ioVBIbiSOLPP7/UKnMwaBijcOn+eQyovyUWK2Ozs7\n", + "siBjsRhevnwpJ8Lt27elAWM5Qe9iLBZDLpdDOp0WMoXZdgyUofz0/v37MJlMQjYtl0sJPGezerG8\n", + "YcgM2VE2pZTjEl+m129zcxM2m02mxfKEet3rWjWAF8MJg8Gg1GSr1QrxeFx2QNbJDBnkbBIuPIac\n", + "0BVBOxFNmOPxWBIvKbfkUKCLORdMMGKICwdk0p1MfBqANKZer1coeEJfxKuj0SgcDofMGnG73dLA\n", + "+f1+gREZpEisG8ClkW7vvfeeCPndbre4wTVNExSDNwazLjRNw8bGBnw+H9555x3E43FprAlRMp/D\n", + "brcLle9yubC9vS2oEV//bDZDNpuVuYOBQEAkAa97XavFzN0DOC832u227GzEoLloGa/V6XRk5t1s\n", + "NsNsNkMul5Nalzg05/Qx8YcKL5IEq9VKfk7pJ5NDya5R08Fxv/TDkV2j+P1iMpGiKKJEs9lsooku\n", + "lUrC2AEQGahhGPL3uTPSB0mamTsrcI7NE1lgiUMTA3PnWPJwnBtDXwhB8vMDICZfMpcOh0PKHAbM\n", + "DIdDzGYzOX14IrBUet3rWpUZDodDZjAXCgUEAgGpTUmdcmcFIEQE4SjivdVqFTdu3JB8t9FohFAo\n", + "JNQrmbbj42PJVpvP53jx4oWMLeOIhWw2i48//hg3b97EaDSSDp8RBxxaTxMudRgWiwW5XE6cJnQ1\n", + "Ewmg/467f7ValezmRqMBn88nQ4esViseP34s4qOLcQesV5kNQudJOBzGixcvcOvWLamz1+s1KpUK\n", + "7ty5AwAy4o2qOo4/I4O5s7ODDz/8UNAMEiiDwQA+nw8nJycolUrisKGc9nWva7UzD4dDxGIxgaIo\n", + "0Kf+wul0iheQx6/H4xHBeSwWE3WXw+GQbAqyeszgIImQyWQkItbhcGBjYwN2ux2JREIym8fjMdLp\n", + "tAyOZCNmt9vFrGqz2SRgnHnRrNdJPCiKIuTH9va2zMter9cSCAlAAiOpAGQCPnsIlgekqvk50Huo\n", + "KMqlYHMK+4mY+Hw+wYqZthoIBLBYLC7NDySUmclkLvUlpOhJbxN14ed8letaLWZqhRl8clFj7HA4\n", + "EA6HcffuXdnpvv71r+PFixfSXPEL59/d3t6WCazPnz+XLGLOiWbKPFVnHLfQ7/dlpAIDwxlGbjKZ\n", + "EAgEkEgkhJpm+cPRYiyLdF0XmSjpcvrx3n33XcnQcLlciEQi2NnZkRqa7B6jCbi4xuMxVFUVCnw0\n", + "GmFzc1OylcnIseS66CKnu4YL+otf/KIYIO7evQvDMGSHppyVtLzD4UAsFhMaezAYIJlMCmxK7+RV\n", + "rmu3mDksnblubMbIVp2cnAiM9Du/8zvSsTscDmn0qG57+vSpTIn67Gc/i/V6Da/XK8J0UuZU1tG5\n", + "zLwJDuBhPgZdK4qiIJ/PS6O2Wq1E6EQNM4MMiaIwXouumMePH0sJslgsUC6XxWHOHDdGDnBUMmN2\n", + "6dEjRX94eCi0PN04F6WbDIqs1WoSx2u32/Hw4UOEw2EJnAQgWpXxeCz5cV6vF/P5HNVqVXZ9pqrS\n", + "dMu5Kle5rtVipsKMNSE7eLJq/X5ffsaGZ7VaSQI+pZsAhOigOu3p06eCKFD1xWGYTqdThEntdhvD\n", + "4RAAZNwC8V2GwLAhm81mWCwWwpaxGaVnzjAMcWdQ4wD8WFA1n89xcnIionqO/3358qUM4Wk0GjCb\n", + "zQiHw7BardIQE5HhTTedTmVoD08aNop8LjZ1HBwfi8Uk3ovzCAHIeGbe5LRWsV6v1WoSKcxcDeqk\n", + "r3Jdq8V8MZ3T6/XKFKaLugVCciaTSUYHZ7NZ6eAJ7VFZxgRQ1qs0krL+pD7jYs4Gm0WWOBe1yYw6\n", + "YEnD2SuEyWaz2aVwFr/fL4IiLmafzyejzliLspxhOj5PJeBcGnt8fHxJa8zyhK+dsb4U2XMsBgNi\n", + "FosFksmk4MK0hlE2qqqqSAYURREFIeE6mlXJ9nHYJwDs7OzITn6V61otZkJoJpMJ3/3ud8X/RmF7\n", + "r9fD2dkZcrkcDMPAxx9/LJFcFOZTCMTjtlQqoVqtinlTURQR2p+enkodPRqN0Gw2pVkiccPxxWxu\n", + "CHfVajVxKr98+VLeQygUEsr78PBQhj5SvEP9NTMwLBYLFosFjo6OJAjxyZMnUtPzPft8PokzsNvt\n", + "Yv7t9XrY399HvV5HLpeTkcI0InCQka7rODg4EPaQPj6iHMys43tyOp1y+i0WCxQKBei6jlarhXw+\n", + "LyeRYRg4OjpCs9mUPLvXva5VpO03vvENAOeoxmKxQCqVwmg0QiAQkKHrmqbJh2i1WtHv9xGJROTI\n", + "j8ViqFQqCAQCqNVqSCQSaLfbCIVCcLlcODk5kbhYHsG6rl9iz+je0HVdEoiAH4fQsAHlbl+r1aAo\n", + "CrxeLwqFAnZ3d6EoClqtlkTvskzhjMLxeIzbt2+jUqkgmUyiWCxKvkWv1xOpJYfqkATh+7fZbPB6\n", + "vYKIUIP86rNEIBDAeDyWnZgpTqxrecoBEKkrB3ayvGDqkdvtliE89EISdalWqxJa0+v1rjTT5Frt\n", + "zMWIwIUAACAASURBVPzwmB3MLx+AfGDMauNR+vDhQ/T7fYTDYezs7GA6nUrGM0dGUNbInZb1KGWb\n", + "TqcT0WhUnq9cLssOyFnWTBulmIfDNRmUyAZsY2MDg8EAlUoF3W5XalFOUiXURl1Fs9lEqVRCo9FA\n", + "JpMR5u0nU/CZMLS1tSV2L6IZFBCREOFjhEIhSUelk5uqP5p5+dlQn00Eh8pCjm5jCcXanL0MCSwO\n", + "PbrKda0WM+flLZdLsSExSYhlgt/vRzKZlKC+nZ0d+XtMsOe8kHg8LtJLkh1utxuZTEbqTSIjpVJJ\n", + "glWYt8bSgNroiwlErG25Q1HYTgUelWqcnzKbzVCv1wWTdblcCIVCoi3e29sTXyEDYJgdnUwmJeiG\n", + "C8nv9yMej0NRFESjUamhfT4fotGowHfUlXC8BCdUcb4KNSCksdmfMPOagemhUAiBQAAAZEIAMWcA\n", + "gthc5bpWDCDLi9FohCdPniCVSiH3ag51pVKRBUlqmV8KVW8cTs6gFHb6xKnr9TpWqxVOT09hMplk\n", + "5APrbe7ezNIg2cGGidOr6LrodDqIxWKCgrAWpdSUuzjw41xohh/+ZC5boVAQtIV5eazN2+02dnZ2\n", + "UC6Xpf5l0OJyucSzZ89EZcfdlKpC4LwMInxIlKfT6eDo6Ag+nw+NRkPCKjkOIp/P4zOf+Yy42uv1\n", + "upyGVPNRW16pVMTCdpXrWu3MTqcT8XgcgUBA7niyetytaGciAXDjxg2MRiPcv38fiqLA7XZjc3NT\n", + "sGoGJJJ4YNYzmUZKNPln1tAckh4IBODz+SS3gySJw+GQNNJqtQqv1yu6aVqskskkFosFEokEotEo\n", + "7t69KzQ2d0/CgNRHc+fmc1MvQgMqJ7/y7xK9GY/HsFgsYp5lWTKZTATF4HvkwCOyp7RjMcaLMxXp\n", + "qzQMA4qiIJVK4ebNmwiHw6LRps0rFApdOdHoWjWAX//612V+HTHe4XAoi6zT6UiUQCQSkWiqvb09\n", + "1Go1mXGiqqrY+y8SFVxsbOyIWTN+gKybqqoCyVFcREvRYDCQnTeTyUiSEgNROGbhohEAgGRyAJCd\n", + "0zAMaQY5NJMQGLXDtExxRATHyZGJYyQYE/07nY5kWVA3wosZ1tvb26L7oD2MiUoM2Dk8PJSGk0QL\n", + "4Tev14tWq4V4PI6PP/4Y8XhcXN/f+ta33s40Ac4bQCIFAKRBymQyUmb4/X7k83mZiVcqlcTQWiqV\n", + "EA6H8cknn+DGjRsoFotSa2cyGSiKgv39faTTaQDnx+/t27dxenoq5AZhOWZZ+Hw+CQgkKbO1tYVW\n", + "qyWlAC1QnU5HRDt0ceTzefj9fvR6PXGJ0LKfyWTk98vlMhwOhwiRaFz1+/1CdDBat1gsyk5JzyLt\n", + "WERyVFXFyckJdnZ2pNZutVoCUzJsZz6fS7AkMX6WKCx5Op2OSGbZfHP8BU/K4XCIv/3bv73S93+t\n", + "yox33nlHpJN0h4zHY/j9foGsCoUCer0ebDYb0uk0bt26JfFRzH4gW8WOu9Vqwel0Qtd1Cd02m83i\n", + "FOEX7HA4sLe3h0wmI/44nnyRSETkqUyMZ0onSRiOEKMYirU6GTaeDBw5RnsTUzQzmYzQ0ER06Ptj\n", + "1pvZbJbH4/Pruo7T01OEQiE0Gg0RVHHXZ7QBm1SKmkqlkliuqtUqhsOhmCMo2OJ74aINh8Oiw7bZ\n", + "bIKQ8Ma+ynWtFvNoNILdbsft27eh67qwcMPhEOPxGNvb24hGo8hms/L7T58+leOWOmEmcZIgoAOE\n", + "WDM1vIvFQgaqr1Yr9Ho9Yc04IZZ5yPP5HLFYDGazGVtbW0ilUqhWq3A4HJLyQ2EP6WxqJGazmexy\n", + "zMpgXVutVkWmms/n5fgn0cL4r1AohHQ6DV3XZUfmPwyQ6XQ6yGazItzXdR3j8VgGVM7nc0SjUTQa\n", + "Dek7mPO8sbEhs17G47GMcrtYj5Oh5fPSNEGChWaI172uVZlBRVs+n0ckEkEwGJRwQIvFglarJeId\n", + "BsL4/X4oiiINXzqdFpaNkBaF+0RKmBxKZzUdHABET3FRNRYIBGT4OaOumOcxm83EgkVVWzQalbgv\n", + "wnM0oNIdTSE/cE5X7+3twePxiNE0Go3KDcJkUgASGH4xuszhcAhuTNNsPB7H9vY2FEUR7yFPvAcP\n", + "HiCfzws+bLPZRDDFBZpOpyVEh2OMiV+rqioumKOjI5mJ8tZpcuHiLLrBYIBEIiGEAcNRqBpjorvd\n", + "bsfe3p4sFsZ70d3N0b4cEQGcL9ZEIiGa4VQqJdpn6ik2Nzehqira7baEG3JSLMkFm80m7g9KUFVV\n", + "lUDGdDqNjY0NjMdjaJom6UO1Wk2GaVJcRLZuPB5L4A2tVByswxKHo9CIaVOboaoqRqMRNE0T/Jnl\n", + "xI0bNyTqS1VViXFwOBzi2GE+CWtzNqScB1Ov10WZyJtmPp8jm83C5XIhHA7LHO/Xva7Vzsxhj5qm\n", + "SaPW6/XEDa2qKnK5nEBrxDt7vR7u3bsnCjRFUfDkyRMoioJisSiDdZj1fHp6eilln/kUvV5P/j99\n", + "dX6/H/v7+/D5fMjlcgLV8Yter9c4ODiQm4KZ0C9fvpR6neo1UsqcPciprjabTY7y1Wol+dOcsnV2\n", + "doYHDx5IrV8qleByuUTUVCgUYDKZkE6nRS7rcrlQLpehqqroNfx+PwqFguiQL0Z8UYlHRSFRDWpX\n", + "FEURBKZcLosYi/R4PB6/smruWkFz3/rWt8QFTbiL+RX0nGmahmaziXA4LEA9gX6OSqP4vN1uIxqN\n", + "otvtioictTHtV/T/EaMmKzgejy/Nhma9SHiK0BTDvinKobOExA71HhwqxKaJ8B0AoYh5IwMQRo+D\n", + "KtPptLB1hmHI9FWOgCAuzc/m/2fvTWIjTdMzsScYjGDs+75zX5JVWdndVdXVDbUgoaUWIMD2QbB9\n", + "MDAwfPPBgiEImjnqMjB8kQUddDIaAx0MDGBpZB1aLVVD6pbVKk11rZlkMrnFvm+MIIOMYGw+sJ6n\n", + "gpZkA0nMtETUDzQ6i5kMBuP//u973+d9Fopt+/2+DBOtVqvkaGyKWdOz5LJYLHC5XHjx4gVWVlYU\n", + "mtTtdtFsNnVCVatVxGIxHBwciLvt8/nw27/9219xMwAo8anb7SoMnuy3RTvWwWCg3D1292z25vM5\n", + "jEajUA2WKhSeLvoQkzBDtl2/30e32xW7jg9Et9tFvV4Xx5pQFxtDAKrHFw1VCGfRQ48sOJqJ03OZ\n", + "OyJPB4bVk5dC+ii1jFSvUE3CYB3ymLvdrnBu/u6cYM7nc8TjcSlISB0tFAryZl5aWpJXHh1Tyf/m\n", + "58TPjIkGvH8PuR5VmcH8PRqJs2FhhgdZYAyeoXjVYrFgPp+jUqnAbrfj+PhYjSJwN13joq/X6+L/\n", + "slHkhOvq6koEnXK5rHQnBkESCru5uZHzktVqVWaJ2+1Gs9kUt5lWYTRx5OIhlEfiExvMRqOBJ0+e\n", + "4OTkRLs/3z+xbFJj2fhS7sXFvyhwYIlGSI+BQp988sk9X7nFPER6WxPbbrVaeP/99+FyuTQQms/n\n", + "sFqtqFQqMmpcWlr6ajEvXtT8+Xw+PH/+XJozjk37/b4ytdfW1mRgyDhhGhXm83nFJdAEnMd6KBRC\n", + "uVyW2XYoFFLOx3Q6lT6QtNJUKiWnHrPZrOO01WrJ5Pvk5EQDCL/fL7NCngCMKO73+9jY2MDl5SXy\n", + "+TxWV1e1E/d6PU3m6KBEeufFxQW++c1vqoyhRjKXyyko02AwCJEYDAYapWezWbkmVSoVGI1G+ekF\n", + "AgGMRiMpdmiQw5OBGDRtvlKpFLLZrJxO+/0+vF6v3J9yudyD7v+jKjOq1ap25EQiIaql2WyW0plj\n", + "3eFwiFgsJk0eFRtLS0vY3d2VDu/y8hLj8VhwV6FQ0FjZaDQqKm19fV0DjpubG43D6VZP7JY3mgwx\n", + "xjqQgEPOBkWp1CNeX1/j3XfflQMpANXtVG3kcjk9SFdXV0ilUmK9MQAoEAig1Wqh1WpJSsWfSTst\n", + "p9OJTqej7JHz83OsrKyIXcif53A4pG+Mx+MajcdiMXQ6HfHAiYTQ0YibBi3PMpkMEokEvv71rz/o\n", + "/j+qnZlukjQxJG7sdDrRbDYRCASwtLQkM+2vf/3r+L3f+z1873vfQ7/f140ol8uS0FNizykaSUP5\n", + "fB7xeByJROIeMZ5DlWAwKDUGH6ZKpQIA4gHT0jYYDMpmgLU7c1BWV1fRbDZFZN/b25NaejabSVlN\n", + "3jWZd6SbMkKZSQDME+dYvFqtIhKJSKS6uroqeiktgClrItxJJCIajaJSqWhgwkGIwWDAzs6OamHW\n", + "/SzFrFarBjqJRAIGgwEul+vBCa2PajFzxEvcM5FI4ODgQAhHtVpFIpGQWvmv//qvcXFxoQV0e3ur\n", + "3WM+n+OnP/0p1tfXtZsAdwuxUCiIRHR+fq5FzmleKpVS7shkMpFsi7vxaDQSsYcppcxFYYxEsVgU\n", + "ZmuxWPRQnZ2dod/va6o3GAyEP7Nc4I5Nf2oy05hJmM/nRS6irGtlZUU0VJKhWq0WvF6v8hHfeOMN\n", + "jEYjpNNpnJ6e4ujoCH6/X0Y6FxcX0lMeHx9rgbMBzGazWF1dRbVaVT/A/gbAgx2NHlWZ4Xa7EQgE\n", + "7imfGQlGEj1r0EQigZubGzx79kxNT7fbRTweV5fPiRv9nUnhpIcdWWNckGTXkWhEwxia0jDPLxQK\n", + "yRaBDkQczpAjQggNuPPQoxuR0+nE+vq6kBgS6jOZjDzq7HY77Ha7FjEpoNQ0kqq5vLyMZDKpBpY+\n", + "HlarVTAdhaypVEqec8+fP4fdbleNHQ6HMRwOJd/qdDry0qPRIjNlaJDDptTj8Sj+Ymtr60H3/1Et\n", + "5larJaiMHyitZ6m8praOuwCJ4TQ+zGaz99AQBlAyzIfjYZLyLy8vUSqVhBww+4OjZO5ANzc3aDQa\n", + "Sjbl2NhoNKq2pvi2XC7j/Pz8nkh2Mpng6OgIo9EI5XJZkn2qoOlHxwg1ohHX19figFBGRYiNjSQN\n", + "ZgaDgWLTFk84+tqRA12r1XQ63dzcKFGKjfJ0OkW321XaADeTfr8v1hwbZnqL3N7e4qc//emD7v+j\n", + "KjOoPWMEwng8VvY0rVdpMUA+MY1ZKFUymUzI5/OiQTKhlAMCaveY/+f1etUI0nSQuyfVF5ubm+Jl\n", + "cNTLJCzu2g6HQ1Fku7u7SKfTODs7Uz27tLSEJ0+eyDO63+8jGo1KEU03ImZ4MzWAUjCeFJRD8YRg\n", + "zHEkEpG7Pl2NAoGAfEKAuxOCJwdfkyHwlHuxTn/y5Il6Ao76Kczl570IGXo8Huzv7+PHP/7xa9//\n", + "R7Uzc9pGT2AAWFtbg8fjkT6PcBERD5YfVBVbLBY8ffpU3nHtdhvxeFxTMgo7eYTTrd7hcEhEy12d\n", + "/A36qBEXpoKbRCP6UrCpy2azaDabKl+i0SgcDodISdPpFHt7e+Is076WCpJWqyW5FnV4tOWiiyjp\n", + "q6PRSPKli4sLNceTyQTRaFTWvNPpFKurq8LAl5aWZDlG/2W/3w+XywWTySTlDADxOOh5R19nTkBD\n", + "oZAcjh5yParFTMcdyp3MZjNqtZoMSrrdriTxjUYDn3/+uaZ9i9a35D189NFHikVg3Tyfz/UAMAeQ\n", + "WHa73ZYBOTkf3InYWLHM4f/oRkRVNHdS2oItLS3p4by4uJAq/Pj4WOWRy+XS1I6EKe5+zEAslUqa\n", + "kLInWFSqMHyHsCLLBv6OzDShjIyjfzbOzWYTJycnmprm83n5i9Btlb8bdZS8Z/V6HdfX11+5gC5e\n", + "HMlS2UAVBg2z6dc8n8+xvr6ORqOBjz/+WDesXq/fI/CQSUbrVyYnEbdttVqCxFiDz+dznJ2dKU11\n", + "eXlZN5mqEu5YbC65yMm9uL29lTEKPZhLpZJsb0ejEarVKgDcy22h1xxr0o8++gjZbFZlwnw+R61W\n", + "k2av0+losPLixYt7UivgrqzodrsSLZDeenJycm+BM6+EZQNJ+q1WS/ZjRGpqtRqazabIXzS0oRPr\n", + "Q65HtZiZn0FF9Xw+1wIlr4KKB8qQ1tbWMBgMxNug1eyibJ6dPxdRoVDQkUj4jP5qREuoEuGxCkD2\n", + "WmSmkQtxe3t7L/GVpwPN0AEoQ7vb7crl/vLyEs1mU80nQ4goHiDxiTtot9vVJJFHPrPF6RNCxTkb\n", + "aUKXbK5Zo3Msv7KyIq4I7c4MBoM+Dy5QnobcTMhbuby8xNramsI4H3I9qgbQ7/dLjUweMXVxhI48\n", + "Ho9y8DweD3Z2dhRvRhGq1+tFMBhEOBzG6empMkuYyrq8vCz4y+12C9q7uLhANBrF5eUlMpmM7KYy\n", + "X8QQEwlwOp3ySaZ6gw9SMpmU+/ze3h4ODw8Ri8XQarWwv7+vBNlAIACn04l6vS4FNAlKNpsNLpcL\n", + "kUgEVqsVn332GWKx2L1m1eFwCFKjeJX1Kwc+a2tr4o6k02nZ/NJWN51Oi4uytraGXq+H1dVVQYGt\n", + "VguxWAyJRAKtVgubm5sK2mw0GvjlX/5l/OAHP8B0OsXOzg6cTid+9rOfvfb9f1QU0N/8zd/UsXh8\n", + "fCzSzfb2tthlhJii0aiErbSNslgs6Ha7ODk5wRtvvCH3916vB6fTKUUF4xs4GeQRzOOVmdCLlrcM\n", + "vATumtLDw0OF5JDIw9oagOBE4tRkwIXDYRgMBlSrVQXIE4fmQ8UkVKYGXF1dYX19XTUwgzY3Nzfx\n", + "6tUrAHcPAO26mHf42Wef4c033xTDr1AoyMe52WwikUjA4/Gg2+1qOEKrhOPjYyEs9KxmrszKyopE\n", + "wjSlcTgcKBaL+NM//dOv1NnA3Q3xer2o1+vaBb7xjW8gFouJMONwOMT9/Y3f+A380R/9ETKZjPSD\n", + "dAl1OBz4pV/6JTQaDaTTaVl/XV1dIZPJoFqtSnXSbrdhMBg0uiZhiOUKUQh6ylmtVuzv74tFR7UG\n", + "c0TsdrvKH7fbjUqlIppmJBJBv9/Ht7/9bZVPe3t7aDQaKj04zGFgD2mYVHzf3NzIsZ7QGkk/HH0z\n", + "u48PyHQ6xZMnT5DNZhEKhTAej7G/v696mFNPcrf39/cxmUzkgBoOh+9lKrrdbsnFVlZWpCd8yPWo\n", + "FjO5zIwF3t3dxYsXLwDcBcdUq1WkUikFNf7kJz/BYDBAuVyWf1s8Hhd984MPPkA8Hsfx8TE2NzdF\n", + "MG80GlJG0K6KTpfJZBLxeBxnZ2dihxGB4Eh7Mpng4OBARueVSgWxWEw1LP2Xy+WyXIdYw5+cnGB5\n", + "eRn5fF5EqVKphH6/j62tLdW1FxcXop7Sl5puRByGMJCSRzuFCLTK+uSTT7C+vq6fFw6H0Wq19Bof\n", + "fPCB8kqIQbPefv78Ofb29hQiz82CfBDW+7RmuLq6wqeffvqg+/+oGkBygknYYe3IuAT6FlMpXC6X\n", + "JRh9++234fP50O/3FZHAhi7zRQb1fD6X2xH1fLQIsNlseOedd7CysqLIXr/fj3Q6LX0crQSMRiMy\n", + "mYxsb2liyAxv5gASv6bmkCN2NqSEE5lexXzCWq2GeDwuFUy/31cAJiVP8XhcwfTsNdLptAYpAFTy\n", + "8DObTCYaxbNnYELVovnhZDLB22+/rTSAxRwZpnft7+/DZrPJWNLr9crf+XWvR7WYF6GinZ0dkdnJ\n", + "XlsUktLIm01To9EQPTMYDMLlcmFjYwNerxflclnSIGZkL+r+GEhDp3qGXzLugTtWKBQCAJUBxF23\n", + "t7dxc3Mjh3kA2NzchMlkkscdx9qMKeNr0PJg0Td6e3tbam9yJ7gzDgYDCW/JPQG+FAMzr5ClCNU6\n", + "VKDQyZQIkN/vFxUAgEze2+22ZGNUyVCixaRX4C5dIBqNKhb5IdejWszU9Q2HQ3S7XQCQEw9H0Pl8\n", + "Hs1m8x5mTPiJ/hOExg4PD3UzFj3VOLXjpI96PUr4J5OJyoxFI0TyIsh+I4Zcr9dF9KGmrtFoiFvB\n", + "QQ+taPv9vqBE4tSE9MijJixpNBoVIsQ0WYpKyQOhAIGnGndhui4tfpZseBkeNB6Ppf0zmUxy/a/V\n", + "alrAnMz6/X4hOuRxUK1Dn5KHXI+qZp7NZojFYlhaWhIzK5lMIplMCsyPxWJSiAwGAxQKBZkaUmtH\n", + "VyIqV2hGSF8KAHLuIRY9mUyws7Mjgj8HEIT5iFfzwfB6vYjFYsK+DQYDUqmUSEgXFxfY2NgAADV9\n", + "5CEDwJtvvimVCL9G+RLH6E+fPhVRiKlR0WhUZQgDNjnVo3qbO/Y3vvENmEwmlUp+v19ezIt2B4QJ\n", + "R6MRIpGIpF38nWw2GzqdjhTewWBQJRAN14PBIFZWVvCTn/zkte//o1rMHDRwFEuzlV6vJ+yWH2Sr\n", + "1YLT6VSOc7ValekKhy6cBtIqi1atXPz0U6vVarJ2pUcG3Y2CwaBU3STgU19ITsbFxYVqzmKxiL29\n", + "PUSjUTSbTXQ6HY2cS6WSsPCjoyMkEgkR9fk7U33On0FyUT6fh9vtRi6Xg9lsvmeHxYkhR/acmLKW\n", + "pyNppVJRnc/MbWoAyRFn6USzce7ALENoTMnXpUSLtIKHXI+qzOAO4fP5YLFYxFnmxUWczWYlvmSZ\n", + "QMNvp9OJ4+NjSYAsFosolNw1CS/x6GZQZbvdlvFKuVxGJpPReBmA6k5OIGmE4nA4sLa2hkAggJ2d\n", + "HblvcrLXbDblnETrWtapXDA2mw1ra2twu933vOn4bzY3N3F1dSVCUqVSuccZ4fCkWCzKe4/1Nf07\n", + "GHVBshaNGInBEyun2ICDGrfbjdlsJhnXeDyWEIBTS+BfIDnfYDAkDQbDXxkMhgODwfDCYDD8T198\n", + "3WcwGP7SYDAcGwyGvzAYDJ6F7/k3BoPhxGAwHBkMhl/9p16bdSMXCWMaOE6mm9HGxgbMZjPi8Tia\n", + "zaZU1CsrKygUCjIJNxqN0sExooDUULLhms0mQqGQpnckLXE34nHKhFhi2H6/H4VCQcw1RjkQ8SiX\n", + "y4qYoPKZBJ/JZCLiPyeH3A0HgwEymYyaPyqo6WfBppK+cBxDE6HIZDKSRxEPJkGJ7kqLKawcXZM1\n", + "SPX7YlyF1WrV+yX2TIkaHzqLxSIPwNe9fh5lxhjA/zyfzz81GAwOAB8ZDIa/BPDfA/jL+Xz+vxoM\n", + "ht8B8K8B/GuDwbAH4L8BsAcgDuB9g8GwNZ/P/4Ez9e3tLYLBIFqtlhZbt9tFIpG4F25JP+VOpyNb\n", + "K4L3Ho8Hp6enagRJdKcZIgBZurKB5Gv0+31cXV0hkUiorrTb7SgUCoLBhsOhFl0kEhEPmpO08/Nz\n", + "iU/J3+DAhikAsVhM7krMB6R1gslkQqlUkqSKooJSqYR2u60UAS484M6yy2w2o9FooFwuYzweCyMm\n", + "GkS3fe7MfF+xWAzT6RS5XE7OT2woAQiqm06nsugisnJ6eipP6PF4rGDM173+s+/M8/m8Np/PP/3i\n", + "z1cAXuJukf4XAP7dF//s3wH4r774838J4P+Yz+fj+XyeA3AK4J1/7LUX+QXlclnNVq/XU11IMSVN\n", + "FXmM0juj2WwC+JIMdHNzI8YdvSqYFEXkhMoU7py3t7caFpDHSx+5+XwOp9Op98t/Wy6XNf2bTqf6\n", + "b6YxcYGQj8EdkdRPADqBWNfyAer1enIkqtVqKqn4sNLei/YAJFXd3NyItGSxWGS2SBah2+0W25Bw\n", + "IdESfjbAlwY67F/m87mwa46/6dH8kOvn2gAaDIYMgGcA/h5AeD6fk9BaBxD+4s8xAIsu1CXcLf5/\n", + "cLGLn8/n2NzcxHA4RCqVklKZKVJer1e7IXcLhpmT9UaOMF8zEAjA4XDg7OxMcB71hhyEkKlntVrl\n", + "HXd5eYlvfvObikQAoJExSe7hcFjDA7PZjNXVVSEHPp9PO1skEkEwGES329W4mp4diyVBMBgULk5H\n", + "f1rzUoKVy+WQSCRUgvBUYh08m82wtbUlvjWpqUQdaEVLC2GauZB4tLGxAbvdLqNELnRuBGazGcFg\n", + "EO12W7503/rWt/BXf/VXr72efm4N4Bclxv8J4Dfn8/nl4t/N70ZP/18MqH/079jscSchl8LhcMjQ\n", + "hOR9h8MhMxhmBrbbbfj9foTDYXXwhJNYlgSDQeHJ5DuTgE+iPnP3GNLTbrflSkSXJZqfE9NmZBux\n", + "6FqtphKCBB5yRAiPAVDOISeDoVAIhUJBJQRppDy1eMq4XC7t9AaDQYGgjICgfnE4HEoqRqEAHZWG\n", + "wyFms5lI/Uzgury8VMDRzc0NKpWKsGbGdHD3rtVqmnbSiuF1r5/LYjYYDCbcLeQ/ms/n/+GLL9cN\n", + "BkPki7+PAmh88fUygOTCtye++No/uD7++GP8+Mc/xt///d/j/PxcNSvrvFQqpVByGmm/fPlSdSZz\n", + "TjhsKJfLkuRTjcGdvVarYT6f66FhA+V0OpHJZNDtdpFMJrVIybdgI0hZFXcvLm6n06lcwevra+22\n", + "0+kU+Xwefr9frzebzTRtI/OOMq/FqGGiO1TceL1e6RrJX2b5wBRV2oqxZuaOTliNfBEOZejLwclh\n", + "s9mUH14ymRRzLp/PC4NnQ3h4eIj3338fZ2dnD1pXPw80wwDgfwdwOJ/P/7eFv/q/APyrL/78rwD8\n", + "h4Wv/7cGg8FsMBhWAWwC+I//2Gt/97vfxXe/+1289957WF9fh9ls1iJi88JO2mazyRibPAfu1vRi\n", + "406zmHe9tbWlv6f1AO2uAGiqxbJhEYaLRqMAIJsANmyEqzj2Zh0diUQ0YGF+YK1WE8JC+wE6CwEQ\n", + "8uL1esVUYxwFvfZ4wiya5ZAlxwUKQDAe/ZoXp30MBeLCpIKdOYRut1tYP/+O6AYHKhcXF0in03jj\n", + "jTfwne98B0+fPn3Q2vp51MzfBvDfAfjcYDB88sXX/g2A/wXAvzcYDP8DgByA/xoA5vP5ocFg+PcA\n", + "DgFMAPyP83+ChE2CD8lCzL6LxWI4Pj7WzVp06WT07qIxCy24SL1kWVEqlaRqZijPs2fP5BTE8oaW\n", + "VUajEcFgUDYATLciU44LL5vNIhaLoVgsyqX/9vYWR0dH2rEZJ7G0tAS73Y6joyNsbW3BaDSi3++j\n", + "0WgIFiOB//LyUlyLdrstLnGv1xNJ6fb2Fp1OR/TXUqmkB+Gzzz7D6uoqyuUyms2mpojkbpBkJGAf\n", + "twAAIABJREFUXy6X0Wq1RA01Go3I5XLY2dnRiJoUVZ6CPp9PbMF+v4+VlRV89NFHD1pY/9kX83w+\n", + "/7/xT58I3/0nvuffAvi3/3+vzc6aRnzdblflBN2GLBYL/H6/HOpZNnzxc9DpdODxeKTTMxgMSlIl\n", + "2M9BwKKUyOFwCJpjfVqtVvHkyRMpM2j8wikep2wulwu5XE71Mz3xms2mLGd5qjCmjNNDmpFT3Gq3\n", + "2xWISSOWZrMppTb9NJjbMh6P4XQ6sb29jfPzc/UX19fXSpCiqQ6RGVokMJNwOp2K9ERONi1sGTFM\n", + "l9HFnZxCXkJ9RGNe93pUSpMvMuRgt9txcnIiHJdcB8JmDKW5uLhALpfDG2+8IViMOrV4PI6joyO8\n", + "8cYb8mVjx06Xei5Gj8cjKI35KXTr4QImf6LVakkBs7y8jFQqhVKppHqUjLJ2u63kKdqF0dHIbDbj\n", + "9PRU3iDX19f3FBvMRqGNVy6XwzvvvHNPZZ7NZrGzs4OjoyNJwTKZjFKnaMtFBIh+dhaLBePxGKPR\n", + "CLFYTIgNfTQ4STw4OBAcaLPZcHZ2hlQqJToscxqbzabq7ouLC/z+7//+V2bjACT5pwMPdydip/1+\n", + "X9Mr8mrJfONCDYVCwllJPL+9vdUOmM/ncXFxcU+Kz0aRr8shS7FYxM3NjRYrORg87imGpZXA5eUl\n", + "Tk9PFVlMKI/KZUZEMMlpNpvptQAIxisUCvKKBiAfOT4UXJw8SQjd1Wo1ABDfYjqdypKApCsGeZJF\n", + "yH/Pet5qtUroenV1hYuLC+HHZN1xQ6G9AAn95G+87vWoFrPT6YTT6YTb7QYADS0WrQO4s3HETM4F\n", + "ORaTyQT9fl8LmiJQk8mE29tbPH36VFl2dDsKBALaOROJBCwWi2J6rVYrdnd3MZ1OJUsKhUK4ublB\n", + "sViUupkB7NTVUXVNSyxi4LSoJRLAnZtj7mAwiF/7tV9Tbgo1f4twGxtg4O4B4AApnU4jEAiIuE/H\n", + "VPKSKcliY8vmjs0o4xy4oMPhMJaWlhSLlk6n5S1HPz3SUxfzBV/3elSsOTLM+EFarVa8ePECb7/9\n", + "tuq509NT3N7eIhQKCRajYplw1+3trVwtg8HgPTfNSqWi0oUBkJTtLy0toVQqCYWgK+bh4aF+PgDk\n", + "cjkd6yyLzs7ONP3jjSUXmqPpVqslGI0m3zzaiV3P53P8+Z//uXR9jL148eLFvTSoRYst7qyLHnZv\n", + "vvkmCoUCCoWCnPTtdjtyuZyQELIQ6SGXyWTkMc1BD6eshOqonVxeXsbBwYEyWtrt9r88aO4/5cVd\n", + "mbvd5eWlrJ84cuYY1e12i1REz2LyoGnFCtx14fSlowplNptJ0c1deXl5GePxGLPZTCgIEQ42eTRs\n", + "XPTR6Ha7oqNykdJmy2Kx6Huur6+VOEvaJ49yOp1SGNtsNjXm9ng8aLVaWF1dVRA8ADWCTKdiL8Df\n", + "bdFnhEw4CgQikYiwZdolENlYWlrS5HUx74VOo6Tccgp4fX2NZrMpIfFDrke1mBknzKxqZpBw5yTX\n", + "FgDy+TysViuq1apyOrgQer2ejm3CdoVCAcPhEMfHx3C5XFJqAFB9SmUIxavdbleK7H6/r52Xk0Bq\n", + "5yKRiFQZtBXgzsdGtV6vo1AoKHCI3G1yT25ubnB+fi67A9bUDMM8PT2VmQtrfnIkWOIQ3+bwg2aI\n", + "JFkxqKfX66kWprspkRUOkF69egWTyYRGo6EThaofg8GghpXcED5YD7ke1WJ2OBziBOfzeeGu1AXS\n", + "9GQ0Ggle4k4VDofh8Xi0eMnl4BFLUSZdf0iSYRAjF+vy8jLS6TS8Xi/W1tbkl8yGyWKxiGnGq1qt\n", + "qn5krC8XOuvpRCIBv9+PQCCgkEp6dxDm293dBQDEYjFRTVnDklttNps1+OFAhYobUmG50LhTj8dj\n", + "xGIxTCaTe/0IbcrYQ7BkMxgMgjvj8biExDRD56kyHA7lnE/W4kOuR1UzM7z94uICm5ubiuH1+/2o\n", + "VCqYTqdIpVJoNpuw2+1477338Ad/8Af42te+pskWiTlWqxXvvPMOXr58qeQmkmbi8TgajQYSiYQU\n", + "GJwiUgnOCDHgDk1Ip9Pq3OfzOdLptP4tGyaqyvkQsflivQncuSP1+32Zs7hcLnFN2PRdX1+LTGUy\n", + "mfQg0laWkWxUquzv7wv3ZV633++XPS/9OYLBIM7OzmSzsLu7i7OzM7mL0v3f5XJpgDIajeRnQoUL\n", + "J4hMAbPZbAiFQjg6OnrQ/X9Ui/no6Eg7R7lcxurqKlqtFoxGo3BncpgHgwFOTk6Qy+VQLpfV/Fmt\n", + "VuTzeUQiERwdHaHZbKJer8s7jTed9TBrWDYy7Mi5OzmdTlSrVdWGtCe4vr6Wsz+TSVl78uexdiec\n", + "yAUN3E07vV6vXqPT6eDs7ExpVUQx+v0+2u226m9yt/v9vtQkLKHoukQHVRKhaJyeTqfFua5UKjrp\n", + "Go2GBL38jIvFItbX1++VVxzukILL5pnQX+6rtKkvL2aE0FOYQweaYpfLZfEFvF4v3n//fezv7+P2\n", + "9lYeauTlWq1WHB4eaqoWiURgNBqRSqXQarU0FTMYDHC73VJTkHfALp/iTvJ22RBdXl7q/3u9ntyF\n", + "5vM5otGodtbRaIRgMCgoiwoWckIoOuj3+0IZer2eFmG/39e42mKxqPSgb7PT6ZSZ+WAwuOdtPRwO\n", + "Bc8xQZZU03Q6rfE98CWSxJKMfBKbzSYHVd4jytGKxaI+AzIDH3I9qsVMLHaxM+aImLUa67PF3OdF\n", + "X2fipotWUoxNYBLpdDqVdQEtBBZTT7lAyAF2u91yx2RmCJELvk9GCy+OsTn0WST+cFReq9VU1y7K\n", + "mkjr5DSQfQObWQAKAaIFAut5ci46nY5EBPzdKO8iYYmRGre3tzAYDEry4i7carWUo0jvjX6/j2q1\n", + "Kq9sDrRcLpfEwA+5HtVi5k5jNBrlzENne+KdrHsZWcAPlz4Qi65DjEQYjUbadbl7D4dDRKNRrK6u\n", + "isLJGjcYDAIAXC6X3PLZ0NEAkQ+IyWTC6uqqyoVFqigHDMRrWTIBEDne5/NpQZCFRyd9vj4d+Umm\n", + "L5VKGqhwcETIEcC9FAEmEbDfMBgM8Pl8Ut6QGMXGjzs7SxZyqAkjUg5mNpsRCoXUN9BQ5yHXo6qZ\n", + "uZi4IGgcSEvaXC4nWT4XSTKZRDgcFkIxn88VDE/bK07alpeXxfaiTwSRDx6vS0tLKg04vaMqhLnY\n", + "XNDkKtCrgm5FVH4Ph0NhuhcXF+IQB4NB1ZnkYBPHpcqFtlxkxgF32dSJRAKZL+LNVlZW1Jh1u12k\n", + "02nVwmx6J5OJmkFyukejkax70+m0jCdZKrHBY0m0u7srYQSnhBQMn56eIpFIwOVyYX9/H++///5r\n", + "3/9HtZhJPTQajRpgEB1oNptCMcg5IPYM3CEhxKdbrZaQER6n3DkWw3rICiNaQNnT1dWVOvv19XVp\n", + "9shj5uJvt9vaDdlw3d7eagfjrk5sl2YqwWBQNrvAndHMq1ev4PV6hZ3zQbq8vMTV1ZVQg3K5jHK5\n", + "jGQyqabs1atXKj2m0ykODg6wv7+Pg4MDRb7lcjmpz6mPJFpRqVRkcMOypdFo3HNIpQSt3+/rpGs2\n", + "m2IQjkajB3kzA4+szCAHgEcaR7A0c6Fae7Hmo2cwFRgANDRgKI7b7dbomimwtJOiSpuDDE4OqQFc\n", + "bABJdg+Hw/eO9dPTUxGU6H/MI5tQFk8IIghsasmRJueCVmMUCzCn8OnTp1KbJBIJDUfYfBkMBnQ6\n", + "HR37w+EQ6+vrGu9HIhHRadnAcbHS29lgMIhzzQkpKZ/kX9DHg5g2zdWpmH/Q/X/Qd/8zu+r1um7S\n", + "eDxWZgenfixBaB3LnYSqCY6Db29v5dLT6XQ0bQMgGIvKDzLlaLXFUoKZ2awnCYsNBgMtbKIBDocD\n", + "Nzc393zyKIWiUeHNzQ0SiYRIRyylxuOxHtBOp6Nyh+Y2HHU3Go17sRDMxmYJwnCixei0brcreI/N\n", + "LQDh6dQCknXIXXY+n6NSqYgeQASp0+nIuuHq6upeP8LS7CHXo1rMq6urMuErFAqIx+PodrsSnp6c\n", + "nIjbTGJQuVxWXghDZkjcp2SoWq1KPcJdn6VFMpmEz+cTZk0G3vLyMtrtNpaXl5HL5RAIBDTZy+fz\n", + "+PTTT5XNTZ3g9vY2AEj1QeyXRo/n5+caQ7Np5dSNPnuE5hi9TMrqzc0NyuUyrq6u0Ov1NKjhKdPt\n", + "doWjMw44l8uJy1KpVGA0GlGpVOByudDr9VAsFjV65/dQGADcOTidn58rANTj8SCZTOrnEvPm+2UC\n", + "1etej2oxc7TKLp+7InkGZKPRZoAUS4582ZFPp1PdGIpJyW5j5C7DdBhFRhcfwmFUaJAHzCOYOYAu\n", + "lwsABJ1R8LmIQrBJ5ciaDwqzwC8uLuSBQV4Fa1e+X5ZKixEThCT50LEJpfKaDkcUtVJDSaSHqhmW\n", + "Nnx9qkz4fii4pS/JYpQcSyzu8g6H46uAnsWLDDgGQVqtVni9XuVDUzbFiIXt7W1ZaNEgcTqdYnd3\n", + "V8E+sVgMfr9fUz86hXLxcpchIkFaJRGBTqejE4N1Msn2HFkTuguFQuh0OkJh+CCwObTZbIjH42i3\n", + "21hfX1dYJ5GJ2WymMX4qlZL9F1UxVKYTRuR4+dmzZ/eYbRzFv/nmm8Lb+VBsbGyI+01UwufzSYNI\n", + "jgZPJQYBjUYjJJNJXF9f69Qh1s3f8Tvf+c6DRtqPamfmolg0BqSQlFlzk8kE1WoVKysrEn6SqM/6\n", + "stlsit98dXWFFy9eKEqBtSEneDabDYFAALPZTP4XhNeur6+RTCaRz+dVO3I8TfOWbreLUqkk/JhH\n", + "OC14Wc+zVGJoJadqtVoNw+EQZ2dnsFgs8j4mw67Vasmckbss86zp8FSr1dBqtdRLcLyezWalsnn5\n", + "8iUqlQqKxSLMZrNOJEKItFmgTpInEetwIjzz+VxlBZtdNqIP5TM/qp2ZsiiDwYBf/MVfxGg0QiKR\n", + "0FHMJCUqKRgQ4/F4YDAYUKlUFJHgcrlUUqTTaXX8s9kMfr9fWjpOzajmsFqtOi5p5RWNRqXHI0uN\n", + "zvoAsLGxoVEyd3oAGs1Tlu/3+3F5eSnTF7LOqFlcWlpSnDAALRxKtbjgWq0W4vG40BFCZ3t7e3j5\n", + "8qUQG5PJhPF4rFhgmkuyWSVD8Pb2VsoVDof40DNjnBkqLGkcDge63S663S52d3c1KPrRj3702vf/\n", + "Ue3MrBcHgwFevnyJyWSCfD6P0WikepTYKLm+bI6o1DCZTKjVauLXEmpjmORgMEC1WhWiYDabtdNx\n", + "vMtBhdPpFE+CyhMeszy2iRZwRM66nlg00RQGUXLH5+KgiTdtAhqNhnZrq9WKZDKpo547JbWMRFnI\n", + "ISE+zSB51sr8GSxLuBszEpkedQzbASBn/0gkcs+/j2Lfy8tLOBwORCIRTRNp4fu616NazDabTQuN\n", + "OzQ7fTYtRqNRxoKRSAQABK+xCbJaraovibtypyYXgTwL7kR09+TpQJtaypMACDYbDAZot9sIh8Py\n", + "sSDLjkcw1TKsX/l+2GQFg0HVrnQ74g7KB6RSqcjVkzAka1VafxHLrtVqaLfbSo4yGo3iT3BX5qCE\n", + "ggLCdW63W78r+RbkuBDy5AbCySVxbXKqCZE+5HpUi7larSLzRYrT4kKmTxp3NcafdbtdvHr1SkGY\n", + "9E7j8GE0GiGXy2EwGKBer0sQC9xZBtBFs9frIR6PazzN5i4SiWgMzN2JCEgwGMT5+bkWJjFyRk1k\n", + "s1mNmTkip/v+5eUlarUaKpWKVB5msxnFYhHNZlO7XjKZVK3Oh5hDDQAav3PHBCCjnMlkgu3tbcxm\n", + "M2kBOdanxQKbw3q9Dq/XKzIVJ6GUgBEGZQjSbDZDLpeT+p2G7g+9HtViDgQC6qhp1kc4ik0Vechr\n", + "a2s4Pz/H1772tXvsr8lkgs8//1xYKamSvEksWRa5GYFAAPV6HblcDul0WlAf4S+6edJTw+FwoFKp\n", + "aAE8f/4cgUBAzD4OYDju5u54fX0tOihra5KHbm5uhDPTW/rs7Exyf4fDoV2f5CGy4BahOYpLDQYD\n", + "crmc/KYZFrpYlrEUInYPQPU0m2meCuTD8AFKp9PI5/OiDwD/Ap3z/1Ne9FJm3QxADphsqjqdDvL5\n", + "vIy4Of6lbKfX62lnYQ1Zr9eVyX11dSXjQk7ygC9D3klIInuMN5blB2/YxcWF0I9FY3HW6eQqc2cn\n", + "T5rSp1qtdi8QnsR2q9Uq6iaRgm63K5ISHy6WL6PRSGNq+twxQo2+ILlcThEWy8vLqNVqwuCJSjBo\n", + "h9Af/7w4kaTqnbwWOjU5nU71Ig+5HtViJmC/qAJmDUlkgkaFBoMBmUxGpHpOo+jHTIk/m0Lu8GyK\n", + "6LHhdDrVHFEzR0yaU0KbzaadnMMWppX6/X6EQiFxkFkaud1ukZJo+E1UgtnfixhyPB4XnXPRrXMx\n", + "wJIPCG0S+HsyB8VqtQpa5GJfWVlBJBKBx+NR3AUxavIt+ACSB86SZXHQwywYNpGcUDIGmU6lD7ke\n", + "1WKmspkCVlIeOW1j00YvYxoaTqdTPH36VDtHMpnUrpnP57GxsaE6k8aE5C9w0rWysoJ4PI5Op4O/\n", + "/du/FTmJRB36UbB8oRSfEQtsCvP5vOREvLk+n08PBJOjiCgwB4WMuPF4LOSGxCXuzFyg9EOmap0O\n", + "RDR6pH6PYoWLiwuN+DnoIJHeZDLds9alSxENxPl14uTkr3Dgwt7joQsZeGSLmbASox4YLk43eKo0\n", + "qMW7vLzzOLfZbDg/P4fL5YLP5xNhfz6fIxgMyjKLRy89Meiwz5RShuPs7+9jNBopa4819NbWlhhm\n", + "9OPg0IayKE4lSdjhkUyhbiQSQSaTEb+CqaYUsTJl1mQySenCXXE4HGpX93g8mnKSwcYdk4udu2oo\n", + "FBJGzPqcDDtCkfTvo1BgUYzA7OzFv+dgyeVyweVyqcd5yPWoFjM9KiwWCzY2NhRxwBg1t9uNVCol\n", + "9tnm5qZG4IlEAsAdPvorv/Ir8Pv92NnZQbfblQs8oTzuRExSpWNmIpEQwkHuBx8k4A6r5m5MI3KX\n", + "y4VIJCIvC9bOJN7XajVEo1HM53O88847yOVyKJVKsv5iGP3a2ppKEWoBiWZQwUJLACI1LpdLll92\n", + "u10cZ54w/Mw4rWSDabPZFNlM1Uk6ndbn4nK51PyxtHO5XMLLGbUcj8fRarUQDoeRyWTw1ltvPej+\n", + "P6rFnE6nAUBUSx6pwN1Cr9fr0r2xI6cFVzabRbFYRCgUwocffohGo4FsNotEIiEuM0WiDI+nWTeP\n", + "4mKxqB2zXC4r42QxCIgK5efPn2t3Go1GCIfDuLm5EbRGP7pgMIijoyO0222USqV7tgX8d9fX1ygU\n", + "ChIN0LTl5ORETk7T6RSlUkljeJZHNGphmXN5eYlisQiv14uPP/5YueOkbXLo0m63pWp3Op04OjpS\n", + "6A/jhulD3ev1lAvOCaTH4xGpv9lsot1uI5vNPuj+PypL29/93d+V7dT19bWiFDKZDPL5PCaTCQKB\n", + "gBxA7Xa7FjN1buQ3OJ1ODUwcDgeq1aqaMrphcuJF/jN5yYTlWLMuktSJUDC+12KxoNls6vuvrq7g\n", + "crng8Xhwfn6uOpdoCSeHALC7u6sRPYMvfT4fisWiIorZqLI8WCTIc3hEezK+7tXVFUKhkAzEq9Wq\n", + "6ulF5IM7O8lG1WpVJjaMkgAg03OPx4NoNCrx6mQy0YLmfz/E0vZRcTMod7+9vdWxR8kSieLZbFZm\n", + "KMCdlxwzoEm8r1arcLlcOD09RTQahcPhkGUtE1YdDgdarRYcDoekWOQEA5CZSiwWQzabFSRHXzoA\n", + "GnszNoxDjX6/j1KpJDEo9YSLkWP9fh8vX76Ex+NRucOpIQW7FCYQ/uJAiIQs/v7Ly8vIZrMKJKLt\n", + "FxtYckPoo8e+hIlbJCKtrq7KQ4PZJtPpVBpGk8mEo6MjTQHZILJpbbfbD7r/j2oxc7TK5CKHw4FU\n", + "KiX/s5ubG0SjUUl/kskkPv30UxiNRglPWU7YbDZ84xvfQK/XkxyKI9xAIIBGo4FwOIxIJCJ8lLte\n", + "o9FAJpMRu45UTbpt0lOCdrQ+nw9Wq/Wec3w8HhfXl5Iqejqz/DAYDIIAidDw/dNf2mw2o9PpCKFg\n", + "o0dif6lU0o7LwREhtkwmoxqbdNVer4dUKoVsNov33nsP+XweJpMJOzs7Kh+oyqGo1Wg0IhqNij89\n", + "/yLIMxgM4vj4WPfpK6+5hYv2ADTpo6UtfedOTk7QarVweHgIAPjhD3+IUqkkUhGbuXK5jMlkgr/7\n", + "u7/DYDDAhx9+qAHIaDSSJRUX70cffYTb21s0m02VI8xVaTabcvHhBPLw8BA/+tGPZDrI3YxWs9Pp\n", + "FCcnJ6jVauJg012oXq9jOp0qUctgMKBYLKJSqUiaxJ03l8uhVqvp3zIznM0gd8disags61KphEKh\n", + "gMFggE6noxPi+fPnyGazyOVyqFaruL29xU9+8hMl4h4fH4tfMZvNcHp6KqaiyWTC+fk5Pv30U3FL\n", + "SMI6PT1FuVzG8fHxg4lGj6pm/q3f+i34/X5Uq1UlONVqNaTTaU2zBoMBKpWKSOY8iuPxOA4PDxXs\n", + "SAn/8vIyksmkGklK+GnISNir0+kgFouh2WxqBA7c2R8Ui0XBhoPBAPF4HIVCAdvb27i8vES5XIbJ\n", + "ZMLW1haazaZU4NPpFOHwXbbnYpYKoUVmllCAy1E5f+eXL1+K60FEAYC+32azyfOtVCphd3cX1WpV\n", + "aaxHR0dyZgKg9AE2tPxcV1ZW0Gg0sLm5iUKhoF6DJxjlWFar9Z4SZdHckZHNf/iHf/hVzQxAzDf6\n", + "lq2trSnmloMJCjHPz88RCoXwZ3/2Z/jVX73LliedczQaaVGZTCZ17AT2uUszDy+fz8uHjUMW1pPE\n", + "bkmyp46O2HYkElEA5tnZmWpdlkyFQkF1cbValYkiSyUiHL1eT6NkckKCwSAGgwGurq5E6uGEE4AG\n", + "L9zhT09PtasPh0M10KSA7uzs6OuDwQD9fh8OhwMnJydwOp149eqVyplXr17pdTgm5/Tx5uYG/X4f\n", + "T58+RS6X04T1q5p54VoMs+EukkqlFN3LuAOSyff29nB8fKwaFoD4DCTxl8tlDR/IxWWcmtlsVoNI\n", + "hlgikcB4PL5ndsKMPnpnhEIh8Z/JQEskEiI00V6MMb0Oh0PvmYzAaDQqewNmsTBygegIcEe+mkwm\n", + "8Hg8SnPl7ur1ehWvTHSHo3aiIA6HQykDrOlJed3b25PMazHLcDwe48033xS5iT+XsKjP58PGxoYG\n", + "O8T4H1ozP6rFDEDTs9lsBofDgdwX0b80iInH4+j3+5jNZvjZz36GbDaLjY0NMdDy+bwWzuHhoeTv\n", + "3F1MJpPCeqbTKc7Pz2E0GsW96PV6iEQimhAC0Gic3hKVSgWXl5dSf5MC6XQ61UCdnJwICiS+zZ/Z\n", + "6XSkR2T4TTablVSJC3fR9bTRaAiiI5easioqSBjOyQXOJrHdbovlN5lMkEql0Gg0cHx8LN0im91n\n", + "z55hPp/j5cuXiMViorVeXl6iWq0ilUqJOx0KhdDv9/Hxxx8jk8koIOh1r0e1mI1GI2KxmNhdixke\n", + "oVBIx7DX60U0GkWpVMLq6qqIRgys5Gu53W6B/JQj8Uin0npR7UFbLZKRKEeinIqOlxyVr66uiqcQ\n", + "iUQ0bjYYDNjd3RV5x2azKZ9veXkZq6urKicIjdFtiBNPwnckQFEpHo/Hpf+jqaPf70en00EkEkGt\n", + "VpMsi7tzMpkUhOZwOMRNoR9dOp3W4qRCJRaL4fr6Gi6XC6urq8hmswiHw3A6nQiFQqLUXl5eSgWz\n", + "vb2NH/zgB699/x8VmrG0tKQMkKOjI3Q6HRl8UzTKHYSRaAw05/96vR5evXqlWo+qZ5JyuIB4rNJU\n", + "hhNFst4YbEPftcXwn3g8DqPRiGKxCI/Hg3w+L4I8hxilUgn9fh+5XA7n5+eo1+tSbVgsFiEq5JdQ\n", + "rTEej9FoNDR1Ix86Go3CbDbj+PhYBCrgDs6s1+uaCpICS4HAbDYTmalQKOD29lbTRzLgms2mkgRI\n", + "bT04OBDllcT+eDwuTPzk5ASz2Qyrq6sAvgysf9D9f9jy+ed1UYt3fX2N1dVV1WCcolGhTbmTx+NR\n", + "Ph6VETTwBqDdhznZvJE0bgFwT1VNpKPRaGhX5i5I6RbJ73a7HTabTYmnXEC8oYuOQaRu0g+j2Wwi\n", + "EAiIUM9aepHuSrsrlky5XE7c4m63K4mVzWaTGyizXMj9ps0tveZWV1dRr9c13FmklfLzo0MqR/4c\n", + "cdPgnPwT9gGVSgVms1lj9Ydcj6rMoGKZww1yeVkLkgvB0S5wl/8BQIOLarWKUCgkByPulG63G+Fw\n", + "WIuFlgY8/umSD0BGMhx0UNHByRmhKA41aPfFGpsjdRLx2Rim02lJoviQ8Pgn14L6Pu6Uw+EQwWBQ\n", + "pQ2TV8nko0CBfGpaHTCHBAAGgwG2trZQKBSwuroqMevt7S1cLpdOFH6mJC3RNIecZWLwVMOT1ETF\n", + "SjKZfND9f1Q7Mx2KqtWqMu2IGhiNRh17nELRfRK44w80Gg3tmJ1OR2UJd18ORrjD0MlnOp1qoEHV\n", + "Ch3xeTGfkKUKCfFUx3DHZpQaU2VZOnBnB+5OoFwuh/l8LnOY2WwmxGBRpe7xeNDr9bR4WeeSOVcq\n", + "lSRoAKBShoJU5mMzP2Vxs/D5fIIvuVFwbtHtdlGpVKRdbLVaMkYcDu8yzk0mE8rlskbrvBevez2q\n", + "ndnn86mxuby8RCwWUxd+e3uL09NT0TgZ5P7ZZ58hlUrJ7op149ramkJziAxQ+Q18iVBQBV6r1dBs\n", + "NuH3+xGPx1GtVmEwGLCxsYFyuYx6vQ6LxSICEtl1rFX584PBoFhr3OnoqcG8QJqb1+t1IQX5fB6p\n", + "VOqeOWSz2USxWBTfArg7varVKsLhsCRdlUpF8WmMQ1tdXcXx8bHUJq9evUIymZSggQ9xLBbDYDBA\n", + "LpdDJpNBsViEzWZDqVTSUIhCYpY4fB8vX76UqY3L5cKLFy8edP8f1c5M61faW5FTPJlx/k4sAAAg\n", + "AElEQVRMZA1LRyNaxL777rvqwP1+P+x2O8rlsoSZRAVIKieLjgR07lwsH1ZXV7WjZTIZABCbjGUD\n", + "v4fQG4/i9fV1OJ1ORCIRWCwW9Ho91bGkj8bjceG9NJ6hkU0ymZQZJG3CFqd8FMtmMhmZsNMujG6i\n", + "bBgBaLdedCtiWP1in8FpH+0S3G43LBaLdmtO/KjmpnYxFAohlUqpnOEO/brXo9qZecROJhPs7++j\n", + "Xq9jf39fzkB2u10UxMlkgm9+85v44z/+Y2kBSREF7hZaMpnEaDTCW2+9JfdLq9WKUCgkMhLrXNa2\n", + "5+fnSKVSCIfD6Pf7sFgsiEQi9wwVKRZg7ondbke321XtyiY1nU5LxUHlChEWwnPM7CbLzWazYX19\n", + "HSsrK/D5fIq0oBiWvhf0ox6Px4ItOYnj0GZ3dxfxeBylUkmLlEMVDox6vR78fr8aYp6Oq6urGAwG\n", + "8Hq9uLq6gt/v18Mci8XUuN7e3iIWi8FisWB3dxeffvrp69//hy+hfz4Xa1kAohrSI+Pi4gK1Wg3n\n", + "5+ci2z9//lyj5m63i2KxiE6nI8X28fExjEYjyuWynHqcTqfIPBw9k9JIC9p6vS6XHgAapxM+A4Dz\n", + "83PRK2u1mnZ82hcwJYr/hg8qFzZJ/IPBQO+fTqCkldI3r91uo9frodFooFKpSIFDbjUht4uLC0Ft\n", + "V1dXOD8/v/d7sE4nS/CTTz7ReyP3hb1CPp8Xz3qxhON7orKGvPBarfaVCczixcbH5/NpFEu6ISdX\n", + "4XD4Hjc4FotpzErVBhGBxeAZo9EoV1GLxaJjn/9N+iQlQMwCoSZvUTlNLzuiJGx8zGYz0uk03G63\n", + "ShjyiGns6PP5VNvSkZTHNodCHJ5wlG6327G1tYV0Oo1IJIJwOIxisSjeCrOyV1dXlfcHQNPPdrut\n", + "E2tRyLu5uSmeRyAQuNeIcgEHAgH4fD54vV6dkORsUDLGrBj+jNe9HlWZQSVFpVJBtVrF+vq6uumr\n", + "qyuVF8SiaQ5Oji5z6er1OhKJhAy6yc2gJIhqEDZdHF1zYEFYrVAoIBaLyfuNmC/pkZwu0ouOo2cS\n", + "ibi7UmnSarWwt7eHQqEg4hEZeqVSCclkEgaDQaw40kfL5TJOT08xHo+l2eMDSGcnn8+HbDaL8XiM\n", + "k5MTvPPOOygUCkJV6MvB0HamyTJEk8iR2+3GxcWFNg265g8GAxwcHKgBTqfTODs7k41CMpnERx99\n", + "9KD7/6gooL/zO78jWI27FfOoc7kcRqORSEI2mw3Pnj3D97//fXzrW9+ShJ4RBk6nE0+ePMHZ2Zls\n", + "CxjKHovFZBBD6IuUTw5X2CCSief3+3W0cuelrIjTReBLc0EA8rCgkY3VasX6+rpIU2T4UY3O0oEB\n", + "l5PJBEajEe12W+lQXq9XZUkymcTJyQmi0ahG53x4KJuixzSHJ8fHx1hfX0elUsHbb7+NXC6H6XQK\n", + "v9+PVqslVh7jMGhKTlIRbQfo3lQqlRTddnh4iO9///uvTQF9VGUG67fr62usra0piqHX6wmQNxgM\n", + "ytOgyoFMLgpSDQYDQqGQambuqCwvSqWSeLjn5+cSyC7Gkd3c3AjDvbq6kvdwv98XdjwajcTjpWMm\n", + "LWIZZUFGHSmnvV4PpVIJtVpNUivi2s1mE+FwWDERHF0ToqOdLrH2bDYra1367HG8TSHu/1vtQryc\n", + "TMTl5WWsrKzg6OhIxCI2s4sj6qOjIxk38pTiQ7+ysoJisfhgq4FHVWbQPPD6+hoHBwdIJBKo1+vw\n", + "+/04OjpS5hwAGRNSElWr1TS1YxNERh2nh/V6Xd07A3y4QzLyl75u5GrwlCC1lNavrVZLLvfkRRMT\n", + "ZtRDq9VCqVRCuVzWwuDrcpLGZpQiVT4szWbzni8zldVEM/gadNfncc/TYjQa4fz8XNwJn88nvz6n\n", + "03nPo5kBPp9//jn8fr+UJpubmygWi4LnqJIhYsJm3OPxwO/3Cwp83etRLWbuwHSo5wh6PB6rWeFC\n", + "o7qCC5XCS/pjsEEZjUbK3vN6vUilUjg9PYXH40EgEJDmkHo3m80mToTRaEStVpP5CUe+5F2Qgced\n", + "nObo5C/QJNHhcKDdbuuUCIfDmtrRO45+db1eT+PrdDoNs9mMbDYrbPjdd9/F+fk5HA6H4ERqABnn\n", + "QBuFRVuv8Xh8b+TNMisej8sb2u126zNhMPzGxgZ2dnbw6tUrtFotRCIRWK1WRbiRsOTxeOB2ux90\n", + "/x9VmUFZDj/ITqcjfPj8/FzwWLfbVWhPNBoVrNbv9xEOh/Hy5UtcXV3J8w2AiOs8TjlqJtmHO3O1\n", + "WsVgMEC320WtVlOHTvhuPp8rAIg7IZ30XS6XIDc2gJ1OB5999tk9tTYXD4lALIGoyuZono0Xifjj\n", + "8RjPnz8Xjxm4I0iVy2VFU9TrdTXJlUoF8/kcVqtVA6RmsyknJvpnkGgEQJ95uVzWg/7RRx+hUqkg\n", + "FoshEAig3++rIY9Go/Lrq1QqD7r/j2oxkxzU7Xbl5BMMBmVjRa83RpZReUxPYpLtCbsR5spkMuIf\n", + "mM1muQjR7IU8Az4cnI4xLoKdv9PphMPh0E1mBh5trOjvRi0fvYxZBxM9yOfzikKmYTlH6wzTTKfT\n", + "etjMZrPqd/qDcOqXzWbh8/mk2I7FYkKFEomETGUYJEQdod/v1+fBh4OQIA0TSZGNRqMiJDUaDSV7\n", + "TadTYdc0jXzI9agWM+mcW1tb8hEmVDUYDPC1r31NZic8pjnOpa8zACEEnIrRe9hoNCIcDivAnJa2\n", + "GxsbsqXiA0RxgMfjgcVigdfrFXuPMqR2uy0XT9oDMMC+UCjIPZONFydzW1tbqn25q7KMqdfr2Nra\n", + "Eh2TnIy9vT2N6ykc4GsCd9PTvb09YeWj0UjRwqPR6F5uCYdKfB0AWFtbk5DVZDLB7XbL5ZQnCqmq\n", + "PJW2trawsbEBh8MBv98vL5PXvR5VzcysO0p+6G7EHZvydtZ/l5eXwnkJ29XrddWJ+Xz+3uia+rlF\n", + "IjvDZ2gMfnt7K484LqpKpaKalROvm5sbUSTp2dFut+WuRJ8PMvI42OCkjSbiLKs++eQTpFIpxTgQ\n", + "LaAZziKDcDabyUuDuz+V7FdXV1haWoLf70cul0MkEtHPqNVqwqfJByHMuJj9N51OUSgU9HC3Wi3M\n", + "53MUCgVxRsgt53ubzWZf+TMvXhaLBbPZDC9fvtQRbLFYEI1GEQgE8Omnn8p8hRpBSpr4tUQiIUIS\n", + "j+xIJKKkJ9bS3GGYh8LhBWmSNCSfzWZ6IADIgZ4DBuoHTSYTksmk9IV0z+eDR9NFeiuHw2G43W4k\n", + "Egk4HA5sbGzA5/Nhe3tbEz/W60tLSzg5OUGz2dTQIhgMqo5ftNFiHW6325HJZNRE+3w+rK2tKd6C\n", + "fA6ecicnJ4I8Wf/ToJyGi+RvMz/84uICn332mfzrHlpmPKqdOZ/Pa6RqtVpRr9cRjUa1Mzx58gRO\n", + "p1Mezkxj6vf78pXgjeURzV2YsboANP4m0jAcDhVGwx2LxJ9IJHLPPJz6QafTqe8ht4G7FIWtfr8f\n", + "2WwWwWAQpVIJ4XBYyozr62u43W5RXEnuZwPKARDJ9sCXQgTW+AaDQWNoojwcV/Mzodqb9l4sERbj\n", + "2qhhZIlBfz9OX3lSVKtVqcuXl5cRDocxm30Zk0w/vte9HtVi5oKhkTjN/FZXV1Eul2G1WtFsNgVH\n", + "sd70er149uwZXr58KdB/fX0dzWYTRqMR6XRagwm73a7jsNVqySiQdTUJTWzaOF5frJFpEcZyod1u\n", + "w+PxiPM7mUzw/PlzJVMRGiMyUyqV1GgBEDrD5pYihdlshuPjYxQKBbz77rvS8jEDfD6f4/r6Wr4X\n", + "6+vr8t8gykGEqNVqiStit9v1WdIbJBqNiqhF83JuEIydAO4mnMViUQOW0WiEg4MDxGIxfPjhhw+6\n", + "/49qMdPhx+l0wm63I5FIaCjx7NkzURlJByX0tba2huPjY3g8Hjntt1otyZJYG4fDYZmUM8ODvGnG\n", + "5hLLpvVVuVxWfAJ3P+aGcNcmh2QxsjgUCskB32azodVqyUt6c3PzXrNF9IYqkrfeegtms1nwGVEM\n", + "s9mMt956S3U+g4y+973voVAoKFObdE+a6EynUzWyFosFyWQS9XodwN0JRqdQlmMrKys4Pj7G1dUV\n", + "rFYrvv71r8sqzOVyYX9/X1PWDz/8EJFIBPF4HPF4HB988MFr3/9HVTMTfyUWSrokc+mInxLdILON\n", + "trB09vz4449hsVhk+FKr1WRN2+l0lPZkNpvh8/nUVNESl7EL3KHJS+DxzEVLxQankGwgr66uhF0T\n", + "/242m+h2u0JsWFZwh2UjS79nNoDM8qM0q1wu47PPPtPnsrS0pGhi8jg4dKJVASeG3W4Xw+EQL1++\n", + "FCTJuGKPx4NmsylXqZWVFe3quVxO9rpEV0hA4glWr9e/ihtevKh0Hg6H+OlPfwq73Y4XL17INHE2\n", + "m8lYkd5yFotF2YHM6/v8889V85I1RptZIiVWqxX5fB5PnjyRIzxjxoiKuN1u2O12fPzxx3LppEPR\n", + "4eGhRKZnZ2f34D6OsTnYIbb7ySef4N1330Wv18Ph4SGSySQCgQCurq6Qz+fx3nvvod1u4/nz59jZ\n", + "2VFqVDabxfe+9z3xRcLhMIbDIV69eoV2uy38+sMPP4TNZsPR0RG++c1v4vj4GH6/XxEQzWZTihvC\n", + "iJVKRQgPDWaYTejxeNDtdoX9h8Nh6TP5vSaTCe12W/yOh1yPjjXHXRiAMqvJXOv1egiHw6jX64jF\n", + "Yuh0Ouh2u1hbWxOmyrxpu90uk0LmcpCny1356uoKkUgE2WxWGPXl5SVSqRQqlYqGI5eXl+I0t9tt\n", + "JJNJFAoFlRkAdFPD4bAyRRazr+kJTXU5BaeskYvFouRiXFjT6VSfx2w2g8vlgtvtltiAJZPNZkOl\n", + "UsHm5iZyuZySpchXMZlMKoNIE+BnnEql0Ov1JNalZKzRaAjxIMGIlrxUYwNQ6ef1evH8+XP8yZ/8\n", + "yVfGicDdzhyLxcQ79vv9KJfLamwKhYIyqJ1Op/6bEqfFnJKNjQ188MEH2N3dRa1WQzAYlFrCZrNh\n", + "Mpno39IJkzVuu91WihRxWmLEw+EQ2WxWnGhqDEn7vLq6QrVahdfrFbRFd/2trS3VuicnJ1hfXxcz\n", + "sFqtYmVlRczBRVOaXC6HUCgky1zW2FycZ2dnsNlsImkZDAY5EhEeLBQKcDqdaDQaiMfjwoZZEpH+\n", + "yfKl0WggEAig2+3qtCH8yUHV8vKykCZmiz/kelQ1c6/XQ7Va1Q5BthnwJTeY2jcS2yklMplMMnhh\n", + "zEMqlRKnl69D9hm9l0mnpLg0n89rgEA4ixa19EB2uVxIp9Oy+6L0n+NfIiCMIiMSQOivVqthZ2dH\n", + "jZbRaMTOzg6azaZqdk74AIizQdMZNqF0dGJjNxgMBElyUMNIC/5+JCgBQDgchsPhwPn5ueA1jslN\n", + "JhOKxaL43X6/X4YwLH/o70Fs/qHXo1rMmUwGy8vLYmkxLZXTr1AodG9gQjSA7kCM/2Vo+enpKdLp\n", + "tEjubrcbsVhM3Amfz6chwsXFhVTYdNGkGeHa2hqi0ShSqZTYbMzL8/l8aDabwrj5b6ngpmiU6upg\n", + "MIhnz56hWCyK1G4ymVAqleDxeOR8enFxgXq9rodlZ2dHrLetrS1ZH3CXvr29xdramoj0tNpiAmsw\n", + "GJQYlzIvNrWpVEq8DA5crq6uEAwGtfiZyBUKhcT6m81mSKVScv7f2dl50P1/VIuZux5NANlNc3HR\n", + "gZNQ02w2QzqdxtXVlRACwlNMaO31emLOEa7jzez1esrr4M2hFo/5gMFgUAw2vpfb21sAd2QdSpvI\n", + "cWCX73A4NIl0OBz38qmLxaLyQnw+n6inwWBQ9XQymdQiouMRJ5a0CyiVSoL2KD4lt5nQ32Qy0YNJ\n", + "vJhTPH5m1EmyRr+8vFQf0ul05MtMiJCvSz/mZrOplICHXI+qZqY6+vr6Wjo0OnQOh0OUy2UEAgFc\n", + "Xl7i4uICpVIJlUoFv/7rvy4nokgkgoODAzidTk2sSqUS9vf3NbYNh8NakIT4eIN41FNKxZqTxzj5\n", + "u6VSCTs7O2om7XY7jo+PMZlM0O/3pZ/jcGU0GiEajYq7TFI9AHE06FrPcoW+cHQXomyKg5FIJCL6\n", + "a7lcRjAYVJbi5eUlstks1tbWMB6PUSqVEAgEUKlUtPPzQaOq2+VyadN4+fIlNjY2ZFDJxRsKhYSe\n", + "UDUfj8cxGAxQLBYfdP8f1c5sMBjQ6/Vk4UrWGtXBpF8GAgEsLy/j6dOnwl8jkYgC1kOhEDwej4YA\n", + "NBm0Wq1wu90yM7FarQqcpzzK4/HAbrdjNpuh1WohnU6ryaNXBCPOrFarGjY2THRIojGKy+WScTmd\n", + "96mAJhLldDpVBrGUYQorGXtUwBAloV5wNpshHo/D6/UKxWAtzxLG6/UqLJOjfZYQ/FxYjtzc3Kih\n", + "I3YfjUYVskl6KaPbqGC32+2aaL7u9agW83A4hM/nQyQSwYsXL+D3+8VQIxm90+kgm83C4XDgb//2\n", + "b7G2tgYAcrt3OBw4PT2V3o6xwDy+3W63EA3eVMrlOX202WyIRCLY3t7GZDLB6ekpvF4vrFarFtpw\n", + "OJTHB6VDlEt5vV5xQubzOUajkbJW6BzEUbDNZtPQhGjMwcGBrAgYO7G9vS3s1263w+PxCE2hbwZl\n", + "VQyQZ+PKWIlcLidrXMq7iOrwwSRzMZlM3nNN4jCHLEH63pF6S/+Sh1yPqsxgrBibLh7hVBszg4Mw\n", + "2d7eHprNpiZv4/EYq6urygnxeDxIp9M4PT2F2WxGOBwWLRSAwieLxSJWVlbk/O7xeJDL5eByuVCv\n", + "17G3tyeqJKEvNj0sV4LBoBht8/lcLj9EFubzuRq3tbU1KbS5k29tbcnMkE0rw+MdDsc9ORcX5tbW\n", + "ltTrVqsVTqdTeYBGoxFra2uw2+1CQ4xGIxqNhhbfcDiE3W5XbDDlTwaDAQcHB0IwWFM7nU6p1KlE\n", + "Ae5ONdrfPsTR6FEtZhoLspli/cpxM2VJDNqhHRXLgclkgnK5DKPRiH6/j+vra5RKJZGEuCA5mr25\n", + "ucHh4aFI+4PBQDAVYTnCTvTooPIjGAzKsJD1eqfTEXGn1WqJdUbMl7tZsVgUgy2fz99z6KdNAvCl\n", + "eQvxcA5K6ApKI3FmrbDxJB7OHmQwGEhWxQaOCp75fC7dIHFs4K70YePX6/WwvLys+LhAIKByh54j\n", + "5Eg/5HpUi5m8ZC4ujl45fWOsLlld7XZbsqjl5WVRJefzuWrHcDiM4+Nj2cVubGyoiaMglPgp60cu\n", + "JvKQb25u4PV65dVMvJjcCI6XGUvMEEi6jvJ9LSIrfDASiYTw4WKxiHQ6LVJTvV5XaeFwONDtdvUe\n", + "qL0jOYryLKZi0SmJPnKktjLKmWGda2trqFar6Ha7YtPd3t5FCweDQfE3yAbMZDLKBuT/aJfwlT3X\n", + "wkWXeQDiVVCbRnegVqulepMfMgWgxKVZ21UqFTV4qVRK8BWtuMiqo7pjOp2q0eQpQViQkBwjkamA\n", + "WVlZwcXFhZKq2Pg1Gg15JbPxY71psVgkeuXO2e12kUqltAgrlYqOd6ZLcZhjNpsVXNlqtVCpVMSr\n", + "zmazauD40FGvR5SFjSeRE5qJm81mkZEajYagO74WuRu03QUgMtViJvjrXo9qZx4Oh/D7/crZm81m\n", + "UpKQxEO5FLFTt9stmiUX3dOnT3F9fY1oNCqDGHoa83gkErBYCwJQxl0ikZAcPxKJKCaN/IlEIqFk\n", + "rMWGj9wGu90uojwZdpyYcSJHFp/P5xNBnsHqHITQxoBBlZSOra+vw263IxAIYGVlRRFrpKsyJMhs\n", + "Nktk0Ol0YDAYkEgkcH5+Dp/PJ2ydD3AoFILNZlOqFDkt9AbhVNJkMklIyzjob3/72/iLv/iL177/\n", + "j2pnph8w2WqsNwOBgLi+wWBQ07Tvfve7ir7l4IHZJx6PB++99x5cLpesrkajkfwsyBXm5I7uRExR\n", + "4q5LbjPhNS5QNo/8Ghs0EvSn06lQEQphR6ORIMdf+IVf0EPK9z8ajWSHy1g2ogWsT7lzU/PI8oLU\n", + "TSIqhMrMZjPcbjcGg4GaN6Is6XRaO6vdblcUBnO7w+GwxuGE/Vh+uN1uwXNseB8anfaoFjOtrgDc\n", + "iy6jNcBiYzMej/HDH/5Q6mPgjsHFGIbhcCgCztnZmRomhjbS2KVSqcBgMMhbglwJmnDTrpVxBxTP\n", + "srnkAqKjEZNKWdOXSiW0Wi2RhohsfPzxxxKQcldnZggx5GaziUKhINIRHZco3eIOztqaaEo2m8Vg\n", + "MEC1Wr2XPcihDkuYv/mbv1GZdnh4eM+mlkaLtOfNZrOo1+uy7B0Oh6Kf0t+vUCg86P4/qjJjcaxa\n", + "LBaxvr6Ofr+P+XyOy8tLWVldXFwgmUxKeEpjQTp5LhoQ2mw2IRIrKyu4vr5W112r1bQgiEtTyDqd\n", + "TnFzc4NUKiXLrNFopM6d7LdqtSq3UO7a8/lccQuVSgWJREKEe46HOV2kCqbZbCIWi6FYLIrBBkB0\n", + "S3qAjMdjjZxJuiedkyjQaDRSaZLP56UFtNvtqNVqyjQhOsRSA4CSa9lQs+5nUla73YbBYIDb7db4\n", + "mp/zQ2vmR7Uz86ilRS1ruVQqpbqN7C/mhzCXj3gtJ15utxter1cwUiaTwXg8Fi7r8/kQCoWQyWTg\n", + "cDhkVUXPDPKQOarmgMRoNCpSze/3w+FwiEfB5ClyJbxeL/b29oQ9c5Et5hDu7+/D5/OpPNjd3UUq\n", + "lUIoFJInHEOLCL3Rf49oCq3HMpmMnOydTqcUJJFIREQhBgtx2sqp5fX1tSKPaRlMmRhjLRKJhMoX\n", + "svjY/DFD/CHXo1rM1Lsx05nOmeQXb29vi3Nrt9tVBozHY1EtabMFQMJVugCxWSL/mLsdp2m0q41E\n", + "IvfypFmnk6O8tbUFp9OJ09NTTRQp0VpbW5NwYDweo9PpiMQUDAaRTqclElhdXUWtVpMxY71eR6PR\n", + "EBON1gkmkwnb29siVW1vb8ujeTKZaBzNTBLqCVdXV2VDtr29LaiTA5N4PK54CbqXMn6COzXxe5ZE\n", + "TqcTwWBQ7qbpdFpw5Pr6+oPu/6MqMxiW2Ol0kPsihPHk5ESB5PRxq9frkgWZTCZUq1V15oPBAKen\n", + "pxpeMB7C4/HI7XNpaUmmKH6/H7VaTcy55eVlHZmU3S8mmN7e3qLVauHk5ASbm5uo1+toNptKwWId\n", + "yQDN5eVlUTfPzs7kz0y9nNfrVT37zjvvKGGW7LhyuYxcLodEIoFyuYxkMol8Pi8Vzc3NDQ4ODuBy\n", + "ufDq1SvV/W+//bZMXwjtcfhBfJ0Wv5xSUuFCo51WqyVuM51VKQUjgZ/ezwCUGvu616PamVdWVkQn\n", + "jEQionICdw0hlSg8TjOZDK6vrxUi2Ww2kUqlEAwGhQhQNkS1SK/XQ6vVUkdPcg1wdzO4k5LfzBKB\n", + "msLhcKhygSR3WnsBUOwDJ2x8IJi4ShkX0RI2VA6HQ7Upd06askSjURQKBT2Y0+lUJt8A1JiyPPD7\n", + "/YL9mIO9+HmFQiHFWDAAiI2cyWTCzc0NisWipqQkIbEs4USUjS0X91cTwIWLUBgNRRhDRq0d61iS\n", + "w5lRQl4AVddMJ7VYLLJs5XSLdTBVxZTwW61WjclZkrARSiQS4hgTVVlfX5f7D3HrdDqNYrEopCEU\n", + "CmkX5MJhCi3hLZJ7CInRBiCRSKBYLMJisSgbm/ki5GQT8aH1LQBZc5lMJuzt7amW5yKMx+MaY/Nh\n", + "4ENEPjM9rWlOEwgEUC6XxSkJBoMqlUg28nq9ePr06YOsBh7VYv5/2HuX2MbXNL3voSiRkijeREq8\n", + "6a6Squqc03X6nD59mzFmpoE4i0Hs2SWzCbzILpuBYwdxso8RZJO17VUwNgLYm8DxwHA8iCcz4x50\n", + "t/vUudRNUkmibhTFOylRlERJzKLO72mqPXaAUpzxCP0HDk5dVBTF//f/vvd93ufCbplMJvXy5Uub\n", + "cePkzsCDsW+xWNTZ2Zn929rttq0I4GccHx+rXq9raWnJkB0ZJyhF2D0JvwQCxGLr5z//uZaWlmzO\n", + "PTU1ZV4GJUE0GtX29vYdqwJ2O/gOuBmx60Ki73Q6zsPGJB2oD9ekxcVFM+Cogxk9l8tlN7DhcFhH\n", + "R0c2A4cui/80pUa32/XDDb21UChY8IsYAYiQrJRAIOBhDqgMvG3I+u97PajFfHp6qtnZWTsSgRSM\n", + "jo5qYWFBh4eHd8IooV0Sh4ad69ramh3vGUqgxJ6amtL29rZlVpFIxLXy1NSUkQs69VqtpvX1dXtJ\n", + "gBMHAgHbeDEe7nQ6ppEiAmVogRsR9EwGEghxiVA4Pz83P+Pp06dOV8Xi4NNPP9Xe3p6J9ciYIFJh\n", + "kTA5OakPP/zQKhWULaOjo3r06JG2trbMwVhaWrKPHV597Xbb2TEff/yxXr9+rXK5bG7zxcWFlpaW\n", + "9NOf/tR86sXFRf3BH/zBe9//B1Uzs6OBOLRaLZVKJfV6PW1vb5sMhPdZq9XS1taWpf27u7uSpD/+\n", + "4z82ToxzJ6UIfsaMYEl1Qmp/cHCgbrerVqulYDDoxpK0VY5fkATYdbD9Tk5OtLu7q/39fVvbbm1t\n", + "WQECzZP8FUkOh6QJhSvCgIRxfSAQULFY1M7OjimvIyMjevv2rSYmJmzHcH19rWazaZIQEQ4YhG9s\n", + "bLie5j0DSZ6cnGhvb0/VatWl15dffmnJFYJgfDgoRSKRiH7605/e6/4/qJ0ZoguezKAHNBhjY2Mq\n", + "FosmteDX1mw2XTfSgBHsiC0WTp9MGKGCNhoNhcNhLSwsaGNjww0lk0ZUJ2dnZ+780SDirUHzOdwg\n", + "ofeDyDMcbgl6kkqlnF3SaDQ8XKEePj4+to6R5Few8qOjI0WjUSMmmJEzOOLBweEIo3CIXKhQSMqC\n", + "YDQ9PS1Jd/jW2C6QQ55MJu+ExmP7y7993+tBLWaEmnhNAOgDb7VaLePMlA4ctYyV8UCDAgp1kRKA\n", + "aDByOeBKo6/jRsEoQ8SKjReDG9w+oZlK8k4/MTFhKwQeCMhR0WjU4tTR0VFzrJfUCdUAACAASURB\n", + "VDm+ISNBlOdBokyg/MGPj0ZYeicqODk5MWeEMT28auig8Cn4zHkNXP/hmvR6PWUyGX8eJApAxwXB\n", + "oQnkc3jf60GVGZlMxvG6sMAoO05PT7WxsWGft+3tbXvFQVHsdDreeTiuqYtxkz85OTHcxPes1Wo6\n", + "Pz/3wmFBM8plzM6EkXp8mFyExRXyLnZZID2C2ilX0OXBa2bHZ3cbjg+emJiwPxyhm2DqU1NTHhJB\n", + "faV86Xa7XpA42yMXgzZLM1mv1++M3FutlsbHx1UqlcxFQUYFPl0qlWwOAzx6n+tB7cz1et1sucPD\n", + "Qy0tLdkDbjiJ6vT0VPPz8yoWizo4OND3v/99L/zb21sVi0VTLTEyQdpDycGNh9vcbretwN7f31cw\n", + "GFQkElE4HFaxWFQymdTe3p5mZmZsaQtBCHcjOvxer2fFCLvi5OSk7buoU4djzjCbwcARESuSsGEl\n", + "diKRMDzHsKPf73vsLP2C03Fzc3MncxAnz06no7W1NS9SsHAkVVBZgQbHxsZMCWXTGB0d9YInw/s+\n", + "14NazNAlu92u1tfX1ev1tLq6qoWFBcViMcvfi8WiRkZG9Lu/+7v6+3//73uXAycF3ltZWVGj0VA8\n", + "HtfOzo4//MePH6vVapm/S5NXq9U0NTWlmZkZL3BJHu9+8skn6nQ6ury8NOQlyRYC+H4woKA8gIif\n", + "z+e9ED/++GMnQEFawpeCdFTQGlxM4U4z0WOw9PjxY/Oiz8/PfSI8ffrUwUYMU4AA4U8zoMJ2C1UL\n", + "WDRG64FAwPkmTC3D4bDevn2rlZUVU2V//OMfv/f9f1BlBjtMJBLR9va2ZmZmtLm5qePjY21sbGhk\n", + "ZESbm5va3t7W9fW1/uiP/sh14v7+vvNMGOtubW1pYmJCf/Znf6bFxUUT5iENkWLKtI/FPD09rTdv\n", + "3tjhBzYYabGBQEBv3771BLHT6SibzXohkDFCwhRDj3A4rJOTE83OzupP//RPzQhEywcXmjG8JPtu\n", + "EEwEe29vb88ck6+++sp8aZyggsGgk2CxNsAjhIknuDH2vbjs93o9/Zt/82/8cxAkNDY2pkgkomKx\n", + "qGq1qlKpZBLT+fm56/D3vR7UzsyMH+y4Vqvp6dOnPloZbYML09gtLS1Jkk0Ih9Oger2elpeXjTkj\n", + "0BwfH1c2m3XE7/HxsSdxjUZDS0tLNjan3AGayuVyLn0WFhYsI6JBwsSFeAZ28Ovra62urno6yEgZ\n", + "iA2JF6YqWO9SbszOzhpJYac9OjryuDqdTjsQk1obGBBSFdNBBAYEbi4uLjoACKN3ml+abxIAEomE\n", + "ut2uCoWCSqWSJ7c0ou97Paid+fLyUrVaTb1ezxEPBwcHCgQC5lNQryG5J2CnVqvp7OzMIemYk2M6\n", + "zo4WCAQ8vABL5e/QFmLq3el0dHp6qp2dHd3c3PgoZiFTEoCJYzvAQ4BRODl7wIiVSsViXB4Cfn5I\n", + "7yzm8/NzJzsxqcPc/OjoyLnZ7Nq3t7ceTXe7XXOSydqmB6FnQGxQrVa9WDFlhOvBCcLDzESWr8P2\n", + "lhi3970e1GLmOB0bG1OhUHDcWDgc9i7U7/cdYQABPhQKKZvNWjaFXIkunEBKbk6z2fRNn5iYUK1W\n", + "UzqdNmwGJRJn+5GREbXbbd9UXDCR5+PEyeIHoyU7cHp62hYBiFuRd0E4wkgRUS8TymGBLAaN7XZb\n", + "jx49crJrtVqV9IuHYXt7W5FIRNFo1Lg0wyLp3aS12+2qVCo5fg0SlqQ7uYTwm8fGxhwNEY1GPW1F\n", + "nVKr1e7Fy5AeWJnBTYYsgzUAi3RsbMx8AnDoSqVi5x+OyMXFRScxFQoFx6VhWwD3F0cgTGFSqZTx\n", + "ZSA3BAL4rREkiS6QhRAMBi0m5TRAtwgEB0e43+/ryZMnTkENBAIObOd98vNKsj0tZUAymfT4nWQo\n", + "BkszMzOS5GaRsufjjz/W/v6+x+98lsOEouEyBN3ksL0XpdPExISazabm5uYcAB+NRrW+vq5/9a/+\n", + "1Xvf/we1mEEXkPIwWfre976n3d1d1et1TU9Pe9pUqVTUbDYt/4fv+/nnn2txcdFEI3aQi4sL7e3t\n", + "WdKPi2a9Xr9TMszMzJjsP1zSMG6/vr7W8fGxj140gzxYyPtp7Jg2AsuNjo5qf39fhULBOO/19bVq\n", + "tZpj1hi0oBiJxWKOHx4m+PR6PUej8XMmEgm1221tb29bRf6zn/1MhUJBr1+/1vr6uiPdsDoACWq3\n", + "2xoMBoYhyTSR5CaUevzNmzfG5QOBgF68eHGv+/+gygwWAGJQjm+GA1hHzc7O6vr6WpFIRAsLC3Zt\n", + "LxQK7txnZ2eVzWaNXLBDIt1nPA2XGChqWIEMmsHolmlYOp02rjwxMaHz83ONjIxofn7e2DTMNKZp\n", + "pFCxg09NTfn4xok+n8/bkovmja9H1c176XQ6biCB7Six2FEvLi7cLDNc4nUgOoFQENLJ2D0ej7sE\n", + "gjgFuQnoELMeyFmccO97PajFHIvFDMZzYzEVp6mizMBkEANAXIgYGaMmgXyPSSGdeCQSUTabVSQS\n", + "sUQrkUj4e8RiMXOEUZ9QfpRKJU/POp2OxsfHbUYIY40RPJL9SCTicTwsNth/TPsoldAuwskm6/rm\n", + "5sZ85EePHtnEhihkRAmUOysrKx7F83nwUKPC5qFiwBONRu1Vx4m1srJiO4PBYKC1tTXzzDc2NnR4\n", + "eOh7dp/rQS1mkAlk/DRdgUDAmR/hcNilCB8eDR3TuKOjIzdvyITQ4fX7fR/3dPG4EQ0GAw8ukNUz\n", + "VcRSdmRkxOmr8CDg/WJ9xTHPkby9vW0VNiNjMg+RfGHCSOlCUgB6x0QiYV/ndrutvb09x7PRBGMs\n", + "g1UWE7tisWgkZXgoA/w5HLUBMsTPO6xCWVtbM6OPIRQ7OIOm+1wPajEz8YrFYspkMlpYWLhjUIIO\n", + "7c2bN7bVyufzdg1KpVL+Wiy0YJrhw4aBCsSdR48eqd/vO8R9YWHBLj7hcNjEGsLooZb2+33Nzc0Z\n", + "G5+dnVU+n1cgEDC3hFOARQEDDQOVq6srra6uGiLj/QN7dbtdGxjyUGE1m8lkTCiCGjs5Oem4YiaE\n", + "YOG4f+JeSvPJZwWKg4f1wsKCJicnFY/HXa9XKhUlk0kVCgU/aExVgQrvcz2oBpAOm9BKjj0IPNVq\n", + "VWtra3acbDab+slPfqLf+Z3fMU9CeqfoKBQKNhGkMaLJYmrIrokBzBdffKGlpSUnn0ajUYsCUIfc\n", + "3t56isaUjigGjFjIGWFHYzFeXl4qFos5aw9zSExeGo2GLQnIrIZkRVN8cHCgq6srVSoVvybE/M8/\n", + "/1zRaFSdTkdXV1fa2NjQt771LWPGkJBoImHUYSIDsnJzc6ONjQ19/PHH2tvbs5cIzqWMwMHLCc7c\n", + "2dm51/1/UDtzo9FQNBq9M7qV5GYvkUh4d6NUYGdm52NnhjQz7C8My02SNYB8DcoRGhv8ncFaY7GY\n", + "+dNM2XCyB7KC0QfkBQUU939y/7CmhZ7KbinJQ5B+v+9/gy8Fp8DCwoK1i9Tr2NQOy6emp6fthB+P\n", + "xzU7O2tYE0wb9TXO+5D5sXigtuczYyfu9/sKBoNulDOZzL35zH9hizkQCAQDgcDzQCDwf3zz++lA\n", + "IPAvA4HAZiAQ+D8DgUBi6Gv/+0AgsBUIBN4EAoH/9N/zmncYbfF43PUdgxIUwagmIMeTeVcqlUz6\n", + "QRERiURcdnCzmOpJ73BfdGwwykAFgsGgTwoeDEkWrZKvgjEMjDe0eRjbMGFE+c0pwvFOUzoYDFzz\n", + "N5tNcx5ohuFugPgwyGF6R34J743mF4f9QCDgEwsCP+6e/X7fJ9jMzIw97piK8lkxNCIgk2EQm8/7\n", + "Xn+RZcbvSXolKfrN7/+OpH85GAz+50Ag8N998/u/EwgEPpD0X0j6QFJB0h8GAoH1wWBw+8svyNz/\n", + "+vraw465uTmHwrBbocP7zne+o+PjY+8oIA7r6+taXFxUt9t1HY68H7n/4uKiDg8PjTywUIH2hkk/\n", + "S0tLhukgxvOay8vLikQibigZ/ExMTOjJkyeuddvttubm5jyYoBeA5TczM+Pp4K//+q+r2Wzqhz/8\n", + "oUqlkl8fEtTLly8dAVev1xWNRr2DMkwhygFmnCStrKzo4OBAyWTSKVmkFcDNgMfS6XRMUWVAhDXY\n", + "4uKiarWalSiJREKJREKFQuFeC+ovZDEHAoE5Sb8t6X+U9N9888d/XdJvfvPr/1XSH+ndgv4dSf/b\n", + "YDDoSyoGAoG3kr4n6c+dfbLrFotFFQoFhyh2u12dnJwoGAzq5OREIyMj2tvbsz0U3IJ4PK7NzU1b\n", + "37bbbTvaB4NBJ5XC38AbgjocUhApqwsLC3rx4sUd1yCQgnw+r2q1qsPDQz8c6XTaNer+/v4dU/Ji\n", + "sXgnYSqVSrkhbTQabnh3dnY0Pj6uL774wgQkxu4w/TDJYcAxNTWl5eVlnZycqFwu69NPP7WY4ZfD\n", + "3gnlhFGHri+fz2tra8sELgZT8Xhcx8fHxqNPTk4ccccJEwqF7h0E/xdVZvwvkv5bScO7a2YwGJx8\n", + "8+sTSWho8pIOh77uUO926H/rormCIMQCQNqEjJ5mJJlMWscGPIcHBnUftgKMeamb4SWTz41ekPoY\n", + "ST6RC9TLwGCUB3hGh8Nhzc/PW6pF3jSsNIYb2OaiDcTPjQaNh4VaF4sAJoe4k3L0Q0/FVJFhysTE\n", + "hPkVwHAY12CzMDxm5/OSZOydzPGbmxv3F3zmw+HxvD9KsPe9/n/fmQOBwH8mqTIYDJ4HAoHf+vO+\n", + "ZjAYDAKBwL+P3Prn/h3TulAo5FDFbDbr+DGoiIg78W1molar1dRut50dQjjNRx99pHa77boZwn4o\n", + "FNLr1699XLKrXl1d6dGjRyarszAxER8ZGdGHH35oOKzZbDoEiIkbZcnY2Jg++eQTnZ2dqdVq2bgc\n", + "tQrfA7YaDkZkpoAbgxqA+GCyPjIyopWVFQt/yefGM5nmGI7zN/fHglbKomQyaZsHuBnDAZl4ZpdK\n", + "JQ9zMB4fHR01Ln6f6y+izPg1SX89EAj8tqRxSbFAIPD7kk4CgUB2MBiUA4FAThJxnUeS5of+/dw3\n", + "f/ZvXV988YWB91gspu9973v2NJ6ennYgZavV8gcLPtxsNl2rknrKqHhjY0Orq6t3AiOldwoR6Z2v\n", + "M9M0VNns6MiuSH7FQLBcLltPB6aLMyn+yZI8esepnxwQJoGzs7M6PDz0wARNIEproLP19XXjzMBl\n", + "NKiSnA3Ybrc1MzNjRiAC2WFbA+r9i4sLraysmFZL5gpWva1Wy9NWgjNxPo1EIup2u/qDP/gDR3L8\n", + "pcsBHAwG/8NgMJgfDAbLkn5X0v81GAz+S0n/VNLf+ObL/oak//2bX/9TSb8bCARCgUBgWdKapD/X\n", + "YOG3f/u39ezZM62trZn/S+cOBRJMFix32KkHqVG1WrXUX/oF6Z+Qeeo8vCzm5uYcPD/MVMOU5uTk\n", + "xIMNJndAdvCEGSODIEjvTGGKxaIHGSyKer1uiwCUK6Ojo2bqVSoV+1ygpuZUOTo6Urvd1tHRkbF4\n", + "+gqyTVDc7O7uuvkc9rkmLxHzRR5wBjAnJycW3TYaDdVqNVUqFY/JDw4O/P0eP36sH/zgB/r44481\n", + "Pz+v+1z/MQxNKBn+J0n/OBAI/FeSipL+c0kaDAavAoHAP9Y75ONa0n89+Hfoa6rVqlUW+BOvr69r\n", + "ZGREc3Nzkt5lBQ7nYuN8xL+5vr7WX/2rf9WOoWNjY/ZmhvM8jO3ifwz+G41GzZhDALq6umpeBOlT\n", + "6ALHxsb06aef2pyGvG3qZWpqmlaiIPBQ5vtLMo0T9IQMFkbHy8vL+uijj3R8fKyTkxOl02lJ704x\n", + "9IY0iRMTE/r000/NJ1lfX7dsbG5uzqUTPzfmktls1jwNKANra2va2dkx7rywsKDT01N9+OGH+vGP\n", + "f2x+yO3trf7JP/kn772Q/kIX82Aw+L8l/d/f/Loh6T/5d3zd35X0d//fXo+SIpVKaWtry9RKIDLI\n", + "RLgUgQEXCgVzjs/Oziyy5NhvNBpaXFyU9Av4j3oPDJejFr9jBiF4One73TvJVVjUfvDBB9ra2jLB\n", + "KRaL6fj42Po8nP45NWCtYSADrRO/O7gn6A15n9lsVmdnZ9rY2PDUEAU2jeX8/LyazaaHJeDAQIZo\n", + "9X72s595HI/iJpVK6fr6Fymr19fXymQyVspXq9U7tbn07sRbWVnx2P9XXnNDF5ZXjUZD9Xpd+Xze\n", + "WDCSptHRUdVqNevwcOqBWIQh4dnZ2R19Xz6ft6kL/Irj42MtLS1pc3PTjvLUsQxOarWak6pAF2q1\n", + "mtNih3dCxtE0i2C5mBFC3SQ0XpKnhLVaTdls1sMNdtRhr+RWq6V8Pq+XL19ay9hsNq173N3dNQNw\n", + "fX3dD1Gj0TCKAc7OEIi+4ejoyIgN4e8IEnA9Oj4+dv0fCoW0ubnpxK2pqSltbGzc6/4/qHE2kBML\n", + "SZLhKqxhWbT8Gd369fW1KpWKVlZWrELGlhbeLkEyTMskeVgCfsrNabVa3v1IfaJxBIeFpim9a6ym\n", + "p6ft5wxScHt7q16v598zBgbOg81HhsnU1JTDMMGgqcrgh9DwAqsx+kf6xGcjyc3p2NiY3aJIASAM\n", + "E/UNjS9mjZKcnXJxceFGmM8LBToOUQxZ3vd6UIsZzBJVMHXwcKQXU8CJiQnl83kNBgP/HgJRNBq1\n", + "kSHwHpgsujiCexqNhon25AF2u10tLCzo+vraTR6eyjh2krEC6kBziCxpamrKRCJI/MQwMJ3L5XL+\n", + "3njcoSaHmE89/fbt2ztuTaurq8adZ2ZmjCfjTQ0vnOgKyoNQKKRkMqlMJmMrLiBMuBXBYNC+H/yM\n", + "eO71+33lcjkbmu/v7zvy+S8dzvwf8uLoe/TokXZ3dz2sgHr50UcfmVvMQqUehA/BDkJWB4lK6Ao5\n", + "OiEFnZ+fu65Op9MuN4ikQEzL8Q36US6XVS6X9eTJEw9xoGaWSiV7JrNDYudF7iDuP2DCjLiDwaAN\n", + "x1moR0dH+vVf/3Uf91NTUyqXy8pkMpqamrLi5PHjxyoWi16U6PPGxsYsdkBdTX4gD2omk/HPEIlE\n", + "7jR1o6Oj2tnZUS6X84l2c3Oj9fV1P6jcp/tcD2oxswt2Oh1PskgXhUZJTZpKpXR6emqvDEz8aGJ6\n", + "vZ4bP5ohdHVYFJAKdXZ2pkaj4bixQCCgcrmsZ8+e6eTkRLVaTZFIxFRPLK/y+byPeHKpr6+v7xzB\n", + "ktw4ogVkqHN+fu7d9urqyijKF198ofHxccdgEGjJRA5KKyaKfI9ms2mDxtvbW9XrdROOMK6B6Xd9\n", + "fW0EhFMLnFuSU3Jvbm782SJawIcPshMptn9Zx9n/QS68JGCDochgVNrpdDw1g63GgKFcLlu9LMmE\n", + "fbK3wWKr1ao9iMFx4WRcXl7q8PDQQ5nNzU03jJQRPBjSu4cPfw4eEtyLGJkz8pXkCWWv11Ov1zN+\n", + "jckLdgW4+Pf7fZXLZYfPl8tltdtt48g0j5CwSqWSm8VQKKS9vT0vUpAd2If0J9TmBHIyqaSGHx0d\n", + "tWd1sVg0w25qakrFYtF9y8HBwb1Zcw9qMdOoIF1iAgY1sVqtqlarmUNRLBZtHJPNZh1Kw9exACET\n", + "AV9h3s2xyGtK8s5FibG0tKRKpeKdb9jjmUZwf39fp6en1tSR7AT7jLoXQ0eEAZwO4XBYjUbDtS9E\n", + "I+DCSqVi6y+4JSxMml0e8MFgYI/rdDpt9GR8fFyvX7/2yTHc6LKbk60tyZg0D4Yk5fN5G8+g4Lm+\n", + "vtbW1pYGg8G9yfmB+/p7/cdyBQKBwd/6W3/LcBcmK1NTU8rn89re3nb6KhDT4uKi/sW/+Bf64IMP\n", + "fETiLs+ABMEpMn4GAbgFpVIpCzUlefFls1mjEOyCPBzU54y4u92u6aGSjLB0u1078w8rsHu9nmZn\n", + "Z+0YynhZeuctx/eA4IMOUJKj5c7Pz/X48WM9f/5cCwsLarVanohOTU0plUrZOw94LxwOa29vT/Pz\n", + "86rVavrOd76jg4MDD094DUkO3+E9sMlQFvV6PaVSKQcSZbNZ7ezs6B/8g3+gwWDwXmLAB1UzU0dS\n", + "25JGen197d0NJXM4HNZPfvIT+09QJ6Ktu7q60uvXr5XL5e4ouDmquTHDOxVGiAw1ZmZm7gTWUK+v\n", + "rKzo1atXd6LLRkdHdXp6qkQiYUZeOBxWv993qYFdLH7LS0tL3pXJa0mn0y4ppHcTT5pTHOwh+PNz\n", + "VCoVnZ2d2dsDkhWLmAVIniFmjGQs4oREmREKhRzYSVJXqVRylgvfhxMUaJTm8H2vB1VmQCXEIYc8\n", + "arwpKAtoxgqFgp4+feoINNzt8Y9IpVKmQ+bzeSuncR2CaA/PIh6P2+qViSHHLoR8giYhBA3j3DDq\n", + "JicnbTMG8R/jRpAPfDTw1cDeAAuEfD5vAn4wGLSIlnE7Uz5IT7FYzLAfsij+L71DTWKxmOkAnFjk\n", + "s7DwcW0aHx93VPJw5AbMQGi2qFw4Ue5zPajFDIzEWBpDPsB4dkDwT5ovFhq1JX83Pj5uGAt4D24x\n", + "N4yRMfU2JQNNFjgsN4whAaXJYDCwSJTXxMWfMTwPGLsfv+50OpYcgZkzGCHm7fz83GUN5pAgMPF4\n", + "XOl0WrOzs4YcIWdJMrxHrU0ZMuzzTOkEdIiA+OrqStvb2+Zew0ch/4+HiXr6+vr63r4ZD6rMqFar\n", + "Fna+ePFCq6urVkZUKhUNBgMzyrLZrBUgIBmJREJv3rzRl19+qd/8zd+0kpkdB/IP9loHBweu0VFS\n", + "z8/P+wiHRvry5Uutrq7aVw6HfBYBHhNMLvGq6PV6zg8JBAKeUMJ6IxTz7OxML1++1NOnT1WtVrWx\n", + "saFcLqdGo+Fx9He/+12XLZRF5XJZlUrFKhC+dmpqynazKGSCwaDZe+zoqVTK6BCsw7GxMafFUtqh\n", + "cUQ4gCHlMFJzeXmpP/3TP73X/X9QOzOE71qtpt/4jd9wk5HJZLS8vKz5+XktLCw4n2R9fd2LZ3V1\n", + "1Q3Pr/3ar1kvFwgE9OzZMw8k4FeMjIyYGx2LxZRIJFyyUDJwcxcWFix2xfyQsS4awm63q5WVFe++\n", + "+H+k02nbdi0sLLiBXV1dNRV1fHzcKbCRSERra2t69uyZDWeSyeQdESmZ36izP/vsM4VCIS0vL3t6\n", + "GA6HVSgUbPV1c3NjSy6U2ZwSlEoEuSMmpsYfGxuzmePk5KS51PjTIXxdX1+/1/1/UIuZumtqakrP\n", + "nz93t9/r9eygj4UAuSH7+/v2v7i+fpd/t7+/72O63+/rxYsXHrdCUuc4Zxfudrva3d3V9va2nYko\n", + "GYrFot3lsYPllMDPrd1u6/PPPzc/gl3/8PDQ/s3lcvnOe5qamtLbt289TKlUKup0Oh748GAwkgbx\n", + "AKEAa9/c3FQoFHJ8G+VSs9n0/8GxW62W6vW6tra2XM8jRfviiy9MGsIUcbicwqPj4ODAvBA41ldX\n", + "V7bWfd/rQS1mTMAZSRP+gjKZm/fixQt33YxhqXXJMSGeASXH+vq6RkdHHXbDhA1HI0xMpqenzbTD\n", + "TT+RSNg8EHSiWCx6XBwMBrW+vq5CoaDx8XH/HnbZy5cvzXir1WpaWVmR9G5w8eTJEx/ZcB6IsIBH\n", + "0mq1lMvl7vQM+/v79rogSmJ8fNzxFcOefPQRpGphKonYAUwZvgkPOicM7qlTU1NaXFw0TwbWIpHN\n", + "1Orvez0onPn3fu/3lM1m1Wg0bKGFDIhmj6kXyuGXL1/qu9/9rrnAML6y2ayCwaDi8bj29/eVSCTs\n", + "iTEzM+MdKxKJ2OGn0WioXC7rO9/5jqEtmkn8inu9niE7xursrMVi0bKpfD6vZrPpwcT4+LjlTJIs\n", + "ph02RJekR48eeQeHttlqtbS2tqZqterQTGBIbHNBLeCVrK2tObx9b2/PAl1Jd0QJ8Xj8TlOMAQ99\n", + "CerwUqlkHSbKHjz2EB+fnJzoH/7Df/grnFl6B8Rj6DI6OmquMkOBi4sLVSoVXV1d2dwF8jkZJoyW\n", + "k8mkyuWyHj16pFwu5zF0r9fzWJZUUtTfoVBIhULBhPTb21sT2OEqsDihmGLa0u12vdBisZgjgbHH\n", + "pRTK5XIaGRmxOaQkP0xjY2Pa2dlxTBzvczgDEZ4GFFJOj06n41qW6d75+bk2NjYMqd3e3nqgRK1M\n", + "gxoMBm0GyWeJxxw6wvHxcSd9QZ2FAgvP+z7XgyozUDTTXAD9QBCnXkYrB6Go3++rUqlYaAm8l0gk\n", + "dHZ2ZiiPY5obgHEMSg+GKOx81MKQlKiVaaAIk0SkCm8auBDkBEU4wxygr2g0ekeyhI+HJDsNhcNh\n", + "N4gYGzKs4LMCB0Z9g/8GJQCnDiVHNps1FCfJ8B3qF7IRsRgGlSEujQcBExu41ffNNHlQOzPdM/oz\n", + "4n+BwOD+QpznmIdUxDABKie+w+xawWDQDDgWifSOzsjCQ6UNtkr+nSR7QqPQJpJ3eCBycXHhiSRk\n", + "f45m/i02XKFQSGdnZz6+Dw4OzGADRmSxMHnDu4PanNIJS1sIWaAWCAFo4ubm5kzQh4fNa/E9rq+v\n", + "9ejRIx0eHnpkz3QTigAnZ7lctgUDzfX7Xg9qMRNZxqBi2ELgW9/6lssISXbvubi4cLYJcNWTJ0/s\n", + "0wa0hPE41FH0hkzxMFak7MArAtMWDF8Izzk/P1cmk7FQFp41R7gkE+zBmUElMIohPIf0J4Y/cJQh\n", + "1SM0CIfDWl5e9tCEU2Ztbc1iU+y6mEZSK/OQ7+/v69mzZ2bJkeN3dXWlVCrl4QruqIFAwA0zlNtM\n", + "JqNGo6FkMmlZWzweVyaT0e///u+/9/1/UIt5fHxcf/RHf+SdgiYtl8upVCr561KplDY3N8304liE\n", + "51sqlfThhx8at0W5EolEjAJcXFz4RqCZ29/f19XVlZ48eeJBCjU5Rzz1KiGQjLKpF0Elfvazn+n2\n", + "9tbE/16v52ObcT2j6WGrWTLDYdxRokC7HB0d1fPnzzU6OqqFhQX1ej0dHh5qamrKTenBwYEk6U/+\n", + "5E/0gx/8QMViUbFYTMVi0RRRSqm1tTVtbm6az8Ewh6DON2/e+H0Pm8GjEaOx9AAAIABJREFUECcl\n", + "izyY+1wPajGHw2F9+umnkqT9/X3lcjlH+FIijI6+C1b/9NNPdXh4qF6v52EENTfqEbK4i8WiPvnk\n", + "E11fXzuJ6vLy0vG/sNAI5gmFQjYCDAaDajQavmEMEEqlkkWylAT4shGTDHRFRjVlEWFCt7e3WlhY\n", + "MI2T3BFG52NjY55IPn782Gbei4uLtpLF40LSHfQnnU7r6dOnVsYgJ2OqSMOXz+fVbrdNbY1Go8rl\n", + "csbBnzx5Ikku7dj15+bmLHIgGeu+QfAPqgEsl8sG4NvtttW/OOZj/8RiSqfTbrhIe4J0BCmJ8oDm\n", + "BSQENQj/BpvXk5MTNRoNHR8fq9lsGhqTZG40rkl7e3u2O4DpRrjN0dGRzs7OdHx8rFKpZOwbo3Ho\n", + "p5VKxRERjKlRcnPasDPi7onNAZ8NMil8+n7Zfw81CGN/eBUoyodFBDjg02CD7fd6PeVyOUeo8VAg\n", + "USsUCsbP3/d6UDtzLBazgcrjx49teTU1NaVcLqfj42P/GVTJ2dlZzc/P6/j42LDXs2fPVK1WNTMz\n", + "o8nJSa2srDhhtVAoaHd31xmAwzawNzc3mp+f19XVlU1nzs7O9OGHH9ooER706Oio/fDm5+e9+MB7\n", + "P/vsM52enro5ZKDA4lxcXDRaAc6MgSHSLcSxjN/Hx8f15MkTZ5VEo1ElEgmHvWNsODU1pWQyqU8/\n", + "/VSnp6e2q/3ggw8s9wIbnpiY0OPHj90rMHqXZFbh48eP9ebNG4dwghrlcjk3iVdXV1pYWLjX/X9Q\n", + "ixlrq0QioVKp5KiFfD5vFly5XHbkGTsHtlpnZ2e6ubnRj3/8Y33rW99y140XBrs3MiiI5+zK4+Pj\n", + "trKlbgd7ZVedmJiwXS7/BqfQsbExk3tgvKFsBpID193Z2VE8HjeHGNNEyPws0FAopHQ67UnjxsaG\n", + "jcvJ1YarcXJyckf6BK4NQjJcKyOjokxidD5sc0sZ9ZOf/MQCBfLIm82mNxNgxb29vXvd/wdVZpD4\n", + "SdmAATecY+KFi8Wij2QaL8a54MQ48EMNZSEP482tVsuvD46K5cDZ2Zl97pBnUZOXy2XX76VSyW7+\n", + "TNRg6gFpoUZhAXGEg1+zOHEm2tvbs6PR8fGxnj9/rmaz6TobSwPwZkl3yqJarWYjckSzfGa8Bgy8\n", + "wWBgmdmwRS/4+sHBgYW7ePbh88dDge8civP3vR7UYgZu6na7XqTIh4CvWHwTExN2pZTe5W1gVM6R\n", + "SeeOjSzjbuRNNzc3hvWwo8IwkdEv+Sa8FgMG6lQaJ/Bd/p5pIwR2VM9o9fh9t9s1J4PviVsoPwdN\n", + "MAMe6Z2YltMFQe74+Lj51ihv0OqBNTMlROaFVW4wGLQotVarmaeBcJWfgYeU04cTcnZ2VvelVjyo\n", + "xcwVDAa1vLzsIxuMNBqNan5+XolEQhcXF/rBD35g0L5arToMZ3l5WZOTk1pdXbUyYnd31/q5+fl5\n", + "m5vgEQdRplgsuhwAviPgkqHBsJ0AsQg3NzdWVMMVpoaFBD8sB4MkBD85Eono8PDQY/GrqytlMhml\n", + "02nrBkdHRz00IZwoGAzahJEHj1JmeXnZpCDYfcMBltTt+DWTghuPx+12RLYgp2QikdDs7KzLQWIz\n", + "xsfHf0XOH76AeJD/4OmAqzvZeq1WyzxjuvxGo+ExLYgGGR4498AMw1YA8hGCzX6/rw8++ECRSMSO\n", + "P9PT08Z4G42GE5Y4MZB6Db5JumL8zi5IWUFyKxNN3gMcYXY3CEQ8PCxEBkgoxzudjndwYtqYgiIN\n", + "y+VyTg0AMcHIhmEIERMTExOeeGK3xZifBAISAcbGxiz1QvnCoOde9///o3X0H8XFBwdJBnlRs9n0\n", + "MckY++bmRm/evDFSQOglu1YikdBPf/pThUIhdbtdR5/RjK2srFgIcHNz45p4bm5OoVBIW1tbxnFR\n", + "WDB5gwAFU4/3x8PCIAZ+Nb9Gzzc5OWmHfwSleOUhcZJkGwBI/MFg0DZbfC6UEWDYjMnJScHyi4XN\n", + "w5tOp/Xll18afYFIBOF+b2/P3Be8q1HehEIhxx8TYTEyMqLl5eV73f8HtZhpKIC/kEQRkUsULoR8\n", + "hghgwSw4GrJhuRA7LyNxFhnecoPBQMVi0c0Nejtiz1BR09TRLKLxY1QOoR2CDzZdkPrxjCuVSob4\n", + "8NAALtzc3HR9jvMpNTLvqdFoSJIV7NI7E539/X1HOfT7fRspDlspDGsMKX8wlESHyImGPGs4l4XJ\n", + "ZKVS8ci+0+loa2vrXvf/QZUZ7DRM1MCG4/G4Op2OPzRQBTRs2AOcnZ157I1C5erqSktLS2o2m961\n", + "EYOen59rd3fXgllkVLjgD0f1Yn5CREI8HjdPpNfr6e3bt0omk05xrdfrxmmZstVqNaXTadXrdYXD\n", + "YXU6HfvrIdXCaCabzRodwN0JXLjT6ejRo0cKh8M2aeH0mJubU71e19LSkmOHpXcLHY8QCEtIyaDX\n", + "YhozOTnpQKPhQVE4HNbBwYEfPKaUvBaU1ve9HhQ5/2//7b9tE0BgNpwrhxUoxA4fHBzo6OhIH3/8\n", + "sQF91MZ4NeOPHA6HLTfiuIYlBs46Pz9vUxOk+pCKbm5u3CTmcjmVy2XzKOBo4JzPgwOpabjuTyQS\n", + "HsljoojhOIT4arWqqakps/p2d3f1rW99y6cA/GfKGfyq4TpDA221WndqaWrtRqOhVCqlsbExG7lQ\n", + "KpBwi9KdySBIzXATGolEVC6XXcIUi0X9o3/0j35Fzpd+kZQKCb9QKOj169f66KOPdHR05A+YkoIj\n", + "+vDw0IaLpVLJE7z9/X1ze6EukmmXz+e1s7PjmjUQCOjVq1caHR3V/Py8tre3TX9kFI3ItVKpWKOH\n", + "O1KlUjGnmZwTckRCoZDK5bINWCQZV6aUgNfADkzONrsmKpiVlRV9/fXXzvUmIqL4TcYgDSS2Yclk\n", + "Uq9fv9bl5aVPqNHRUX311VdaWlry5sH7hCW4u7vrhpoyazhVFjEDJdvs7KxLn/e9HtRipsumEWFh\n", + "0T0DO0myjAlGHKPfhYUFvXnzxrBSOBx2OUANyKKEbgkMxTQPuf6wGgMOMv8el1Iu5PnDptx4SoC4\n", + "5HI5fy+I/DwAkrzQh/8MNTe/ppfgfcPbgPuNcBc2HwaInEiSHF3MAmV83u12NTMzY9gvmUyagssO\n", + "De+70+l4uMQD/Jc2O/s/xMXkid2KxYeJCqaEQG+4V4bD4TvHH+76sVjMyIj0iywU0AteH8MW5Eaj\n", + "o6Mm+1BqYHGFcADlBgMTMFeIOPF43AMVoC3MbQiFpCSoVqu2t6L0IOUV4lK73VYkErEPxu3trfkg\n", + "gUBAR0dHDrVkiMLPy4ibngFv5larZS43AxbEsbwOny0lCra7YMq9Xs96wPvuzA9qMe/t7dnkcHNz\n", + "U5VKxSUFknZgqJGREdXrdauxSRUdGRlRIBDwv+t0OkqlUoaSJBlSqlar7uLh5lYqFW1tbdmNk1oX\n", + "ByJqaRCPq6sr7e7uqt1uW+18fX2tvb09HR4eOvEKXBgDGqBHPI1BZo6Pj/XixQtVKhVP5N6+favx\n", + "8XEz3GC3EbFMs4k2sdfreZrKZwcfZXt725O7eDyuvb09NZtN1Wq1O2XeMCWAzwlC0eHhoX9ebL2C\n", + "waBr/Pe9HlSZMTwho7lCH5dKpRzzQPc+MTGhly9f6pNPPvGCxrQ7k8no6OjIaU/hcFiJREJbW1u+\n", + "KdPT0x48gPXCJgPRYKiA38Xo6KinYcBSkjxgAPdNpVKq1+s2rMGAEKXK3t6ek6WwTYjH41a+MJYm\n", + "LTUcDvsYj8fjOjk5sSkkk8TR0VEnP0nya8K4I59bkss50m4RCtDoSvLnv7y8rE6n44EKYuDZ2VkP\n", + "fXiv97ke1M48Pj5un+VIJGLTQxx5jo6ObG5IVBqxwEj+b25uXFfncjlP0jhyce1BG4gtF8c2Rze1\n", + "5vz8vKFCxtnUrTDjSqWSDcYh6qAdZPLG8CYYDNriQJK97vg54UxQ06LwiEQiOjs7UyQSUSAQ0PT0\n", + "tJl2PCDSu9qdBxSXfQhJ8XjccCF1NbtwvV53WYVYFU8Oml1KsNvbWy0vL/uERIh73xiIB7WYLy4u\n", + "LF0iVbRcLqvb7drWFVVErVZTLBYzk+7k5MTG3NVqVVdXV84ShCtMSCVCTsbYku6w6SYnJx1ttrW1\n", + "ZfhN0h2MGF0hN71eryuZTEqS3Y8Ir4fM1O12bWiDEBTK5eeff24PakmexjGoAUuvVCqmWxKPMezz\n", + "DFR4enqqUCikZrMpSQ7WxAcDQhG5MMCQt7e32tracp2NrS5ErvPzc7169coPCyP7QqFwr/v/oHDm\n", + "v/k3/6b9LSYnJ+11vLS0pGq1atEmVEQojESCkVaFofjr16/16aefegoGXgonAaMVjARZtMj2W62W\n", + "ZmdnFYvFvAuyWIgwi0QiHm0z6ctms1aiSPJkjaYVPkUmk/EQY39/326k4ONMMG9ubuw7jUcIA5xK\n", + "peLSAtRmdHTUwZhg5kBoEJYuLi5MKOKziEajHgZtbm4qlUrZZqDdbmt2dtYNOCUIFINEIqFyuay/\n", + "9/f+3nvjzA9qZ6ZZIw4XDsBwOurNzY3H04yHaYBAAMhEIX+DoHWon5hu85rDQZVIpBDSBoNB77KI\n", + "XBlWkHjFAwVPuF6v69WrVz4xkGNhDTA7O6tKpWJZE5gzxPmzszPvqrw/rGYpFchqGRsb83u/vb3V\n", + "4eGhkRGaulqtZvydMT4kfCIyIBIhNID/wqQUpyRQCx4APq+rq6tf8ZmHLxTZuOdDjEGRgcyJ3Qby\n", + "0OjoqL3dIpGIXYkIkCfeiykXHNzhXZlG6fr62goN0ILhmpUSCBgREj2LnFOFDBXYf5Cc+v2+9vf3\n", + "NTs761OEKSW2VzSsCFWLxaJOTk78M1C+9Pt98zCGLQYkGXmBT4JBzPX1tWKxmBYWFty0MjBhx2+1\n", + "WnY0pQGm9JmYmLDpSzgc1tu3b9XpdMwVv8/1oNCMTCZjUj2NHBMxEkZRUXS7XaVSKYenN5tNLS8v\n", + "q9Vqmby/t7enxcVFRydMTk56tA2vIZvN3jFVgRXGAgZDjsfjPimgg05MTNx5ULCNpYxgVxsZGXFp\n", + "0+v1lEwmPXCZn5932QRj8MmTJ0Y0UJ/DEUkmk3r79q0fZBCUpaWlO7pBFtbs7KyazaYJVUCf7LoM\n", + "XvCPnp2ddXgRmwrWuVAF1tfXfVp+9tlnOjo68s91n+tB7czDlq/Yxe7u7jqS6+XLl+YrDwYDY8Ow\n", + "w6rVqiYnJ/X8+XPvcBzJkH8YVvT7fUNyHM+lUkntdtsunxMTE34vBwcH2t/fN+cXQtPV1ZVH2dgc\n", + "4Ex0fHysRqOho6MjW9sy+Hj16pXZcjSvTD1PTk7sqk85sbu76+YWyRK8FeRNaCgrlYqCwaDevn2r\n", + "s7MzZ6CAwQ+jQyhfGKcT6fb1118rEokYb2YMTloW+styuWxt4K9yAH/pIjt7GCojOJI/I4SSpgdI\n", + "CIQBaQ8JSXTqGGzf3t7ao46bgyLl6OjIY2vk9LD0JicnPR0LBAKuw/H0GPa/oJwJBAKuMylVGGqA\n", + "BtB8RiKROxM5xviSjF/jDEpwEfVxIpHw2Bk8m4cRghA2BmDplENMERnHU/dL8oAF/D8cDruZJYy+\n", + "2+3ag+Q+14NazMSJQUHEBhZ39unpae9sKDaIGh4fH9fs7KxrQnBbeA0sOoz/CN6h+clms5qamtL8\n", + "/LxisZjy+bxHyywscFmINpCUksmkuRt8fTQaVaFQsO0WC3xsbEzhcFjz8/Oul9kt8aKmHia+AsXJ\n", + "zMyMm8KZmRkvUFANkgfAiYfH15QwsAQxv2FQg9Ib7jThQNFo1PcGrnQ2m7XmL5FIKBgMql6v6/Ly\n", + "8l73/0Et5tPTU01OTt4xGMRwm6gCjmJUH+zA0i/Sqqh/WRRYyFILD4P9vB5BOZJct0tyXUrdiJE3\n", + "O7kkZ1oz7GCSxi5HLcsDQSmBAyiNGpNHYEkmcwgU2OkZkPD+JHlHl+TPhZ9XkhOvKGcY4HDKwEXh\n", + "52YXxraLyGIEwfwawS4ozX2uB9UA9no9k4kqlYpD0IkvYLGR2wwufHx8rEQi4SMPrLrZbLo0YKer\n", + "1WqWWqGiGCYjATVdX197zAwP5Pr62to4BjeRSETVatXmiVggMBW8uLjQ0tKS5V63t7fmg/T7fW1v\n", + "b3uHhf9MbY1O8PT0VIVCQRcX72IxGNUDPYJdk9gaCoX8ELNoQXIw0ME7D3gNTSO52PQEIDCcmBin\n", + "Q7DCHAdnpvtcD2oxLy8vGzNGcZxMJq1CPjw81OPHj5VKpdTv9zU3N6dXr15pfn7ecBFyJYSfhULB\n", + "Zts8LGNjY44qGxsbs3QIgSrdPHUxnAjqRY7ieDzu6Ao0dHjWjY+P6/DwUOl02lTSwWCgQqFgk5dE\n", + "IqGlpSXn+EnSwsKCNjc3lc/n7VIkyelXDMkogchDZKJJ/mA0GtXs7Kyte1lok5OTVphjMcBGAIQI\n", + "1RZsGzuvTCbjUT5+GwiJf0U0+qXr4ODApUWxWLTioVKpaHt7W4uLi25MksmkSqWSTk5OdHx87NIh\n", + "FAqpVCrd8U0jtw6SfCKR0Pb2tjqdjhKJhBs3Fj2aw2w2q2Qyqc8//1zZbFYHBwd30qVglDWbTU1P\n", + "T1shgh4OTjUG6ATb4LbPrthoNDwlRHaFSoSQeDDg4bhfGkkGOIVC4Y5K5+XLl1ag9Pt9RSIR7ezs\n", + "aG5uTo1GQ6urq66nKUGgcw7bKVSrVYVCIW1sbCiRSHikT5gSGPe//tf/+l73/0Et5mg0asd7TALZ\n", + "fZDhU16Ew2FFIhF7UCB5v7r6ReZ2qVTS3NycO/FoNKpHjx4Zw6aRHBsbU6PRMCowNTWlZrNpf2Ka\n", + "QqZ0CFmHE5dwM6Khy+fzrpsZceP5wQ47MzPj0+Lt27cmWUny4uOBZleUZK+L4QwSGs12u22fan5m\n", + "6V0/Uq1WvbiB59LptLrdrrLZrPsSppAkyaKuSaVSxt6Pjo4c0cY9+uSTT/TFF1+89/1/UA1gv9/X\n", + "zMyMlcXkgQwntwJnsQgjkYgbJoSXLGgoiuwkHJGQe7gJ0WjUQw4W88rKitlmOAdJMkmIGpQpXyAQ\n", + "0MzMjGKxmBlmDC5WVlaMqkBmIu0qlUopmUwqHo9rdnbWdl1YEpyfn5vrfHt7a3Ny6KcMlnhIoMwS\n", + "Jg/n4vb2Vul02uw5lC70EjyYpBA8fvzYmYeUQMOREisrK5qenvZgh//f53pQizkYDKpYLKpUKhnR\n", + "OD4+NuQDrjucEzIctINjD5gsJBweBIB+OBksymKxeMfSCkrk4eGhPZ7xVy6Xy7a8BceGhbe3t6dS\n", + "qeTG7fr6Wrlczuw/lDFo7oLBoBs8QnaGs/6gXvb7fR0cHBiRqVQqNrVhTI16He83vj/fo1aruYGr\n", + "1+tqNBoO70FMgA0X0cvYDjBBxRZ4bm7O77vVajmo577Q3IMqM9LptJlaFxfvUptyuZzH18SmgTBk\n", + "MhmVSqU71rTIq4aTVcfHx12KMHWjhOl2uyoUCo5JA6dOJpP2W0NIy0JbWFhwqYO5YiKRcCNZq9WU\n", + "SCQsDqBUGQ7xkeSaE/gNm16a0lQqpYuLC83NzalQKNitlAdkuCxghx7edVFk39zcaGVlRZ1OR/Pz\n", + "85JkhiENHgYygUDA42/qYh7m4XqdfgC52PDw6n2vB7UzQ9phuifJNShDABowPmiySKBBMsxgp8ag\n", + "pVQqmYIJXgu2C8wE8RybW2AvKJPgymQSgt1KMlEfNhlKFSaScDTAxYEGsYOdnJzU/v6+J5X8/DSM\n", + "cJLB1xl0BINB02IhYPEz8JnwEEgyR5mwTH4GRueXl5f2qoNiixSMB3PYRBGN5rAS5n2vB7WYkd5L\n", + "UqlUUr1eNxmcupfGplKp3HEMRV3MqJdjEItZoDMUI1dXV1pcXDQzj10WMjujbB6gYRUy+X/Fb7JC\n", + "ms2md2Wmfdvb22o0GpY04X9MzQuMeHx87IWJoSELCV7F6empVlZW/q0dm4eKRc1uC5TGAuckOjw8\n", + "NP7c7/c1Ozvrmh9DRAZOu7u7pnpS+8/PzztCgxOC0yYQCCiXy93r/j+oxQwVkqgzpk2gAF988YVV\n", + "JNTHWMjCRYabwDQMiI0F2Ww2Xe/y9fv7+3fGxzhlBoNBUzkvLy8t12fwMqzJA6GAqD83N+fdn4YT\n", + "2T7Iy9jYmNbX1z1KluRAePLBcd7/+uuvbZEF/DY6Oqpqteoe4c2bN6a3UiqNjIwol8tpYmJCT58+\n", + "teSMh5zT6M2bN45shlkIJRZBL1NIsPiXL19qa2tLvV7PlmX3uR5UzVwqlUzfpB5EECpJ3/72t5VM\n", + "Jp1wFI1GzX9eWVmx+SHcCthmHPk4XTLsuLi4UDabdX0IFfL8/FxLS0va39/3eykUCg5oJ0Ma/jFl\n", + "DST9er2uo6MjPX36VF999ZUNBcHJQQzYAaemprS0tGTTcYhOWM7WajXNzc2Z34GKPZlMKpfL2csC\n", + "gxxcP7HYYlIJ+sFGgLi13W7rt37rt1yCDAYDPX782J55w9mI2Dc0m039xm/8hv75P//nSqfTymQy\n", + "2tnZudf9f1CLGQfNy8tL7e7uan193aNWVAy9Xs8y+WKxKElOlBoMBspkMnrz5o1dkRYWFiy5oo5k\n", + "LHx5ealms+malPqXAQniWcoYasWxsTE9f/5cT58+VTAY1P7+vnOxEQUkk0ltb29renpaGxsbGhkZ\n", + "8S6KgTcE/evra2vv4GdgUXBycmKIbGtrS4lEQuFw2AT+WCym3d3dO7yM29tbLS4u6mc/+5lWVlZM\n", + "qJdk1IMyKZlMKhAI6MWLF4YtB4OBSqWSVlZWjOKAr8MrCYfD+slPfqKZmRlbKvAe3vd6UGVGo9Ew\n", + "L4BdUJK9j+Ets4NVq1XX0wTq4IhJWurR0ZHd4rGgpU5sNpt3Xocmbmdnx4lWKDHgLWPyQh429SMl\n", + "y97eno968kmgRkJ4Pz4+9micqIZyuWx6KqbjrVZL/X5fxW/yqiE6MZpGmAo0iRcdJjb4MdNUYzXG\n", + "QwcVFHX1sEUtmwpTyuEkLHB0PhMU5m/evLnX/X9Qi3m4SwfQH5YtkXCEreqPfvQjHR0dKRKJ6O3b\n", + "t5LeWVtls1lFo1Gtr6+bOwFycXR0ZC84OnCQA2AscGK8JiDdo+6QdGf4sry8rFQqZU820BEgLnas\n", + "4Zhi8OlUKuWSgtiFRCLh4c34+LgFvcNMPPw7Tk9PlU6ndXNzo7W1NROFfnkEjv9GJBK54/rZ7/eV\n", + "TqdVKBScIAs/Ay44TR42tpLMHuQU4IS7z/WgFjO0Q2pKfs0ABVgunU5rYWHBNrL8ORBRuVxWr9dT\n", + "p9PR9PS0R9O4u+fzeeXz+TuUS+pv6sTb21tTGkOhkGZnZ73j8YCgXAYxQIRKWGUkEjHjjxIoEonY\n", + "4wNvEPgOTOuowcF1IS/hyREKhRSLxXR5eXnHN2Rvb88NLGSphYUFE51I5Uqn0woGgyqVSpqamlKv\n", + "19Pe3p7a7bYDRCuVihc2ppPBYFDz8/Oan5/3OB8l+zAJ6n2vB7WYQSdubm5MbpFkiAmFdL1etzUU\n", + "Ub0wwJDic8RWq1Xb20LgOTo6Mk5aKpW82OLxuMWww87zt7e3llPhA4d8C686EABQEOpYBigc05eX\n", + "lzo6OlKr1VKz2bScCuTg4ODAxCGwbyaGkvx/4o7fvn1rzJgUWUb62MyC/tDgMoBiweOfQfnBlJVJ\n", + "I7xq+pCTkxMr3KmnR0ZG9OGHH97r/j+oxYw6hFKBiyYpHo87Xo1SAguqYWokBoUYfQ9LmbLZrCOH\n", + "4/G4d2lQDMoWdmsGG+l02qgBJCdMt+GJ3N7eupRYWVnR6Oiocrmcxa9TU1OamJhQNptVLpdz+A7l\n", + "y9TUlObm5pROpz3lxB9j2AIrFAo5LXV9fV3RaNS0WHR7DJbW1tb8QOLkORzaQ+kGR5zPPxKJ+GRC\n", + "ZhaNRpXNZrWwsKBcLmdRLCY4NOTvez0oNAMjwlarpePjY3344Yfa3t62pB0ojV3t8vJSGxsbZrHB\n", + "9nr16pUSiYRevXqlxcVFHR4e6rPPPrNJYC6XszsPwtNIJKK9vT1Fo1Ftb2+b6TY+Pq6DgwNPxpia\n", + "bW5u6oMPPlC1WlWxWLR6Gbejw8NDLx6mfNVqVYlEwkMVSoLz83Pt7+/b3LvZbCqZTOr4+NiZgtI7\n", + "4QDE/1gspnQ6rd3dXbMCZ2dnLQpIp9N69eqVwuGwPTOmpqb085//XB999JEdkmjc+Gw7nY6mpqa0\n", + "t7enTCajL7/80nU3zeBwhszOzo77mFevXt3r/j+oxQwPF4J5KBTS6uqq4vG4VlZWHGqDrzF1KHjr\n", + "7u6uBoOBlpaWlEwm9fjxYy0sLHgYwq6CNVY6nVar1VIul3PjRkQE0cU3NzeOLSYkaHJyUh999JEG\n", + "g4GHEpQwpFHlcjmXMzSGKysrFtKyMyPnxzqMmhUKLMY46AehrUJ/xUBcknd4pqOYiUvvUJ7b21s9\n", + "efLEuj+GH4VCQZ1OR6FQyM3msCYS7nQoFFI0GvUDSv+xtrZmUevGxsZ73/8HVWZgmI0iA9wZZGJy\n", + "ctIZf7lcTs+ePdPp6an/TS6XcyYdiopOp6NcLmfhar1e947b6/X05MkT8z+y2azm5ua0sLDgehAD\n", + "lGEjQ7gT/DqVSrk5oxbHIxp6JzxsBLnPnj1TMPguzphgnqWlJTeF7JpLS0tuvhKJhCYmJhzhQBmS\n", + "zWYViUQ0PT2tQCDg7zkzM6NoNGojR0ozAjLhdo+Pj2t+ft4G7vQctVpNIyMj5jED5RUKBU1MTGhu\n", + "bs5wYSqVcsDo+14PajHTZAUCARWLRVM9z87O9Pz5cxv6Yc79xRdfeHeDnthoNDQ2NqZyuazNzU1d\n", + "Xl7q5ORE09PTZr0dHx9bxEouyvARyv85HfCWgITPa1OfHx4emhkH6R/vOHZrYuGQXf385z83rl6t\n", + "VvXy5Ut/b4KJcHhqNpuq1+uOOAZmBFEpFosql8u29cJa4OzsTLu7u44SrlarOj4+tpH45uamEaBS\n", + "qaROp+NkXMx0sHmgyTw9PdXx8bFubm5Uq9XU6/X01VdfGWu+z/Vmi5xbAAAgAElEQVSgFjPuPufn\n", + "5/qzP/szjY6O6uDgwDXbq1evbDyCbxyyIfDVRCKhr7/+Wqenp1ZWswhgjjWbTVMaOWa73a62tras\n", + "zGDYIL0zAoetBkWTRXp5eelQH0QEqEe2trYcwdZqtcxXrlQqJgKdn5/r6upK6XTa9gmvX79WtVrV\n", + "/v6+ud2zs7O6urqy1g8PO4ZI5+fnOjk5sWXY5eWltre3LQPb29sztMgIHNV1rVaz+oSHF2gQY5mj\n", + "oyMtLCwYbx7OP4lGo2q1Wvrqq6/udf8fVM2Mp0S329Vf+2t/TTc3N1pdXVUymbTwM51OK5vNuqwA\n", + "m4Vi2e/39cknnyiXy5lY/1f+yl+R9M7+i/Ew/sZAcLFYTI8ePXLJwjDl7OxMn332mdrttknpg8FA\n", + "T5488ZELNRQIL5FI3DHehnXGQGQwGCiVSpmFNkzFpJxKp9OeFHa7XZ2cnFjCRN4gCMfq6qrVHsvL\n", + "yzau+e53v6vJyUlls1nnhwN3UpsD4/HgxmIxW56xIaTTaT+olHqS7A6VyWQUjUb1wx/+8FeyKS6i\n", + "G2i0kCZVq1XVajWb/cEfGB0dVT6ft1VrLBZzHASKCZw48dGIx+M2Gm+32zZMCYVCHnsnEgl7uzF+\n", + "HuYJgy9j78VuhhcGBi0saKyvksmkjo6OfByfnp7aVkt6xzvhCEcihqPTo0ePrG1sNBoeyRNkn06n\n", + "tbi4aNYh6hTUO8COGNnABMT1iIcJByOMXqLRqEZGRlxyQGcl/HN5eVmRSMQeG/e5HtTOzA41MjKi\n", + "g4MD+1kMa9ngAsTjcSeHRiIRzc3NmR4J3ZIanIFLIBAwDMdNGfaH6PV6HlpAA81kMqpWqx7jhkIh\n", + "0zsxUcRNCLX08fGxJDk6DSiQIxlYEP8O6Z3NLjxl+A/QW4H2GGAkk0lVq1X1+33zVygjGLTADqxU\n", + "KrYWuL29dckFFZQdGcadJH8O4XDYbkVwvYf1hpRK8GBAVd73elA7M4MPjPkwKSF+YGtry+6dmKnU\n", + "ajW7WfKhV6tVx5uhhqBm5TUpBejGa7WaoT+kVTwMmLZIshigXC67QWNixn94KEMc6na7Oj091cbG\n", + "hrHlVqulcrls1hqqDlhphPocHh5qb29Pt7e3Ojg4UKfT0dHRkUub6+tr1+ULCwuuo29vb23OyKST\n", + "Gh35GA/y7e2tzXBarZabOd47dAL43GDbp6enOjk58evcN6H1Qe3MkUjE5BYmaOl0WpFIxFkky8vL\n", + "CoVCymQympmZ0T/7Z//MdrFAXN1uV/F4XPPz86ZPXl5e2hL38ePHDrZZWFhwlARY8/z8vKeINzc3\n", + "9rgbHx+30yg70/T0tB49euTuH4LU4uKiY4lpULPZrNXTa2trNm6EaA9feGVlRaFQSIVCQWNjYy49\n", + "stmswuGwCoXCHQiNYQdQH43tt7/9baXTaY+hCT2anp5WrVbT4uKid/JMJmMLsqurK+/8YMsgOXz/\n", + "drutxcVFvXz5Uo8fP5ake8dAPKidGf0eFyaFsNfW1tZULBZ1eXmper2ufr+vx48fO42KHWTY4xnC\n", + "UCqV8g7/5ZdfWr1cLBatokAYgLcdWC0NHO8Ft3m8JqhhIfUMBgP7w11fX6tQKNh7mjp6a2tL5XLZ\n", + "qAoPE0rnfD7vEwIbLHZ73O0xbxl+uCYnJ83rIBGA6R6CX8br8DcmJiZUr9edb0Itnclk/KDBz0D1\n", + "Dkc6l8vp+vra2dz3uR7UYoYQE41GTU4ni6Ner2tra8seD0jucTN6/fq11SdgsGSDfP3115bNM4lj\n", + "ocDvoFEkx3pkZMTaPpo+rArIy2PnpmY/Pj72Qs/n8/bG2N/fN5WUU6PT6SiTyVj9AhIivSsdSqWS\n", + "2XTDVE6YhJRfk5OTOjo68klCs8tCRYMIFxufEMwVpV/0KsCgDITQVHY6HXU6HaMbpFIRiwG0R7nx\n", + "vteDKjMgq+DbQJcNUiHJtSq7GRo9iEQ0gWj6qP/wRBv2bwP2YpLGwqRposnDt7jVat2hbCLkRCUO\n", + "FRIvj3a7rWw2aztdGjHizIZ9pQn8wdeDxpDdEM4yu2a9Xrf9AaYvuC7xmWElgAfd0dGRxQXs5nwO\n", + "qVTK2SUkVfF3nJYgIQyFyMvGz46I5Pe9HtTOjL8DKmwGHbgKUdtSa+I/zA4JjIYkfnT03bM+DPfF\n", + "YjFDa8M7D7HAQE4ou6VfxDPE43Ef4SAVktwETk5OeudCns+uNzo6qkqlYuJQIBBwQxUOhy3jAn0B\n", + "mqTxg8BEaQGycHFxYUISuylWDZw05+fnajabLr1wSqVR5AEafjCHjRVRyKPG4TNBcAukivPS+14P\n", + "ajEPW8HSsLVaLY2NjdlDeHiHDoVCRjbYibChQqFC6lS1WvXRyhSPwJ2zszObvtze3nqU3O/3TSBi\n", + "hI6ae3JyUqVSydxg5E/sbJubmybZB4NBR0O0Wi37Y8AVYRd+8+aNjo+Pjaogeo3FYo5sYFemUW40\n", + "GuZkQHyiyUSXiHoaM/ZoNKpGo+ExOzg9kCeWZqAwlDfHx8dGT4YTsEBJMpnMve7/g1rMOBChZxtW\n", + "Otze3lr9wI2U5OmWJDPeyPTAulZ6J+GnURkMBvYjnpqaMg68v7+vqakplxXVatU1eD6f9xEOJyOX\n", + "y9kSgBAfJFM/+tGPvHujSwQdGB8fVzweN7EpHo8bffn2t79tHw+ywyORiHkbOBm1222dnp5accKw\n", + "BGf8WCzmhjCXyymXy7khjUQiWlhY0OjoqG0dGDRR2tHwYRXM0ArHqPX1de3v79vPBAHCfa4HVTNf\n", + "XFxoZmbGtS81LDZTn3zyic7PzzU2Nqa5uTmdnJwok8mYq0sjx/E/7J8xMjJiKRZH+KNHjzykgPnF\n", + "TcRY8fb21mYneEpwOhCxEAwGlU6nTXIC2sKMkRAg2HZzc3OWKeFGNDIy4qRTalS8Nfr9vubn510m\n", + "ZDIZoweEaQJXnpyc2OIM32gQD+A58lpWV1c9jSR2jQYQZuHc3JwhS5z+8bRbXl5WPp/XxcWFy777\n", + "XA9qZ+b4J5MOIWYsFjMzLh6P+6aOjIxYWZHJZFSr1TQ1NaXvf//7bhDZvSYnJ3VxceFSA8ssdnB4\n", + "IZIc0l6r1WwEg6M9pcvs7KxqtZoajYZVypCGbm5unI+NF0ggELCDEIR2bHfhITMsgrjPxVSSBxw+\n", + "BCcLDR9oDVNGeMoIejnhOJmIP+ZzB/HhgaLeZ3hECUbWYbfb1Zs3b4xr/yo6behClsRiBUKi7qS+\n", + "Q7dHg3Vzc6ODgwMfc3/4h3/o6Vs6nb7jr4FWTpL1gpQUBwcHSiQSxrORUwEXwiG+vr5WuVxWLpez\n", + "UeHc3JwpoMFgUAsLC3Ye2tzcVL1eN3S1urqqvb09n0SMg+Fw83PTA8zPzyuZTKrX63l48/r1ay88\n", + "IosnJia0s7OjUqlk1Qk2teDltVrNBKphxAJbA1TjX3/9tYlc+PrBz8b+oNfraX5+3o1qtVq91/1/\n", + "UIu53+8rk8nYlHA4nFGScU7MSIhE44hjEPLhhx+a9AJsB1yHmSHHMK6fMzMzSqVSOjw8dK2MTInd\n", + "iJIlEAhYAApKgkcH418WMuoQUBR2RkmGzXgAGBKxAPlMQAwoc66urjQ3N2cWW7/fNy8EVcpwqBEN\n", + "GooWampMbVC2876ur6+VTCZtMHl+fm6yfr/f1+TkpObm5swN4QFH3vW+14OqmcfGxrS9va1ut6v1\n", + "9XW1222LO/lw0+m0+RMTExPK5/NKp9M6OjrS6uqqaY1Pnz7VH/7hH7q+pWm8urrS0tKSDVlSqZQb\n", + "RtJJ0+m0yuWy4yQWFxdNsfxlb4zBYGA0g51/cXFR8Xhc7XZbpVJJS0tLarVapo/u7++rUCi43oQA\n", + "BewVCATuGH3jj4zdQSwWs3i11+vp29/+ti1siTzr9/taXV3VYDBwJgxGjuQR0hwTsoMpJWaR+EPj\n", + "AYi6O5lMqt1ua35+3v7Ok5OTtvt63+tBLWacgjqdjv74j/9YH374oY1UmKKxQ62srOiLL76wb0M+\n", + "n/ei3Nzc9OBhY2PDdTblwsbGhlKplN68eePdV5KxamRS1KTPnz/3AiADGyPFm5sbvXnzRoVC4U4Q\n", + "/YsXL5xR0u/3nfsRi8XU6XRcH8M9xpUJke7c3JztDEqlkr7//e/r5OTEtbokl1kvXrywcQxj+Xg8\n", + "rpcvX2p2dlbtdlt7e3v2jF5dXfVUMJFI3AkDBREJBAJKpVKqVqu2FeO0qlarmpmZ0cbGhnf9Z8+e\n", + "6fnz5/e6/w9qMRcKBX9wy8vLVjUAh+FjAaUTdfT09LQHJ9Sr+XxeZ2dnWlxc9DGIrSuICYaJMOlQ\n", + "ZGOezQQQOf38/LxVzVAiB4OB1tbWPGRh6LC+vm63ULBnFCEYM/LAcOJQk1L6HB0dKRQKaW1tzQYu\n", + "fAYMhvr9vpaWliTJiAjvIZVK2QckkUjo5OTEQlVKFghXPOwY1GD7tb+/r6WlJX8/kA5Mxo+Pjx1G\n", + "+qMf/ehX5Hyuw8NDCzorlcodUxKgNaiRHIO/vMNJcnqT9E5XuLOz446dhcCxj29dv983T4JjFWND\n", + "eBPb29tqNpvmOMBt6HQ6LitCoZDq9br29/ctYRo2UgECxL8ZK9jz83NVq1W7McGVDgQCOjk5sWSJ\n", + "KDbw55ubGyMdGExSu7bbbR0dHalYLOrg4MCIR6PRMC2AQM3h3MHb21v//4MPPrD0CtnY5eWl3r59\n", + "69INMcHu7u697v+DWsyMR5m84QgEtMQOwoeeSCRUrVZtvI3hNzAeOCuqk1/2Nr65uTHri6HMsPsm\n", + "i5YGk4UNG43mEzYauYHAhpisVKtV78qQ5nG5Z8qHhQJ1PQuEKGJOCppESaZk0pgyCkeMS0wyWS1o\n", + "+ygrMDPHngBMGvRIksM8edgZxlByZDIZw5oHBwf3uv8PajGvrq6qXq+7XKDGhQ3X6XSMQ0vvatzF\n", + "xUWl02nHeJHElMvlPEzI5/NOfo3H4zZNYYfLZDJ2KSoUCmo2mx6CAH0tLS356zBNhMMAzkt8wuzs\n", + "rDKZjOMp4GywqHZ3d82RxkgRhyUsDdj5QXDgU1AOTExMWGXNZ4VHH+VONBpVIpFQLBa7Y8GwuLio\n", + "TCZj9t34+LjLBsxlJNmHjocTQcDk5KS51LiXBgIBlzvvez2omnl3d9fH3fn5ufb29ky3pAbc39/3\n", + "btPtdo0NE2HQbret2aNmBXVgB4rFYrYy2NvbM/m/Vqvp9evXvpnpdNrQ14sXL2xSA77MtI2pZKvV\n", + "UiqVsgni5eWlR+E0c1iQHR4euieg9gyHwx5Tw1tGvEpNzVTy+PhY6XTaGSmUQiAu4NK8FwI9JyYm\n", + "rH2Eu4EFA+GeTFKhsqIXpDSbnJz0hJNBCZzw+1wPamcGhqNhWVpa8s41Njamer1ujgFH/szMjNLp\n", + "tK25njx54ro7m81qeXnZdlWIUlm8iURC3/3ud40m3N7e6tGjR3ry5ImpoSwERr/sZrVaTY8ePdLk\n", + "5KRSqZSWl5f15MkTTU5Oanp6Wqurq8rn81Z1EP1weXmpubk5188EZgIrzs3NuWxZXFzU5OSkgzuH\n", + "U5442ldXV72rT09Pm3jEzwv3BKW79Isdt1qt2jASE5tkMmlbBfoLSplsNqu1tTVb7cIrhxY7PBN4\n", + "n+tB7czNZtO7BbKeaDRqwxG692AwqEAgYG4E4D66t2HqJey6ra0t831xGu10Otrb25Mk7+KlUskN\n", + "EWP1P/mTP7FUiRMhFoupWq2a2IRjJvzjvb09zczMqF6vK51OG47LZrPa2dnxoKVcLnsUD/H/5ubG\n", + "Sm44y5VKxZg0LkTdbte6O8j6MzMzprfigAoCwpj77du3Ojs707Nnz3R9fe3Phh0eI8jhGOZ4PG4y\n", + "FqPysbExtdttnZ2dmXx1n+tBLWb4s+Pj43r27JnGx8ftS7G4uGhTP3Yl6suZmRl39clk0se99C48\n", + "5/Xr15qdndX09LRGR0ddGnAShMNhZTIZ7e3t2RKLB6bdbnswgx6P4QEnxMLCgs1gcMn/4Q9/qO3t\n", + "bT+c2GQxoSuVSkqn0/Z6ZtKILo8dk5+B8HXEslhvTU5OOrASg3ASAjKZjAqFgsOJarWaUqmUc1cu\n", + "Li40Ozvr9yy98xbBfw+vEkk+qRYXF525CPID7fRXCa1DF2Pdbrerr7/+WsFg0C6UlUpFh4eHOjw8\n", + "1Pb2tq6urlQul81VZiJ3cHBg0k+xWNTp6amurq684EBI8BVmZz05OTGBiCkd/GluEgw1/C2w/Nre\n", + "3la/39fTp0+Nxe7s7NihHnJQsVhUvV5Xs9m0OppBTSAQ0OLiog4ODryA6vW6Tk9PtbW15UGGJDsN\n", + "YbfVaDSc2wJXhZobH+dhx9F2u+3FSUIANNZGo2HUhO/faDTUbrfvOJyCclxdXRntuG/a1INazBi+\n", + "dDodffbZZ7q6urLJCP/P5/MqFAoaHR3VysqKj2IooaFQSOvr60omk5qZmfHflctlp5hisBKLxVQu\n", + "l410wMmlDDk+PtbU1JSNZiS5Ycpmsx7EzMzM3IkNptEjjAcxKcR3VN2SPCYeDAY6PT1VJpNx44m/\n", + "RTabtf4RVQzSL3jR0WhU6XTaeeH8HdBkrVYzOR81tiSLGOCRsODBkDn52PUlGTFBG0lZ8ivW3NB1\n", + "dnbmm4F3MtBQvV5XJpNRt9u1l1qn01GhUPAuglfa/8Pem8W4mqb3ff+vdq7FnawiWfvZ+3TPTPcs\n", + "PZIVQbDsXDibA8QOksALYASyIyMXUSLpOjGsIIiQQFGgwIHgC8NyvMSJBRuxJDua0YxmJtPdc06f\n", + "pU7tVdyXIllkVbFIFvnlos7vaZY8stqn0NKoMB/QmDlbcfne732f5//8F4YfDA3gZ9Tr9Wv+Fycn\n", + "J3aDLi4ujCUG8uHz+XRycmJ/j+iDUChkWK7X6zWVSzKZVLfbNZ4EF2NxtHIsDLB03juEJthxDI3g\n", + "I1OToh6BXcdnA3kBEep0OqbS5kFFZAveLslw9PHJJgOZ8SYYk5jRaKRGo2GRbGR0jyvr3+S6VYuZ\n", + "ZocvfLwOnJ6eVqFQUK/XUzKZtJ0DqIuufzgcqlwum98FmXh4x4HFMjjhxjO6ZljA+JZhBna2sNtg\n", + "m0EjdRzHms+TkxOTYU1PTxtnpNvtmqMQMBZ4LU3VeA4KC4oHFJI+iAbMwG63q1gsZsoR2IAgEjAR\n", + "WbRgz0xFWYy9Xk/BYNCQIWIiYAbyHYIwIezlYYco9abXrVrM3KS5uTnt7OxYfVYulw11IHdvbm5O\n", + "h4eHevXqlVqtlo1Sy+WyKpWKOp2OXr58qVKppP39fSP8MMqWPnFOAtuFuTYYDNRsNs2lf2try3Zr\n", + "oK9ut2t1da1WM+U2D+Dh4aEajYbV0/ClIbWPuxSRa/Ls2TPt7OzYz2MgAQoiyVz6qXtxYqrX6yoU\n", + "Cte85qrVqgqFgl69eqXBYKCjoyOdn59re3tbH3zwgT1U5XLZhK0Q7fnewc9xNCoUCup2u2o2mybB\n", + "gvOChdmbXrcKzYAVNjs7a74T4LH4zY0f7cQmjBu/rK2tWWNHLcmYHKUFU7l0Oq1oNKp6vW6umODQ\n", + "TNimp6ctkmw0GlmtSmorUB96ORrRQCBgp8rc3Jza7bYeP34sScavjkQitosi58JR6PLyUvfv3zf+\n", + "MPV3KBQyVfX8/LxWV1cNIvT5fKrX68pms5Kkx48fG1TH6FqSiRNwkEIQwNic/G3yFwlCmp2dVTab\n", + "NR0iOze5KD+MGx674CVAcqFLhqhPpw3uymJhyIARIHnQMNTgYbCAqtWqDTDq9bp6vZ6psTHfxlIA\n", + "+T9+ERDlu92uyuWyuc1jik7IPELRcd5xrVaT3+83425qbcxbwIFHo5F5YfAZxk3EsQgjnYqdejAY\n", + "WN0K0X44HBr5CKuu+fl5223JIWRDQFVCI4wxD7Ck3++3iWy/3zfvulAodGNo7lYt5mg0qkgkokKh\n", + "YOLSYDBoqAO79cXFhSWyOo5jdV6/31c6nbbMkng8bhgtJB5MEweDgebm5rS4uGgkdOpwGqZSqaR7\n", + "9+7ZZAs9IdwI8vTG6aSSzLd5MBgY3XR9fd0kSeOpTjSO8D1odpmEjjv+czrxsyHEwxqkIUQIzPSO\n", + "XPHZ2Vk7RR4/fmykpHg8rkqlorW1NaMPJBIJC4zHcyOTyVgjiusSiVSoT25y3aqaeTgcWpAMPhXj\n", + "Tu6O46hWqxkP4ejoSKenp2q323rw4IFc19Xu7q6VFb1ez3YTr9dreG6hULAaGuspWGWDwUB7e3u2\n", + "29PQwf2l2UkkEub8Q/oVu9Q4rRQJPyHrkoxKiqAUfwpqZOwQ8K9AroT5DdNAtJDlctkoo3jZwbsm\n", + "ExxDGOwWwPMhNL399tv2OXH+pxGn9EKWdnR0ZL6AYPS8xk2uW7WYoXpClSS4Em9iVMnoz7LZrJUe\n", + "3/72t826ikRWnDeRYlH/xeNx88AA2oJcdHZ2ZrIq13XNfAV30GAwqOFwqEKhYF7PxPQiIAU9YMJG\n", + "3ggS/3A4bAgMTReav06no5WVFWPxjdfpeEoD68H8Y7oJlEZp1mg0bFQ+MzOjXC5nKMrx8bEkmSh2\n", + "b2/P/iwYDNqmgvcefUa5XLYyJRaL6ezszPqDu3fv3uj+/5EsZsdxQo7j/APHcV46jvPCcZwvO44T\n", + "cRznNxzH2XIc5587jhMa+/s/5zjOtuM4m47j/Knf7+dOT08rEolci0qAAE8dV6lULKidkJzz83Pz\n", + "njg7OzM+QrPZNOcecFdJ5itMJAR5KaSOttttOY6jeDxuDc/ExITtiDSmOPrAj8hkMnJd19yLqO0Z\n", + "O1Mzw2mgnMFii52Qh+/Vq1fW2DJAcV1XqVRKk5OTNvk8OjpSu902FyIU1bgucbpxwd3gIfF6vTbh\n", + "G41Garfb9v+Hw6Hy+byazaZarZbm5uZ0fn5uU85MJmMWDs+fP7/Ruvqj2pn/J0n/1HXdB5LelrQp\n", + "6Wcl/Ybruncl/dbrX8txnIeS/pykh5L+bUm/7DjO933fiEYxGp+dnbXpGR04+DBTKhzoKTNojODc\n", + "wqzDgwPeQyAQUCKRMGNE+MVgtfPz8xYdxrROktXmNEaSzK4AxQf4Nzki4zHANHyu6xqxn2YTDNjv\n", + "9ysQCBjagUKk3+9b2tXc3JzV79Fo1LJO+FmUCvy54zhmAIN4F4QHtTbNsuM418LqU6nUNTNGPpPH\n", + "4zEagN/vv7Gl7R96A+g4zrykP+G67l+QJNd1LyWdOI7z70r6t17/tb8t6f/V1YL+9yT9Xdd1B5IO\n", + "HMfZkfQlSd/6vT8b1hYkcelKkoRe7uzsTKFQyGAhqJ+INuF2EAgJNZGpHLIpNIXo++AZcCLQFBKA\n", + "Oe4bDbTn8/mMAplMJm0Xm5iYsOEKY21qZfjQjH89Ho+Gw6H5QO/u7hqJfnZ21oYuLEpgPhpBHEZn\n", + "ZmasVobMBNKDD914rHAikdDR0ZGFEUlXo+9+v28qGNxYx08EPid8ZxpX8GZEE296/VGgGauSao7j\n", + "/KqkdyR9IOm/lJR0XZcOoCIJF71FXV+4eUnf12IdIsu4USCwFDgpjRZ0THI6KDP44hkTh8NhVSoV\n", + "vffee9rd3bVGyXVdO2oZomATAC7Lw0GpI8ketlwup4cPHxoSEg6HbXdlR8c6Fs+K09NTexBprFzX\n", + "ValUUq/X0+Liou3CTNbGbWcZ6AAjnp6e6vj42BTVGxsbOj4+VqPR0Be+8AWre0FoXr16ZQ0msROS\n", + "rHbH5R/oMJPJWMPL0ARrAdydaFbpL25y/VGUGVOSviDpl13X/YKkM70uKbjcq2/J/df8jO/7Z1//\n", + "+tf19OlT/c7v/I7K5bKx3eAFAC2NRiNFIhGr4Uajke7evWs1M+mq0lWA5dramh3zS0tLxkNgN0Wa\n", + "v7S0ZE6kHPGUHkz/eGiWl5etdsb9k+YVhTOYLUJc6JfoB7GKzWQytthhrLE7k3GCpAo3VPjMTB3x\n", + "uwiFQlZ2YCZD08hnmZ2dVSaTMd4HJ1W73TYc/f79+8aPdhzHyPgMdVKplPFfXrx4oWfPnv2xNBvP\n", + "S8q7rvv/vf71P5D0c5LKjuOkXNctO46zIInZZkFSduzfZ17/3r9yvf/++woGg9rf39fjx4+Vz+dN\n", + "lf1n/syf0Xe/+12l02kLbL97966Oj4+VSCSMHonuLR6Pa3Jy0tyPGE9DwifUZ3zI4vP5jFyPsoUA\n", + "n36/ry996UsWSIn75vT0tBKJhIbDob785S9rNBppb2/POA/pdForKyv6xje+YUYrHo/HzBghwUME\n", + "gqyUSCRUqVS0vr5u43z42DRulDmZTEa5XM4WNLXvvXv37Ncw/BAQSJ9MAgmUf/fdd61hHBcwzM/P\n", + "q1Ao6K233lKhUDDbsoWFBSUSCX3hC1/QcDhUrVbTr/7qr77xwvpD35ld1y1LyjmOAw7zJyU9l/RP\n", + "JP2F17/3FyT949f///+W9Ocdx5lxHGdV0h1J3/n9fr7f79edO3d0eHhoFrGdTkff+ta3bOdFqey6\n", + "rnGDd3Z2jOlGbIQkiy7GT2J6elrJZNI87KhRUX7s7u4aW02SjbQDgYCOjo4sCapWq5kbfiAQUCqV\n", + "0pMnT8xCYHFxUdFoVGdnZ/rggw/k8/ns10RGcMyDHCCQxbETE5ZkMmkuoOz40pWYYX5+XgcHBza2\n", + "H1fk5PN5q9Nx65d0zXCcaWUwGDRUZnZ2Vs1m81oWOK5L0F0nJydVLpetzKKxvcn1R4Vm/LSkv+M4\n", + "zhNdoRn/naS/KeknHcfZkvQTr38t13VfSPo/JL2Q9M8k/VWXu/h7LqRI2FrhDo+vMPBQo9FQo9HQ\n", + "2dmZNYGUG6gqkFOBeLA4YYjRCKJ3k65KksXFRfl8Pu3s7NhkkYeAcoMhCOYxDEhw9gyHwxbtwMBn\n", + "3INuvAzC9w6E5fT0VI1GwxYMI2YWMEkB29vb14ZLlBUw/4gD5iSC+TaeMYhwgLoetQt4P98ffQLf\n", + "seu62traMniS/oWH5U2vP5Jxtuu6TyR98fv80Z/8ff7+35D0N/6gn7u/v28+EjRBzWZTmUzG/Ihp\n", + "dlgkH374od59913DodvttprNpu1IhUJBHo9H+/v7isViRpf9F/kAACAASURBVNLhz4DUQAoobfCP\n", + "wOYKwg4wHrgxLp6MoPGdK5fLikajZiWLOsXv95sGEDtckJpqtWqvg3Ib1hp4NGT6YDCok5MTVSoV\n", + "TUxM2E6PpAs9Yb/fV6FQULvd1v379+0hazQaeuutt8zRkxocJAYNIUIG/pzPBhGJh9l13Ruz5pzf\n", + "Z5P7Y3c5juP+1E/9lHEvBoOBZWQTlwDXgBqQnZyJGlwHkpok2S5KXvbOzo5FKwCdkaFHA4ZxeaFQ\n", + "UCqVMgMURtIYhKPLI9RSkqEgpMBCHOp0Okb+l64SWe/fv69CoWA539FoVK1WyzIF3dchl61Wy0wd\n", + "JyYmzKAGywRilsHoCdyp1+smppWuBk/j/Gswe4j9Z2dnZopDucL0r9lsWrTb5OSkTk5OlEgklMvl\n", + "lEgkND09rU6no1/6pV+S67rOm6yBW0U0kqREImHxB6SNxmIxM/wG/mK3LhaLZpoCL5luv1QqGeGf\n", + "3ZFFxoAD0j0LgeOUUTDaOSxxwcCfPXumjY0N40+ABkSjUZs8MoZnEQK10RxiNH58fKxKpWLlDGN3\n", + "8vcKhYLV2T6fT5KszJmamtLBwYHFSBCjkUgklM/nDc0YLyvGVTLjkCH6SPyaeah5IDmZKLXw/CCk\n", + "fnt7+0b3/lZxM46Pjw0tQLlALciuMC56JZnK4/GoWq1aKA1JpixGlBydTsdEpBCCQD2QNkHex64L\n", + "otH4EU+cAqNvuAnjJKBSqWTUU6it5XJZZ2dnajab8nq91zSJlBeSjOLJg5tMJnV0dGTfB4McShEM\n", + "aeLxuJ1OExMTisViZuCCUyrNM+XD5OSkTUr5njAWx2EVSsC4IABeBu6lYPM3uW7VzgxhptFomJAU\n", + "90t2HaynIpGIyuWyQqGQ6edCoZA6nY6Wl5dVr9fN1w3CfDAY1Oc+9znt7++bnhAbXerTSCRi3T0L\n", + "m3EwgxYsajn6x03ACe3JZrNqNpsKhULGkSAUiBEzyIvjOEbFJA9wfn7eCEi7u7s2+XzvvfdULBZV\n", + "KBTshIrFYsaRwO2JYB7q52QyqcnJSS0vL2t5ednMJNPptObm5nRwcKCJiQkzsnnx4oUl0r7//vva\n", + "3NzUxcWFotGoTQD5jJCn/vSf/tP6xje+8cb3/1YtZjr2QCCgjz/+WFNTU8rlcgoEAmbvSr7H0tKS\n", + "GZY0m00jj09MTOg3f/M3zawchteDBw+uWbiSUbK0tKRqtWrSpuXlZUMF7t+/b5ZeOArhWt9sNk1j\n", + "t7u7a4pxKKb9ft+wYaiseH34/X7t7+9rYWHB5P3tdtuGK1BJMX+UPrFheP78uS4uLoyuiaMnwtJO\n", + "p2N9xatXr8yGd3xHHw6H2t3dNbencUFAsViUx+NRr9fT0tKSarWavvGNb9g0E5YdBpPYdw2HQ/3O\n", + "7/zOje7/rSozUP0eHx8btivJ1MKFQsEcjvCE2NzcNLEl4lAWO+JOasTxcJ5kMqmlpSVFIhHL4kin\n", + "09dU1B9++KGRa9iRp6enTbNHPR4Ohw2VYPH1ej1ls1lNTEyY6z9OoShX8NigfAGOoy5nYpjL5Yy3\n", + "zMO7vLyslZUVyy6kcWU3x8ARwQInHPxrn89nJ1ClUrFyCG4LiA+e0aBDEI8WFxeVSqUsExFx8E2u\n", + "W7WYwSnZMRk+zMzMKJvNmko6FosZqwyXHjgFo9FIb731lo6Pj7W0tKRut6vHjx+bKhomWKlUUrlc\n", + "1t7enrHCkNofHx9b8wX1E8dRFtv9+/dtTAwPQ5Jl6VFrM21stVrGqCuVSkYGgi8cDoctg5rm98mT\n", + "J+p2uzbw8fl85vMB6nF6emqEIyaIYMOgNYT9oErHYyObzaper2txcdE4HECGoBz5fN7gv5WVFTWb\n", + "TRUKBWMKYugoychOb3z/b7Z8frCuWq1mjRhlxuHhoYbDoV69emXHOAOUXq9nNxKzbho3+L0XFxcW\n", + "84tFFWUJNlOSTJpPAwdrDE+7mZkZPXv2zJAR1CqSzD8Ck/DLy6tQ+bOzM5uSgRNTElCPQ6Fk0AG2\n", + "izkM6a0Er1MeNZtNy8YulUr2GXFwmpiYMDU2vwc6hCIbdAXsGUI/f7fX6ykSiZjC5OXLl+YuhdKF\n", + "B50T9SbXraqZE4mETdXu3LmjYDCotbU1U4lwzDFChhoZCoVMgXJ+fq6lpSVrwkqlkpUE4/IpWG6x\n", + "WEx7e3vmNgRvAlx1enraGqnFxUVLJKVkuLy8tAAcGsB8Pq8vf/nLJiWCggmCwQ7LLglBieEEdgU4\n", + "gsIBSafTpslDezhOJ11cXLQsRDzwOIlIfcUzgzIDvvjS0pI1eHzXBHIS8wBCgjMSpye/f9Ohya3a\n", + "mfGIqFar8vl8FlDOl39yciJJNr69vLzU9773PSPqP336VNVq1QYse3t7SiQSNnKVZAQaRrR7e3u2\n", + "wPF1brfbKpfLyufzxvnlJJCu4hVAF6CtssjPzs5MQU2ADdxp/DxyuZypzDFZYZzMe52enlaxWDQM\n", + "Op/P25gfqT/OozwsvF/G9+PKamwATk5OrOQBm8cnhNIBXd9wODSYFJErOkhOsl6vd213v8l1qyaA\n", + "v/iLv2i1LTRDMN1SqXStpvN6vfJ4PKrVagqFQkZER1SZzWa1ublprvTUxXTePp9Pu7u7unfvng4O\n", + "DuTz+YwzHIlETHAK3r24uGgZJSAUeEXTXPLzedAQxKL65oHE1406HU42JwElByLWer1u3nDpdNrk\n", + "SclkUtVq1RYsxKTZ2Vlr+miiiUKGXI8Ui1IGtYjX67UcGU6bbDZrPGl4IgxbyB+cn5/X4eGhfu3X\n", + "fu2HE0Dpyq2HQcLBwYE8Ho8KhYKZDm5vb5tNAFG+jK57vZ458DD5oubb3983b2acORmXE8eGVdW4\n", + "9wMu9ASh49V2cnKiZrNpGDbZJRcXF0Zc4lhmbE5tSUmCkBXBK3g3fwavo9fraX9/3xrPaDRqC5fp\n", + "pCQzYwGaQ51OE8tirdfrCoVC5uCJvS9WBJwOPODwPhBFYCrOqPv58+dm27W8vHyj+3+rFnO/37dF\n", + "gocx2je0euxseNJhtCLJaljsqbhJ8I1ZeDhuwl5DvoRChRvPlAwMFl4FuzxqcASio9FIhULBdIgs\n", + "NuxomdjhSgQXA/MWIDZgOvJMHj58aJrBvb09SdLR0ZGSyaRhzYgVQGSIwcDsJhwOX3Mpvbi4sJwY\n", + "EJmzszNr/i4vL80sHWV5LBazJvvly5cGb3LyYKH2ptetqpm73a6WlpasAfF4PEaux3gE21tEm0QZ\n", + "jJsFokaGCFQsFo2CCU4NnAYDT5Lxdlm4kNfhNkgyPwseFOkTWinowGg0Mv4FMN3l5VUcMlg0Pso8\n", + "kFBbYaDVajXT1T179syGNkicCCOirsW9E485ooY7nY45GgEbjqu4R6ORNjc3jSJAGq4kO8WA3mq1\n", + "mj34Ho/HOCzAksjP3vS6VYt5ZWXFDLPBMon8PTs7M34wg4FxC9bLy0tTi9DggOHiFgRrbNz9R5I1\n", + "YJiwcJNoinK5nHw+nz0Q9XpdjUbDbizN38LCgtFHJyYm7H3AQIMjQWwCTDX4zAsLC5Jku3U+nzeI\n", + "sFKp6OTkxEhU2CEA62G2yAKfnZ1VpVLR3NycEomEDg4O1Ov1VKvVtLa2ZiP6fr+vZDKpWq1mFrc0\n", + "gZyE9Xpd9XrdNhYyB/EWwc/jpov5VpUZmLycn5/r/fffl8/n0/Lyssnoo9Go2WuRQ51MJs0wcGLi\n", + "KmotHo9fE43SkYNaxGIxnZ6e2uKZmZkxmTwcDpJfB4OBRQmHw2FVq1WlUin7M4wVYZzNzMyoXq9b\n", + "iik163jshMfj0e7uriQpHo+bcWOpVDJbW04WdnvyrQnXYeKHfxyjcHjGo9FIqVTKyjCGJpRf1Pce\n", + "j8caUSwdMJ5h9w2Hw4ZpI92KRCLK5XKmeD8/PzdF/Ztet2pnHo1GNgDAL5k8O6Z93Gik+Pl8Xr1e\n", + "T48ePTILXOT5uLljGUBJAb0RrgZH7sTEhGWGIAtikXD802SxUCcnJ806llSsSCSii4sLe4jINcEq\n", + "i9AeiE6YLbK4MAKv1+sW0QBNs9VqmZdevV7X9PS02QNgqcWonBRb2Hvsqixk6uSJiQmbrKLmgbFH\n", + "rgpNKREax8fH8nq9kq4eSDw8bnLdqsWMDJ/AcrR4tVrNYgw4wmliEomEer2eqtWqstmsDTRQWjSb\n", + "TUtiotyg5Bh3mQcSG+cUh8NhHRwcSJLtmI7jaGlpySZ9UC6DwaDtzKAm0WhUXq9Xx8fHdsowzEHF\n", + "jQwKrLpWq9lInVg213X16NEjs571+/2mIG+32+YoSo0MVElDSYZ4s9m0CGVG54FAwBiHPATs9ozf\n", + "GdBQRiBNA6KjYU6nv6+DxKe+btViZlekloVvixQIEji46mAwsHoWbzl8MGZnZ21iiNIEPgYjaUmG\n", + "Ow+HQ8OWaf5OT0+NWklYDaw49IaYLuLKiTggk8nYGHlyclKNRsPMwJF1EYaJajoajZpqhh2RyIvd\n", + "3V1VKhW5rqt+v29TOJyfRqOR1e64djabTRvagGM3m03LWSRuzuv1KpfLqdFomHhgcnLSUgcwJefk\n", + "OTk5UTqdNtNHHJtQtLzpdasWM1a2pCnBSwBK63a7Ojg4MKioUCjozp07VpaMRyDQWGFmiFkJTDbS\n", + "S/GhGPcvrtVq1hzB+2C6x8KDSYdqGRy42+3K4/HYuBoGIAMJkAw0jDSd4MU44NdqNTu2MW2k/h4X\n", + "FzAyH4+owMiRUgqWHv+fEoLGGWIVzSuE//Pzc/n9fh0cHJgiB14Jqh5Jpg6v1+s3uv+3ajHjZClJ\n", + "X/3qV008GggE9JWvfEXhcFgbGxsGHf3Ij/yIDRJc11UoFJLP59OdO3cUDof1+c9/XtFo1PKyA4GA\n", + "TQzZ1djVfT6fKbDxgcbhh1Li4cOHdnpgyILPHQMK9HDoBBOJhEGNmBOS9uT3+5XJZDQxMaG1tTVz\n", + "EM1kMlaCLCws2M4eCASMhzE/P28DlHv37ikSiVhGNtL/bDZrTL9kMqlQKKSFhQXzqctkMrq8vNT6\n", + "+rpZLpBUgFCA4RJjc5K2JicntbS0JL/fbxvEvXv3bnT/b9Vi5smemprSkydP1O/39e1vf1u1Wk1f\n", + "//rX1Wq1VCwWjZH25MkT20k3Nze1vb2tqakpvXjxQu12Wx988IEmJyf17Nkzo4OenZ3ZlJEF3mq1\n", + "1G63lcvlVCgULHuPYxqFyc7OjkqlkrHO0MK1220Tqx4cHFjdC3b79OlTC6jf2dnRwsKCNjc3NRp9\n", + "ki4FJNloNFStVg0poDZmKMJg4/Dw0DSG+XzeTrMnT55Y2bO/v29KFrL8Njc3rcd4+fKlBRrhI42r\n", + "0ZMnTyRdIT3U8jSEyL9evXplSM3x8bE2NzdvdP9v1WJm9Iv6gpwOEqAkGUke7wuv16u5uTlFIhEl\n", + "k0mrCRlo0Cyii0ulUmo2m2Y9xYLAfmpjY8N2psXFRRugTE1NWXkBGZ9pYrlctp9DID01OM0V3GV2\n", + "MYSlkPOpV/lcLN5+v28KFyy7ms2mTe0YM1cqFftMJycnchzHRAQ8SEwNIWwxhmfow9AIF1Lw9vn5\n", + "eftM+Nf1ej1Fo1GdnJxYHARkrje9btVipg6s1+vmfQxFEZ4AQxByAKkDHzx4YM0b6gjw54cPH5rR\n", + "X6/Xs1gFjBlRHqPJOzo6MolWPB43SA8rWjgVmCpi/wWjjPo5lUqZsyaN0+TkpHZ2doybDeFHkpmw\n", + "dLvdaza+eH10u11LmYWWOe5QCjKDTnJ9fd3iLsrlslKplIbDoSlIQDLG7RMQD4AzozpHpYJ/HfU4\n", + "aV2Li4tGanrT61YNTVgYUCsdx9H8/Lw1K3BtUTQsLi6aQThaQZosHOXn5uZMv5ZIJLS7u2s7PU0Z\n", + "qmdqZmpRFiA7FaPuyclJ86qD7ww/hIEGqabjkB8BnKhKxnfLy8tL87igJ4AZyOtA5GHRj9vzIlJg\n", + "kWIOiXHO8vKywXfU/XiLzM3NmXqFwQeuUdJVPuN4LiGYfyqVMgHxcDjU2traje7/rdqZganm5+dt\n", + "6kT2M0GPHN00c/l83gYY9XpdpVLJ0I5ut2v13Dh0BfmdLp8d/fT0VOVy2WrdcDis8/Nz40wwZOl2\n", + "uzbuHvdwAxtnOrm3t6dyuWziV5Qf8DtOT08Vi8WMQffy5Ut7T9LVWBu73mazqVwuZycJtlrS1QNU\n", + "KBTsBKnVauYeSkNNn8FpVq/Xbdw9GAz08uVLM1qv1WrGQDw5OTGolO+gVCoZlo76u9Pp6MWLFze6\n", + "/7dqZ85ms+ZLAfk8nU4rkUiYCDUYDNpU66/9tb+mX/iFXzAPOISo3MAvfvGL2tra0uPHj+3mjEYj\n", + "ZTIZFYtFOY5jtTCUURYE0BSu+Xja9ft9G6qM80NALiAynZ+fa3Fx0SZ3jKeJKtvY2DDVNAOOt99+\n", + "20j6ExMTSiaT8nq9RtuEuca4GuNy3itjfxzx4WDgQx0Oh/Xq1Svz0FtZWTG+OEbiTAIzmcy17EBU\n", + "OL1ez/4MLv14JMa//Jf/8o3v/63amTudjnkTY+iCGkOSTbTY/f7+3//7Njwpl8uSZBo7n8+n3/3d\n", + "35XX67UdKBQKGdG/3+9fcxsCTsOHA981COnjOzjMNK/Xa7RR+A2UQ1BK5+fnNT8/bxBju922EwNO\n", + "MUqZw8NDG/hQMvHaMzMz9vP4+5xkNIfspOSN06gNh0OFw2HlcjkbsmDZG4/HJclOn0AgYM75NJJw\n", + "pw8PD42aSpoV43mcp25y3arFPA7sAxXRyRN7Vq/XrYGjAWLc2u12jVPMTcaSgOOcmwtxqd/vq1ar\n", + "mYkLAxMW5sLCggVMnpycaDgcql6vG4MPqAxuhPRJklO/37dFzWcgP3B/f/8a+y+fzxuSAfrR7/ft\n", + "825ubqrdbluYJycDn7tUKhlVMxgM2tQOR3xckngQEfdyYVhTq9VssQI3sslg5+DxeMxU5uzszKao\n", + "P6SAjl00Y5KME0w9eXFxYTAUhHFJhhOfnp6qUChoaWnJCDxwPbjJeKhxU1GzwAkuFovXvJipsyXZ\n", + "RBBOsqRr1lbBYNDkU5Cazs7O1Gq19PHHH1vpVCwWzROZiLNxx/tEIqHDw0Pt7+8bguH3+3X//n1D\n", + "VC4vL/XRRx+p3W6r1+vp6OjI0mnBnycnJ40mKl31I6FQyEoJTjnG9B6Pxx526eqEw8qr0+mY7ApD\n", + "yd3dXeXzeWvKmbLe5LpVi5nYBUa+uFHCM6hWqwbY+3w+22GweI1EInr69Kny+bxlfbDjjsvnwV5b\n", + "rZaOj4+vmZgztmbBhkIh5fN5i3qQPgms58httVoqlUomuSIsEzEqENjLly/l9/tNUABBH5717Oys\n", + "CXK9Xq92dnZUrVb13e9+1xQhcI6Xl5dt5N/v9413Eo1GrwXCY7dQq9V0cHBg9E94JtgAg5lLnyTR\n", + "AjcC5w0GA21ubqpWqymTyWg0GllOYy6X++HQZPyCF3BxcWG0SZ/PZ2lMsVjMjmF4FkBnCESTyaTV\n", + "vjjpE3wDsR1FMbIgj8djP4Njc25uzvw1IpGIxZaBQnDMY6VLPQ2WjEYuHo/bBA/yEA5NlAjU3Ax3\n", + "UqmUvSev16vV1VVDMkiUBesmBoLoMoZIlCx+v9+EqalUyqRc0WjUeCQ4IQWDwWtiWnD9ubk5eTwe\n", + "G3kjgqXnIBXrj1102md5MV5mLAztEhgJVhaowscffyzpagyOLxrURXamg4MDQxMg9/AfWC8TMcj7\n", + "R0dH8ng8xtRjV6TGjcViarVaJrlnJ4MoNQ4posZgMjk3N6disaiTkxOtrKxYElSr1bJhDdg5dXmh\n", + "UND7779vOzluoUCVCAnGTxhKA04YnJl4LzTJUGl9Pp+2traUSqUM60bjiAL8448/Nm43jEHqZBTc\n", + "N7lu1WLGzIXdmKw/dhGv12uKB6/Xq3fffVetVkupVEonJycKBAK6c+eOJFlIYywWU7FY1MrKis7O\n", + "zozMRKkCRk19S22JEIAwdHLyGo2GWQZMTk4auYldeDgcKpfLaW1tTaVSyVCF+fl5ayYfPXqk7e1t\n", + "LSws2EMDbkys2+TkpNLptLrdrpkyhkIhzc/Pa3Z21rw77t27Z4oQdsZQKGSKG1QyfHfsrNTMkJaY\n", + "4qVSKfV6Pb148UIbGxsqlUomCGaIRdgRuzcKoLW1NT179uyN7/+tKjMcx9GLFy/UarX08uVL2xUx\n", + "KkGDRuYGam74wXjIcQwnk0nDQMeDa3q9nvENKpWKKUCYLDJhG/euYDrJkUpJNDExYdyMUqmki4sL\n", + "3b17V7lcznyXJVlmH9xov9+vi4sLvXz50thpqEowIOz1emYFlkgkJMlcQvHzODg4sHID1yKGLHjv\n", + "lUoltVotbW5uWoMKDRU3JcbzEPTpHegPoAigAD84ODAfQPd1NPT6+vqN7v+t2pld19Xq6qqmpqZ0\n", + "fHxsVlegBtgDXF5e6u7duzatw2qLUoCatFQqSZK58WAqjhPnaDRSOp22KR91KLo4ak90ewwriGAI\n", + "BoM2WPD5fObNkcvlzCim2WxaMiociNnZWcPF79+/b6JXEBwI77xfGjDw93HUJxKJWD43vBHeDxku\n", + "GNjgkMruih0Y5Qw7NjESjuMoHA4bp5nvdzgcKhaLWdlFljbf95tet2pnlmQDEnY+HInI3uPIh7zO\n", + "eJcRMpgvjQ6TL+RUDCN4ABgUINSEtwFKMhgMrHOnVod8VK1WrUypVqvmu4aamsULhMZrM1WDozEY\n", + "DJTNZo07cffuXUMtpCsOSTAYvGYrO276uLS0dK1koJSiacOEkcaU75WHA/4HwlfkVzSmNMxwpply\n", + "BgIBQ5GIobjJdasWM7TJV69emZ4MXu/k5KRxG2ZmZmwUzPgZNhwLDiYbqgoom0+fPrVhCqE4z58/\n", + "V6VSUb1eV7FYNA7C8+fPDXaC/zw7O6tCoWDSKLzlKHm2t7c1Nzen9fV1I9VTo+/v7+vly5cql8ua\n", + "mpoyeytJ9nPm5uaMu91sNs0v+uDgwIYcNKTn5+cWK0GzWqvVlMvlzIc6n8/bAsYWAfgTHBoFD8Mg\n", + "fPZ6vZ65e3Y6He3v7xunut1ua3d312YAw+Hwh9Dc+NXtdrW4uKhEIqG9vT1jiyHTka4w3EKhYImm\n", + "0BNpDEOhkCWxBgIBW4RwoHGgpw7ErsDr9SqZTJqk/+zszCISOPK73a6q1ap5w3HUExlMXdnpdFQo\n", + "FIzrAYa8tLRksRCQ93E9hTxEHBsstXFjGxY+WDGG5PwaTH1+fv6aoxHoTTAYtAaTB7bdbst1XYPw\n", + "CMoMhUJGzIItB0zJ+56bm7s2PcVM502vW7WYOdaxiR0MBkokEmaKCHAP9ZEjsdVq2YLD1gv3+NPT\n", + "U6NEQtRBSMoIFlNuKKCtVkvxeNzIPSwGeMncYMoaBKODwUDdbteSnGgiPR6PsetYoJjQEEEsfeIg\n", + "NBgMzHeO3EOSnhjeUBYh6yJmORKJ2HhZkrkiQaxnikmuN1Zo5JJzRSIRbWxs2MgaByWGK3BoGNn/\n", + "0Dfj+1zj9E2spCCzMLSAOM6xSNMEdIZyYnyQwcJjLMuE8fLyUrlczky7yfTAplWS1Y2MiTGcwTJs\n", + "NBqZ6mN8gcPHQKVN6TAcDpXP582yq9lsqlwu2zAG0hAXbMBxYny73bamEcSn0+moXC5f46x0Oh2z\n", + "QHBd1/gu8EwY8ZNmBcEKXgg/C/iN/BWStXq9nsnOwL/f9LpVaAZfGPBbIpEwwlEwGLTdDb4uQlRJ\n", + "tsij0ahyuZyxylKplNlhoaR2XVfhcNgmhjDfRqORiWA//PBDra6uWlOEhVWv11MymbT4CJh1i4uL\n", + "isfjxogjAQBXJRYjNgHEp8F847RJJpP68MMPDb9m941EIjo9PTU7he3tbT169MgQD6BJDMj9fr/i\n", + "8bipdIDpeNA4JYigazQaJmglb/wrX/mKMfYKhYJWVlbs5Op2u4pEIgqHw4buHB0d3ej+36qdGYyz\n", + "2Wwqm81a182oFLfMaDRqZiePHj1SMBhUr9ezXSIcDisejxtRhiMfiT5cYEk2FQT2A79NJpPa2tqS\n", + "JIMD4Q67rmtoADDf0dGR8vm8qajhSFMS8NonJyfmm0wphAMof8apcnx8bEc5C4UyLJVK2WdCKQ4N\n", + "s9PpmIiBrGwml5IMkUEkwGmGb1yz2bSyDt+54XCoQqEg6eqkQB8Zj8fNBgFriDe9btVippZLpVLa\n", + "39+Xx+Mxz7iDg4NrBoHsQjR4iUTCdl9UFoFAQPv7+1YPUlZAhzw8PNSLFy8sUD6dTl9TWaRSKSUS\n", + "CXMSJccEUSsEJEoX13WVyWSUy+UsPJOpYjAY1OPHjxUKhUwlTi4IgxssdlnkeOKxq09PTxtezpSw\n", + "0WiYqSQMQGwUUGnzOoVC4ZrrEpndKNa73a7ZGYCZz8/PW94h7vzjfiIHBwfa3t6+Zoj+ptetWsx0\n", + "5gxKMMkOBoMWUwaJHg7E3t6ewuGwarWaDQSAoRzH0dramnmnnZ+f281qtVpaWlpSLBaT3+9XpVLR\n", + "1taW6QWhW/IeQDgCgYCazaYqlYoWFhYUiURMI7i0tKTd3V1NT09bQtTS0pKazaYk6cmTJxoOh0ql\n", + "UvL7/TYup5nNZrMKBALGGcZ9qdFo6PT0VLVaTUdHR9fQHFAOgjF5SKhpx8fcaAuhfhILhws+BCJC\n", + "jjgdYBvOzc3ZePz8/NweOgY5PzSBGbtQLAcCAe3s7Ei6UkDAZa7X6zo+PtarV690fn6u7e1ta0qo\n", + "7RqNhmq1mhHZyScZt7yFoYbxIGNyCDcgAtS4eKnx0OAiBAGqWCxKkgVB4q5Uq9UstAaONcJRvCqm\n", + "p6cNBwbNgPMMjoxam9ra6/UaRMhkkQcYxbn0yQCqXq+r1Wppd3fXsHkebumKeovyBRwfZILyi3qd\n", + "soUafDzGeX9//2b3/0b/+gfsajQaVoNiLgjZxuPxWOhkNBo13wZwXJ/PZ0qOhw8fWpPjuq6Wl5eN\n", + "dPT8+XMjzkB9pDZNp9OmQaR2xm6WJotdaH193bwr0um07d7Hx8c2Wt7Y2DDCEg0rECEq6Uqlovn5\n", + "eSWTyWvuSaRo8X1MTExoYWHBYDxJRrx3HEfpdNoek5NwsQAAIABJREFUjFgspm63a9/PaDSykM9U\n", + "KmWm4eOMOtAXhjQzMzMW7zw1NWUiCMdxjB9CU57JZCRJ9+7d07e+9a03vv+3ameu1WoKh8PGe2Ch\n", + "wpUAtoO8TiY2scKhUEihUMiUw9Ink7V0Om0WAOxO7CrjtSi7EKUGIe8Q4ceHL/CeaZxAKrrdrpUI\n", + "+/v79jnW19fN9wJcGPNx3IT4M/IHiS/DCgEvjYmJCQtsh6sBnIlvB7g4nngYO4KcwPlGzQKvgwEJ\n", + "9gcXFxcmskXjOD58wo0VUtWbXrdqMQcCAZ2cnFjeBrUtO0UymbT85/Pzc9OopdNpQwPK5bIODw/t\n", + "JpJGWqvV7FiVZDcHTLper9sNgt4I9Adsh9l3p9O5Zh5OgwnmCy7caDR09+5d833+6KOPjMTjuq4O\n", + "Dg5s+NHr9Yzn4bqu4vG4/Tz4HdVq1ep/MgVZ4FBXCQjiIYBQNK6bPD8/V7fbVT6f12AwMHSILEDK\n", + "BzLGyTCMRCJWUvR6PZ2dnVn9X6vVLAXrTa9btZhhniEZAj5jiEJKK/L9Uqmkzc1NG8uy63W7Xfu3\n", + "s7OzJlfCHTQajdpQIZ1OW629u7trpwD0U3ZMpnsQ6eEu4PPGIsI6l9p2OLwKXS8UCgYBomaB7smk\n", + "kkaNupnFmMvlrun2oMSCfBwcHKjdbqvRaFgdj1RKkjkaMUJnjM9IW/qE6M9ixuCcqWGr1TKy1LgL\n", + "P/EUUGBvct2qmhnrWIB/eBPseqlUym4+Zt0/8RM/YclIuBnduXPHXCuLxaLVwpQO1WpV6+vryufz\n", + "Ojo6MkgtmUyq0WgYR2RcnoRKA5kS07JIJKLd3V27yfgrs7MfHBzo7t276nQ6+tKXvqQnT57YeDge\n", + "j5siZXJy0nBcxs8LCwuGb8NUwzcDD+lWq2WOSvQJ4M7Ly8v2oFM/VyoVQ1sgaNVqNTv1kKKBtGCn\n", + "AKTIWB+ivyTD3H/yJ39S3/ve9974/t+qnRluBrXqYDCwY5XjFII9HIdyuWwumhB/yA4cjUZaWFiw\n", + "UetwOFQ2mzVN38LCglZXV826Fgx5dXXVcFMWNzo+UJHDw0O72djF0gAuLi7ae00mk6pUKqpUKtrc\n", + "3LT6nbqdYzqRSJjWEV8L2ILUt4hyYdsx3ZucnNTi4qJBbKQJ8MCjm2RDmJ2d1UcffWTTwPn5eesn\n", + "4LKAJTNyH41GCofDtrlAf2X0HgwGb4xm3KrFLMkaM75MmiPgJ0k2qm6320ZkR3EC/5lJFna0cHnR\n", + "9zUaDdul4CJwk/L5vCYmJuyhQG2CL0e5XDbEgdIGsxZU3yAWNIZYEhAVPM65HjcER/FNSQJrDjUK\n", + "3tBwLLBAoPw5Pz+3E47GTZINb8rlsvnFoVpnCgqRiMYaMQJqdt6767qmJOd7q9fr14hKb3LdqsWc\n", + "TCbN7Jtuen193VhoyHSQLiWTSWN8ra6u2tBl3EQcw+7Z2VnNz8/bVC2dTmt1dfWaIWAoFDJuBibi\n", + "uAWFw2H7/bt37xqCEAwGjTAfDAa1urqqxcVFmzbGYjFDKGZnZ7W+vm47siQbAnGSzM7OKplMWvg8\n", + "zR3NJ+UMsOD5+blxQhYWFoxmymteXl7K6/Ua0pDJZDQcDg3dgQGYTqetROE1+PPV1VWl0+lrukoy\n", + "WqSrzWVxcVFvvfXWje7/rVrMp6enOj8/1+HhoWKxmO2mSNyZMEFvhKnGDskOCqtubW3NFCk7OzvG\n", + "a56fn7eoBdhpYKdM2MLhsF68eHEt62Q8nw9iE+GTuVzO5E8c1Vjo4jcN8R8/DBJlkfOz88KFoFnk\n", + "/Y67FGHZO86F5iRC5YLcrNvtqt1uGxWVhKxxORenCbj24uKiJiYmdHJyot3dXcOdoXvOzMwYZAgv\n", + "Jp/P3+j+36oG0HEc4+S+ePFCjx49MvdKQstZuDi4Z7NZGxZEIhH1ej2jjXY6HcViMVWrVS0vL5uS\n", + "GB4xu56ka3wISWY8TlQvjRjhPpVKxUbflUpF8XjcGHwHr3OnKY8QnP5eNTS9AYstmUzKcRytrq5K\n", + "kkmpdnZ29PnPf94miODBWGYRTs84OhAIWK3Nd0WTSZ0L24/3IslIVOgn5+bmNDU1pYWFBZVKJTuF\n", + "MFHknuEIxbj8Ta9btTMTxLO3t2e1XrfbtfovEAhYbh1TwZOTE52dndn/ohVEnYKjPcJLjAX9fr8d\n", + "17iKMtJGLgTnGRgNO1vG5RB7qLvhGAMfTkxMWJnBuB2/DeKK6Q0kqVgsGmLApA91SS6Xs0wUxtQs\n", + "aIYvkqy8oWxh9MzDhzKbeDaMKOGlsPvTn0DMAkFCoY6/HdAemYM3uW7VYuamozSBQH5yciKv16tS\n", + "qaRkMmk5Ht1uV8lk0iAiBgNwcy8uLhSLxa6pK2DEnZ+fG29iMLgKU6c5wrzl4ODA0BVGv8T3gofD\n", + "dDs+Pla5XLagenDtnZ0dI7SfnJwYOoK6BQsD6mKI+6VSSUdHRwoEAjbJm56eNvgOohCLj50WwhE2\n", + "CIPBwCDEZDJ5TdU9HnlG6m2n01G1WlW1WrV/2263zYeOBhhBwsrKilZXV63Rvsl1q8oM/CSwWyUr\n", + "r9vtan9/37znUD0fHh6qXq/rwYMH5ubD1BD3TCiWCwsLqtVqlnPHYpienjbnH8dx9J3vfEdvv/22\n", + "5ufnTdlBQA1wITX04eGh+W+gTcRNHuU1DkKoVBiklMtli1K4vLy0Ic3du3fNeIb6l6gI0Amcn/r9\n", + "vpGoUGGT15JKpdRoNEzSRU1NTV4qlcyoEScoyjigNkk2Rk8kEiaURRne7/f16tUrxeNxi0G+yXWr\n", + "dma/36/19XUjsGSzWYOvYHqdnZ1ZAwYpRpJZ1RJVRtjMuK8bdaUka76wGUCgmc1m5fV6TUENkoJ2\n", + "EM82PDfw0wCB4Ne8R+pmhjrg0tSjuGjG43G99dZb5kfHqTE7O6vJyUkj8M/MzBhfghoYWA1cGucj\n", + "8r6hqSaTSc3OzioUCpkahc+zsLCgZDJpDw59CvYIxWLR4tbweJZkzXkikbBS502vW7WYJRleOt61\n", + "x2Ixc72nSSSrJBqNanJyUuvr62ZMAv5KDU4q0nhCEtAYQevo4dDEUeb4/X7zhpZkYgHqdWpHhKe4\n", + "EFFGoAph6IOnBlAZKVGUHjSwSMfwgwabHhee4v3M4GLcmwOCfqfTMTIWLkfY77IgUXdLsoaY7D8Q\n", + "Daab+IcA3xHuCUR6k+tWLeb5+Xm9evXK5DgMHSDDhEIhJRIJU25/9atfleu6SqVSqlQqptAOhUKK\n", + "x+NKJpNaW1vT5eWllQy7u7tGZVxaWjIEBGI7nfrFxYUNCwiDRzdHHjXTM+pjwoQkmT9cMpm0h4tJ\n", + "JQ8jDvnU6ZjDrKysmKAWfBkBLIuJGp7QeIYv0idBR3A3Jicnlc1mFY/HTdGOMyjTRdhyDHfIaykW\n", + "i1byABnCp5Zk6BNayZtct2oxS5906Oj9GCRAfEH9zM0olUp2nI/voHy57DQ0Rn6/35od/g3HJkQi\n", + "VODIhjglxp3hKUvAiDFhxL+t3+9f88bgs7GYeGgoncgQpKHEHoydniBOdI4wCXnQ8PdAHQKRioFO\n", + "sVg0PSETPH4+tTiuRxCfeEB5GMH+aaylTzD/cTeoN71uVQPY6/W0sbEhx3FsqMCxCiQ0GAyMnba3\n", + "t2ewFLsgQ5JwOKy9vT2jPw4GA62urqpcLhuMxO/t7e0pFovZDWLRQXnEUouGNJlMmpMQixlS/8rK\n", + "iilY4GTDU8YSDLMXIo2npqb0/PlzjUYjO31w/8QCIR6Pa35+3miyDJRGo5ERgYAfiRxmkoqAdXd3\n", + "V+l02pQ5RBsjICYyIhqN6t69e8Z79ng8Oj09ValUMo5Kr9fT4uKiqeeBTm9y3aqdeTxSjIhc3Nzx\n", + "O/N4PAaN0X1T89ZqNeuq9/f37bhmR0KxzOiZ+hU9XbPZ1NOnT23Awa7FzinJjmheh4bKdV0dHR2p\n", + "2Wzaboq6GQ72+IgYfzYml8vLy8ZJZqLGCYUXHBO3eDxurqVwqsGtcXYiQiMejxvllN+LxWLG2Ybg\n", + "32g07LOdnZ2pUqnYqXJ6eqpms2mqd8oSeN3g/j/cmccudhlqwng8bg0M1gMYm/T7/WtSqk6nY9ZR\n", + "77//vh31k5OT1vDQKFEzY0RI4+Tz+bS0tGSqZrBdJmqQ1TmWV1dXr5USGCrC9SVokqkj74dFzTSR\n", + "qRrcEhhsDD7QGPr9flOQc2LAM0FZAurg8/m0sLCgSqVi8W8MbYApEUCQsDWOEIEtI9TlhKP5HI1G\n", + "unPnjnl8cL9uct2qnRkmHGlMTK0uLi6u8X4hi2P4R8TX+fm5SqWScWoxDUQ1AT6KCyjNFDvk8fGx\n", + "7VRg0HT046y2TCajqakpPXv2TB6PR8Vi0cSpsVhM9XpdW1tb5n3MMEWSmc+wmCDQn52dmc1tKpUy\n", + "lfo4BjwajQzrpUHDdQiBqyQTClDuIHQlXPPVq1eGRzMVnJ2dNUgOD2dqfcS5SM56vZ6mp6dNZ0jT\n", + "+8Ohydh1cnKiSCSifD5vhjDo/cZDKWlgtra2FI1G1Wq1TMSJETk7yatXr5RKpVQul82nji8dp6TD\n", + "w0P1+/1r4TbRaFSlUkkLCwva29uz3R97g/PzcxOHEizEovX7/eZJgeJb+gQ7rtfrNvAAEmNUPRqN\n", + "9I1vfEOJRMIguWq1aq+P4TcPRL/f19OnTxUMBlUul62kITGAU2QwGMjr9erk5MRq+UajYUKCcSMc\n", + "pqUkTUFz3d7etrqcDQfr29FopO9+97s3uv+3ajEDHVWrVX35y182emM0GtWDBw/0W7/1W9Z0ZDIZ\n", + "y62DmkkE2dzcnJLJpClMwKTZpVzXtQkWJtxAXNlsVv1+X4uLizo4ODBJlMfj0aNHj1QsFo0Aj08y\n", + "tex7772nQCCgFy9eGCpx//59C9jMZDIKBAJqNBp6+PCh4drVatVKkuXlZbXbbWUyGbVaLb311lt6\n", + "+vSpWYoxoACtmJ6eVjqdNjcj1DR+v1/vvvuuITaIAegVJCmRSKhSqWhjY0Pb29taWVmxvzs5OWkZ\n", + "JfPz86rX63rnnXes6fb7/YpEIubpEQqF9M477+i3f/u33/j+36oyg0WGYz4k9LOzM33ta1/T7Oys\n", + "7UbtdtsciZrNpvL5/DUTxZOTEz158sSy8SgzSJzCSPvu3btGvBkMBjo/P1coFNLm5qYtjkAgYOhJ\n", + "u9223ZqckKmpKW1sbKharerjjz+2B2xxcVGVSkXPnz/XysqKYcEbGxs6ODgwLJsd2ePxKJfLKRQK\n", + "qd1ua2VlxUg+IC2gI5Is0erly5cm6K1WqxYKVCqVrKwaFwFg7HJ0dKTZ2VnlcjklEgnLHSfMB0SG\n", + "YQ/oED4fOzs7FhDUaDR+KGgdv4bDoblwVqtVNZtNE7biGwcTrNVqmUyeAPOpqSmVy2Vtb28bK0yS\n", + "kXywERhPFKWenpiY0NHRkRmOV6tV4+2yoOBFoL+jXi8Wi9rc3DSPDORLjUZDpVJJ5+fnJnWCNce0\n", + "jKy+jz76SJVKRfl83ohGW1tbNpIH48aajHE7JRYi13G1Ry6XU6VS0fb2tolqKdcgUVFKYAscDAZ1\n", + "cXGhw8NDU8OQMUiPQbwzzqLhcFjT09NaWlq60f2/VWUGU6vt7W1z0KGjd11Xm5ubBkvxRcKYg7wP\n", + "moAxNgYnkHZYyBydExMTZtAC0f7i4sLc6i8vL80bjoHH2dmZGo2GHjx4IOmKP8FwolQqGYRYLBZt\n", + "CIFZIpHJoVBIkmwYEg6HbTgCLDYYDLS3t6dAIGCMPmpcmH7wIWhYSZVlYY371DH8yWazymQyOj8/\n", + "N2dTuNJwLVjoL168sNE28CVOqPl8XsVi0RxQfxidNna5rqvFxUWz0fJ6vVpaWjLTvsePHxslFE85\n", + "bFrhaDQaDUUiETODAcqLRqPKZDLm1Xx+fq7l5WUL2ZGk1dVV4x1g0u3xeOw9YU3r8/ns9TBXgeRD\n", + "4A11tSSrz+FjU/JQpzNqRwmDRzMSr3w+r0ePHqnRaCidTmtnZ8dc/c/Pz22kjx8eE9GNjQ2bGsL/\n", + "CIVC5iOXTCYNhx43YZ+ZmdH9+/d1fn6uhw8fGlaPNx0CAcI0JV2btr7pdasWM4YjuPOcnp5qd3fX\n", + "AhRxPCInBKgOWqLP5zNRp8/nM6wUFQlWWPV6XbFYTHt7e9f8JxhlZzIZbW1taXFxUbVa7Vr5gPcG\n", + "devCwoLRRCWZoSMuptLV7pjP522BEsa+vr5upH8GLLDsGKVTwyJghUiFema83GL8j9UWAyG4yel0\n", + "2qBH1NW4H6G+wWw8l8tpcXHRdmJ25nFSEqcEYgBEA2963aqamYEBypLxXZLaDG4FRzIG5EiE4Cww\n", + "jUK2D6WRXYppI68xTrPkhrMLESYPnwP/NpTg0lXHDwRHUBC7NX4bYMzT09NmDcC4GBIRsiUWsNfr\n", + "NVoowltG65KMoTfu98wuSTgoZRaZLQxqgC+xtB0MBlaiQayampqyMTx2YVgN+3w+k6zx729y3arF\n", + "HI/HjZEG7bBardrCbjabOjg4MNJ5sVhUJpOxkTYO+Nvb26a6ZtfhhkLCIR4CV85er2dNFXKmdrtt\n", + "XhLAeoxxJdnRDHoAAw4eBkHqPECVSsXgPKwOUJf4fD69/fbbSiaTyuVyCgaDyuVyqlarevr0qY23\n", + "MVAkywUUA0cnRAOocUhT9Xq9JnCQZPxjsklwZmIYhVodOwLYfjTNDHZozpGk3eS6VWXGxMSEwU0r\n", + "KyuKRqN6++23TZ6D5RXZfUtLSzo+PjZpVCKRsFIBvJkdlx0JP2HHccwbGUI9tTYNITwRZPZ4MwcC\n", + "AStfJNlxzUPT6XTMGGY8FwWh6rjjJiPp6elpFYtFw2slaXl52XZ4HDk9Ho9KpZI8Ho9CoZAJDPr9\n", + "vrLZrCEvvV5PqVTKyFIYvUhXPBdsAxYWFhSPx014gKIb43DeIwsd2RrUUUSx0WjUxttvfP/f+F/+\n", + "AF4Q0sF5O52Ovve97xk/oVqtql6vW2xupVKxnDpJJj/66KOPbLQ9HA61s7Nj4e0sZBYinGLqWBQg\n", + "uHsSwTBO6YSFxy6G0Tm4Mw7/lUrF4seoYfn3QG2gDHt7e1pYWNDZ2Zm+973vqd1uq1gsql6vG76L\n", + "KxOG4L1eT6enpyoUCjo5OTECfrFY1OXlpQqFgvL5vH0OfOGgDcByY3JIuUWQD73BOCGrXq8b2gRe\n", + "PzMzYxYNN7lu3WImYzqRSJiCGu0cR/3MzIy5djJpc11X5XLZ9Gho+uA1o9rArYd6OBqNand3V5J0\n", + "584dDQaDa8LTi4sLpVIpMxAHzuLYnZqa0vz8vMLhsM7OziyBCYNC6n0QBwwXKXvOzs5sdx0OhwqH\n", + "w8pms3ZyzM3NmZ3A8fGxDZZGo5EikYipPcbRDyKTSQUYjUba29szwQN8bVCcmZkZw6jZnXE9IrEA\n", + "O9xUKqXV1VXNzs5aiTU5OaloNGrigje+//8mf9lxnElJPtd12zd61c/oopnr9Xp68OCBqtWq7t+/\n", + "bzslLjqxWEyXl5eanZ21YMdyuaxwOKyZmRm9/fbbSqfThkhAQoejkclkVKvVzAfi3r17NiHDMJAY\n", + "Bb/fr9XVVSsLgK/wiFhYWDCr2bm5OZ2cnGh9fd3QFDjAPHShUEgnJyeKRqPKZrPq9Xr2v51Ox+p/\n", + "Rt3AdJREBGhyOgSDQSUSCUMTHjx4YIt9bW3NHv4/+2f/rIW4wyQEIqR8I/QSuzJQEHSQ8/Pz9jDg\n", + "WgrRaG5uTnfu3NHXvva1N77/f+Cj4DjO33UcJ+g4jk/Sx5JeOo7zX7/xK36GFwgBEnh8g6n1RqOR\n", + "qZilT+KJIeBQd1J6IKfCzZOdo1arGaTHRG58V4FiCl+a477dbtvuzBEPEsDi8/v9FolAljZTQ/Dk\n", + "hYUFKxcYyrA7MrAA2SgWi/a61WpVPp/PLAWoc3O5nPkw8744vcDZ9/b2VKlUJMkYfvl8Xl6v1+wK\n", + "mHoCc2IGSSMNH3p6etpw62KxqE6n86/4X7/J9Wn29Yevd+J/X9I/k7Qi6T+70at+RheKEfi01MJg\n", + "n/jHccQWi0Xt7e1Jkg0PsBxgIUBrhAbJkARuNFwHOnsoleTqAcUx5Rt3l2cBIkbF7gt4DGol4gDY\n", + "bozF0fV1Oh21220zLWQaiFSp1WpZA0qTjGP+eMoUAyV4JuygXOOGMyhuKEMYlvD5eMjYib1er0Uo\n", + "YyDp9/vt9UBJbnJ9msU85TjOtK4W8z9xXXcgyb3xK38GF+UEEncYc6hLJF07chcWFvTOO++YoBTB\n", + "6Y//+I9rNBpZ/QzKgS0rZCPootls1hY2+XhQUDkFwK2B1hh5s7jAXAOBgNbW1q69d6xqGV0Ph0Pd\n", + "uXPH/D7AwiHL83qhUMgUNYhPMXxkUfr9fq2trRksCcrh9XqNc8J3kc1mFQqF9KUvfcnyUeB2SLKY\n", + "NOwP4HlsbGxYc0gpRynDgg+FQjc2Tvw0NfOvSDqQ9FTS1xzHWZF0M0DwM7pwITo/P9fu7q6CwaC+\n", + "9a1v6Ud/9Ee1s7NjyVGNRkNf/epXdXBwYP4XENJrtZp+/dd/XV/5yldscre9va0f/dEfVbvd1v7+\n", + "vkFZhUJBmUzGDAr39/f13nvvaWZmRrlcTplMRtlsVt/85jd1//59mxYi6sTIGyQgHA7r4uLCnOsR\n", + "B1BrDwYDPXjwQJeXl/rggw+sbsachViyr3/963r8+LFFyOHk1Ol0tLu7aycLusO9vT0jy4NaLCws\n", + "6Gtf+5ru378vj8ej58+fG2nq8vLSaKfn5+fa29uzkwtvup2dHX3uc59TPp/Xhx9+aDK0arWqRqOh\n", + "5eVllctlzc/Pm4XBd77znRvdfweN3Kf+B1cF6NTrHfoH5nIcx/2Zn/kZG3KwG5dKJWUyGZXLZdVq\n", + "NcViMcukgxA/btDCIiMBCWdOJEfVatXQEca0kHQocwimxMibB2Z6elqVSsWQEgQBHPdg4EwLOQGk\n", + "q2M9Go1a/Y9hYjKZVKlU0vT0tOr1ujKZjHq9niEY+N01Gg2FQiE9ePBAh4eH18oMJpypVEpHR0eG\n", + "L+fzeVOQFAoFK6lWV1dt3P7WW2/ZRoHxOY6ed+7cMSLSYDCw8ofvrNVqqVQqaXFx0T7Hr/zKr8h1\n", + "XedN1sAfuDM7jrMr6VuSvi7p667rPpf0A7WQucYd8V+9emV2rPV63XYvgs3ZUWGP+Xw+80A+ODiw\n", + "iSGEdLBe5PfYaY3Xw5QP7XbbRr0gHgTBY1VFmCZ0yng8rmKxaDUu0iZifsFjoazm83nFYjGLESaI\n", + "h6FHvV43K4JWq6WNjY1rhurU4zShWAgMBgOVSiX5fD6DODGkGadvLiwsmAxL+iRQlFE3r4tTKqaU\n", + "ELtAiHBXgl56k+vT1MyPJP1vkqKS/gfHcXYdx/nHN3rVz+hijIq4k8YEISocAXYHJFWYgY9GI8vZ\n", + "4z+OzfEAHbSAKysrymQyJqWiHq/X6wZZkfREcynJCPxwIaLR6LXBiHT1YFLnX1xcyOv1WkYgTRm2\n", + "X9iDjUYjLS4umuZvPMxnOBxeS62lSWPnnZ2dVSKRsHQtvjeaVTwwELvyWYDnAoGATTah2PKQU6/j\n", + "N02/QFnI93/T69Ms5ktd7cRDSSNJNUmVG7/yZ3BhLzAcDnV0dGRJpohJga2oXaPRqD766CODnsbh\n", + "MgYY0WhUuVzOEIGzszNr8hCwglocHBxY/Ytx9vHxsdnXMinETRRjlXK5bLwLGr1ut2sWr6TGMv0D\n", + "m6V8IOmp0+kYf6JWq5kRJA78LCgmjIy5MYDBEBI0A5Eru/yzZ890fHys4XCoFy9eWHxEv9+3GIfh\n", + "cGjeHBD+KbNQgY9GI21vbxs2jdsopd2bXp+mAWzrCl/+HyX9Ldd1bxZw/BleGK/0ej198YtfVDqd\n", + "NrPDRCKhcrmsVCplqMP5+bneeustxeNx4w0EAgEzCccHIhaLGQ6cyWRULBYVCATMwQdoKx6PG2cB\n", + "HgX5eKAY1Lqzs7NaW1vTxcWF1tbWNBgMbHTNZBHXUZw4KWP6/b7eeecdY7/hjg93RJLtntTY4Mjv\n", + "vPOOcrmcPVxM6nhwcB0KBoP64he/aMw7ThnU5YyyOVUQKqyvr5sPx9nZmXw+n+7evau9vT3t7e2Z\n", + "sQxmOB9++KGSyaQZM97k+jSL+T+W9Cck/VVJf8VxnG9K+prrur95o1f+DC52AVhaHo9H29vbevjw\n", + "oQ4PD804EecfLGPxlaD5+fa3v6379++bEvni4sJYbNSweE8sLS3p8PDQUAqiziqVih2fqL7JBOSI\n", + "HzdEJ9i9XC7b0AfYamtry6y0Tk9Plclk9OTJEz18+NBGy/Pz82YVViqVDFk4OTkxK7BaraYPP/zQ\n", + "6npOiidPnpiqptVqKRqN6uLiQltbW8pkMrZj+3w+1Wo183JmkYPIzM3NWaJsvV7X+vq6Tk5O9J3v\n", + "fMdOQp/PZ8kAT58+NTKV3+/XN7/5zRvd/z+wzHBd9/9yXfe/kvSfS/qnkv6ipF+/0at+hheiUtTH\n", + "1MnjvGK4vpOTkzo6OtLKyorhqhiTo22DTI4ok4YxHo8rlUoZooEyHK5yIBCwwcm4uxBORpB3OKaZ\n", + "usE9Hsdfl5aWzNwGhh0DDZyO9vf3bVERKeHxeBSNRlUsFrW1tWU7+Gg00t27dw01YfHCN4GHDKtu\n", + "cnJSzWZT5XLZegmGIoyyQXJwB6WcgArK73U6HS0sLMjn85lglzKQz/6m16cZZ//D14jG/yzJq6vp\n", + "382r9c/g4sgl9heerHQ1HSRllAUZDAaVSqVUrVaNcQeRCPYd0zJ4zBi8zMzM2ESLnGomXTDHfD6f\n", + "TQ/hNAyHQ6sTEZdyJCMuwNqAEwYUArZaoVCwYUa9XjfOBGQfTF3QREYiES0uLlrje3Z2ZoFAYM7I\n", + "tcbVNxi57Ozs6Pz83EoLOB7AcODYPJCSzLXUcRzjsbCYSQmo1Wq20OFS3+T6NA3g35R013XdP+W6\n", + "7n/ruu5vu657M4vzz+jCOBvZOugExB8QhnF8GPyWKx6Pq1armamh1+u1rEBonFjLer1eSZ/kcdD0\n", + "kd1H6hTlCfo6iOh4zGH7Ct+5Xq8rlUrZLogNeCw8AAAgAElEQVS5TaFQsIeLnzU1NWVc4ZWVFUMr\n", + "BoOB9vf3Va/XDa5rNBqqVqu2YDm9xmN/m82mUVkrlYq63e61NNZ2u61wOGyeIixqWICIdxEUtFot\n", + "RSIRHRwcWMwbRoyQp0Ch/jC4GU8k/Revd+h/6DjOT78eb//AXbj/xGIxrays2JGJ6iQYDJpDKI0S\n", + "quDJyUlDHfr9vqmf2aV8Pp8SiYQNBxhPM+iQdC2x9OTkRPF43LDUcZsuJPlo/DY2NqwEikQi8vl8\n", + "Bl2xW+EC5LquEomE8aXBx1FTp9Npe9+xWEzxeFzLy8tmWEieYbFYNH4IavN0Om1xE6hdKJUQBnM6\n", + "0AeMfw/EOMzMzFzLZuH98LNQ80hXQoNIJKJoNGo9xJten2Yx/6+SviDpf5H0y5Leff17P3AX7kPk\n", + "0bXbbQP6ic+VrjpwZEhYZ1Fro4JGesWuAZkebjFMNgYFXq9X6XRax8fHlgHCkYq6mlNhdnZWzWbT\n", + "rAsQw+7t7dnRz3iYnZNAGwYelC88hOScYJlFP3B6eqqdnR3LYGG3h7M8PoxBqAuNFvErpQTWuuPJ\n", + "t/Qgkoznzfssl8vGL5+cnLR8FcdxdPfuXbNQQKp1Uw3gp0Ezvui67ttjv/4tx3Ge3uhVP6OrUqlo\n", + "aWnJGirAe3a6cDgsx3GUTqfl9XoNVqLOJKB9fHDgOI4x5SAiDYdDa5jgCxOnOx7T1uv1bHQNzg3f\n", + "eH193RAM1BycBrwnhKEQjIimIIAH5GZ6elp+v99chOr1ugKBgLLZrNndQpLHUZ/xOoMTSQb1jYt1\n", + "edCAPXFA9Xg8RtACu6fkoQEOhUIKBAKWq0hdf3FxYRtENps12PMPIzrt0nGcDX7hOM66rgYpP3AX\n", + "ZQCIAmJTal+YYi9fvjQzFnbRO3fuWLAPI1oSq5rNpvkeM1XMZrOW/wFhKBAIKJlM2kMC/4HxNgrx\n", + "drutSqVi1gZEl0FgBzWZnZ01jw+EuugNB4OB4cHEU6TTadPvMQGdmZnRs2fPbKfl4VpZWZF09eCM\n", + "/yyEuKhXsBNj55ZkJwzNLLwP6nl415RomUzGQj1pSAOBgNbX1+0hpQe4yfVpduafkfQvHMchcn5F\n", + "0l+60at+Rheq54uLC3OPJ7Ac21oUI+wU7Lj4nVFzM3LN5/NaX1/X1taWwuGwxYvRCBKbAA/5448/\n", + "Nlck5PjIryDHY57SbDYNvcDUhZvKTk4TxaQRe15JFqg5MTFhYlRscSmTpqamtL6+btO8cVsu6RMn\n", + "I4Sl+HtwCgQCAfOci8ViVgZRe/PvhsOhjfvhdvNaW1tblnTL7g0ve2dnRxsbG4rH4/awvOn1aXDm\n", + "35J0V9Jfl/TTukI2/sWNXvUzuiYnJ6+hApj/4Q/XaDR0eXlpTQ7qj8vLSxu99vt9G4hgmHh4eGg8\n", + "CZQS2OWizmaXx9YL8vp4/BmiAUSkXPh2jCtY4AqzKAnrxC631WrZwwvUxt+p1+v2HyNu+MNgv6Aa\n", + "/X7fKAAEc5IQUKlUjIBUq9VUKBSuiXJLpZKdeM1m00oHIMVAIHAtPZamm/4EvB5K6f7+vm5y/b47\n", + "s+M4/6GuSPiOrpPxN14/tf/oRq/8GVyMbi8vL/X2229rMBhoaWlJ6XTamg4sVfv9vvlM4I8GC45S\n", + "AcL+j/3Yj1lgfDqdVr1eVzabtag1auHxvDvc5hOJhGHR8/PzCoVC8vl8SqVSFmsMlLW2tmYnCF55\n", + "aBaZHHLEJ5NJcwKC7ENdOzMzo0wmo+fPn19LsyI/vFqtanFx0Wr+xcVFtdttK03gayCMDQQCWllZ\n", + "sbgLSfY6w+HQ6JvLy8tmfr6+vm7aRYYuWOAyGWX8jqrmvffe07Nnz974/v/rduZ/5/V/f1nS/y7p\n", + "P3n93996/Xs/cBcWtgxP4Bng3bazs2OcW3ZNwPpWq2WTMxYNu+7e3p5BZVNTU3aT+/2+0TPZlWh6\n", + "gsGgDWcQjmLYQtcOGoHhIMYzoVDIOMWXl5fK5/Mm8R9n5925c8e8PUAqGHS0220tLy/bEGM8FBPb\n", + "LgzE9/b2bGGP8619Pp+9Byx8A4GAPB6PRTLDzgsEAsrlcpqenlYmkzGjSGifEPs9Ho9xQSYmJpTP\n", + "5027+G/Krf+91++7M7uu+xclyXGc39CVDrD0+tcLkv72jV71M7oqlYqSyaSVECAHBM5IMoYZpoGN\n", + "RkPJZFJTU1MWAww3gsECJQPBkAxUUGBLMltclB08WIhsqSNBRHAqwv4ABAYIDkhQuoISG42GxRrD\n", + "UvP5fMbNQLoPOQrMnCnhxsaGBcjTsJHPAmIBUT+fz5utLn8nGo2arx0Kc3ysa7WaFhYWrLkDosNg\n", + "cRzqk2RUgVQqZRAm9fdNrk/TPmYljbOmK5JuZqT7GV3pdNo4tHAvaM4wXEHrRo3YbDZtosZuDjYK\n", + "LopLT7fb1dHRkR318HQhL6FgwQgR/gVKC8hAKEDOz8+ttse8cGJiwh5EYKyjoyPzNwZflmTlC2Y1\n", + "+NAhTn358qU1i1A7cWaCv8L7Pzs7U6lUMtHtzMyMeULPz89re3vbhiRwj4EnM5mMhYLCN0H4wJS1\n", + "3W7r7OzMMPbl5WUTQdB//GHEDf+mpP/HcZy/6DjOX9IV2eg3bvSqn9G1tbWlUqlkit+TkxO1Wi3b\n", + "mVkMNHzJZNImhChRMPIGXmMkXSwWDYIjehi1Bg2jx+PR0dGR7V5wfyHTHBwcSJLBhghG2ZHZDaem\n", + "psz1B1jP7/erUCiYRhAsmiYN3gcpAJJs4uf3+20xEXLfbDYlSYeHh2q329rb29PKyoo1qgx3Wq2W\n", + "jo+PTUlDY0mJAg+EOpgGkvg2fPFg1x0eHqrT6dgw5vj42B4O3tObXn+gBvC15u8/kPRjumoEv+a6\n", + "7v95oxd1nJ+T9J/qiuz/sa6gPp+kvydpWVcC2v/Idd3W2N//y7oSCPx113X/+ff5me5P/dRPaXFx\n", + "UdKVjGhpaUnFYtG8NAqFgk3QyDM5Pj7W5z73OYPNyOWDJUZHjmvl7OysDg8PLUN73HCRJoudmweF\n", + "cTYTQyiV9+/fN3YctExSVsdRF4hHNEosHCaDKEn4XNT7eGdsb28bHPn5z3/eRKXhcNhKs1qtplQq\n", + "pVKpZMGY7My8TjAYVKVSUTabVbFYNEUP/iHkpXi9Xm1vb9s0dWVlRYeHh6pUKuaSBEvu29/+tjKZ\n", + "jJUnP//zP//ZaQDdq9X+j17/d+Prtbr7r0h64Lpuz3Gcvyfpz+tKnvUbruv+947j/DeSflbSzzqO\n", + "81DSn5P0UFJa0m86jnPXdd3R7/3ZKC9Go5F1/+VyWaurq5Z5DUqB3xrEpMvLS+VyOUUiEf3u/8/e\n", + "m8RGmqZ3fv+PjGBEkIx9j+C+JXOrrF4wXdOC1GrBGvukMWADvowxNnTTwePlYBuQL9bFbWAGXgAL\n", + "sC0bmsPIkAFjoIPGGEEQ0FZ3Cb1VZlYWkzuDZARj3xgRDC5Bhg/M31PBbnWjkVRrWkR9QKOyM8lY\n", + "3+99n+f//JePP9bS0pLVcqiwHccxmyp2H+rbwWCgZrOpRqOhubk5G5H7fD4dHBxYfYi5zNjYmB3N\n", + "uF/m83kbN4fDYR0fH1vO9M3NjRYWFuwxX716pUePHlnjR24htSo3yPBd9C/ko52dHXPhZ1S+ublp\n", + "ZU2j0dDR0ZE++ugjvXz5Ul/+8pe1tbVlnyelA3rG6elp5XI5czwdHx9XqVTS4eGh0um0Go2GhRJh\n", + "w9VqtXR6emqNbTgc1tnZmba3t++1tn4eCui/5zjOjuM4p47jdN797z72XKe6lWFNOo7j0i2t9ETS\n", + "b+nzxvIPdevTIUn/UNIfDYfDq+FwmJO0K+nv/XUP7HK5jPZIbDDcDGLIOGqpH6mXwYcZYsBpLpfL\n", + "SiQSVh9PTEwYMZ1mklDLVCplahV4FRMTE0aCZyxMnAM7MDVwKBSy0qNQKFhkGfRNOn7KF6xoQTiw\n", + "2GKCyEjZ5XIZ6WpsbEyRSOTOsIgbiM8PEev5+blOTk4sBQB7LSRQpGxNTEwok8nccUh1uVxGBZie\n", + "njbSEoY1jOHpI3Bqvc/189TM/72k3xoOh4HhcOh/97/A+z7hcDhsSPqnko50u4hbw+HwzyQlh8Mh\n", + "2sKyJDQ0GUn5kYfI63aH/olrNOcDDgURDNAWs9ms4akgGEBdmAjSFLlcLqVSKUkyGumTJ09MHvWl\n", + "L31Jbrfb5D4TExNaXFw0LgW85S996Us2QUOuhA4wHA6b7xq+yVBDgel4rPPzc83NzRm5nXKC/Oxo\n", + "NKqlpSX9+q//ur1u3lsymTS23agIIBQKaWFhQZFIRPPz88pms0qn05Zqtbi4qLGxMeMuM63Euovm\n", + "lR6AhCmMeCBiBYNBra2tWVTx9PS0VlZWbCIai8XMVuF9r59nnF0aDodv7/UsI9c7bsd/qtuxeFvS\n", + "/+04zj8a/ZnhcDh0HOdnFfN/7b/lcjlTSxQKBfN7WF9fty9iZ2fHdqdarabd3V3F43Gr/1qtlmGt\n", + "b968MQ4HOxKPe3x8bMcukzTsvJDdY9n68ccfy+VyWWOaSqXMhRT8eGtryxTR7LY4ikYiEeNGcDoc\n", + "Hx/bgiyXyyb/L5fL+t73vqdkMqnNzU3Nzc1ZPTwYDAwVKRQKev78ufnModxmihmNRvXZZ5/ZuH58\n", + "fNy0j3x209PT8vv9JqAFyoTfjRNSt9vVycmJ5ufnbWqaz+dt6MK4Hqu0971+nsX8g3d17b+UBOF0\n", + "eI8J4FclfXc4HNYlyXGc/0fS35dUchwnNRwOS++w7Mq7ny/oFh7kmnn3dz9xofxgQvb06VNjZlUq\n", + "FW1sbGhubk67u7uamZmRx+OxwUM8Hre86lKppLW1NZuKERLZaDTk8Xg0HA5NfjQ7O6vvf//7Jvkn\n", + "ShgvuIWFBXMdlW5LoVwup7OzM62urhrSMjs7a+UDsv1RAWu/31cikbBdkpNkcXFR+/v7qlQq1mgW\n", + "i0V5vV6trKyY9g8vurW1Nb169UorKytyu93mMkRcA7+bTCZNCbO0tKS3b99aRgkuS61WS9lsVvv7\n", + "+xbtgHQsFApZNjgDmePjY62urlqkxfj4uF6/fm0sPKaH73v9PIs5KKkv6R/82N+/72LelPTfOI7j\n", + "k3Qu6d+S9D1JPUn/WNK33v0Xb44/kfQvHMf5Z7otL1bf/fxPXN/85jdVqVRssibdTr4gvTNOfv78\n", + "ucbGxjQ3N6fx8XEtLS0ZZIdwtFgsanZ2VuFwWLVazSRBREokk0ldXFyo1+uZZEi6zc6bn5+3o31p\n", + "aUlbW1tG7mGxj3oSb25umrr7+PjYXgNum9fX10qn0+p0OjZZzGaz8vl8lgkeDoeVTqdVq9UUDAbt\n", + "5kHVQZkC9ZObEY860rdG6304KOPj44pEIub8hA6RCR/E+kQiYQQsBLn9ft/MbpaWlgz5YKDzG7/x\n", + "G4Z6FItF7e7uvuey+vnQjP/ovR/9r3+8V47j/HNJP9AtNPcj3ZrM+CX9seM4v6130Ny7n99wHOeP\n", + "JW3olnr6O8OfgifCkzg/P9dnn32mpaUli0YoFApGsCkWi1pdXVWtVjPZDyoJLGWR+kMgf/TokarV\n", + "qrHJ6vW6Go2GFhYWbHgBCgC2HAqFtLe3Z1wIkJFoNGrxZYRnJhIJ84vrdruqVCpG1ul0OkbKAZMG\n", + "GpuamtLV1ZWZpXMiEOaDQIGPDGbg69evtbCwYDZZnU5Hy8vLpo2kOYQNSAkCBAjllWFNr9ez0mHU\n", + "GHE4HFqjTAxFoVCwcpBGEGLTfa6fijM7jvNfDofDbzmO8z//Nf88HA6H/8m9nvlv+AJnBiP2er2W\n", + "M724uGiTMHgYNFe7u7taXV01dtz4+LiZeUPHJGsalKHf71tWNf4a7HLdbtf4C+Pj40okEvrkk09M\n", + "ZzgYDBQIBNRqtcx48OTkxAY1IC9MJnl+wi7x+MCTAt0j+LXf71etVtPS0pLevHljzyXdNnvo8SKR\n", + "iN24PCZEIfwvXr58aQ79KFJIaJU+l2gRdcHOO+qPnc/n5ff7zY6XIdH8/Lyazab6/f6dsfy3vvWt\n", + "XwjOPOE4zt/TrfvnqDjrx1l0vzTXqJXs7u6unjx5YpyHUQiKpNLPPvvMfM7wt7i8vFSpVDLvB4g0\n", + "WFQh82+1Wmo0GsZ9htBEehOlB8c1Uy/Ce0YFnEBz4L+gKUi/kGmxWDFDhKtNc8hxTm1PY1YqlfT8\n", + "+XNb9ChlENd++umnhgCBR/PYKEd4L5wWkPIjkYhlfR8cHFicBWJiXg8TRDgsjUbD6LDlclkLCwt6\n", + "9erVvb7/nwXNhST9D7qF5n5b0rqkhqQ/GQ6Hv5REo0wmYx/awcGBJicnDXW4ublRsVg0eiVj3lar\n", + "pcnJSe3u7hrMVqlUDIdmQEHADf5wNGBgw71eT3t7e5qYmNDCwoLtlBzPfr/fund+FhSEkyCdTtuw\n", + "BUoqo3HqWBYVvGS4DdTNOPOz642KTIlo43E4lSEpMarHibRSqdhkkzKt1+tpeXnZNo5R1iEsRZpO\n", + "r9drPUw+n1coFDL/Ed4PAgBU6fe5fhZr7r+QJMdxPLpFIP6+bsfO/6vjOK3hcPj4Xs/8C7iYTEnS\n", + "8+fPTaqDKSByonQ6LbfbrbW1Ndt9+QI9Ho+Wl5cVDofNRIVRMCJNiEeYwFCzosQIBAKanJw0S61k\n", + "Mqmbm9tMasJpGCLAFgMhyb0LWE8kEtbI4teBWhtFNqcJCbHhcNgcO5H8w1uGjI8OL5lMGj6MBRe5\n", + "K4RkRiIRM3ZJJpNGKGLSyEmDGh2qK6mrCGD5/V6vp3A4rEgkYoQpPluv12ul0fteP8/QxCcpoFtU\n", + "I6jbQcdfvfcz/gKvWq2meDyuubk5Cz5H4FkqlWyQcnR0pMFgoJ2dnTuY7tXVlXK5nOr1utrttkWt\n", + "sdt7vV4tLCzYIj4+PjbqJCJO+M21Wk2rq6uWk3Jzc6NEImEyI8bUOCZVq1XDji8vL7WxsaFOp6NW\n", + "q2U85e3tbeN91Go1GxPDad7Y2DAiEXYB3W5XzWZTa2trCgaDljEofX7zAzeCSlD2sPtyopXLZQUC\n", + "Ae3s7Ghzc9MQknK5bAxBmsV2u23BO5CgGOHzmmn8rq6urOm9z/VTF7PjOP+b4zjfkfR/6XZX/q6k\n", + "f384HH5lOBz+UmoA2WVoKtxut03cqDX7/b55JqMSBttF8AlzjMYHeKzf7yuXy+nw8FC1Ws1G4YTG\n", + "A0cR9jg6OIDX6/P5VC6XzSIWJTclAg0kMi2GJBMTE0qn08ZTZmDB1HM4HNp4fNSTg7H24eGhMfLY\n", + "RUebZEnG/Gu320ZpdRzHxvzU1NlsVrOzs8YhwSxytE5OJBKKRCImmIWGC8JBw7e9vW0MPV7z+14/\n", + "a2eek+TRLZe58O5/rXs92y/4wuSFLBCQAZqw5eVlI9l7vV5lMhn7kihJ4GjgjE+WXigUUjqd1uzs\n", + "rLLZrJaWlhSNRrWysmK7NlwEMNt4PG4LJpPJmEUV6auEBkm3w5R4PG64ONFk3CTRaNRG0tFo1B6X\n", + "GxBVOgKC09NThUIhPXr0SIlEQrOzs5qfn5fL5dLc3Jwx/iRpbm5OLpdLyWRSw+FQS0tLCgaDhstP\n", + "T0+bMfmoAQ7vB6V1PB43/JhyLxAI2Ag8lUopm80qmUyaEfvz58/tPT169Ohe3/9PXczD4fDf1i2h\n", + "55/qFr34z3U7DfzXjuP8t/d61l/QRb1YLBZNY0bjBYeZY5whCObheBS7XC5ls1mbCgK9wa6jbqX5\n", + "AT0hMpcsPhZ0rVYzr2VixChtwMXj8bg1Z+yYNFCRSOQOBHZ2dqZKpWJcYgYbyWTSbmZ8j+fn5++M\n", + "4tvttlZWVrS3t6dYLGbeHmNjY0qlUmbs2Gw2dXZ2ZkptjBLx3lhcXDRCFwY3YOGxWEzJZFIfffSR\n", + "NaDT09Om/mF0DbUWES285/tcP7NmHg6HN8Ph8FPdRqb9K0nfkbQi6Z/c61l/QRfmgzgYjTptgr/i\n", + "gxwKhVSpVOTxeIxUhMHf0dGR7XZut9sk85i54HHBVIzamYw+mjUYbJDPCcUh4oEjHstcsGp2O+kW\n", + "thsOh4Y7M1kEm2Z3Zrrn8/lMNABEdnx8bKbn2IXBCgRaq9VqdxIAaArZ4aGT3tzcKJfLqdvtqlar\n", + "3Qm+9/l8qlQqFi40ekJKsiEP1rahUMgyGPHiu8/1s4Ym/0TS13VbLw90WzN/591/3wyHw+t7PfPf\n", + "8OU4zvB3f/d3Jck6bgg6a2trKhaLajQaSiQShhsDSZEehUlLpVKxjh5KJvIpbABYlNiBwaOQZISl\n", + "0dfAVA0tHPwR8kngXFSrVYXDYfOP5nkbjYbVmYhgM5mMOfoXCgW1Wi09evRI+/v7pphGroWiA4Ep\n", + "3GPgNho1vEWy2axOTk6sJAD3pi8YDoeWYMXJNhgMzBQnn8+bwypZM+Pj44rH42a2zgQWJKjZbOoP\n", + "/uAP3nto8rN25gVJfyzpo+FwuDQcDv/RcDj8/eFw+OqXbSFzEUbJUILdh66eQQVfHmppHI9goQE9\n", + "TU9PGw+ahYpjEMoIVCxwFQjj8Xq9VkdTEuB3h4UXsiK0e2dnZ5bJR1Ks4zjmnwH1E1kTY2iIQpeX\n", + "l8rn80omk8rn88pms3bz0oQ+evTIfC8g5yOoxZXT7/fbScWgZHd3VxcXF2anywib3bxYLFrDCNmI\n", + "RhAJGjpHCP6SLIUqEAjcO9fkZ+HM/9m9HvnfwIV9QDAY1Pb2tpaXlw3yoXYEevL7/frOd76jQCBw\n", + "R/rU6/XMOqtQKCibzaparRp6UK/XbUzLrsNjIkCdmppSu922mIfd3V1zHALFoKtn6oiAFJcl0AG4\n", + "FX6/X2/evNHMzIzGxsaMbhqJRCxjm9ff6XQsiYrBDM1as9lUPB43Fh2vidH5qO7QcRydnJwYtk0Z\n", + "QKj8ixcv7AaAmM+Usdlsmjzq5uZWFFQuly1KAl7G6Ibx8ccf3+v7v5+51y/ZValUzHkSGIvFygJi\n", + "8oTJYqvVsgyRVqtlzu9+v98GLEiVLi8vNT8/b7s5gerj4+NGREdAyyABf7jz83OrVfv9voXY0PAR\n", + "nM4OGYvF7OZgcSwuLtouGo/Hjdgvfe5NDQLCe4WHUq1WzdUU3BvzSEjxbrdbU1NT5pkMwZ7auV6v\n", + "G087EAioWCwaJEgsHQ01Wkr8RdrttiFDICOodkCR4vH4vb7/B7WYGWrwBeKNAUoRDAZtiII0KhKJ\n", + "2OiZ0gAiO7Xf6uqqHcmkOEky0jrWAktLS1pdXZXP51O327XYNaIggKvw0UilUjbKlaSPPvpI0q16\n", + "u1qt2kJPJBIKh8P2vjAoxB2IiRuUUrgVwI08FnpFOBJAl1A7MU+PRqN287NrEiUMi47YtouLC+Mx\n", + "Yx+AYSRIkM/ns4g2DGUkqVqtmicgNNP7XD8Pn/nvzOVy3b4dMGTQiNEMQBQShNaQucHuGI1G7e+g\n", + "QJIDPYowsIMD9ENOpxkCQ/Z6vXZEA235/X6Vy2VrwIgtY9diRI5gdHp62hpWxs7Y0DIahzQfCoXs\n", + "JsBay+12G6cEngpeHzwHI3IQEPB27L+on8lKoS/gfbbbbaVSKRu4MKhCUIu2Ei1lMBg0qBI73l/k\n", + "0OTv3NVqte7IkDAXqVQqyufzev36tQaDgWX9vXz5Un/1V39lmXws/N3dXZXLZaudX79+bRAY0iE4\n", + "E9TR5+fn2tnZ0e7urprNpvb399XpdFStVnVzc2P4d7fbNfMZIK1YLKZwOKyNjQ1ThdBYVioVFQoF\n", + "5fN59Xo9bW5uyu12a39/X2NjY6rX6+p0OiZurVQqOjk50Q9/+EPbpev1uk09p6amrPzAQvbt27cK\n", + "BALK5XI6OjpSv9+3XgP0BK4F8GK73TbokRiLra0tG1BtbGwol8uZVAxCErs4sF6hULBk2vvwMqT3\n", + "yM7+Zb0cxxn+3u/9nunbqJkxALy4uNDW1pbxIzAM/NM//VN97Wtf09jYmH3YLFhJtnNWKhXDRePx\n", + "uHEWRt192E2heUI6qlQqluTabrdtWMJJ4nK5LMYNhAXkhb9DdQJ/YjRagjLl7OxMkUhEx8fHCoVC\n", + "BschUCB+AkRh9GdHA3jOz8/tZMtkMuYw6vV6LeD+7OzMpGTU5PBPCOKhyQUxgYQEzRWjnEAgIL/f\n", + "r2q1qt///d//xflm/F26cPicmpqyTD8avOPjY7OMAq/99NNPDVe9vLw0NcTBwYGWl5dVr9eVTqf1\n", + "8uVLra6u2uLr9/t3jAxZxEQa4GcB3MZjs/BGx8+QdVwulw4ODowEFIlEdHJyYtq4wWBgiygUCunl\n", + "y5d6/vy5TecKhYI5arKT4pMnyX4OxAOe8c3Njfb3902Eix9dMBi08Et8LqiDCXDHnBGuCqXKYDDQ\n", + "ycmJKX1Aas7OzpRIJCy5C2FCJpNRr9f7W8nO/jtz8aHlcjnzktvf37fdFd+K0S5fktrttkFz+NDB\n", + "FQbG83g8llHSarWMgYaTPVM3BiPNZlO5XO4n/Juhh4IKjPows6DAxbGDRYlBWHq9XrcEKI5xXI4g\n", + "5CNIiEQidgMx2CmXy9ZEMjUcdS6itLi8vNTx8bH5fmAkjsv+xMSECR7A5cHkGdlDfuK9jGL9pNNS\n", + "htEgv+/1oBaz4ziKxWIKhULmx0beCMaBlUrFuMv7+/t2BLKIgdP4kjD0ZjyO9wUjc9hl5+fn5i3B\n", + "okokEgoEAkbqqdVq5l7E+FeSwWQoVjA8x/YA7JqAd8J4jo6OzLgF1Qp4LyXI4eGhmayw4xLJzO/i\n", + "1olub2JiwmzM0Eey8CVZ2hQwIacbeDNeGpJsuMLv0l/wM+DoY2NjFr/xvteDKjMwDqTDR9WMixAJ\n", + "rNRymUxGW1tbFgnGbkd3z+5IPU396Ti3gY1kdZDD3W63tbi4aKoLhgjxeNz8NKampoxJhqv+KCqC\n", + "GpqGk8V7cXGhx48f224Ils5NR61+c3Njiauzs7MaHx83OzAMcaampqzOdpzbwCJUNKA8+HtA6A8E\n", + "AsbTgJSF3wg8bkb9lHFYCMCak2RICfwYoobdbrc++OAD7e3tvff3/6B25m63q2w2a6QgiPEQhCDn\n", + "YCkAdHdxcaHDw0OVSiV5PB7jXjDoIISKR+8AACAASURBVP4MTjM83WKxqHg8bgw4MlDOzs4MNaEe\n", + "R+jZ6/VMj8jOzpGPgBZyETsXdq8MVsCD4WrTTMLfoBmVZFixJGvKGMOP2uzS3NbrdWPS8Z7ITpme\n", + "njb/PTBqSVbSMaaH4wFhqdVqmYsq5Z7P5zOZFOStL8qMkQtesqQ76gnqzmg0qomJCcsBXF1dNS+1\n", + "6elpJRIJC8K5vLy04QnHsvS5TRfcA74gvjh83Xg8yheOXXbhmZkZW3A42UsyMg87NeR8Hj8QuHVG\n", + "A5uG1zExMXGHtA8HWZJhu6N4s8/n09jYmDmcIh4AW8YmbGpqyvgko6QseoFRiy5eN+bnLGzouPBH\n", + "oOYyykZPyXt73+tBlRnsvnTy6OP6/b4qlYq5AlFXAkuRyoQqm7iw4+Njm/q9ePHCMF2CfcbGbvOv\n", + "EWtisj18F8jT7/dtkII97tXVlUqlkgk54UozDmbYwOugKS2VSgaP4VYPN5vHHz1p4GzAtwYfxg+D\n", + "G7dareri4sJKoWq1ar54GKbDMoSmCd/i6upKy8vLVtdTruEtIt3WyAgm8NVg5wa3Z7O5b0Lrg1rM\n", + "REAMh0ODjZjizc/P3wl1hCcBofzi4kKJREKtVktPnjzRcDjU8+fPLf200+loZmbGcFrG4D6fT5lM\n", + "xrzqUGfQSN3c3NjfoY1Doziac+LxePT8+XPb5bG+GhWN8hiEAXFK4Gz6+PFjIz2hOEEGxY4JxxiF\n", + "us/nMwOaZDJpzR67p+M4lvVCZMTc3JyOjo4kyf4dLw2QDqaY4PBsJLiR4tfBOB2F+32uB7WYGdHi\n", + "kwZyQB2J4oEsu/HxcbVaLQvcoaMvlUpaWFhQLpfT6uqqNZJwEuAeU1unUimzJpiZmdFwODToDW4G\n", + "amnCeMBrnzx5YqNoSpRKpaLT01MrCdjlILd7PB6zvUKLSKaI1+tVNpu18HlQkrm5OdtV8QJBTT4q\n", + "G+t2u0ZWwo4WYpXH49HJyYn5P6P8pnTjJmKHHk3sOj091ezsrDXf8XhcyWTSft/v92t+fv5e3/+D\n", + "WswsRkoKGkCO7r29PQWDQcvpYLxMXBkLhzHwcDg0SijNFpIi+BEYkDMqrlarymQydtOcnp5qYmLC\n", + "jv/BYKDPPvtMlUpFL168MCwarR/BPYPBQIPBQLFYTNItfZJBEGSfXC5n/nS9Xs/QmL29vTuBOvv7\n", + "+3ajP3nyREdHRzaAAY6E3DQaJwwBSLplJIKJQwjK5XL68MMPJX1uYIOdLS5KoCsTExPa2tqydNZY\n", + "LKZGo6Ef/ehHZjqJJvF9rwe1mMmbGyX7QGMsFArK5XJaW1uzWtfn8ykYDCoQCMjtduvw8NByTWKx\n", + "mMFVHMfUjrFYzLjGsMEwPMGxBzk9rv3AVaMDE5qh09PTO0lVNzc3NohggY1mmHASQBoiVIgb8vLy\n", + "0gKHer2evfbz83PVajUdHh5auYJHteM4ymQyhuJcXl5qf3/fBKiSzBgdewVJhrbwWJIsT4aYCXBw\n", + "pomoY3BspZHd2dm51/f/oBbz6ELhw4Mi6TiO1tfXNTExYTarkmzyhZ0tHhhMrEb/zAKg6WJqiIEL\n", + "0iEMAqlnKW9gkIEQAI9NTk6aJhGnUeiczWbTuvxIJGI3KgMNYDEwW3IIkTWBwlAmcAOfn98G33c6\n", + "HWMFYkHG0CUcDttJRjkGrXX0M85kMtYUYn2AS+nq6qrt5rVazWBNpqyYmTuOY+jO+14PCppjJAxm\n", + "C20T/zSO+1ETbI5YSQbr8Wev12uKbBo2GhvHcayxAi1gB0LVwgBhcnLSOviJiQmLUJBkkBvDklFH\n", + "/H6/L5/PZ+JPSUZlpaRiwEJwvKQ7aAPvgd0VTw/qfbfbbYoPsHnKLRJUr6+vze0UygCpBIPBQGdn\n", + "ZwqHwzalhGtCE4qtAhg/426c9omJ/oICOnLxoVEvI2eHW4FEiWOQJgb/NTjJTLX6/b5WV1fV7Xa1\n", + "trZmeCtDjmAwaJgqTdT6+rpCoZBRLuGF0LihsoCGylhcuvWSxu0IKiX/hQ8ChXJ098TrGZ9l6mq8\n", + "3y4vL3V+fm7Oo5Qo4+Pj6nQ6hgFLMiiRhQ1ezedIT4G1wKjF7+j3wJCJngEP5ng8rlgsplgsJo/H\n", + "Y70HZdl9rgdVZhCySGoS7kIEk6OrQ2R6eHgot9ttYZI0RPgbT01NGTZ6eHgoj8cjt9utdrttnA+g\n", + "MwwLRxXKjuMolUppY2PDBjBYX7Fj9/t97e/vm4s+ITg0sZJs4kYNS5lDg4krPZFmmIaXy2U7ibAE\n", + "AEtvNBp2etTrdbMc4LGhBuCST+4hqATTQ6Z2GDFiGt5uty3YCPsBamZQF+ijpVLJLM/ucz2onZnj\n", + "rdvtan193dha0WhUCwsLWltb09TUlHFsV1ZWbBeenJy0RmZ9fd3M/YbDoRYWFu5k/VE3D9+F6ExP\n", + "T0uSVldXTcWCNo4Gje4eeA1oLxgMWuO1uLhoFrWQbyDuEy4Pg25packwXpyULi4uFAqFLKhnlFdB\n", + "hDDsPU4hJqHkJuKkBI4NtDccDu35KRm4YTGZfPz4sZVnDH5GTyW86+hbeJxnz55ZuXSf60EtZmxb\n", + "SQrt9XpGnSwWi1bLxmIxa85w1el0Ospms3K73crlckbpjEQiKhQKCgaDVs+Gw2EbWNBUeTwe7e3t\n", + "aTAYGNsO931JBj/RvSN+pY7HVjcSiZgWkVKlUCjo7OxMyWTSKJvdbtc8KFCMsJMz3ZyYmDAUZGFh\n", + "wU4bHJTghuBexO8ydBpl5Pl8Phv983553Zwo1WrVZFr4hoCfS7JaHU75zMyMRWlwo9znelCLmZ14\n", + "YmLCdlF4COwMqJYh01A/0jxJMvokO/2ojzG7lCQbFHQ6HcuF9ng8hlxAeJJkzDuaQOwNwLTJ2qOz\n", + "73Q6xoHgtTLoobbE3oCamBD4ycnJn9AW0nhR89P8IXTldWBiKMmEstxUNHCjo3HKJur40cdFLCDJ\n", + "eM3Ak5FIxE440KXRBvx9rge3mOEpIObsdru2m7FzMkTY29tTsVg0g29yQlhQ4LpbW1uqVCpGm8TO\n", + "CpkSzvMXFxfa2NhQr9dTMBjU/v6+8Q1ubm7MZ+OHP/yh9vb2TAFDHU6DiqqZBZhOp9Vut1Wr1ezG\n", + "2d7eVqlUMjiS0oQ0V5z/qcn39vbM6pa6F7SlXq+r2Wyq2Wyq3W5bc8wJMPqZ5XI5M4bhxGq1Whbd\n", + "TOkBR4OMlF6vp9evXxu9FkOYfD5vrLovlCYjF5AcujVGswwCiEvz+/2qVCqan5+3nZOj7uTkRJLs\n", + "KAyFQpqfn7cR7+TkpMLhsMUHV6tVffWrXzVGWjabNRwXM29OA4hFX/7yl7WysqL9/X3FYjETozLo\n", + "oValmSQMh5RWslIg/jMGpx7nuKb+jsVievbsmYLBoGX+1Wo1K8PIOqHeBokAC7+8vDQbBIhavFew\n", + "cXjao0gLCAbDpKdPnxpkSlj96uqqstmshVze53pQixk65vn5uVZWVkx2HwwGjcnGYmeKl81mjVoJ\n", + "uM+XlclkLIaBoxlWHM0iI2/YeUdHRzaIoKzBeBvMNpfLSfrck25+fv5OFAL1tiSLbYPbQZ0LS216\n", + "etr8KDqdji1UGj+sAMi/pgQA4qNmvrq6MqlTrVbT5eWl5SBizI4hDQOTcrlsJU2xWLTyg/g0HEUv\n", + "Li7UaDS0sbFhv+t2u1UsFnV8fGwG5PeJTZMe4GLGUw1d39nZmQ0ykD7h6IMIs91uG04KZkwuCpM/\n", + "6mRI5/i1wfa6vr62yAhSpxg8RKNRgwAvLy8tTjiVShl1NJlMmkceYerssKAm0EUh42O7xXOAIODQ\n", + "iWzMcRzNzMyYATsEI2pavDKgeIKewDCEFMTrJU6DP8OhTqVStvPjZJRIJMy9FFxeko3iM5mMpqen\n", + "TVRxn+tB4cyjnT87BJIiRtaYi4M3Hx4e6mtf+5qNpxuNhlnbTk9P2wgW8Wqv1zN8lEiJy8tLW9wM\n", + "Q1BUwIIDFRl10a/VajZJ5FTh6G+1Wkb5pHnqdDpKpVLKvUt4RaolyULuYQeGw2EdHR0ZOoHODw9k\n", + "EAfqXKIY0C/+uPAUSzE0kZRwbBx4bSwsLBgnBCf9er1uLk7oBkdZeCzw0cHL+1wPamdmgfX7fa2v\n", + "r0uSZmdnFQqF9PWvf12SzM2eXTMej5vhSiAQUCaT0crKilKplO0aMzMzRirHg5laOxAIKJFIyOfz\n", + "KZVKaeFdvPDMzIwRhqTbHf0b3/iG3G63KpWKotGoaejgE5N2Co1VktE7UXaDyszNzVmdy8IYHx9X\n", + "Op22Zu7i4kLpdNokXLxfEAhMGJeWlgwSxC73+vpaa2trxmUmPQAkgtLI5/NZeHwqlTLR79zcnGWm\n", + "QH4CR4/H41pYWLDT6NGjR0qn03rx4sW9vv8HtzPzgf/whz/U+vq6pYHu7+/L6/Xq5cuXdixSu21t\n", + "bWl2dlb9fl/ValXlcllnZ2em2Mjn82YtQDbKzc2NmSJWq1Vr1CRZHUkuCZKjly9fyuu9zaWu1WoG\n", + "g21vb1vpASJzfX1tte/ExITl8sEjoWaHHER9i3M/Xs+E+Kyvr9tujlh3a2tL19fX2tjYUDgctloa\n", + "X2Zi1KTbEm5nZ8dKHaadJAFQw3NCADuO7sRMK+lDGNEfHh7aFPM+14PamScmJsxHYjRjA47B9fW1\n", + "vvKVrxgpfH5+XuPj40YaJ8LA4/FodnbWUAKgrkAgYH501H/JZNJ4Bmjm0um0GZug/IhEIuYQj7AU\n", + "zggZItSak5OTmpyc1MzMjNXk1NhYGJDWCl/j+vparVZLw+FQ6XRaLpdLjx8/ViqVstAhPECwJYhE\n", + "IhYdgelko9FQJpMxPJpGGXN0dm9gykgkcsciAU/mdrutTCYjt/s2bB6uC/U/Kbf1el2xWMymhfe5\n", + "HtRiLhaLCgaDlqgECsHuBgcZVhlN0iirzOPxaHFxUbVazRhi4KYME2B8TU1NmaHK4uKigf7NZtNy\n", + "rAm9hCtC5EMmk1G9Xr9DPGKo0ul0LEf6+PjYQntWV1dN7Qxr7ujoyPBu9H48XqvVsgEOEqbR4RFD\n", + "C4S3xWLRSjBQC/BuSiIa2+XlZUuhvbq6MqkYUN74+Liq1apisZg5QI0aW2JojiF8IpG4NzT3oMqM\n", + "yclJlctl09qNjY0pl8tZKUBDM7pwILfs7u6aOvnVq1daWVlRsVjU8vKySqWS+SXD8iJUJhqN6tNP\n", + "PzVRAHTJo6MjhUIhnZycGIaMyLbVamlvb08vXrywqAakRiTGkkft9/v19u1bw4xBTY6Pj0313Ol0\n", + "TEWOuSGYdqVSMVrnzs6OksmkyuWy4dkMRObn55VKpbS1taWFhQXF43G9fftWCwsLZmOAZQPEoXq9\n", + "rmQyKcdxtLOzo1gspkKhIJ/Pp/39fQWDQZXLZZ2enmowGBgFYGdnR91u12Ik4I3f1zjxQS1mZPAc\n", + "iRzvCF0rlYqpMoga7nQ6ev78uSRZvRkIBDQ1NaW5uTlLq6KRo95MJBK269FkMUJHps8NANYLujE9\n", + "PW07OSoXsksoazCKATWAx4FAdHZ21soeMOP9/X1r6sj0Rp6EgGByctJeL2SqDz74wLjRH3zwgQKB\n", + "gJVf4XBYY2NjKhaLmp2d1dbWllKplJ0YwIcLCwv2eV9cXGh2dtbsCKABBINBk4KlUikbArHzczq+\n", + "7/WgFjN5eYeHh5adjWr4+PjYSgyGKtjCApnxb7VaTclkUvv7++amDw8Da67Ly0vt7e0pk8lYXcyk\n", + "EQjw4OBA6+vryuVydpOhUQRCY1iwsLBgDWQoFFI+n7cBCc+NexHNV6FQsBJqY2NDMzMz6na7ZjuG\n", + "9VWj0dCXv/xli46DjwLlc2dnR5FIxIwmgdgYXXs8HhUKBbNJCAaDJnqAT7K/v6/p6WlLEuB9ACPi\n", + "3ES6bCaTsfzwbrerSCSiH/zgB/f6/h/UYgaam5mZsQUGFprJZEwtgWD0y1/+sl6/fm3kHVh3kUhE\n", + "0WhU3W5Xjx8/VrFYNFEmtaTL5dKHH35oeDB16rNnz8yc8Pnz5xY7DN2x3W7r0aNH+uSTT9TpdLSw\n", + "sGAu+vCfS6WSNZfEEgeDQc3NzUmSaRjj8bgNKdLptKTbcTN2tvCJA4GAnU7hcFiO46hQKBg/4qOP\n", + "PlKtVtPc3Jz9zNjYmJ4/f65oNGpq9W63q+XlZY2NjVndi8F5Nps10tL09LRev36t09NTpVIpeTwe\n", + "VatVzc7Omivr2NiYvvKVryiXyykajSoQCOib3/zmvey5HtRibjab5qQZiUQsEwQOA00QrpksTOxd\n", + "cf7kS6Ih4oiE7I+F7fX1tcUEwwYjv9txHIubqFQqNg6nFpZkMFUikTAi/OHh4R1bLJThw+FQm5ub\n", + "mpycNM0eNgYMRsbGxnR0dGT2AfV63f69VquZAAHjF4/Hc8fP+uTkxBz9WegMoPDV2N7eNhvbDz74\n", + "wOimiAYCgYBqtZqJYsfGxlQqleR2u/XmzRvrB5gAsovj3nqf60GhGdSxYMHUc8ic4vG4TcKoMykb\n", + "RvVvoA7EfoGQQLmUZIw6vrR2u23KDhzlp6amLC0Vq4JAIGCcCbBqrAJgyDHSptYm8AYzb+BGFg+w\n", + "nN/v183NjdLptEKhkAkI0PiBzqRSKcXj8Tuvnx1+fn7elOJoJHFJLRaLZoKDtZbH49HCwoKhI2DL\n", + "qVTK+hMoq7FYzAxtMJ+knoZMdZ/rQe3M7JjwehmiQHb3eDymJJZkaEM4HLa6lB2DsgMGHNkmEIjG\n", + "xsYUj8fVbrdN88YR3e/3jf/baDQMBwYH5+fPz8/t+J6dnbXAHV4XvAuQk+fPn9tuBmaMoz6vZXFx\n", + "0WRjlFuw30AfwOITiYQhOPV6XalUSicnJ5qbm7MbJxqNmvkknnlwPiDaEwY6Gl386tUrey8ej8eM\n", + "2+lbSJo9PDzU5OSkqW3ucz2oxQw+CpcBjjK1LhjpqL0qUFu9XjdmG8cxLDZMs7PZrN6+fWt2ruz+\n", + "7Xbb1NtQIplyoVzBdAVPDRQm3FjFYtEEoC6Xy9QoQG2BQEA7OzuamZkxQhC499nZmQ4PD03lgdpm\n", + "e3vbFjRhlHCqeU9kWUO6Z7IYiUTMWQlZGEJWIMazszNls1kbxVNq4Y2RSqXM4RM2IAKGQqFgr33U\n", + "OPI+14MqM9gtXC6XTZjAcKl9B4OBYcA0K6AMxBhQXwYCAYO2EomEBoOBKaChfqKkmJqaUq1WUygU\n", + "UjAYvKO6wPNZkh2pOC1RCkxOTt6B+6ampgw1Ga3bObZRnZCt53K5tLa2Zp4ULEosFjh5qMUxAOfU\n", + "QK3daDR0dXVlhHqGG0CHozZn3Eyw61DPwM4bHeTAq6YU4qTCSRR05T7Xg1rMLNZqtWq45+rqqi1m\n", + "0I2FhQUzPwyFQobdMnnLZDJyuVxKJpMqFApyHEdbW1s2DaQp4kYAV56ZmbF6MxKJGG9ieXnZBgdM\n", + "JzEq56aD64x5ICKCTCaj2dnZO/zjSqVihizwt5eWloyHMjMzo9XVVc3NzVmJ9PLlS6tLz87O7qAS\n", + "hE9KMpuEy8tLZTIZSZ/7L1MXo58EN2cKyM2LhzPPTVwdpVcymdT6+rqazab5WYON3+d6UIsZKiFx\n", + "D9A5KRvYEUAiWq3WHbI7bvrk3NXrdfn9fj179sx2NqAoToBRC1t2a45iYo45guFtwGMgealWq6lW\n", + "qxlhiJuDCSVu9+Vy2ST/7HSdTkezs7M2SgdRYdLISHp2dtZI+nAo4F+w+KrVqilo0C/Cm3j27JmZ\n", + "PmK2E4lELG6DlCmErgyJCEWikf1xLSRuTZCq7vX932/5/HJdo0EwUDZHrVZHhatEJow2HRB9sH9F\n", + "ncxNggIF05jRP/O7cHj5+R9/Dfw7/ybJNIc0dxB3EATwJUPzZHfkd0AQ4F2MEuAhyXMjjr5P/j9o\n", + "A6+P5+S04L+S7PcoPUb/DjSDkoXXT8NKL4N7E802C/sLQeuPXbjHM75lUoW06PLyUqVSycg/+DdP\n", + "Tk7aQoeIDxKwsbFhjK7p6WnV63Wdnp4aMgGOSugOJQpHNuPwRqNh2C/TOXb2dDqtRqNhdSZ0yF6v\n", + "Z65B4XBYiURC6XRa+XzepnEnJyemrAFrJ0dbkp1O5+fnWl1dtRE9C5b4BzynR+VZRDVsb2/r/Pzc\n", + "8PBut2vPBTQJrk9zS47MqF4SBfhov0LP8oWgdeTCbV6S3e2VSsWGFUBWqCiwnAL5wHEHl3pyOvBx\n", + "o8Yd9S0eRSWQ8uMmxM0D0YiGjp0OY0een9EuC8JxHEMVUFCjFJE+j7pAsU3ji4YPXna/37+zi4NS\n", + "8H7wrqCJBd2ABIQG8eLiwmxyyT7hhgQZAh0iwwSko9/v35GBAdHRSPI673M9KGgODoAks4nlKB2V\n", + "zxOPBuEGqigWtfjGMdVCQT0+Pm41IjvM8fGx7erBYNC8niEyUZfy2vBiZiFKssEFEWlgwiAYQItM\n", + "DCkbgP+kzw0V0fKR5oROkUFQtVq1gQe1MeUTXAyU6UwzJRnxiRtidXVVjUZD7XbbnJJARjCU5LWB\n", + "unBBmmIkj1HjFw3gyIUvBHc6pBf4tCgxrq6u1Ol05PV69emnn1p6ab1ety+o2WzaLnR+fq5CoWBi\n", + "Uvwkzs/Prbms1WrWUPZ6PRWLRaXTaQUCAR0fH9ti4ngNhUKmAeTxkXydnp7q4ODAPPIajYZRNSXZ\n", + "KYDdFQQefg6eNAMNIi64kSk5Wq2WjdpJnCVtC8bd6empqtWqms2mQYBnZ2d6/fq1wZtsAggALi4u\n", + "tLu7awgH6I8kyzZsNBo2aqfZhPD/vteD2pmz2axp6Hq9npFrgOOgPQ6HQy0tLalUKimTyRg0Fg6H\n", + "zWFneXlZR0dHlve8trZmvskMQ9ADspiJN/B4PIrFYkZ5pNYdtc+CHgnnwefzWY2bz+f11a9+1YZA\n", + "8JQHg4GpPcrlsoLBoKLRqBqNhsmmWBiMsweDgRl++/1+zczMqFAoaGFhwT6zarWqxcVFYw5yw0Jh\n", + "pZ7HNRXuhtfrtXF9JBKxps/r9epXfuVX7kwq8bq7uLiwcTr8FWis902belA7M5l75XL5Tozazc2N\n", + "IpGI5f9xHPZ6PduBOdZxkAdSk27H5FBBOX4JvIS4g3bv8PDQ3IWazaa5/tC5M4kkWF6SJS3lcjmb\n", + "7HFME+COQz8Z1IFAwOrVZrOpyclJk2lhVA7agPVBu922Mgp0Ay4HTEJODj4nbjjIRtTRGKGDU1er\n", + "VSNwBQIBe5/wR+hfpqenFYvFjDOyv79vU1DiJd73elCLeTSo0efz3TEFHFVzwC2QbhXKkowmeXl5\n", + "qXw+b+aKkF9w+4FEE4/HjSzPFxQKhZTJZGxaNjZ2m+4EFAXKgisSEzj88fCGBsLCgKXb7Rp5CUiP\n", + "unxyclLBYNAGKCxyn89n+SG4juJFTW4JJHxODzzlaABpbkmWBba8vLy0x2C3ZRI5GgcRCATk9/st\n", + "go3nkmSlycrKiiFA9BDvez2oxQykBJUSLwzcP9kBgMVohCTZTsNUjHEx42HUxKiPqfVAJyC6083D\n", + "xKNZIyKYETZu/ldXVyoWi7bwCcZpNBrGJaFZBNbzer12CvHagCJZ/NLnXhrwMXBWmpqasgxB6m7+\n", + "x46OExNj+W63a5pBSpDJyUl7TLBnRAj0CAxoUKHg6I8ImAHPaMza+14PajFzXJZKJYXDYeNFUGKg\n", + "HIlGoyqXy+YVIckWG4gDkzhJevr0qU3k6vW6OfMTlomCgzJl1JCFGpQjHjQAhTK1InU+po/4bsCz\n", + "AOkYHx83UhISLKwTut2uTezAgh3H0fLyst3cJycnVtKMYuXj4+MqFAoGnzF0gkgfDocttoFaGZSF\n", + "kTVID5sKnynqG3gYIEcHBwfqdruG2LDZvO/1oBbz6empURHn5+ctK+/m5kbr6+tKp9MmwMReACk+\n", + "wTYYpWQyGWUyGVu47ObsnuDCkP+xteIGWV1dtXqx2Wwa644FwFAF/sb5+W1g/IsXL+RyuVQuly31\n", + "am1tzeito8R8himSrLbFFUmSqU0ajYa9N9AKRvI0n9LtZgBJCOEBC0+S4d6UF1gfzM3NmaodNIcR\n", + "O1QBhLg0pZOTk1pfX9eXvvQly0tkcvm+14NazGDGoVDIKIbgt1tbWyboHAwGZj6+vb2ts7Mz1et1\n", + "jY+PWy3YarW0u7srj8djOyFNnCQbJMRiMQUCAQv8AZ7b39+3aRrO8fl83oxj8vm8Ybp42R0fH2t3\n", + "d1exWMycji4vL1Wr1eymw1GT4HYGI8i2PvnkE2OpZbNZq7VDoZCR/5niBQIBOz1omIEC+/2+kayI\n", + "jDs4OFCpVNLFxYWazabFNRNyiRIem1vpdpBFWfPJJ59IklmTlUolHRwc2HPeN274QS1majqmbTDl\n", + "MB/BoQc2FzXdaJIqi4QYMOpNJnWQhuDl0gxRC/b7fYOtIpGI5ZFQhxJfzCLimGYggmwfM+7Dw0NT\n", + "hFxcXMjr9SqVSunly5fGnR7lkYTDYWPGIc7FK4/QTQhMqMnPz8+Vy+Ws1mewg6+e4zgmYgCrJtyH\n", + "KeeoSypTv5mZGY2Pj5sXHacItgOY29AAYyf83t//38Qi+mW5IBphtI2BH7yAcDhs2C3NIYhHuVw2\n", + "mKtararf7+v4+Nh4DtwAeNVNT09bCYIdLoqOwWCgWq1mkBicYgIy5+bm5PV67TXxWrEWw9sC7jKs\n", + "PG4iyot0Om0GhfAbINkD7bndbsORWUzU16P84VEkBSswSFbn5+daXFy00E8kY7FYzD5L4iVojK+u\n", + "rowJB8pBzgxcDuwYcD9NpVL3+v4f1GJGutRoNIxEnsvl5DiOer2ednd3tbe3Z8Yo5XJZ09PTRiyS\n", + "ZCVJt9s1N856vW5ec7u7uzo9PTWXecj2yPBh0JEXGAqFdHR0ZBitJO3v71uwPFNAdIo0ZS6XSycn\n", + "JyY+bTab2trauiNIPTk5MaFtp9NRMpnU2NiYNjY21Gw2ValUlM/ntb+/bylUo3UplNNcLqdWq6Wd\n", + "nR2dnZ1pc3NTLpdLe3t76na7CgQCVqbhkAqPhKQCHh+8GqPGUqmks7Mzy5U5Pz+3tIKTkxM1m02V\n", + "y2W1Wi19/PHH9/v+7/Xbv2QXcF8LeQAAIABJREFUzR4exFNTU3ry5InBXuCoCFfn5+eVz+eNczA9\n", + "Pa10Oq0PP/zQwnpIWUKgOkqFRKDJhXG51+s1yb8k81pjV2OiJ8nQA4xeuGlIfRplAI6G+Yw68Uej\n", + "UcNyb25u9NWvflXX19daXl42MStIChiy2+02kS22WslkUsViUclk0pxIUaYggZqfn7ebVJKJASBP\n", + "ob6em5uz7wEyFwgMwgXeM83pFxPAkQtegySzvYIDQFME3gpsBAsNxfMoF4HmCcwZCy60bAxHgJyA\n", + "9dhlqR8pd3DKpKECwup0OuYkii8cXAlwXZzzwZmpvXlfqL3RPUoySOz4+PgOTEjkMX0A/BIWOT7J\n", + "9AB8jrxOOBU0bM1m02i23Bh4QeMfTSMMG5GQIsbvo+Yx73s9uMXMhImAx2QyaWNeosPI6wsEAsat\n", + "oFFkx6KxQptXr9fNy5m6mYGKJKs3WYz8PKqM0Vo0Ho/blC+VSikYDCoUCplHxuTkpCTZ5A5eBLxg\n", + "+ByRSMQYauSLkNDKa5qamtLy8rIZOJIuQI0/NjZm1gS4guKjHAwG7fPD0gCzGj4bzA8ZWUuyxhYU\n", + "A/iSqerU1JQx5xDvZrNZM7l53+tBLWZUx/v7+6a88Hq9isVimp2dValU0sTEhDUwsNLAP6mdZ2Zm\n", + "DC8ebXS63a4Rfvb3981BH2hrdnbWuL7pdNrsv/g7POVyuZzS6bRisZjq9bqZIlLvM7yhFs5kMpZw\n", + "1ev1VC6XjfIJ2wxsmGaWSRzj50qloouLC5Nf3dzcaHZ2Vufn5za5I5OERnU08/rs7EwzMzNWzzPY\n", + "wdsjGAyaQQ5jfiai1NJ8hmdnZ7YxoGqnhLrP9aAWM11zMBhUqVTS9PS0Xr16Zb5rHHG7u7sKhULG\n", + "dwa+ikQiarVa5rrZaDQUj8f18ccf25cFiWh+fl6JRMI6d1AQiDflctnQA2C+fD4vt9utsbExffbZ\n", + "Z1a/MlZm54L4z5QR0xXKgGw2q83NTQtgZwIXj8dtwog3R6PR0M7OjkVcwB1eXFw0828yXvDBy+Vy\n", + "RpTis2m1WkZzRV+I7UIul7PSBlgSPw98peGXc0KA0OCctLGxce8YiAfVAKK4JqMPHLPdbuv4+NjU\n", + "EORIj4ZEVqtV4zg7jmMSHoLSfT6fuYTe3Nyo1Wqp3W7bGNrtdiufz1tJ0Wq1LJEUyf5wODTDl4uL\n", + "CxOcwm2AfHN2dqaJiQnlcjlNTU2pWCzaogc7x1IWOA6OtfS5nQGLw+VyGT7caDTk9XpVLBZNUtZu\n", + "t80FCvEpGX4zMzM6OTkxuzM+E0n2mvELgQ2HvAqVN8aRYPDQQSXZTUb61H2uB7WY4UZMTU1pbW1N\n", + "4+PjWltbk9vtNnYbx6fjOGbXBSoACQeHIzgPXq9X9XrdWGoQ/pmq4TyEIjsSiWhlZcWOek4MSoPh\n", + "cKgnT57o8vJSU1NTSiaTxilJp9N3aJrgxG63W7Ozs5JkKAG/F4/HVa1W7QTAwDudTqvT6WhlZcVs\n", + "sYAvYe7BJqRWT6VSJmAIhUJKJpOWkQK7DmEtpCq42dItooQFGB56P95XgIwQ2sP7wPzxfa8HVWbA\n", + "xBpt+JjYkTON/gzvuFErW6ijfOEnJydGGR098uHtYisFod/tduvp06fm6sPQAv4DAxTq3kQiYTIj\n", + "XIS4MUYVKTMzM/Z71Wr1Tvg8ODnKE0Si0WjUYDsITOQLor2TZIjI1dWVMpmMGo2GWZr5/X5dX18r\n", + "EAhoOBwaZIcaHGN0Biaw7paWlswZNRAIWMQF8iwCffDgA68m+/B9rwe1M2NWwk7QbDbtAzw4ODC+\n", + "AIudYxOaKEMSSUaIabfbNgABqgqHw6rX68ZSQ28HjEXnD3yH7g7ZPiNkmHTU4aOyo/Pzc2O9jToj\n", + "+f1+M1ocjXSQZCPhyclJ7e3t3RHugpD0ej0b6XMjnZ6eWjAPtXI6nbYoCoZDg8HADBYh5jebTauj\n", + "JyYmTBB7eHio5eVlG7nzGY5KwyYnJy2ldm5uzvg073s9qJ0ZlhpxAwg7O52ODTcQoiI8pdMGMoL6\n", + "eHPzeWA8jkgTExNaXFy0o5FmDpK79LmqBYdLSSZClW6nbhCe2JE47jFIgUAPaoC3HHYCOGfCgWCB\n", + "wKkulUq2o5Limkql7nhiSDJzcAQCSLT4Wfge9BqBQMC8m8fHx41uOhwO5ff7zeuOTQJKZ71et5MM\n", + "/BmO9MzMjPx+v66urkwA+77Xg1rMdN6jvGPqQ9h0kH9SqZQFzCCNL5VKmpmZsVICo5fR1KidnR3F\n", + "43GLJKMOZeiAnwWG4Dc3N5aOyuID14aXcHl5aUrxZrNpX770eYD81NSUlQykTZHKivtoMBjU1NSU\n", + "0UHxQeZxGJhEIhHDyFdWVgxVgNPMIsR/b1TOVKlU7Abxer3WUDOQYXA0iuuDtkiybEWwdkS32Dzc\n", + "53pQizkYDBoODLeXZsbr9arVatk07vT0VEdHRwYfLS4u2gdaLBZNxsOiwpQc8/CJiQklEgmdnJxY\n", + "XY7zJfUiuzn0RqZ3k5OTqlarlojV6/WswQQ7hhzFOPr6+lqFQsGwaHK6GVAwycRDA1X4xcWF0UbZ\n", + "YVF048vM54UxJDg04UKSjBA1NTWlSqVi+DHOSqhLKIcuLi6MZsuGwusD36d5ZDD0haXtyMViubq6\n", + "0vz8vCYmJrS+vi63263l5WXza/Z4PHd4GjDMUHJ8/etft90OhQS7h3R7AsA1JlDn/Pxcy8vLVluv\n", + "ra2ZOTmcDRY03m6JRMIifmlc4TKDV7OzgWOn02l7HXA2er2eQWpAdyAvqFlOT0/l8/m0urqqo6Mj\n", + "E/USydZsNjU7O6ujoyNls1mFQiE9efJEwWDQnisSiaharRqKAxeDphnVi9vt1tLSkg1jPvjgAx0c\n", + "HFgoKI06rvsul0vxeFzf+MY37pVr8qAWM7ZPNFfhcFjNZlPT09MmmaLBwguZqSDddrlc1tXVlebm\n", + "5sy9EoIQnGS4uOVy2WAm3DCBr3K5nFKplLrdrkqlktFGLy8vzRosn8+bsJUdENplLpczce7Y2Jjy\n", + "+bwWFhZUKpXMxDwQCOjk5MRMHrkhvV6vIRy4I0UiEZVKJVWrVR0dHZkDKgy8ZDKpXC6nwWCg3d1d\n", + "PX36VMVi0XB6ScbjwBxyenra2Hng6dAEsOydmJjQ9773PaOdSrelCo002syzszN99tln9/r+H9Ri\n", + "TiQSVvPBUkP1DOwD3IW0Ci8I4tRcLpdOT0+1uLiodruthYUFY6r1+31dXl7agCGZTCocDt+xlmI3\n", + "X1hYULFYVDgcViqVshExvsl4sGGeAqEIBUg0GjUJ0unpqUUtXF7eBkY+ffrURuWkn9JYYpNAA4ry\n", + "gxKBaOXRmwXl93A4NO8RanpcjdA8RqNRm/ThsM8p8eMsQozWm82mMQkZqLA7O45j9NW//Mu/fO/v\n", + "/0HVzNVqVSsrK0omk7ag0dhBkez3+8rlcvJ6vTo+PtbExIQZIQJrYbtVLpdVKBR0cHBg0BOlAx7F\n", + "1Isc2TDbIN5D4u/3+6Ya4XE46m9ubrSysmKex+Sc1Go1VatVQz3Ia5mZmdH29rY1WWNjt8lUNF/U\n", + "2tgdQEzi1EBlg9kLcWlTU1MqlUoWR8GElIkn3nJAe3wOkuwzODk5MYSEBhMYFIQIrBoGHqqdL5Qm\n", + "IxeulT9uV8vkCZiNThwHfEkWbEngDOyyTqej+fl5MzYhVAeH+Gq1alNFhhHHx8dmbTU2NmZQIIGX\n", + "TP7Q1EH6R34EZMjNR1BlNpvVxcWF3r59a6GR+XzecHIiJigBYMUVCgXDh4HwwMIvLi5MZAvCglxs\n", + "NAweigC8ZZAeDHLA1JlcEqrJaYZRZLfbNVVMKBTS/v6+Kbm/8JobuTDuZoExFmYKxSSPhYd9bDab\n", + "VaFQMJbY0dGR7YLz8/N3DABxr6fpwUS72WzaUCWdThtNkhuGcTkj6VarpcXFRaM9RqNRJRIJq3XJ\n", + "kV5eXjZYa39/X36/X0tLS2o2m6ZZBBFZWlqS2+1WJpOxGGU4IixcGkTG79Jtc8fQ5/LyUsViUbFY\n", + "zFAdRvqpVEqNRsMmevw+pw8bxeXlpQ4ODsxQEfiQTQXPasoxMPovBK0jF2Z/LMirqyu9fv1a7XZb\n", + "tVpN7XZbhUJBH3/8sRqNhg4ODmxadXx8bOSizz77zESep6enevXqlUUYYLd1dnZ2J2H07OxMOzs7\n", + "km5Pgu9///vGt2AAcnV1pe3tbZ2entoUjxICJQgeGtiG5XI5vX37Vjs7O5YNPj09re3tbVvQQHtI\n", + "sKrVqnkhU/rQoELT/O53v2ufGdwLl8ulzz77zDSG/B2+HYeHhwYLUo5cXV2Z9VexWDTI7eTkxEqo\n", + "VqtljSoN39HRkXk6X19fq9ls3ivQUnpgixk+hN/vt2OWXQq5/nA4VDablcfj0ezsrFkMQGg/OjpS\n", + "OBzW+fm5jVifPHmivb09tVoto0MyhKhUKlbPfulLX5IkFQoF89CYnp42jSBc4UgkomfPnqnRaFhN\n", + "++bNG8OKMTinMVxcXJTf7zfp/5s3b4xjsbOzI7/fr2g0qmazadzqdDpt4TrsypQC0EjhekxOTlpJ\n", + "8PjxY8v6wxeDMiOVSlkkca/XUzwetyaU5pWdn/BQGry5ubk7TkfAcfQgTFLvcz2oxYyvBBHAPp/P\n", + "lL9LS0sWKLO8vGyYssfjMayUSR2cW8xKIColEomfSKaanJw0mAuVy9OnTw3vPjs7UyqVskYHQ/BR\n", + "BXU4HNbs7KyJQFdWVvTo0SMjH7lcLgUCAc3Pz5tuDwd8vDHwwmC4g8qFcojnCwaDZh8wNTWlpaUl\n", + "S30ilJ6JIPyL6elpBYNB5fP5O8oUYtUo3UBkoBL4/X5TpCC7wqgRbL5UKsnv98vn833Bmhu9SDIa\n", + "NVnJ5/OWLgo68e1vf9tU2C6XS9VqVQcHB8rn80Y2b7VaOjw8lM/n08HBgR3T1M2tVst2tVKppEql\n", + "oq2tLcvHps6mQYKeOsqjYCGAlGBsyASuXq/b85ycnBiWHAgE9IMf/MAQCfjKcI6Pjo60u7urfr9v\n", + "HGHyChnMYBqDXzJKm/39fZVKJfN1JpKZ045dmoiM09NTxWIxHRwc2OdM8w1LEZ40wmBU2sB1NK7f\n", + "//737/X9P6jFTI1brVYVjUaVz+eNrgmZBXUwC+Ht27d27HLkezwes2O9urrSzMyMDg4OVCwWTegq\n", + "fW62CDw1NTWlTz/9VIeHh7q4uFAulzNXfrBoFCyBQMCmYjc3N8rlcsrlcjo6OlK1Wr0zaIHWyciZ\n", + "m67T6diNJ0lv3761G6fT6ajT6eji4kKbm5uqVCqWaY21LBAheDEY+sTEhOkpOUVevXolSaZHhFDv\n", + "crm0u7trDa7P5zNVCaNykJnT01MrrSBnwZRjMHOf60ENTR4/fmxqjUKhYEc1/OXV1VV5vV4bCkxP\n", + "T+vZs2fGGkun00bhjMViRuDnJqArJ1RmbW1NvV5PmUzGFCcffPCBTbqSyaQhDq1WS8vLyyoWi1pa\n", + "WtLr16/NCJ2yaGFhwRbS5uammZYD1yWTSYsVxn6rUqlY6CVO9r/2a79mo2LMDj/88EML6gF9gP22\n", + "tLSkTqej5eVlY9oNBgPNzMwYwvLixQsVCgXNzc2ZFArL3dXVVfOwo3Q7Pj42y6+nT5+qWq3acIpp\n", + "57Nnz0w4IUnf/OY39ebNm/f+/h/Uznxzc2OLh8anWq3K7/eb1VS5XDZuAtpASUZu53fOz88Nt4bF\n", + "ViwWdXx8rEKhoJubG+3u7trud35+buQheBEoPzY3Nw1/vrm50f7+vi4vL5VMJtVqtcxhnuFNrVZT\n", + "MBjUzc2Njo6ODFLM5XKGV5+enqpQKCgajRpa4Pf75TiONjc3jTVYKBQMuYHNB1LCZ7C3t6fT01O9\n", + "fftWzWZTm5ubmpycVLFYNFuFUqlkCxsODBBfo9GwxCtOIHoPRuBMD4vFovFEjo6OJEmlUkm1Wk3f\n", + "/va37/X9P6idGcVEv9+35gycl24fD2MmZGCmQFyzs7OanZ01kxPk/B6PR+l0WoVCwcbTsVhMMzMz\n", + "ZiSDOXksFlMul1MikVC1WtXS0pJ96YPBQOl02iaUcDFisZjpEqmlyfPGrZ5pWiwWM70jzSlmLnNz\n", + "cwYxYhkQjUY1Oztr+dnRaFS7u7uam5tTMpk0u4Dp6Wnl83nNzs7K6/VqfX3dfEGWlpZsAVOWAOHN\n", + "z8+r0WhYYzwcDlWpVLS+vm6mNo7jyO/3KxAIWI1Mg45d7tjYmJUz73M9qJ0ZWAquAWqGUaMRamIW\n", + "KcB+OByW1+s1iy2mh5VKRfF4XIeHh+r1elpYWLhTl25ubt5p4mq1mnZ2dmzYkc1mLd0KtOHi4kKB\n", + "QED1el29Xs92e2ptScbhuLi4UDabtckaihB4FESUnZ6eyu1227+53W6zLaBmZeSO4xAJqthpcVpw\n", + "U9EE0izSkEoylALMmSkfhKy1tTV7L0RmAM3d3NxYwgDWXf1+/4tx9ujFlGlyclLb29vyeDzWFKK+\n", + "ANGglsbdvlKpmLKY8gG3+L29PSUSCZ2fn6tcLtuX1uv1TDSKIhrLglH3TTjVqKpvbm7ucKYxZYzF\n", + "YlY/klhFedRut3VwcGCcajgcmJJzE5I6heMQpt69Xs8Yb8QpwwVhetnpdNRoNMyilgYaKic4OJKu\n", + "s7MzS7Nlp+ZxuNlG3aBwCcW0Ef60JJ2cnKhSqdzr+39QixkpEl8cDpTQEofDoRKJhO2O8XjcvNU4\n", + "PvFcwwJgenraQH1qV/jGICSw35Dej8qQwKkRmDIClmTavsnJSUszHR8ft+QoiEBYDIDCILLFX1n6\n", + "3GwctTf5h5OTk5qfn7emdTTInlKKMT4nEnCfJEttZefv9XqmXIfYBE8D2RlCYqaeOB2NKmL4bmq1\n", + "mo3L7xvQ86BqZmC4wWCgDz74QNJtAI/L5bJFzFCA4UM0Gr0TmgO1c25uzhoVFhYEJWRVdPHHx8dy\n", + "u9168eKFscvYcbrdrubn541sj9KCBqnf72t9fd0W6XA41MzMjE5PTzU7O2uk95OTkztyJALlWSzo\n", + "76Bk8viStLGxoYmJCQWDQWUyGR0eHiqRSMjv9xu9c3x8XIlEQgcHBwqHw3K5XHrx4oUkGSkJKwYY\n", + "c8Cc6Ckpg9g8UOPwOpB8wWZE5Q2py+Px6C/+4i/e+/t/UIuZ6RwoAFyGUTX1zc2NHZcYrqCXa7fb\n", + "Rg2F54v+T5Idx9SSRDfA1Ds+Pr5z7I96O8O4g4W3v79vo/RqtWokHpz6GS6Ew+E7Tkkc5d/5znf0\n", + "+PFjs+2tVqtKJBKSbssAEgAwICdFitIF05ZarWboiSTjdIRCIf3whz9UJpMxfJu+YNSknShliFpX\n", + "V1cql8sqFos2FqfcoT/BWQlDSIxgNjc37/X9P6gy4/r6Wvl83tx6+OJZSOjrVlZWDO1gp8QEBTSB\n", + "IQJaPlx/qAfBUKFTYrJCuCU3CZTPUddPThB2O3b7vb09s8qFXzwYDMxckOFMt9tVJpORx+Mx+uX5\n", + "+bnZC1CmsNtDC8UOjIYNZiD5KLD8IPUjKGAhUw8Tq4zR+dbWlinSuemwHBhtaGu1mrlCUbbw+cHK\n", + "u8/1oBZzMBjU0tKSfD6f6fskWWkBTvvmzRu5XC5tb2+bnOfq6kqVSsUceZD9Q9ZnTM3OTPOYyWSM\n", + "D3J+fq5UKiW/32/oCPAbbDUGL1BFaQLdbreePHliE0NeFzug4zjK5/OGzDDRQyw6NzdnYTfcMBMT\n", + "E/aaqYu9Xq9mZ2etlGi327bAaCoLhYJFGEtSKpVSOBw2mRNJsdy0wWBQ5XJZ8XjcbH8XFxeN7skN\n", + "m8lk7DsJh8Nqt9vKZrNG6L8PLCc9sDLj7OxMsVhMS0tL2tjYkMfjUTabNSzz0aNH8ng8BrcNBgMd\n", + "HByY3B7WltfrtUUtyerS8fFxzc3NGZ8Zgerq6qp5PlMPhsNha/4kmVbQ5XJpYmJC6XTaHDUJkCRy\n", + "+PDwUF6v16RbDFdoEhG5UufjWMTrJYSSm7pWq8nr9RqRCMcmdkPHccy+tt/vWxIXTkqQkyBt4ZvH\n", + "e2y32xbySXPIzs/PwPGAtcfzlkolyxR88eKFNjY23vv7f1A7s8vlMhUzihBJpm4eLTXAcVlk7Ewk\n", + "n2IcMyppwgT8/PzcRrmEl8diMRvM4I1RKpUswxuCPibiPOfExIQNccCMYawB/TFZZNwO1ZPoCRor\n", + "pmuZTMbKIZfLpaWlJXMukmSliyRLXWUcj3H6+Pi49Rtkn1DOwKaDcgtXA1PGfr9vblIQpnD+9Pv9\n", + "BllCaIJNSNP8vteDWsykgfp8PpviUTdDCSV1aVRS5PP5VC6XdXFxYWbhg8HARrHslOzQNzc3Ojg4\n", + "MPd3bK5gjnG800TijUz9PnrzXFxcaHl52aZw9XpdpVLJeNMQcQaDgQqFwh0nJkSnHOUslmazKb/f\n", + "r4uLCxUKBV1eXt5JkJVkcjE4x5CsEPQiFIAqe3Z2ZiUPXiBXV1dmAIOdGa8D7gfvncELjSjREHC9\n", + "y+WyiRve9/qFLWbHcf4Px3HKjuN8OvJ3Ecdx/sxxnG3Hcf614zihkX/7rx3H2XEcZ9NxnH8w8vdf\n", + "cRzn03f/9j/+rOdMJBIWcoMCotvt3unAsZylAWMHi0QiFuIIjssuTvzZqLn30tKSDT/g8DKqxaEI\n", + "ohKDA0nWmJGP53K57gxo4JZQj3u9XiP8uFwuPXv2zLDcUaOW6+trw8cZdYNf4+9BzAQ3KRNJSiaU\n", + "KQTJw7CDsz2aQoXbfzQatbwXyjS425CVZmZmjKjFoudmSafTNuj6ZW4A/09J/86P/d1/JenPhsPh\n", + "mqQ/f/f/5TjOE0n/gaQn737nf3FA/aXfl/Tbw+FwVdKq4zg//ph2wcvAV4JFjHIYSGpvb09XV1c6\n", + "Pz/Xo0ePVKlUrNtGuDoYDEzmM6oiJpEUtcX8/LyZMlYqFdvNGE1Xq1VTVJA/QqgjUqnz83OD1RzH\n", + "sUVHatbr169tKvejH/3Idv7RsHeGF4PBQL1ez9yOGB7F43EbnDDVxHKX9K1oNKqtrS1DZEabUxQl\n", + "fC04J0HColSChE9J02w2VSwWTUYViUTU7Xa1ubmpTqdjXnm4mt7n+oUt5uFw+P9Jav7YX/+WpD98\n", + "9+c/lPTvvvvzP5T0R8Ph8Go4HOYk7Ur6muM4aUn+4XD4vXc/989HfucnLjR+kMHBM9l1KC2I7yVk\n", + "kp0CtTBEelAIBgXYuNL1X11d2dEbCAQsdpcpIDcJRzzdvSSDzAjhOTo6Mg0ftFDCHqlhR4Mqg8Gg\n", + "rq+vVavVDHo7OjpSvV63RpHnoLZH5FssFjU+Pm78C25U5E1YI9TrdU1OTmpnZ0fX19eWzgrGDk4O\n", + "dk3utyQjHAFPIh8DimPIgxSMEuk+1982mpEcDofld38uS0q++3NG0l+N/FxeUlbS1bs/cxXe/f1P\n", + "veD/MqHiiAOKgg6ayWQ0Njam/f19410gCWKMzaiY+nI07J2Fge/z2dmZmZr4fD4lEglDDtgNuQGw\n", + "OQCmSiQSloLKLriwsKB6va6rqyuTGfF7oxxo9HvY2wKpUTKQ5YKu0ev1an5+3hyf4EP3+33L2c5m\n", + "szYGHx8fN61kIpEw+RWnCRM/FienDTa2fO6Y5BB+hESMTEF6kftc/8agueFwOHQcZ/g3+ZhwgMvl\n", + "svL5vGVoY1RI/cdu+8knnxhJhklXpVLRzs6ONVkzMzPGuYD4D0qCOpoc7W63a6bbYNHLy8t6+/at\n", + "pqenrYSA1skE7ujoSKlUyqA0jF+wGKDO3tra0uPHjw2XxYeDgM61tTVThayvrxuZp1QqaXl52WRe\n", + "1Kh4YuCev7u7K7fbrZ2dHaXTadVqNRukXF5eWoNGTMSoOSJMQEItGf/n83lNTk6q2WxqZWXFXlM0\n", + "GlWj0bAJZiqVsmzt973+thdz2XGc1HA4LL0rIaBJFSTNjvzcjG535MK7P4/+/U91pP7zP/9zO47h\n", + "/i4sLBhBB89hFtTi4qLliaRSKRUKBblcLlNZBwIBOY6jpaUla9Aw+2ZHZpoH3CbJoLtOp6OzszM9\n", + "evTIGh/4C8QrYAMbCAQMWaAk+cpXvmJm3M1mUx9++KFZbMF/6PV6knRnyPPBBx/I7XbbTsv7xnUT\n", + "jLjb7dqAp1AomJTq8ePH8nq9+s3f/E3zf6MJhBiEskSSlTRQa/GI5jl9Pp9pM1dWVu6MsA8ODlQo\n", + "FHR6emon4Ptef9uL+U8k/WNJ33r333858vf/wnGcf6bbMmJV0vfe7d6njuN8TdL3JP2Hkv6nn/bg\n", + "T58+NWI4I9P9/X396q/+qqEbyeRtZYPl7eHhodLptPb29swK9u3btzawyGazOjg4MOLR4eGhJYxe\n", + "XV2Z0oM6s1qtam5uToeHhzo9PbVQ9lHD7k6no0qlYsc5BouO4xh0ODU1pd3dXYMPWbSSzCkUzjY7\n", + "IST+4+NjRSIRbWxsaG5uTs1mU4VCwRphJEyM88vlsvGNT09PVSwW9fTpU21sbFisXKvVUiaTMZ84\n", + "8GVu6kajoUgkYv0HFmg852Aw0OHhoQKBgPUy/X5fCwsLZgN8n4GJ9IuF5v5I0nclPXIc59hxnP9Y\n", + "0n8n6Tcdx9mW9Bvv/r+Gw+GGpD+WtCHpX0n6neHnt+nvSPrfJe1I2h0Oh//vT3tOpEDBYNDsqPB+\n", + "kGR16tjYmK6urvTkyRNtb29blANcBkbOp6enRjQiv2M4HJoOT5I1Z8Fg0LzlKEcw9Qa6op5Fmg+S\n", + "4fF4lEqlzA63VqvpzZs35ssxmgWSSCQMv8atHjsBFgh8Z0br8XhcPp/PNIWUNzSXTPbi8bjloOBW\n", + "StIsDTTwJE6pEP5h6t3c3CgYDN5R8IC0YK07GAyUSPz/7L1ZaKx9nt/3LS0llWpXrSqptEvnvDrL\n", + "291Dz9uDjQcTE8LcJJCLkItAcO587YDN3BtMIJAJODdxArnwQMDBZGCmJ8MwNtP99uJ+l7NKOtpK\n", + "qr1U+y6VVJULvZ/f+6g9Y4cjjz0R7wNNn1fnaKv6P//n9/+ucfl8PmWzWa2trcnr9VqG88def2U7\n", + "82Qy+a//kr/6O3/Jv/8XpEKkAAAgAElEQVRHkv7RX/DxLyS9+P/yPUmjZM7FBYzDAW0ytOvr16/1\n", + "8uVLFQoFJZNJG1EoaUc2eXV1ZTjtxsaGldlId1BaJBJRtVq1TAjiB549e6aLiwujsEOhkImgSqWS\n", + "pZOCgZNl7KwWW15eNikqCxK4jYMlqUW0PPG7E9sFdY1eGbqZ2d/tdlsONQcyyJB4PK5Wq6VoNKp6\n", + "va5UKmWZG7VaTdFo1HyB6L3Bop1tt51OR/F4XKVSSV6v955YqlqtKhKJPHgxPyoGEAKEkzOSROJX\n", + "0QtwWKvX64rH41pcXDQXNrsIcBLB4lNTU6YppimVXR9bPtASckzczPRjE77S6/Vs12s0GrazStLh\n", + "4aGV9bAIsOXz+chZ0UWzuKCKGaHI7CDls1wua2pq6l5MADUXPCFGo5HBkuzwvDabm5tGHuE5lGQz\n", + "P85ybn7+HmY1m83a+xSLxdTv9+/1dCNs+tjrUS1mZJ9ER7G4sL+DFXMSJ+VzPB6blvnq6kqLi4u2\n", + "ONxut9msIEui0ajcbrcd4GD80A47/W2YS/kZwK4hINjBOp2OksmkVT7wu5C5TKoR7B6VEcTDjsdj\n", + "9ft9sx5dXV3ZWBUMBo2sYffkBkfoRKUyvw8kBg4dbuzZ2VlziDtvimw2q4uLCytIgtZHvcjrOjMz\n", + "o42NDVMiwiAS6viQ61EtZpqclpeXLREehRi7BztWKpUy7S//hgUD89dsNg2V4AZIJBL29WZnZ21h\n", + "MWYgsCGhCC0DTmqaq3BZIORnxk6n04YdkwwE3Xx5eSmPx2Oh6HSukC6EfYuRJhAIKJFIqFAoaHl5\n", + "2TTctEZxWHOKjqD/WeBUBPO9xuOx5V8vL99B/pNvqpKXl5ftKQEbiSOb6AcO5oS+o88gifQh16OS\n", + "gHY6HZvTstmsUqmUVY5BB0Nr1+t1K01fX183NVun07G4rsFgYLsROcawWlNTU8pms2ZmZS4HLsvl\n", + "ctrd3dXc3Jzevn2rjY0NY/D29vZUKpVsFkXPUavVrEJhMBiYTqTf75sPj2oLZmQoduSsHEBdLpfK\n", + "5fI9qvv29lYnJyf3VHtgzwTE4MbB2BuJRLS/v286DmqM2+22Xrx4YX3aMH2RSESDwUD7+/va2dmR\n", + "JMvSwPZFnjQoDKVJb968+Xe8w//261HtzHjiwEKhndl5ms2mzWgLCwtGHzN7NptN0/zOzs5axNT0\n", + "9LQ5mUulksUMcLDDxu/1erW/v29aDoLE0Waww/NGYhsKh8Omcut0OhbEyMGOA1w8HrfdlO/HyMDv\n", + "j5WfAG9cLshD+XeYX/1+v+r1+j2yAzaOzwXFYeHFYrF7+mxn5jImhMXFRaO+y+WyWc1wkCN4Ojk5\n", + "MZ/jQw2tj2ox82il7pcmJk7+FMPzJlCHS8gh1cFUg83NzdnXQJ8BHc6bwmGITOInT54omUyaXmNp\n", + "acnmZsgFDjrOxiXknEg6KcHB5ErOMbMuYwjqN8LT0TswErBrLy4uajweG0qC+o8FOz8/b/gvFLfL\n", + "5TKordfrmQAJTyMtXOTRjcdju7HRiqOwu7q6Mve5JNNQJ5NJlctlk9A+5HpUixk70eXlpZaXl+3F\n", + "QgpJbFQsFlM+n9fLly8tr5mTuNvtVjQaVTAYVCQSUSwWUygUMmf2eDxWOp02RwU7GMlEjUbD0jOZ\n", + "n2OxmNrttkVx1Wq1e9AVB0aiuQh+JPPOSYwUCgWzICGjBIUIhUKKx+PmqKGbOxKJKJvNaji86wfP\n", + "ZDLWeY27xe12m7OEHZKDH4vWaTLw+XzG8i0sLBgCBG6NiAkNCF5DJ2LBpsOZYm1t7UHv/6NazM7O\n", + "EsQ29XrddlL8geSnMR82Gg0TyvOG4apmZ0NQTiALmmAwWrfbbcgBc6Pf79fp6alCoZCWlpaMOUyn\n", + "0wYjTk1Nyev1GiMnyYwEkuxpIn3rxQsEAjbjczAlJkGS5TUT+8UNi1E2mUya4o2DGU8qxhiETcSW\n", + "rays2BMNdAVyidZbcH1nsSWtsox4S0tLikajtgF4vV7bwR8qA31UB0BO9lNTU1pZWdHCwoKePn1q\n", + "ZEmpVJLP57PK20AgcE955na7dX5+rlgsZuMKFiUOX0tLS6YDBtpaWFiQy+Uy79z09LQ2Njbk8/kM\n", + "tZC+zUhutVpaWVkx5zb5d9PT03bydyIm2LUWFhaMjVxZWbF5tt1uW8p/IBDQ7u6u9buUy2UtLi7q\n", + "5OTEdBg0yeKUWV5etqaAbrer1dVVUxAyD1cqFfNSUkzE68c5xO12m0IunU4rGo3q8vLSkCSXy6Xp\n", + "6WmtrKwYjAgj6na7re/lY69HtTMDtQUCAdMlv3v37l6xZKPRULPZtEXxh3/4h5YOKt3Be+VyWd1u\n", + "V7/85S/NOMphi0c+Viko4Uajof39fdXrdWUyGZ2cnBjsdX5+brgz4wKkDa5xOlempqZUKpV0dnam\n", + "y8tLffjwQaenp5ZzjH+v1WopEAioXC5rOBzqxz/+sVUQn52d6csvv9TBwYEikYhpTKLRqBEndL5c\n", + "Xl7aCEQEAcgGehVm2mq1ahQ/6AQuF3Z4DoAHBweW5j8cDg09arfbyuVy+vLLL01wBUZ+fn7+oPf/\n", + "US3m0WhkgS/Mz8x7kBzEUHH4onrA7/db1ACGVqq8oHbb7bbNhGRnEMvKLI7fDf0GGg4UdWCr4MeQ\n", + "C/jpSqWS4df9fl/xeNyqkZ2MGrJT6e4g+fTpU0sInZqaUiqVktfrVaFQMHsVMBomWwgTEB/w36ur\n", + "KxPz86Qg+UiSZV7ARIIiMZ6hNaHcB+0yBmHatIbDoQ4ODuwGwcn+sdejWsxOCSb+OmIBgMSwQaFR\n", + "lmQkAxemTN40Sab8KhQKJhuFlga7hibnjebmcYqKCBwEJ2Z2BE3wer2mXgsGg9ab1+l0LHgRJlOS\n", + "sZcgF6QulUole/xj2r2+vrYcPHyHtHNhdOXsACwIFd5oNIxAcjbJgkrgwOE1B8sHvcBWRWuX9O1N\n", + "gaAfrcjHXo9qZg4EApaMeX5+roWFBS0vLxv2urW1ZUZR5Jvs4pzWYbxY3OCn6HK///3vq9Vq6erq\n", + "ynKSWaxIIsPhsImDJJlSj7LI5eVlg/4ikYjOzs4sYyKRSBjpwgzNgk+n05YNcnh4aMlC4XBYxWJR\n", + "U1NTRlm7XC4tLi5qaWnJ8u5wXaMbATdGw4IUFVES1RhIUr1er9bX1yXJFHsIjDY3Nw1LxmhATh89\n", + "LYiYiFzg6YGQf25uTn/8x3/80e//o9qZOYWfn59reXnZMF1knThD0DjMz89rd3fXRhOCu5PJpJ4/\n", + "f24RWW6327QQ1WpV6+vrikQiJtwH6QBpQG9wfn5u6USkzeP0xrkNxY2ajViDvb09pdNpM4HOz8/b\n", + "fHtwcGC1wdQo4I6GQCH0nHRNdl4IJBKXkK5Go1F74kh3Yn+oe9qv5ufnrSgUhR3RDDwF0GvzNch0\n", + "5r0BwuTwvLu7q0gkYibkh1yPamfu9/sGf/3Zn/2Zfvu3f1vtdlvxeFzn5+eWRN9qtfTixQv9+Z//\n", + "ua6vr/Xpp59a6MnU1JS++uorcx9nMhnVajWrAh6Px/r6668VCoV0cXFhMyewFegH83csFtNPfvIT\n", + "a1Uir65YLBpEd35+rq2tLZ2eniocDqtcLqtWq5nYnhDETqejSCQij8ejDx8+2LzKPJ9MJs3kinGV\n", + "Cgaqz1ZXV1WtVuXxeKzMMpvNKhKJWMoS54U/+7M/06effqpisaijoyOzoa2vr1tGNTY0FjPoDTsu\n", + "VPft7a3VGhPpdXR0pGw2q1qtpp2dnQclgEqS66FWlb8ul8vlmvz9v//3TdV2fn6u1dVVtVotJZNJ\n", + "QzM4fIHBvn79Wmtra3K5XLq5udFwOFShUNDu7q76/b4SiYQymYxpbweDgeG7xNeGw2GbaZkjMco6\n", + "O7tpPV1fX1cul9PNzY22trZ0dnZmhgGqG77++muzMaH7WFm5c5Dxc6RSKYMbh8OhhTs6c6pJ0/+t\n", + "3/otZbNZ+Xw+3dzcmEEVCSp+RZJIA4GAstmsksmkoRJTU1NqNpsGza2srBiRA75MItLh4aHS6bS9\n", + "Xq1WS6urq6bDoDSTpyXk0D/+x/9Yk8nE9e94u//C61HtzLOzs5YFt76+boczxPDMd5VKxSJkR6OR\n", + "fa7X67VETEgVpIuBQMDqFNBVBINBLS4uKpvNajKZaGlpyUwAoVDIEACYQHKggbH29vZsjAD/xTj7\n", + "4sULe3yTzYYKjR7C0WikeDxuWmDwaqrZQEGIFvN4PAZPRiIRhcNhi/tiNmcHZWeFJr+5uVEoFLKx\n", + "jbgAAtxxpNB6hY4EDJv4sUgkYn0wEEsQXN/R2Y6LmKd6va7PP/9czWZTBwcH6na7CoVCKhQKuri4\n", + "UC6Xs/yJ4XBou8dkMlGn09Hr168l3YnsZ2dn9e7dOw0GA3U6Hfsc9AlkctRqNfu6qOCOjo5ULBZV\n", + "KpUsoAY1WrlcVqPRUKFQsJ8LC9LU1JQ9gtGF5HI5w3vBnGEwa7WaxYVNJhNlMhnLqM7lcnr79q3K\n", + "5bIqlYqRGs62LX43GNPXr19biQ7Y9vv37/Xq1Svl83n1+321Wi2LRqCThTl4OBxaLcX5+bkmk4kl\n", + "i5I2RdA7X+/g4ODBUQOPajGjCeZxL8l2lcvLSwtPxG+WzWbNXsQLCRkAPlwul5VKpVQul02jjEmz\n", + "UqmoVCoZlEcuBnit3+/X9va2uT0QNNGuhCyz2WxadRr5GxAryCddLpdptIvFos3Q/FzhcNic18Bu\n", + "LMhwOKzl5WXTGHPYKhaLJkuFQJmenjaCCP/heDy2aF/ERODtlUrFKPVKpWJpRjyB2HERLhEeU6lU\n", + "9OHDB7ndbrOtfRc27rg47YM+ODv9qOriEJfP5/XixQvTA1erVbNAJRIJo6ihpHnsMi+D14Kf4ggZ\n", + "DoeGjni9Xh0cHFgpJW4Xcu5KpZJlSqOAA9cmeV66Q2kqlYo91kn/B+rqdru6vb3V+fm5hsOh0um0\n", + "zeOBQEDxeNx6TJCvMl/DKKJXhkiCgPJ4PMrn8xZGw+9GxBkVGYjygfXK5bKp/Pg7dN/D4VAXFxem\n", + "PFxcXDQi5yHXo1rMTmiqVCopFAoZrIVFCS9dOp3W+/fvzVgJrjw1NXWvBhgSggoDqHD8hOgTENf7\n", + "fD4bDSaTiba2tiTJNBYQBEB2zWZTp6en9/DhyTe9hQjZnbMxRT/OMBvQjbW1Nfl8PjuwES9wcXFh\n", + "NyKYLh4+n89nNDM3E0WaUP8IgMiRCwQCevLkiRmAuaHRUDMrh8Nh02Vw0BuPx5qdndXOzo7G47HZ\n", + "wzAKPOR6VAdA0nqur6/NFoX6ixcWN/VwONQPf/hD0yjgvNjb21Oj0TB6OpVK6fXr15qdnbWU/LW1\n", + "NRPYI2Mk4urq6korKyv62c9+ptnZWTWbTe3u7lpGBdEFaDRYnPgRqSlzLuZCoSCv16snT56oWCzq\n", + "5cuXajQa8vl8Zun//ve/bzfd+vq6xuOxIpGIwWROM4Db7VY2m1U8Htf19bUd2nw+n4rFora3t+3Q\n", + "GY1GNR6PLf7LaaeCAEkmk6pUKjaeTE9P6/3794rFYra5cPMmEgkVi0VjBxlHQqGQPvvsMzuvfMz1\n", + "qBazJKNikT4ym/r9fvP7BQIBjcdjXV5eqlwum2653++rUChocXFRiUTCymrQYnAzUDrDaR9FGN6+\n", + "UqlkRZRcWJkkGfFAtNfMzIzq9bolGUkyZGEymejJkyf2+WRJo97jxiBNU/q2dhnbP27x6+trxWIx\n", + "XVxcaHt725wpaENubm6s9ow5GSgTAb7H47ECIV7X4+NjS/eMRCKSpJ2dHYssIOGfoiGeDrxWOFSI\n", + "I/vY61GNGbz5w+HQgr8vLi4saahcLlu2GwcZEAAklqANKMZQdI1GI2UyGXtTsejzKC+Xy8pkMrYT\n", + "IgZyu906PDy8F17O45tDZLFYtJIgrqurK4vJrdVqarVaevfunSUIcXgjI7pUKlmf3tHRkYbDoYrF\n", + "oiqVimXKESGLZczZBFCtVlWpVAwRGo1G2t/fV7/f12QyMaIlk8nY7E4z7XA4VC6XM2jQ7XZbqA6t\n", + "q3QiQtW3222L7AUZIYrgY69HtZgZKQjxQ/rofJzhLiZsEJaKbAhJRl37fD61Wi2l02mdn58rFAqZ\n", + "ZhnxuZPVIh3T6UFEA4yqDAwX0Q76iJubG1vULpfLVHX4/wikaTQaxgzOzMxYZdni4qLdmOx+zhAW\n", + "xP/8G8Yjvg4pns5EJwypoD8conHJkBNNulKr1TIZKN/X7XZbEA4xB+g6+v2+RYylUikTJX3s9agW\n", + "sySDpxDpYyJttVomyEfiuLm5qVqtpkgkoouLC9XrdS0tLdlBDCgqn8+b0+L4+Phekj4J+YiJgAVz\n", + "uZxub29tAbCLIfZhIQWDQa2srCgYDJoNCxcISUE4y0FiEomEjTmrq6u245O77PQ+IpJCCI8LhYQh\n", + "ZlrGCppVgTOB8cjpcx72CI10GhDIzEPBiHqx3W7b0w/MnXiGdDptf/eg9/5hS+ev10VANy4Nstuk\n", + "bwU2ZC87A1KwRd3c3JgEUvq27BxblBOeA5FgXGCnhyrv9/vmO0TAQxYbdixJhm4gPqKNiR1s8k09\n", + "GYJ50opI4GQ+5qnDzkuBJt19LGx02GiNITlAJqjOADajgJ5YW0lGGg0GA9Myc6BD3glGjRWLkYjD\n", + "JN5Ep2vnodejWszQrU6xezQaNREQSaCc4IvFokFy6XRay8vL1pgkyYJW0um0CYicNWaMAM4QFiSP\n", + "n3zyiVmPYN1wOuPCRvREjQQ/L6U/dHOvra3ZzxYKhYxdQ2Mh3S0wnh4gDjzOiaPFRY48k12W5Kfb\n", + "21sz92JjqlQqtoNfXl4a6gGD1+v1NDc3ZzYwXo9nz54Zbh0IBJRMJrWysmJPDEa5UChkZ5LvGEDH\n", + "hYAeGA6HNgk9lOLAiqHHALMlWBvEg+gpAgR5pIJXI/CJx+P30u35e8IG0XE4Y6t4DJO+ubS0ZIlE\n", + "PDX6/b7pS25vb7W7u2s3AkQO8Be1Djc3N9rc3JR0d3Mjt4S1xPOIThstM9pqtBnslmhSGF+YddFO\n", + "+3w+Kw/iey0sLNjC5KzCE45dGU0KP+fs7Ox3HkDnRUUDEBQHJYTx8/PzJoJh/CCbmEZTZxMUj2eI\n", + "AQ5yIBlY/hH4A085682urq7uLWBoa5RpuFzozmOXZ5dbXFy0XZRMC+xbUO+SLNUTxzc3IsmhLFLo\n", + "ZEYmfm/CGQmYYSTg5iVEETYTSxiLnacdryuSAMRd09PTps9wRvJeX1/byPbQ61EtZubRfD6vg4MD\n", + "o7MlGfSEUKjVapl9ajQaaWdnR4VCweSXtEVVq1WtrKwYUwcdzGO3UqlYLx7ifacWIxqN6ujoyJzS\n", + "PNolWeBhqVTS7e2t8vm8zcbValW5XE65XM7kpefn57q9vTVIC1oaa5jP55PP59PPf/5zDQYDgxgz\n", + "mYy9Liw6NNrD4fAeC8mMPTU1pS+++EK9Xk8ul0sfPnz4N3bp0WhkFDo+PgqJJJkbm3o3n8+ny8tL\n", + "vX//3oy+pJPOzMx8p81wXuh8vV6vBRA6YS1sSQiOtra2DPnI5/M2z25ubioej5sQCLYMkgOpKLYk\n", + "yBi+byQSsURNoD1ob/pMyO5wu92WHE/gSrPZ1OLiolZWVoyCnpmZ0c7OjlHbkozsmUwmJk91u93a\n", + "29vT/Py8nj59qrW1NdNmuN1ug+dAdgiBIeSm0+lodXVVHo9Hz549kyQjcoD8CFJ0uVxaW1szjUci\n", + "kbCwRij5m5sb04pcXV0plUrp2bNntttLspYuzMUfez0qBpAZEScD1iTeMMYGFs9kMlEwGLTFglIs\n", + "mUyacJwUTTpCUIzNzc0ZS0dqEtpfzJ5EZwWDQXk8HhsJ/H7/PXYRyI2QdJqsKLxk9OFxDYXNYdF5\n", + "c5Gl4URiIpGIWai40SaTiVmfeFIwg4NvExU2Ho+1u7tr9XI8CUCO6Cjn4Onz+SztH7EUyVC4ZRB0\n", + "kY46NTVlN+nHXo9qMZ+enmplZUWlUkn1el3r6+s6Ojoyiw6QGtgxkNLy8rIJ1IPBoN69eye3261y\n", + "uSyXy6Xj42NbXCwOOkv6/b5lTlBq+fTpU8OjFxcXdX5+bofSZrOp1dVVi9kKh8M6OTmxwxflNc5k\n", + "e2fWXSgU0urqqt68eWM+RkwEr1+/1tLSknK5nNH5CHyIC9vf31ehUJDL5dLTp09tLODQVy6XbdH+\n", + "7Gc/0/b2tpEhc3NzNgc3m02tr69rfn5eFxcXarVaWltbUy6Xs0q6733vexZXhkDf4/Ho66+/tswP\n", + "TLrz8/M6OTl50Pv/qMaMXq9n9n7gMHbHcDhslCoah/X1ddP3BoNBSXdz7Pb2tubm5qxv78mTJ3YC\n", + "v7i4MF0xGDDIBLamXC5n3x/cmIVMulI0GrU0Ig6CsITM6pAXy8vLdjMRjMgh1rlzoxXh90DhNhqN\n", + "VKlUDPPmUHZ9fW1JqLjGnWmkqVTKdnFCJoHiqDMmviASiSgUClkvDKmq6Lv9fr8KhYJ1gS8sLGhh\n", + "YcFKgJjdH3I9qp2ZIBRsSVtbW8acgVBAJiwvL5uplPmRGbndbiudTqter+vTTz/Vmzdv9Df/5t9U\n", + "uVzWkydP7nV68OiE2v3hD3+o0WhkWRS3t7eG+YZCITsIFYvFe8WWTgq90WhoaWnJXB6cBfb29owl\n", + "e/v2rdbW1iwUkd8FjHg8Hmtzc9McKRsbGyqVSnry5ImOj48l3SVxxmIx3dzcGLSIRxA3OQuUcMXl\n", + "5WVDc7gp0Vqj1Esmk8YoEmSD+AqSik0DpzxM6Ndff/3R7/+j2pnZAbEVwVRx0CDHAQYskUjo+PjY\n", + "SAOv12u4KwU6pGuy46HZRfnW7XaNHcOlTZVYqVSyghuwWeJqSdiE5CEfOZfL6fLy0vBxyh/5upgN\n", + "WFD8D+gOxwhh6FDXnU7HXhcOb5NvKn5hFsvlsv1+UO6QHpVKRb1eT+1221LyGYdCoZAtbq/Xq8Fg\n", + "YMgN6Adjymg0Uq/Xs4Bzvhe/w0OuR7Uzoy9GSE9wCTsBxIIkOygSqcUjnV2Ckksn7RwMBs3oCoWN\n", + "LmHyTVEk2gaSPwlZ8Xg8FkFF9BYGVeSdCwsLCoVCZl/iBlheXjaNCaQHOyXhNaSKDodDbW5u2u4K\n", + "Vc54hUkBWJBIXvoI8fJB9XPjrqys6ObmxtoIyKqm5IfDIgKptbU1ixljLEE5KN1xAlS4Qd87VYMf\n", + "cz2qnZkDDzZ2UoZgppBIoglAl4w2wxn44vP5jFFDx8ApHrgPFwW4bDgctsMOXxuiBBIEgT4qNRYo\n", + "cQLsnIRzk13M4m42m3ZYhRzBMV0oFCxYfXZ21jTDkEKQN/gMCZ8hgQjVGuwgDmxmdUnGbkK5O9GY\n", + "Vqtluy94uCQrRWIEhCEkUsypfXnI9ah25lKpZMQJwSrFYlHStznHzWbTWC3kinjxstmsms2mGV0R\n", + "7IB6SDJzKWQJ8+dkMtHh4aHm5+cNy4aBdCIjVE68fv1aKysrCoVCJlDCtexyuQx9QYyPLR9Hy8XF\n", + "hba2tmyBd7tdo9eBIFEKYq/qdDoqlUqaTCba39/X3t6eJTkBCbZaLUUiEZVKJWUyGe3s7Ojo6Eh+\n", + "v1+ZTMYOfuVy2dpfUQIuLCwYovPFF19oe3vbDuPkbCDGv7y81NbWlikTodwfcj2qnRklGW+MpHtV\n", + "CeCpnKTJunAKi3CNMELwZ07u7Dw0jxIcgy0IRALMG0EQpThQ0+DG7FqId9jJw+Gw6bD5H+ozHNTs\n", + "dKR/8rN7PB5b+E7amEMpzg/pWxaS38vr9WpqaspaucjAQ4ONOo/dGz30eDy2EQvBEr8DYxznDj53\n", + "OBzagROz60OuR7WY6c8AfPd4PGb4RNiyvLxsyjkamXBA8IKDelDYA3sWDAaNoIhEIrq6ujKRETT1\n", + "2tqa5UMgZiLRCNIFoRCJmhx+UKpRPcaCxVyLrgSDKT0ljE348ljwkkywhFAKwoVRiI/B2Emyosxo\n", + "NGpKQ4wKku4llwI9Enzj/Lm5ORYWFuzwzSbDCMNsvrCwcC8296Pe/wd99l+zi0Vzenpq1Q6c3Eul\n", + "kk5OThQIBNRut5VIJPThwwfDYKm9hb5GHba/vy9JFkhOa+ri4qIlFaHJZdTA2nRycqKNjQ1DAgaD\n", + "gTwej37605+q1WopkUgon88bhvv+/XuD8FqtlslRWRy1Ws2cHvV63XbU6elpFYtFra6uWrA3vzNC\n", + "+JOTE52fn2t9fV2VSsVc5IPBQF9//bXVVAyHQx0dHek3f/M39eWXX+rly5dyu9362c9+plgspsPD\n", + "Q33yySeWdxGNRtVsNlUsFi1Mkq6T29vbe+9DvV63UWRxcVH7+/sW+bW6uqo/+qM/etD7/6gWMzkW\n", + "c3NzltRJ78je3p6y2axmZ2etMGdjY8MWAY9hHCjb29uan59XNBrVxcWFMVXT03ddd91u14LA0RlX\n", + "KhVFo1Ftb2/rw4cP5gghf4KILUic4XBo+opms2lRAdQ5RKNRuVwuVatVs0Whsjs4ONDTp08lydLr\n", + "udGi0ajRzji8cZcnk0kr6wQ92N3dtVELLHwymejFixdKp9N2cw8GA21sbNx7nZG5RqNRLS4uanFx\n", + "0ZLzmdc3NzfNYQ6hws/z4cMHbW5uyu/36+nTp9Yw+zHXoxoznJW6xEBRW4a6bGlpSVdXVzZXYo+C\n", + "gdve3rbETh6ZpHuORiPlcjkT2UPP4t7mEMOBjqxjBDTg3l6v1/oFXS6XHVJJx3cGnIN2cADk9wTq\n", + "arVaJn4i2IURyePxaGlpyRANMPi5uTkzA6BRhoyBpURNOBgMFI/HTYDFz8bXaTQakmRNU6A/qAE9\n", + "Ho9h6B6PxxCU2dlZe/Iw538XAuO4ksmkOp2OLU5JCgaDNp/V63UL8f51GxQWoEKhoEajYaQEc3Ei\n", + "kbCDGgudmZs3p9VqaWNjwxYJi4Y8DUQ5/X7f6sQ4ONLahLyUv3fKRZndCU+hpzsSidjuTWd4IpGw\n", + "uVyS9aLwqGcRHR0dmRqw0+nY3yHc50DIbgyeDp2O6o/FT6cgemq0GVDokFgUXr579842nYdqmh/V\n", + "YkaTiyKsVqup12xYVkYAACAASURBVOuZAyWVSpnegORJ0ADKLGHdRqORAoGA8vm8zYfoIKanpw3S\n", + "gp7l0X1wcKBCoWD2fq/Xq3a7bYclbE3OqKpqtWqWfdCQt2/f6uTkRP1+31RozWbTvvbt7a3Ozs7s\n", + "5kNznclkdHZ2pqurK/uZe72eAoGAjSLOUG/yojH24pa+vr5WvV5Xs9nU5eWlhTQ2m037ODgx+mgi\n", + "DIi4xYBQr9c1NTVlxUdnZ2fy+/2q1Wra29uzhd7r9R70/j+qxRyJRMzr1uv1FA6H740Ik8nEpJde\n", + "r9cOSiyYdDqt0WikfD5vRAP1aZPJxMgLREfkRWCShd1bXV01manH4zHUAVlkIpEw2z2PbZzReAPX\n", + "19cNDoQdpEMPxzQECf0swHH4HtGdkIJPHC74LkGOku4Vb3I5dSPBYNDievkY8F6/379XEITgCeIF\n", + "XTb5fOhOyHcmG/s7d/avXegcwGZ5FPKmUyID3IRIPpfLqdlsWuUwJToslMXFRbNHkRuHIRONBmgI\n", + "8yKsHTuTy+VSt9tVpVKx3fH6+toanehkGQwGFpfLU8EZmgJFj37YWd4pyUghDK8o7VDxcXMiYMKK\n", + "xc02Pz9vhBGzNjQ3LmvK4J0pTlD009PTBk0SVoMS0OfzWU4f3eQEW34XAuO4UGkBVWFkhVb+9cjZ\n", + "TqdjiZfMhjQJIHuUdE+/AA1MWCJEBzsvQn9JJgji/6GFIXDQS7AIUffFYjH7t0RsQVRIshwK6N9A\n", + "IGD493g8VrVaNXERMVosevoIabtCjO/3+41BlGSNVBgIGEFY7EQMMAODK6Nbcbvd5vohgDKVStmG\n", + "ws4NsUKR6EOuRwXNweoR5zoajbSysmI5coj1yWWjq5kFFYvF1Gg09P3vf992tqWlJcttQ5fA4r+6\n", + "urIkz42NDSMhXC6Xdnd31Wq1NJlMLDiRmZOdHbENoTOURBJUs7GxYXJVr9ers7MzY85+53d+x0Ja\n", + "qFCGUfv000/twIikdX193RCDr776ytw0uVzOrE8ItHgdv//975swiXR+pLJut1tLS0s2c6fTaV1d\n", + "XdlrShOAz+ezm7/ZbCoYDGpra8u0G6lUSplMxsRJD7ke1WLO5/OG2WYyGWOtOp2Ocrmc3r9/bwTE\n", + "zs6OfvrTn8rr9SoejyuZTOri4kIul0tv3rzR3t6eTk5ODF3AOo8pkyR+DpI0sgJZ8Qh/8uSJ3r17\n", + "Z7sec+RwONRkMrHyG7THwFtISEejkWKxmI6OjiyEvNVq6Re/+IXJN2dmZkxc3+v19OWXX1qGxmQy\n", + "UalUUjgctmB0dt1CoaBut6vz83NFo1FztKNf/vLLL7W6uqr5+XkdHx8rFAqpWCyaTpxEIhoDPB6P\n", + "oSPchLVaTefn5za393o9q3RutVqGdsTjcf30pz990Pv/qBYz2giPx6O/8Tf+huGdMzMzSqVSGo/H\n", + "djianp7W1taWvv76awtsAVYC1vL7/Xr+/LnNysBqpPwsLy9bKDcaZsgAxEvoHBANDYdDE75DZrx8\n", + "+dJy77B2MTIg1OHfwwAS6gg5QkyXz+ezKFraWZeWllStVu1rgJ1juaI/BYMtGgvMAxxiKXAnGoCR\n", + "C1yakWF6etoO2rOzsxbrJd2NSMQn4MPkiURm9sdej2pmBnxnHgYJYA4Mh8Nm0aFYkYZSxhAkoxQ6\n", + "ttttnZ+f266YSqXMmHp7e6tUKmXjBHMn8s2ZmW/rg53lP8zlLFQWtRP3JhoLrTBMJmMKDCEppUB9\n", + "zoKg1dVVc5AwG7OwGE+mp6eN/EGHwqi0ublpZlPOBsz+RAtweIW+9vl8ikajxnAC0dFzgkLOSTJB\n", + "+nw3ZvzaRTG60xns8XgsGLHVapkrJBgMmriF/jyYuXq9bppliAqCTyBDrq6urCA9kUhYNx41wexS\n", + "zMcQJ3weyjoe16RzcjMMBgMNBgOdnZ1pNBpZHzXlQFDcdBFCeDAKobIbjUZWk8wsi5GXxUR0F0gH\n", + "mRj0HV5fX9uNCjnS7XZ1eXlp5xRnSEyj0dDu7q4ajYalGqGQA9WZmZlRsVi0ZCOETB97PaqdeTQa\n", + "mWoOnfHNzV2fNEHWdJjMzMwol8vpiy++sDeCMhzyk+m/ZqckFJF4L2fJeavVMqSAvGGv1yu/36/T\n", + "01OzEgGtQaIgwCGwkOaqk5MTu/lYBJlMxna5wWBgITHoLyAlXr16ZawaPxMZcoVCwQ5ks7OzRtiQ\n", + "A40Yf35+XsVi0XyIRIxNJhOdnZ2pVCrZDXxxcWGvjySzYJF01G63TWNdq9XMHT4ejy2lv1qtmtn1\n", + "Y69HtTNj1e/1evrRj36kmZkZy2L70Y9+pLOzs3syzh/96Ef60z/9U3k8HsXjcWWzWYVCIQUCAa2t\n", + "rSmRSKjVatnogcUJIT1yTPTM4/FYyWTSHunValXxeNws+fF43HZ0Zs3r62utr6+b5SkUCqler2tr\n", + "a0snJyfa3t42gX4oFDLKNxgMKhQKWY1yMBjU1dWV9SAGg0HVajWrLD49PdXTp0+NrZPuyI6trS1L\n", + "x19fX9fl5aXtkM+fP7cxBMx9fn5en332mbrdrnZ3d602Ar8jTz2nmTgej6vb7Zp9isMiysNwOGwQ\n", + "4k9+8pOPfv8f1c5M2iUBgSRvMkN6vV6z+gMvpdNpIz+YHUEIMLPiY4O1Y94Lh8OqVCqW57awsGCL\n", + "Cr0Hj31ERDgyFhcXLYC71+up3+9rY2PDIgMYSWDOeEzzSGdWRdsxHA4t0IZ6BixJ/B6NRsPCEBln\n", + "nDM5ZAavjd/vNwzaGYzIYsSjyPdMJpOmbcZeJn2bphqLxUxpB9kCdOfMqfvY61EtZsiRlZUVvXv3\n", + "znQZ3W5X796902QysSDver1u+XPtdlvlclmJREJut1v5fF6VSsUeyc1m03Irbm5uLGMDsB+XBrju\n", + "zc2NKpWKnj17Zsowboipqbuy+VKppHa7bYs/kUjo6OjIAhnr9brh469fv7aid1AY6e7mrdfrxryh\n", + "c/Z6vcrn83agmp+ftzEDsRNfH0c57B/5eGTAodWW7jKXcZTwmkmyjI1yuWzumHq9bo6ZTqdjyAjE\n", + "FMQSWXrLy8sPprMf1ZjRbDaVTqdtpyOKCikjj1NKfLDkSzKxEaQBsBJzK0wcNCxO72AwqHa7LemO\n", + "NUOYjpCGmwE/ICIlYr6QrTJ+FAoFs13RNxIKhYwuR1dcLBYth47gQunbInZgvampKVUqFSudn56e\n", + "tlo5bj4SlQqFgon7nz17ZhLWy8tLi9T69R3U7XbbOEVGHjsuh2bEWPv7+xani8oPRWEwGDS57sde\n", + "j2pnBvQHW56fnzeM+Nez0YDC8Ag6U/cR4CCfnJqaMjqXnTMcDmtubs7EO9Vq1WZRgllg8lqtlh36\n", + "iBUAcYFhA6d10urO3Qu/IQE0zn4SFheoC1Q3PdzgwMg4ybpDa0H6EvkXjDDc4IifeB3xBwKzES1G\n", + "tvVoNNLFxYWNSOhbnDsvqBFxw+122yxVH3s9qsXMQgCdIKKVncBZnshj0O12W+wAMk52UkpoWFxo\n", + "k1HBgXQMh0ODvNAozMzMWOAih0SanogL4CnBjMvNgyjK2b9XLpcVDAZVrVat74SnB7UX0rc5zexy\n", + "zOgQNpIMV5dkowtnBQgTbhYWLhlzmUzmnu4YgRLIDuIoRFPAhtwUzvDEUqlkoxBw50OuR7WY2+22\n", + "QqGQpVJ6vV6lUil5PB6LaYXo8Pv9pvElsIXdjMoCdijCDBcWFrS+vm4G1HQ6rW63ayQBuDHySHZv\n", + "dkWn8zsWi9nX4Y3HKU1GHOlHsVjMdCN0GHJQhBHkwDc/P28/Pzs31n7+/Wg00tOnTy1ViadDr9fT\n", + "0tKShsOhGXyxQfE6kPbJRsFNQrQYPzepnhAiBCViLA4EAhZAyUj00OtRLWbcCzgm2ClRqi0tLZlG\n", + "eDwe22OdBTAajYzxgn4lbw4Grl6vm1SR2RwGjhw24CYYMElmfJVkI87S0pLN5fV6/V6dWD6fN2fL\n", + "0tKS4ec8km9ubnR6emrzvCRDHiQZmgPqQAoROmznrA55QnQZMQj0+aFDTiaTFppDTwkwILENVBfz\n", + "c4BcuN1uOww6O7WDwaDJbgme/NjrUS1mQvyur691cXFhWg1gsc8//9x0EdQU8PelUsnqyKhWI5P5\n", + "7du3hgMjq8QdEQ6HbU7lZI4HkUgtmDEqJ5zVaUB4kBgwh8lk0hZdoVDQYDBQqVQyzbTf71c6ndZk\n", + "MrGRI5VKWaVZJpO5F15DQCHnBW7YmZkZXVxcWK0x7QIul8vaqNBP032Ip5Fsul6vp+npaQvYQZvR\n", + "arVUqVSMhGI+ZnYHJUE19x0D6Liw78Modbtd5fN5NRoNawotl8vW0XdwcKDRaGTRq/SQsMjpeEaz\n", + "ixAJzJbQQnQUiHhwtGCrR2ONDJLx4fLy0hKSyLkjdoukIDQmGFcR+ZdKJZVKJatem52d1fn5uXq9\n", + "nlVS8LnOInjYPKIR+H2B55zdJ8y75NhhFSsWi1b1wJmj2+3aE0OSYdwkK9FG2+/31el0LCqBA3u7\n", + "3dbp6emD3v9HBc0hYPd6vfre976nubk5vXz5UjMzMxbp6qws6HQ6Ojk5Mes7J/FEImGWfFLoe72e\n", + "WfMhGxYWFpRKpXR5eSmv13uvumxnZ8cWwd7enh0McYHjj6MaQZJFw4ICOKllnCuElsfjcUUiEZu3\n", + "wbdnZmb0/PlzDYdDPXnyxHZ+SdZ4hZaEgEefz2dtU7RM+Xw+vXjxwlAXyCfIGTq3k8mkCoWCUqmU\n", + "pfYHg0F7QnGQBFenKZaD69dff22E1ubmpr788suPfv8f1c4M6uD1elWtVu3FlO7mW2fVGVoCXlSn\n", + "JQr9AzMirmlEPbz5UMPkInPK55EZCARMT+wMAcdVTZImhzJm/larpVqtpvn5eQtY4VDFXE/VBeIh\n", + "mEksYhAog8HA1IDY/AlugZ6GTLm+vjYWcTQaqVqtKhAI3NvNGRMWFxcViUTUaDTMoMBODI6O6QGr\n", + "FWcCnDntdluxWMwCK79zZzuuubk5ffjwwaC1TCZjrBSjwuzsrG5vb1UoFJROp+X3+1WpVMyRzbzM\n", + "okXKSb4G1PHU1JQCgYBqtZrFFDgzI5wkDbs7uyxubkypqNIwdYKY4HJ25kUzOkBiZDIZY+awL4GH\n", + "w1SilYber9frarfbBkcyqoC7wwRyYC2VSmo0GjZ2kcXc6XSsCoNFSR4fOmVkuKFQSBsbG/Zz8jPx\n", + "/UKh0HcHQOdVrVa1tramy8tL+Xw+bW9vm9glEAioVCrdOyw542+RJPr9fkWjUQWDQWUyGdPgYnWq\n", + "Vqsm6SQDGoyVnmwOQYSfoKS7urpSs9m0PhUSQHF8I8h/+/atHQ57vZ61vjpd4UdHR9Yjws1B7C5K\n", + "PpfrrlC+2Wxqf3/fVHTdbtdGFJfLZQgDiaLYnaDV2YEJvuEgDOYcCoWsQo1DHXMyQeK5XE4fPnww\n", + "Idji4qLdGPV63Wb7h1yPamZG6JJKpewASDBgPp+3kEHeuFAopJ2dHROVj0Yj272vr6+VSqWMlUJc\n", + "g+vbyfKRIgTRQdo8VDS1vIw08XhcuVzOHu+wiqPRSD6fT8vLy0Ydh0Ihe9zDsN3e3mp7e9tiEKh8\n", + "QxvsdruVy+WUTqetuoLwGoRG+CA5OyB6oj2An2t1ddXo7HA4bAxiIpEw1wx6aL/fr2AwaOMT1DUx\n", + "ZKjj0MzQiOXxeKyi+J//83/+0e//o9qZcWBzAEGAg9A+mUza6Ztynf39fUMxJpOJFfBcX1/bgREZ\n", + "KOmfvNGEuEiy3ZkF2u1274nvcZigHqNtdW5u7l4gDfoN4C7sUbhMWIztdtvQievra2uMku4OqLFY\n", + "zNCBarWqZDJph1/6U/BHIoDC7Y0znYRSMPSTkxPd3t6q1WqpXC4bgTMzM2MbCSMX/06SvSYLCwuq\n", + "1Wr2++LIRmP+HTTnuBDOg+9ie7q+vraoKnZBDnBPnz615HuwY2odnDJHJ9RFDgR4bb1e19XVlSVr\n", + "IhGlv4OcOxYmnSXxePxekidaCXZ44DNQFFRsMG6YU5lTIYRwi0AAgV9LssMXMzI9JSjdiKvFGuUc\n", + "d1h4HKR5kjHmIOpyPqGAE4fD4b1K4mq1aiNJr9fT9fW1qfA++v1/2PL563UNh0PLWuZg02g0LBG+\n", + "UCgok8lYKEsul1OhUDAvHnhrsVi0GZhoKjQYZFJw+GIxSHeqvXa7rVarZSJ+BP6o0YbDoSUsUcng\n", + "VPaBXbMoGZcGg4HN+9yU9IFgU2KmPj4+thq5crmss7Mzi9RijmYnHA6H9rrAmBJJxgFPkiWoViqV\n", + "e2eGbrdrbng2DnoJQS/q9boajYYqlYqurq5UKpW0vr6uXC6nUqlkAq2HmFmlR7aYwS/ZedBidLtd\n", + "e0Gvrq50dHRkhkzcKYSysNtymmcHlGT/XpKpzfC89ft95fN5LS4u3mPYmFNRhXHjsKgvLy9tETnN\n", + "AVwsDNqiRqORPR0k2ciESo2oAAgOoDwOb8yseP9AQHjNiGXAWOCMmG21Wga1URXHmMNZAzMArxOv\n", + "HSo5RP50d0Nr06L1kOtRLWZYMvSx9GXMzMwYFhsKhbS1tWWdHEgZ2YVAD5hlWZSk83AgDIVC5jJG\n", + "EQaS4gxIBGFwLlB2WA5v4N7sxNyIhM0w96fTaZvtna1N/PvDw0ONRiOtrq5ajjTin2KxaGMLvkG/\n", + "32/IBloKn8+n9W/KPm9vb7W0tKSLiwsbD6hThjTh4IwGhQYAdnwSlgh2dLlcRnd7PB4jg7xer6LR\n", + "6IPe/0eFZsBixWIxvXv3TrOzs9rc3JTP57M3mF1xe3tbxWLR2DRs99VqVdfX1/YxDk3smDRHXV9f\n", + "a3l5WePxXec1LmTiacmzwANHAIyzZoIQ8m63a8U30l2YDYuLg2cymdTV1ZVWVlYMr0aVR+AiwY8c\n", + "NmHvarWaYrGY2ZkIKV9YWFA6ndbl5aXdVLlczhqk4vG45ubmtLu7azcNIZM4wbGeSTIqPxAIWJ3F\n", + "zc2NVldXVavVbOHjZWQnR2m4s7Ojzz///KPf/0e1M+ORo0fPiQAgeOFNxkFSKBQM3AfzJaiQAxCw\n", + "HE5vbgpEPJze6aeem5tTqVSyXR4MlnBBxgoWPLs/cy15xuC25+fnhs6gDQYblmRhhbBonAP4Nzwh\n", + "yuWyHUoJRgRZ6PV6qtVqJk7yer06OTmxUYA0JHQfmBiYnUGAiAZuNBrWNksjAQdVwhLJZCY64Tuc\n", + "2XGVy2WFw2HLV6vX63b4a7Va8ng8Jj6XZD64VqulcDhsaAJZa+12W2dnZ5YIxOO01WoZ9Ypw/ubm\n", + "xpzVR0dHJsGkVswJ44GtMoMzr5MPHQqFzKsIZutM5eQQRh4yEtBcLmd2KKxUCPdBJTg3YAwgCkCS\n", + "RQDTgYi+m5gGkvx5LWEO+Zk5dIOPowakJgMokKeTkzWFoXzI9ah25ng8br44Kgjy+bxRxbVazRg4\n", + "qOFOp6Nut2u47vX1taEUaHWPj4/tjWMm59CCDmI8HlupeSKRsMcxlipYSC5O8CQmtdttRSIRa0Jt\n", + "NBrKZrMWWlOr1VSpVEwQxS6Nmfbi4kKLi4uqVqu6uLiwRdPr9VQuly1SDMaOuAQ0FaAz3W5XJycn\n", + "drOiyWYnBfa8vLy0cabVaimTydgTS5KJn/g9z8/Pza/Izdbv923Momb5Idej2plJfy+VSjYjr6ys\n", + "WL6cJDvI3Nzc6LPPPtMXX3yhH/zgB0asBAIBffbZZ0qlUrarUSkGIkDGm9/vN6yU+ZJdkAXe7Xbv\n", + "FdRD1rBTBgIB7ezsWCcJBk+CDMFx+/2+Xrx4YcL3TqdjcWC0rJ6dnSmVSulv/a2/ZXpnHCYXFxem\n", + "5QZ18fv9ur29VTqdVrvd1tLSkmq1mhKJhDwej2klIDyQBEDwVCoV7ezsWIkRO+zi4qLevXtn4vte\n", + "r6e1tTXNzMzYzO/xeHR2dmb4NV3cJycnH/3+P6qdeW5uzmztsVjMnBXAbPl8Xs1m0x6bmUzGegE5\n", + "2DUaDZsdS6WSKdd45BPgQmqPJJtnKefhUINNn8c9eDIkAl8XvTK2J0m2izF7M+vzcUYFbrhms2m9\n", + "K2ixEQixg1PGzhOJ1+X9+/f2hOp0OioWi4YXS3dPD84ZPLHY+amLgNZuNptG6sBoAk2SntRut3V8\n", + "fKxoNGq/N6/TQ65HtTMji+z3+3aCR3WGO8PtdlvlApoN9BvIGSWZH45Cmn6/byU/XHjnCHRhN2bn\n", + "BdelDIj5GCUeQh9nrjTxB9DClNlj/8LTBxtXqVQMbuSpU6/Xzeofj8c1NTWltbU1EwjBPM7Ozqrd\n", + "blu7Kwwo9PLs7KztukCbkuyJwNwrydKMQqGQpDtnC2MRmhSv12tPSOS0QJy3t7f2BPzY61Et5nA4\n", + "LJfLpcXFRW1sbNjBCvoV8+nl5aXZgXCOhMNhJZNJ5fN5G09OT0+tyw4xPRcQE2MA/w7smZ2cXZyg\n", + "bg483W5X6+vr95RwpHpiu2LnRc23uLho+g8Sg4DmJBl2HIvFbGFyCKPnMBaL2cF3fn5eT58+tdHF\n", + "5XIpmUyaFpuK44WFBRuDCDkMBALqdDpaW1uzBiuIFlKOMLSSeETjLdAfehmIFDaSj70e1WJuNpty\n", + "u926vb1VJpO5lxUHAZLNZi17ghgC2Dh27Q8fPphz2ykeGg6HarVa5kjBjEoKPJoM3lBwZr43OxU7\n", + "OTDeYDCwXZL8Z0YLHNZoj8mvKJfLVtADCQMaAbFCbwvMIT+v3+9XqVS6h9IQSUB/S7/fN80xwZBo\n", + "tIPBoIrFohlYUe/Nzc2ZlDaTyZgzHjtVOBw2zTidhdwAzPIPuR7VzMwjFScxqe/RaNREQCwO5sdk\n", + "Mqn5+XlzO4BCgIxgwSephxefGohAIGDfL5lMam1tzbLbgL8QMSEVrVar9rGbmxtrkp2fnzfxfyAQ\n", + "UCgUskMbkQI8/nF8JBIJxWIxExmhpGO0wW3CjE9/H/0sXHNzcxbTAK0ej8eNHOFjvA5EgPH9uPH5\n", + "upubm/fy+5CL+nw+RSIR+/md5wvGmI+9HtVi5sXhDgfIBw3IZrPGqGGopN4BOpv6MzLYgsGgNjc3\n", + "VavVbFxwluUQQTUej1WpVIzggFQBt2Xhh0Ih0zOMx2Nzq9CV3Wq1lEwm/41drFwu3xOx8xRwEjcz\n", + "MzOKRCKmTUZQ5fF4bBbP5XLWXotHEXUdrhnID+j96elpra2tWZE9MzWifV43btZ+v2/wJgZW1H24\n", + "uSFgODgvLi6aM+Zjr0e1mAuFgkXS/uIXv7BTfrVaVblc1mQy0dXVlT58+KDl5WW9evVKX375pVU4\n", + "cBJ/9eqVGo2GcrmcMpmMXr16pVqtplqtZmgA1n92YP5cqVR0c3Ojk5MTC4chEPHw8NCQlFwuZ8RM\n", + "Pp+3SgS3261KpaJXr14pn88btkv9mXTHdB4dHSmXy5kOpFwua2pqSqenp8b2oUU+OztTOBy2Gxg2\n", + "k50wn8/r9PTUkvcRMaGEazQa+uKLL1StVrW/v2+51cQiDIdDy2gmpgyJLBsMgqpms6nT01PL9cP1\n", + "3W639a/+1b960Pv/qBYzpYy4HkjZQSS/sbFhyZ29Xk8/+MEPTLWFLoLYgPF4rKdPn9oBEUMrJlC/\n", + "32/sFoQKJ3b6Q3BiE8HFqBAOh/X06VMjDZgXp6en7ZCJdYlHujNQhlSgaDRqWuR4PG6LxO12m/uE\n", + "wzAYOp9PfVuv11MymTRBEhG+19fXdkhk502n04Ybc+iTZBUa0l3O3vLy8j31IsmnHJhBl54+fSqv\n", + "1yuPx6PxeKznz58/6P1/VIsZK73L5bIXVJKhDTRHsWOxA6Gsi8ViFrNFUeX8/F2v3+bmpgmPmP/c\n", + "brei0aiRCk7jJrAVHkMWOoL2arVqijvMnGg8pqamtLu7azl1SErJvvN4PIbrJpNJ0wwnk0mzIlF1\n", + "jO4jkUhoYWHBbmTmbhakMwgdMwKNt1D9l5eXCgQCFuMr3TnRWfTkSIP+IJN1YuFer1exWMzS+jmE\n", + "S/qOznZeULvMlbBUKL5ub291fn6uy8tLzc7OWu0BWgMsTufn55Jk4ppsNmvBhM5AFEJaqO7F/QxF\n", + "DNWN25tkTxJ+FhYWdHl5aXMnYiEe97g3bm5uDOEg563ZbNpj/vb2Vvl83tqeyuXyvdbZw8NDm8n7\n", + "/b7Fg/Fz5/N5q2Zot9tWIXd5eWndKDc3Nzo4OLBxC/koC5cRjXMC2R/Ak6BFJDIBo5JgipHgIdej\n", + "WswEHQK+k/5DUPj09LQleEKgQE3Pzs4qGAzargcEhYE0FouZe8Lj8RhGTQbG/Py8Op2OotGoEomE\n", + "LSyQE3Y35lUc106BvzOQBY2JJBt7vF6vif/BvRkdnKo5SYbEOLMoqK3AbYIlCxiS34nF67wh+TsM\n", + "uYxNXq/XUolAefg40CS0OcgP4xWSAEijh5ImLnac/79fLpdr8g/+wT+wEz96hX6/r2QyaSd1VGXY\n", + "ltAkYOwk8Scej+vNmzd6/vy5ut2uCYUKhYKi0ajNnGCr4MnORy07GOwaVqTZ2Vm1Wi3FYjE72F1d\n", + "XSkcDqvdbisej8vv9yufz6vT6ZhQH38gdqx4PG7fA0SEYHJuQq/XazJYzLyQLYwO7KQcCsmjLhaL\n", + "CofD1jRVLBZtgZIgOh6PbfZGk03RJcExHo9HlUrFCn1YvAicON/0+3393u/9niaTyUelwTwq0gQG\n", + "6+rqSq9fvzafmd/vN6lkq9VSv9/X2tqafvKTnygYDJpA6OrqSpVKxaxCV1dXqtVqqlarhsFCOuDz\n", + "YwaV7mbvYrFo3YBPnz5Vq9XS0dGR0um06alXV1ctpAWYDkwYGvj8/Nx0zRwgm82mNjc3rXAHOhg1\n", + "ILkcw+FQqVTKRqzRaKTNzU2beYHhkJ1yqEXGyY3FXD8YDEwlR+dhtVrVD3/4QwUCAWv2Iq8OcokG\n", + "WSSh5XLZ5KXOThUQnn/9r//1g97/RzVmEEqCKL7b7arRaNjjFlF4u922w5NTYkkxPOwd1DIh4ZLs\n", + "UYtP0Kn9IEmJ9MzXr19rMBgoHA7bbglujKgGOI6F1Gw279HYwIbEBVSrVYsEYKcFHgO3vr29NaYT\n", + "RAWRENVwVkvA8QAAIABJREFUfN7S0pKxg1QQgwlLsqyQer1uMtp4PG42KA7JjC0gH+zyvB/ENvh8\n", + "PkmymF3iBYBUH3I9qsW8uLhoijd2JVgz52wK5MWjdnZ2VpFIxA5ACMWdSADhiSTvc8Ch5BKkgxAW\n", + "DpV4AUFFsGeRXYEB9OTkxCJp+XuE78zfQIiI8Jn5CbEhzFH6VvjDeIWjptPp3KuDy2azpnzjTMHN\n", + "TAQu/Yr8t9ONDvvH/wjJIXqLZCMkAI1Gw8J4JKlYLJorJpFIPOj9f3RjBrQoHSS8aIRe0ylCdFS7\n", + "3Zbb7bYT/vT0tIrForxer8rl8j1GDFwXXJTqXoRM7Ix8P1LzeVSjaU4mk5bGD9THrE5PHjtXPB63\n", + "WZ+EoFAoZPnLzOqNRsM6XUBqJFm9Mon3NMGizWDUAbuuVCqm5yA1n5w8Wgb4MwffwWBg2XdcvLaE\n", + "koO8AP1dXl4aHIlW+qES0Ee1M7tcLgtD3NvbMxVaMBg02IeUIGJlUWwBhd3e3trBJZVKGbLBDMkb\n", + "y7jAYYbPY1asVquWME+OMp1/tVrNZmXmSfDm0WhkPSHM5sCNhULBPIDMpxzsKNEJBoOm6GPMIqQR\n", + "byQRWyAexAIQZ+sUHY1GI8OI6RPHTTIejw35yGQy9vry88bjccP0cfOgvkun0+b5cx6YH3I9qp0Z\n", + "8Yvf79f79++VTCZNWBOLxUweWi6X5XK5lEgk7NDlTBFiMSBVBD8lbHA4HGp9fV2NRsMqJyh5h1Rg\n", + "XJhMJpa/jNAGtVi73baDGZFeyWRS29vbevv2remsWQigAR6PR8+ePbODHAuTcJcXL15YqOL09LSy\n", + "2aw2Nzd1fn5+zx0j3R3aqFXj9eAGpwWWtHxQG24AFIqj0cjkrPgVk8mkjRs8jci7W1paUqPR0N7e\n", + "niqVijGYoVBIf/qnf/rR7/+j2pl5wyWZ4ByigYxloKVYLKZ8Pm87H24TSdrc3NTMzIyOj49NYMSh\n", + "iMchCywej9/r3O71eqpUKqZrzmQylrhPvluhUNDl5aXi8bguLy8tnosZvVqtKhaLmY55a2vrXqYE\n", + "CAVRsJhUB4OBVS/g8CB/7uzszOIDOGxhlmWBIgIiUgsJLVplapTj8bglIlEGRFWFU9F3dHQkSVpa\n", + "WtJgMNDXX39trCCQXzabNeIIVOhjr0e1M09PT1vZTb1e1/Pnz43xOj8/1+npqc1lBIAfHx9rb29P\n", + "0p3gBjPp1tbWPSoW6AwvHfkapVLJZlQgvPn5eXvs/uAHP1A2mzW3NTAgVDZ6ZIIGqVxbXFy0iC2n\n", + "3SoQCBgbiJ7C4/Ho4OBAq6urRmUTJYa7hEX91VdfqVgsKpFI2NhzcXFhkB1pR6urq/rlL39pGRvn\n", + "5+eanp7WxcWF+v2+hYk3m02dn5+bxezk5ERzc3M6Pj7W7u6uBoOBjo6OrLSICggiGDhwl0olvXr1\n", + "6kHv/6NazF6vV/1+33ZLQkl4rK6trZnJlF3rk08+MYOr2+3W9va2fv7znxuIv7q6ajt6NBo1JouG\n", + "15WVFeVyOYPLnCbT1dVVEx1FIhFVKhXNzMxYKAzjAV0shULBXC6wlzRGoYHAcJrJZGy3Ho/HWl9f\n", + "N5auWCxqbm7OPIG9Xs9Cb+bn57WxsWG2MuA9dt1yuayVlRXD7GEMd3Z2DO2IRqMWNjkYDJRIJGx0\n", + "QgcOk0r4JK8NEQtUFK+vr9sTb3t7W7/61a8++v1/VGPG5eWlZcelUik76WMBIlEIdAHRvtfrVTwe\n", + "t11RkiW+j0YjraysaDAY2GmdR2Kn09Hh4aEJlXw+nyEf6XTaDkHj8dgOgWRXcFAjZ+Lg4MDgsMlk\n", + "onq9bnh1KpWyQktaVN1ut4UpDodDC11ETLWysmJS1V6vp/39fatj6Pf75nahv5sdGVsVoqZut2sB\n", + "i+z2zogwmlyvrq60vr5u+mTcOWg3aMjNZDKm94DVhIl1+is/5npUixlrOzJDFiQHtWazaYvc6/Va\n", + "VgMaXFg5aG1EPGdnZ4pGo9YJgjl1bm5O6+vr5pQej8dGoDjZPEkGwbVaLYP4gAQjkYi2trZMmgmR\n", + "Qr9etVpVu922sG8OVaT8o4mQZHoOerbx4q2srNzDgKmyIEgRTQhPEuZXcuiA0IA8MfjC5C0uLhq2\n", + "Dj4OdU6KaqvV0vLyspljnS6VeDz+4Pf/US1mBOiSjJzgQIhGAsex2+1WPB7XJ598oqWlJQsMHI/H\n", + "Jtl8+fKlHRihXCElgsGg6TAk2cLk4AWVy8GPz5mdnbXFj6aB/7+5uVEsFjNIMBAIKBwOW0Ycrmyn\n", + "OEqSkSOMWRwMCasBmgNyg11kFneOQNwMzPZ8HnAjgiiUe05tBi4cDpTs2iAt0p0cN5lM2muGis7l\n", + "cln18Mdef2WL2eVy/W8ul6vscrneOD72P7hcrn2Xy/XK5XL9Xy6XK+j4u3/ocrmOXC7Xgcvl+k8d\n", + "H/8Nl8v15pu/+5/+bd8TlVe9Xrf+jIuLC1Oq8diFkMC6wy4ObV0oFNRqtXR8fGzlOuPxWMPh0GA0\n", + "sF7eQElGF8N6FQoFix+4vb01ZwXfi1YmaGEKKsF7OfyxGDn9QwPTBzgcDo12R0PtxIwxDpCNDK0P\n", + "Y9jv920sYccmQJzMOyIJIH+mp+/6vmFF6WzhfQBhwYBLyLskk+fip+z3+/9eogb+Knfm/13Sf/Zr\n", + "H/t/JD2bTCafSvog6R9Kksvl2pP0X0na++Zz/onrW+3i/yLpv5tMJjuSdlwu169/TbvYMaamprS/\n", + "v2/BfZPJRI1GQ6enp7q4uNDh4aEJdw4ODuzNx692eHioTqdjweJnZ2fyer1qNBoKhULW5soC4xH7\n", + "6tUr25FwTPOzYIxFSE9kVqPR0MXFhT3COcA1m01dXFzo+PhYNzc35iAnu6NcLiufz5sBFX10t9tV\n", + "oVBQqVRSJpPR+fm5eR+pJgaCa7fbKhQKyuVy+tWvfqV6va5ut6vj42PL0CO4/e3btyqXy8pms/bU\n", + "Y3YGmoQwkWTjGK8hpBWkETcXeXdnZ2f6F//iXzxowf2VoRmTyeTPXS7X+q997E8c//kLSf/lN3/+\n", + "zyX9/mQyGUnKuFyuY0mfuVyuc0n+yWTyy2/+3f8h6b+Q9OO/6HuSk+F2u/W3//bf1u3trT755BPN\n", + "zMxY0TuObMYKbO6IiiTp5cuXSqfTBkdtbW3J7XZrfX1d2WxWKysrVgQECTM1NaUXL16YK3p2dlbr\n", + "6+tyuVz63ve+Z07qbDardDptemVK0t1uty4vL+X3+xWPx00HDGGztrZmdRDr6+sqFApKJpOmiSYs\n", + "MhKJmN4ZTUetVjNtNiTMYDCwSAG+z87Ojt68eaO9vT35fD49efLE6HRMrLu7u5aGtLy8bPkZ0PdA\n", + "gCSyrq6u2rgBMrO1taVSqWQpqM4O84ODg49ec/8xobm/K+n3v/lzStLPHX+Xk7QsafTNn7ny33z8\n", + "L7xKpZLi8biq1aqy2ayWl5dt10BRRwALLxyULimVKMygYqvVqrmbCVlBylgulw16IkR7NBpZeAyH\n", + "QEYdSRYUiPMEkiOVShl7SS6Fs5EJRIGiHKfAiTkVbUomkzE9BEKnWCxmjhc0Iq1Wy0rn+VmI/4WG\n", + "50xQq9UsTgsChQMfB1IUipgPoLqLxaKp96DrV1dXLYwccdhDYDnpP9IB0OVy/a6k68lk8s/+fX5d\n", + "ZmMyKmDv8PeBBIB4rK2tWRMqM7XT/+dyubS6umrWH1hEqnrpsuOkz1wsyYJVoJ8hO9xut9UzoMxz\n", + "u92q1WpaWVkxFABIb2lpycRBPNr9fr85OjhcohumgdUZASbdVRlz6MTU68y1SCaTFk0g3ek0wKoZ\n", + "gYrFou2yzN5g9JgIQqGQotGostmsHRIp+OEACyoTiUQMPRmNRtrY2HjQ+/8ffGd2uVz/raTfkfSf\n", + "OD6cl5R2/PeK7nbk/Dd/dn78L429+dWvfmVU72/8xm/cK14HnyWgpVqtyufzaWNjwwJi0D4sLy9r\n", + "b29PP/3pT03WiZLs5uZGa2tryuVy1lZ1eHho1iLGi263q4ODAz179kyxWMyYRKA3dA8o2UhGcrJ8\n", + "CNpjsdg92aXb7TYTKZgxBzev12s4Ljg6yAiQJLsz4iYSTImgJXv55cuXqtfrWlpaMhQim81am20w\n", + "GDTtNYJ7SZbFQUg7cQwgMn6/X6PRSB6PR7u7u3rz5o1mZmZUKpUetLb+gy7mbw5v/72k355MJs42\n", + "lv9b0j9zuVz/o+7GiB1Jv5xMJhOXy9V2uVyfSfqlpP9G0u/9ZV//t37rt6w+rVQqWTE7kkcyjQuF\n", + "ggUJQqWS7xAMBq3sxuVyqVgs2mGNKKpisWh0Nrsr6jBQhYuLCy0vL1uaJo9rbFGlUslkk91u10LS\n", + "mX3b7baJcDjE0sXNzgdWWyqVrJuEeje+LwHmCwsLdhAEDkNgDxsYiURMK720tKS3b98qlUopm83a\n", + "Tt3r9Ux8RSQYSI8ku+Elmd2Lf9vpdLS8vKzT01MTds3MzFjp5uzs7INm5r9KaO73JX0u6YnL5cq6\n", + "XK6/K+l/luST9Ccul+srl8v1TyRpMpm8l/R/Snov6Y8k/b3Jt+bEvyfpf5V0JOl4Mpn8hYc/SRbR\n", + "yu6Gg2IwGGg0Ghn9y04pyYoaoamRTALoo0nmoAhVzWjCIubR7XLdNU8lEgl7jDvz6njsY/ik4RWB\n", + "Ok4M0uWBtnCNkNEhydhDyBooZp4+y8vLJoOdn583+prdEuaQ187j8RgjCgHFrAuawgJFF47UFEaT\n", + "QzgYu/Stkdbj8RgsB1bOkwmDwYPW3GMytP7u7/6uUdIEaM/Ozlrw+Oeff67NzU1ls1nF43Elk0n9\n", + "wR/8gT777DObBYmJhREDCy0UCiZ+j8fjljdM2QzwGXM5Yw3wFG+oM2fO7Xbbjl0qlTSZTMwQSnYb\n", + "bBq/C7oTXNpQ0pKMweTgScJTqVS6V1fMmBGNRnV+fq5QKGQ4MomkHJ4jkYjy+byNDPl8XqlUSt1u\n", + "V8vLy2q32ybCkmTudzYEbgTC1RnH8P+dnZ1ZeVChUNA//af/9KMNrY+KAaSiIJlM6sc//rFSqZQO\n", + "Dg50cXGhP/mTP1G/39ebN2/05s0bjcdj/f7v/75Ze7DznJ6e6l/+y3+parWqn//852q1Wnr37p1V\n", + "O+CHk2SHsVAoZITK2tqaIQHhcFiBQMAe04jrA4GADg8P1e/3VSqVdHBwYKMAMbK1Ws28f+RwkMo5\n", + "NTWlX/ziF5Yf1+v19OWXXxrN/MUXX1hgeKlUUi6XMwqdw5b0bTffmzdvVK/XVSgUVKvVlM/n5XK5\n", + "dHx8rC+++MIIHjDvarVqss2bmxtdXFwYG0igOOVBbAbFYlHSnU3q8PBQs7Ozhq93u11lMhl99dVX\n", + "D3r/H9ViJgCl3+/ryZMnqtfrFsZHd3QoFNLu7q6ur6/15MkTo1LxqE1PT1vJeiKRMDwYaxNs1fT0\n", + "tEkaLy4u5PP5lE6nLY+OVM5CoWBZ0fQJokXG0r++vm7QVrfb1Wg0sogxRobp6Wmtr6/r8vJSXq9X\n", + "qVRKt7e31gOysrKig4MD3dzc6OXLl7YLLyws6MWLFzZz4wFEVVir1Sz9aX193Zg9SYYrEweAXgVF\n", + "H/G3CI56vZ7djLwfyGiXl5etgWp9fd0MrrCyZII85HpUi5kTNwA8eQ9OJwnQG91zSEFRlzGSSN86\n", + "k3FUIIqJRCKG1YJRS7L6taurK21tbanT6SgQCFiSfiAQMNE+nXjT09NGYaOqYwQBZnS57nrAsUnR\n", + "XUgMGJQ0Og6n3xBcHdMAX5sx6vnz5yYLZTcFLw8Ggxb2ArkB9Mesz8+NrgP1IU8t4monk4lCoZBS\n", + "qZS5W9goPB6PgsHggxfzo9Izx2IxE6RfXl4qFospk8koHA4rm80qFArp+PhY/X5fS0tLNsNho5Jk\n", + "GRE8sj0ej66vrxUMBlWpVNRsNhWLxTQej42Fe//+/b3uEyrXvF6vaXj5u6mpKZVKJRWLRQukubq6\n", + "UiKR0NnZmZW2I5EcDof3lHfFYlErKyva39/X8+fPTaiPl7BQKJgznfkdzTF6Ehq3pqfvmlLb7bZp\n", + "kU9PT+3gR+D4YDBQtVq1kWlhYcH8egiIIJdOT08N2qtUKmaOKJVK2tzcVLvdVqlUuhesjtPnu3gu\n", + "x4VMkkwLshw4WNFfMjs7q3Q6rePjY3uss0uTtUzyJocw8h1wMFOV0G63bUTx+XxaXFy02K5gMGiP\n", + "dnZ3AgnxDaKrAAGBoCGDAocG0bh+v99y6cjUIHOaoBrIDvTb/A5zc3OGcqTTadMo82QoFosKBoNG\n", + "vpCvwe5/dXVltWtQ5mg9oPE5CLOjEwFMljQ9jKA76KVvb2+/W8zOy1lsg4yTiFpiVSXZYxBLEIgE\n", + "lDMWfhan9K3kE3cy8zM1ZxRAokNGXgnNzfzqtDEBR8EsAmexWLFg8W+RdbK4xuOxQYXOMcVJjDBq\n", + "OGFLYDUYRIJvwHrRqGBqIJODjDk0JYw9kmyBsykgRWWkgIUFeYGlhfzhd3nQ+/+gz/5rdlGzi4YX\n", + "JRn4JzkOzJEQDGQIl8tlDYdDbW5umgwSWWOpVLKdfm5uTsFg0AISmc1RzzUaDWP0isWiOS7y+bwx\n", + "YdL9EBVy31hwpH/ys7EIcKrAoKFrmJmZ0eHhoQaDgXw+n0qlkmKxmBXgwM6RPQdjSLkn4whxvaje\n", + "pqamVCwWbd5GU4K2udPpGAGERoUAm1wuZ/S8dOcE4hBZq9V0fX2tXC5ndDkHx4+9HtViTiQS1uhE\n", + "ChHJQ3SXOE/XqLXw9EUiEWMGEb4TYsIuWavVTL/ATIuoCMEPTVIul8t2ymAwqLW1Nbu5YO/Ynckz\n", + "ZidmROEg6/V6tbq6KpfLpXA4bHUPOE3G47EVVUp3RgUcNjjHMbtCX8PgQaKggeYQOhgMjKxBGgAd\n", + "vbKyYj/Xy5cvbf4lnsHn85keptVqmeMbNR8JUqQ31Wo1PXny5EHv/6NazOPxWJlMxmYyv99vmXMQ\n", + "FdLd3Eu/39bWlonv0TVgNE0kEqpUKuae9nq9SiaTNkM70/HRcHi9Xi0tLVmGBiHk7HbOvAlQFhYA\n", + "kkhgNeeiDgaDpv0YjUbm1pBkeRVouREO8XOQWkrcb6fTMRJjMBjY7rmzs6PRaGQMIAdkn89nLhny\n", + "QQhSREXIARhWlKfNwsKC2bcQOZHMjxab1x5U6GOvR7WYnTnCHOzQ3rKLcfLv9XrK5/NWeSvJhDg0\n", + "kubzeXk8HiuShD3DuUFkLoufpiocFhyOOASCmCQSCUMhwuGwhZTDCCL3JFmeGbrT6SgSicjr9erw\n", + "8NBw65ubG6PMJRn+DNTm9/uVSqXMGUIeBv4/YmxZ8HNzc/b3mFoZ3ahCY25HVxKPxy1wB10L5wC/\n", + "369EIqGVlRWNRiNVq1VzuyNaImnqIdejWswcYG5ubizIkN2ERYFM1OW6q4pAi4B+gbqGUChkownz\n", + "KYsKurpYLBpFjQkVySmRXcy/GE6vrq50dnZmRAGsIgc5xpRoNKqNjQ01Gg37POZ+dkQSmtCMsBMy\n", + "OqyurtpOjisGBhOTKq8XcQC4P/AK4qTpdrva3t62UBhcMtxA0PugGsFg0MYKKopLpZLcbrcWFxeV\n", + "SCQMD+dmeSia8ahwZtRl7KrQqOFw2BqQMGmGw2G9efNG5XLZ6Oj/l703iW00T9P8HmoXJVIiRZEi\n", + "qV2KiIzIyD2nq9CDBvpiw30a32wffDB8m4MvBgzY1wF8NGD40BfDA8xlAJ8MH+zxwJgFVWigcmq6\n", + "KisyMiO0UiLFfZcoiRIp+qD8PfmpptszCLnHM0J9QCIztVL8/t///77P+yzlclkvXrxQoVDQ/Py8\n", + "Tk5OHDXMzgrvGC0hQwAGE+xmhOUsLi56pMvDABYtyRyMRCJhoevs7KzK5bLFotiGzc/P6+zsTLu7\n", + "u1ZqYK8AFHl5ealCoWD1Nr8rk8k41mFiYkKNRsPkn3q9rkQi4TiKpaUljY+Pq1wu2zdjYmLCu/3K\n", + "yoqHIggaaJTByA8PD7W7u2sz9nq97j6iVCoZvgueZD8p5T7selI7M40MkibpfrcG06UejMfjtodl\n", + "58Gyip2SHbbX6xnCgojebDat8UN1Qpe+vLysy8tLvXz58gGRqN/vO0AHGKxer5sQX6vVPCkEFSB+\n", + "jF0YZQc7ZxA5wMZAuh9tLyws2DGoVqs5UJ4jHfQA6ma73bbd2NnZmRGS29tbW3ZR14O40ADe3Nx4\n", + "sBNkGA4GA1UqFcN2xWLR7xvlBfkpiCQecz2pnZlGDFvaeDxuU5WJiQmPUIkbY6GAXqTTaRUKBcXj\n", + "cX388cfqdDo2+wuFQrZwDYfDnohtbGzo+PhYU1NT2t7e9i6Lxk6SHX6INeN3ElIDAQj+CJNCGkwY\n", + "asik+FzQqDyfzztWAjTi66+/tnp8fX3dMRHHx8cPPKdJoZqcnFSlUlE2e69MI+EWjd/FxYX5FLe3\n", + "t2YC3t7e6tmzZw80mBsbGy7XwPVBRxAToCGkgQXC+9DrSe3M/X5fb968US6Xc5PX7/d1cXHhiIdG\n", + "o2GC0OLiov3fIPpIUrPZ1NnZmW2oMPWmFKnVat6hjo+PH5DqoVZiOoNrz3A4VL1e9y7H8czYmQkY\n", + "sn/gtEql4mP67u5Op6enJtNTxxOoORgMrMKen59XtVr1xI3EKRpLbA6AIAn9xCByZmZGBwcH5kpT\n", + "nkCBheRPuRU0LG+1WpZN1Wo1XVxcPNjt7+7u1Gq1VC6X9fbtW01NTRm/f8z1pBbz3NycXr9+rUQi\n", + "YbiLXS9ot4XnGjcUqwEYbXhZYDoOUYadjWwTJmw4HOEOCiuNySDQHoMLnPsh1jN2Bm/e39+33wV1\n", + "ftAOdn5+3gaGQesxSa7fiUoD1UmlUh7t7+7u2jar0WhYOQIGDwrDBA9iP68fe7JoNOqUKyBNsGp6\n", + "F0hS4OIseiZ/6+vr9gZ5jMpEemKLmXqQWAU67aC8iAVOh12pVFzXQoqBa8DYlv+HrwBmDaoB7txu\n", + "t01wl6T9/X0LaFutljHmfD5vsnuv17M5DMqPWq1mBGVubs67NJ4bwYcLTHc0GrkUQVgbjUZ1c3Oj\n", + "Uqnkr6O+pTGliQyHw6pUKnb1pLaHrFQoFDw1pTcgonlpacmuR91u105KnI5TU1NqtVoWFDB04sHr\n", + "9/s21HnM9aQW883NjW8wzRq4MCSZVqvlWF285wiKZDqH29HExITOzs5cFw6HQ5sMgrt2u10nNyUS\n", + "CZPp8edArIofMsOScDis6elpe1cgdyLRFRchfOBw2URYy2KT5IcLx/3z83OfCBMTE36Y4WmQdwLm\n", + "CyZM47aysmJJFrszTS6LsdlsuicgcAivaWLp4vG4rRXga2ACA2RIk51IJLypfOj1pBYzDdH09LSn\n", + "Sevr616gcHCDurOlpSWHVUqyiR/TKaT4DEqwBQiaDaITjEajzjeBiMP3Az3hSA+7DxsBYEQmjfwu\n", + "ToDZ2VnH/7I7go+jwGZnY0weiUQcQsQED74Jjvd8nAd5ZmbGcjGGRJiIg8VzCsD5CIfD9rjGdiCb\n", + "zer29tbQJR554PoIgWmOsWt4zPWkFjNvEFAcWjRG10ydGN9ubW2Z9A6sRRY2qAE3IxQKuUHZ3Nw0\n", + "V4PuHa7wYDBwHYjzJfwJfjdcYW4uDD+8jSGyB0MimTRWq1VtbGzYqZTaG27J7OyszSLj8biWlpa0\n", + "trZmuRVOQwyN4Elks1nrB6GgJpNJw5ZgzzxkTAPRkF5fX3tH39jYUKVSMcGL6Sjj/mg0+iDtFhNI\n", + "NpQPvZ7UYkaKD/US2wHpnrhPt87ErNvtGvynDCHQkThidhoSXJH+M66+vb11WhLHOLxqTgQaPZQa\n", + "+EPwc/k6dsi7uzu7DDGGZ0GDzoBrY0pIOQP8lUgkzL3ANy8Uuo+BCIfDymazDxybODnILJTkJCoo\n", + "pPw39ma1Ws2KbiaUkKPw+RsOh1bAwANnSsgABTbhp59++qj7/6QWM+NoGsGpqSmPpKlzEWeCxXJE\n", + "gwPPzs56QbBQZ2ZmrEiW5N2TkgDfDRyEGPeygGOxmPPzcPUJRolJ8uKnbtze3nZZgNIllUppZ2dH\n", + "8XhcpVLJDRz8aV4XjkyYrkDqAUYLwnih0L1/dafTsUwqiGxQjlG2DIdD+1qjSgfSlOQhDKw5BAF8\n", + "LhwOGxEiK5yN5ne/+92j7v+TGpqcnZ05944dFz5DvV73mz47O6tisejmjbw74hAODw/daNVqNZ2d\n", + "nblMOTo60ubmpmU/uI12Oh17Qmxtbbn+vLq6UqFQsKEhlriMsefn59Vuty1+xeNufn5e+XzeHhnU\n", + "ruFw2P52YNfn5+f+WzY2NswZAfcmsbXX62l5eVmFwr1934sXLxx/NhqNVCwWlcvl/PP/xb/4F/r8\n", + "888djDk2NqbT01Pt7u76fUVsAFsuk8moUChob29Pr1+/VqlUcvNMuVGpVLS0tKRWq2Uvjkql4lLv\n", + "Q68ntTPjesmUj1xn4hlCoZDtYBlns2hZJM1m07sLAthoNOpuGx5H0FMDDgURYpgWSlImk7FLJ8aL\n", + "lBZoCXHdX1tbs5woeGPZwWAA0rg1Gg1TUIfDoT7//HPn/DGIACLD5w5jG7B3yD4sWMb+GCJeX1/b\n", + "CRSUItjIAUNOTEwom82aLCX9xPfG9iyZTLoUopYmGFSSIzg+9HpSi7nT6fhI46hl12U0vLq6alus\n", + "0Whk53r0bvF4XOl02kcsOX/tdtsU0VQqZbgMsxQaH/R03FBIPEF4LJVK2RkIBAQHJh4ylM5LS0sP\n", + "HJfgFt/d3Wl1ddUWV5ubmw67R8mSzWb17Nkzu/FDj6Vpm5+fN6V0a2vLpdba2ppDNWG9ZTKZBxKq\n", + "y8tLy82C0i5kXcCZ2WzWxjfD4dC+IlgvzM3NGS7c2dl51P1/UouZHRi1RDCmYWtry8SfmZkZd/xI\n", + "nhKJhBse0qFAK1is8AyQZ2WzWTO+2A0B/5m4wcfAgzkozwKvhTIqyTpDjv5YLKb19XWrmEOhkCFF\n", + "ZGGQn6hzg0qQer2uarWqfD7vk4VkJ0orHvylpSULA2j0+B4oovBGyGuhLuZv4H2EHw2zEKTk9vZW\n", + "a2vLh+SrAAAgAElEQVRr2t3dVSaT0Q8//ODhye7u7qPu/5NazGSKBGEggmnwDgYdGAwG2tnZ0ccf\n", + "f2yL1cFgYBLScDjUzs6Out2uO3OaIzDkYLkQj8cde4ZcaHp62l27JEN4c3NzFnkiXAUGhLWHooMH\n", + "hN+DopkgeNAEgtqx2mURLi4umodM00qtzYOP1o9TDVydciv4wMJIDD688KGDDeFwODTXGk4Isi5U\n", + "Kby3CwsLJjc95npSixmnH4jfkIdALUAGTk9PNTc3Z34DA5WlpSWPp+PxuI6Pj7WysqLBYOBsPoJ+\n", + "uOGkU0FYmp+ft+snNxeoimMVWIvas91um6jPTkdZgRQJVXg0GtXq6qrd8AeDgS158XLGwBtjxm63\n", + "q88++8zZfCxy+gRI80CN5+fnfj8ZQgXLk2azaT0lpwR+0uDTjPWBAektqKnHxsaUTCaVTqcVjUbV\n", + "6XTszvSh15NCM0qlkgWcLFqST0EvMLvGq+L4+Fizs7M2DCSjo1AoOHgGtQjoAKoIJml4Gg8GA52c\n", + "nGhtbc3jcgxOqLdhx01OTnqELN2rv+nyR6ORlpaWVCwWLYliSNHr9VQul/0AQIrq9/v63e9+p62t\n", + "LRP5QXWmp6dVLBY1Go10cnKidrttZcr+/r752/A+QFfq9bpisZgd9GOxmE1j2u22TRJ5nzF2rFar\n", + "psIWi0VrGclIYZFjPXx+fq5YLGbBwodeT2ox4/7OwmFUHYvFHoD6LFDQg0wmY10bKAU8DJrFmZkZ\n", + "Y629Xk9bW1vq9XqOGEM0S1g8N3dra0t7e3tOj1pdXdX4+LhyuZzr9nq9rlQq5ZtPOUPdT6YJ5VNw\n", + "ZA8mXCgU9POf/9wLEsUHHOFwOKxer+fBENPDjY0Ntdtt/33s9uDk09PT2t3dVb1e98fA7kFEMK/Z\n", + "2NhQt9t9IGplMokT093dnXq9nnnbQdEEviYfej2pMuP09FTpdFrS/U7HgAQmGvo6sM3r62vHpJ2d\n", + "nXmHBY9GCRJUaLdaLT80hULBi5mSAlPzfD5vrwy8L3DWJJ6C6SDkHRh5MPCGw6FrS2xxiU0gFIhB\n", + "xuLioo6Ojsw7QXUdFLnCyhsOh/bBmJmZMf2VRAEefuipvI/kw7DjM1y6uLiwsTmUUTBxYpn5evoG\n", + "8lfgOY9GI/3www+Puv9PajGn02n1+30tLCzYXYjun1qQpk2S3r17Z1ZXNpu1ZAiNGtkjNHGor/f2\n", + "9ozjFgoFN569Xk8bGxsWnM7NzSmRSKhUKrm2DdoPIDQ9Pj424yyRSGhlZcXlBB5w4+PjOj4+tuv+\n", + "5OSkI4klmWvd7/eVy+UUDod1enqq6+trFQoFL3rcQKempoy5o/CuVCqKxWIqlUpuCIHVIN3T9EGY\n", + "wlCSMbskswShgzJtpZZnNH51daVYLGYPvz9wMwIXuXszMzNmbSHIzGQyxm0hDT179sxfDwMuHA5r\n", + "Y2ND29vbD7JQsJeamZlROp3W9PS01tfXlc1mjUlnMhlzP2DT9Xo9ZbNZw4QsgKAjP4gLC50HaPPH\n", + "cPdkMukSCNNHyENYyoJhLywsaG1tTSsrK/roo4+cFgBHYnl5WcPh0G5MPGDz8/N69uyZyVh40lHO\n", + "8NqICoZRxwh8c3PTgfAQmIDwQJbgxsBKfPHiha6vr202/vz580fd/ydVM6O4gLcQDocdp5bP51Wt\n", + "VhWJRFQoFOxnfHd3p1qt5mDzqakpvX//3i75HJ+vXr2yFRUmJldXV9rZ2XEzWC6X9dVXX2l6elr5\n", + "fN5JTUQVQ0LCzX5nZ0f1et1DHRpKOMSorJF/oStsNBr6/vvvtbm5qdFo5L+B+ndvb88EfUlefCS7\n", + "0rRFIhG1223j5ijMT09Ptb29rd/+9rfa2NhwNIYkB7f3+32HBd3d3enk5MQTTbjVmEySG7O7u+vd\n", + "Hn4Mwt5QKKR//I//8aPu/5PamZEtzczMWG9HPToajbS8vGzjFaAiSgKaHVAD/Jw7nY42NzedVBqN\n", + "Rm3R1Wg0HAXBtAy3e0oTBgo0YxzPxK5RI1NXAsuBRyNiTSQS5j0z6AFqk2SjchQfnASw/hjBd7td\n", + "ux7hkYHkCpiNciXoOw0zDu4xzbB0P/YHzYEHTiP5+yruTqdjr2qgPBrotbW1v/rG/hteT2oxB7to\n", + "RshEliWTSU1N3aeswlqDN8HORQJTPB73EYn5+Pz8vLLZrAaDgady29vbthaAXE5TRhNZrVa1srLi\n", + "8oYHS5K5xOl02ho7poPLy8t+6BhybG9vG8aCB8zu+9FHH/nhxYMDpt3Lly9NLaWhq1arSqfTfm3x\n", + "eFzJZFK1Wk2bm5uOpWAKGo/HjRdfXl56ETI+X1hY8AMWj8d1eHhoZiDsPTz/cEzi9a+ururVq1f/\n", + "7gbB//9xMTomiJwJG7IgYsoYZBBAI8lDDmLLJNnJEky4VqvZ9RPaJDznoHdavV7X8vKyCUGlUknN\n", + "ZtO7M0MHShtomdhxBX2i2VHhMxD4EzSGQQVCvY1VV7PZVKlUUqlUcuMFrRQcGv53sVh0UsDl5aX1\n", + "hpQf4MWEADGYYsTOGJ8h1OaPUc6w8qamplymtVotS8wYZbfbbeVyuUfd/ye1mOFhBB3jkeGjWIbg\n", + "AlR1eHiocrls2Twj3qArEh+jocPBHsYYxztWrclk0uNvOnyidrGsKhQKJuYwSKE55GuJFD45ObGT\n", + "Phg52SmUCkCDGJoHd01YacGwScoT7G3n5uZ8KmBjxpDo5ubGVg1YFRweHvq9ZuCCypzQHiRVCFYp\n", + "+XgNTBoJpX+so9GTagAjkYh1gKurq5qYmNCzZ888+4doxDEMkWZzc9OqbI6/TCajq6srRaNRp7lK\n", + "8i4Inj05OWkuBAlTlBuhUMhk+WCGH6JVcv/W1tbMT4YmyTBhNBppZWXFWYAc41h9URf3ej0brc/P\n", + "z3vKiXvRaDSykz3EJz4H7RQi1cXFha3FEomEms2ma2yQDvwvglnilGCUbZg9kn0oyf3FcDjU1taW\n", + "Dg8PHyQJPOZ6UjtztVp14/b+/Xu7AdGoIU/K5XLOKGF4wi5B1h0jYngLiFhZjMPhULlczmUCudJj\n", + "Y2MPcF1cRWkmGWFjLzs2NqZisWiaKfg4CnNKEEl22Gw0GkYrKF1o0sbHx1WtVlWpVCy1gvfMqB6T\n", + "cr63Wq36yGfUjfUBwxskVahlKG/QJoLDM/bPZDI6Pz9XJBJ5YJxer9dtOFOtVj3iH41Gj+ZmPKnF\n", + "DHdhfHzc0WnAdRxtCwsL2tzcNJZbLpeNCSMyZayKFQBkdepRdj3MEGnKGCuPj4/b6w50hHp3ZmZG\n", + "1WrVmSWMwLFIgGO9urrq5isUCjloE750UIiLqePe3p4kmbMNfgsJKEhRBW2hfl9dXbXEiQeb0Tml\n", + "D2UDfiO4m4LEnJ+fm7ctyWqXu7s7ZbNZtdttP5jBhAOmin/YmQMX2rulpSUfjeyCxIMR7jg2NmZ9\n", + "HrgpolRYcBgTUnem02nt7u46KxD93YsXL8xBfvnypebn57W/v++dEqI9nOSvv/5ak5OT5iODc29t\n", + "bWl7e1uJROKBQz9eFvF4XMvLy+Zmw97DVD2TybhkYOHi67a2tub3Bg8+BiTZbNaKksXFRW1sbJjR\n", + "B/F+e3tb5XLZ9Xg0GlUmk3G5tru7q+3tbRtTQuQClbm4uNCXX35pduLd3Z02Nzf17NkzpdNpv4+P\n", + "uZ5Uzdzr9ZwrIt0LKNltiQdDwIldFFZTBGKORqMHnz89PfXnYrGYv2ZxcdGaQ1hx8/PzqlQqfhDY\n", + "bWiWKBkoXSYmJixobbfburi4MMuvVqtpYWHBQlP82iKRiBqNhtrtthEV/JPZ+fj7g1azNLmULzSf\n", + "Jycn7jUqlYqbvYWFBUfI9Xo91Wo1vXjxQnt7ey4lsDZgQCTJeDS5isCQg8FAR0dH5qCA7zPyTiQS\n", + "Ojs7e9T9f1I7M1O5Vqv1IP4LkjsEI5wtQS+YjKEeCdoUhMNhdTodO3bCYYZhtr297RgDcu+Wl5fV\n", + "aDS86Bit4ztxeXmpYrH4oKlMJBIP5FmZTMYNFrUtzDcsFWjQeO00c5gd4kcBDIhLKqXR0tKStra2\n", + "NBqNHONGGQPrjxE5DxT4fDwed63LAzYxMeFgedThwI+UfIy1EeyiqAkmu37o9aQWcyqVslJEuseJ\n", + "OdLga0QiEW1tbdlDglo3Go1qeXnZiwnzE9w2adhQkfD9+/v7Nlth+CHJQxuMBBnYwMGIRCLe+ajp\n", + "Ly8vtbKyYhMZ6V4QC3UV9IG/dTAYmKBDnRoKhfTxxx/btBHYEF4Fi35paUm9Xs9cDxCgbDZrqiee\n", + "ckB5jPJbrZYNcUBriIBg0IIqZmpqSolEwmUOpc/ExIRevXplstHU1NQfAnqCF2SY6+trnZycaGNj\n", + "w1RHQuDz+bx+9atfKRKJ6OjoSJVKxXgto+ZOp2OjwF6vZ7Th7OxM5+fnTpY6PT01uaZcLuvXv/61\n", + "g2mYKK6srJgAj+F3tVpVtVpVPB5XoVBQLpczsWd8fNxZKs1m0+mv5+fnRlNarZaD2MlL4b+Hw6H+\n", + "6T/9p6pUKtrb2zOzjqEPKVKUE4gYcrmc3r9/r9PTU719+9bUTeLPsCCA10JjCEJSq9VsME49TgLs\n", + "5eWl9vf3HYtRr9c1MTGho6MjIxynp6f6i7/4i0fd/ydVMxeLRfMFvvzyyweGhdhjzc/Pe1dbWVmx\n", + "HD5oIYWOD+ehtbU1T9uAm2ZmZtyA7e/va2xsTNvb23YvIv633W5rZ2fHHsbsWkB0kUjEYlD8L4C9\n", + "UqnUA487mjqOfIJwsBKjXEBpzTEP6gCygys/tfbt7a3S6bRV1xCYMpmMWYdM9IDfUL7THDP+pi/g\n", + "ayASJRIJRz8gbg2iHisrKzo4OHjU/X9SOzPlBESbSCTiGF5CYaampkzlZNHAv6A8WVpaeuDlhuIZ\n", + "NyJ2SqAkyodQKKSVlRX7zyHgpEYMBviAmMD1JXoNmI6dnQUZDJIPuoiCyEh6ENWAbq/X62lubs4c\n", + "ZUlW11ByQOOkrOB9BPHhtSCWHQ6Hjp+YnJy0IBdEhJBKavhMJuO/A0ejnZ0diwPwruPv+NDrSS1m\n", + "SDTlctnHWqvVUr1eV7FYdFb20dGRZmZm9Ktf/UqFQsHDFrr9vb09R6vhMs8xn8/n3WAeHBzo5uZG\n", + "79690/n5uWZnZ60kGQ6HPhkYGcNQq1QqajabDsPE/CSYKnt2dmaeB/yParVqZl65XFaxWHR4EFZd\n", + "lEXsjJeXl3r37p1Za3hroJwBJTk5OVG/3/dwaHx83AkCEPf5mzGt4QSCjzEYDFStVu0dx7j/9PRU\n", + "zWbTrymIS5PFMjEx8Wiz8SdVZgSPUnbf7e1traysqNvt6quvvrKKWpI+/fRTL+zJyUkjFp988oki\n", + "kYjdPqPRqJLJpPM+4DXE43ElEglDVevr60okEjY6XFtb09XVlTKZjKGofr+vdDrtgEdcRwlgh4b6\n", + "+vVrB72DB7PLMuAhFhnEgsEIxoaM7nO5nE1gcBJdXl52CZZOpxWJRDze5zThxMGylkEQu3gymXQ5\n", + "sra2ZjlUOp22NGxzc1OZTMaw38LCgkW8/D6SYl+/fv2oUuNJLWZqMCAmYgfg1WKzGgyvZEq1vb3t\n", + "FKlOp2PSC/U0imUWRzweVy6XswL77u5OBwcHdtpfXFzU6emptra2vAPhPoSw9OjoyGIA6I/T09Ma\n", + "DAYmr3e7Xa2srNh5dGZmxkpr4hPwocAeiwgHQiURtQbjkfleHiDc+iFojY2NPeBct9ttNZtNdTod\n", + "7e7uWk9IFB0lAzXy1dWVlpeX9e7dOydLra2t6eLiwppJyP2tVstw4GOuJ1VmEHrDmyX9xAqDlEOz\n", + "xK50dnZmzWCQdhkc69ZqNVWrVfstY/iC3xrYKbsqWSEMAlBy8JAFgxxnZmbs5IMrEaR+xLCNRkMX\n", + "FxembEajUev2GO5I0tu3b13OkCRF+VOr1Yxi4CWN6xLvDzzvq6srZ4zQH1Dbh0IhlctlHRwcWE1C\n", + "EA/2uYgjoJyiuTw8PLTDPi5R1O1BhuGHXk9qMScSCbXbbZ2enrqUgHIZCoWUz+ddThwdHWlpaUnb\n", + "29uSZBok7K1YLObBxPb2tpsvXC2DxzGG4gxSWKRHR0eSfrIGS6fTjheGU8xiQOmC+pvmFcYZIezE\n", + "TKysrBg3Jt96c3NT29vb9prDBxkpGeLTWq1mhqAkDz7gevOeMWzBsYlmOhaLKZ1Oa25uTs1m08gI\n", + "DzhBnDx8QHiM9Cm7wMmx9eJefOj1pMqMs7MzcwPAmXHOhDDP7rGysqLT01MVCgV9/fXXkuRy4eTk\n", + "xJL4XC7n8gV6aa1WU6fTsUyo3+8rn8/bAoCEK8jux8fHisfj+vbbb7W8vOzMEhqrVqtlSJEmjXRU\n", + "JmSLi4uqVqsmDWFSw2Jh52ZBwgbENXRlZcVjZowXh8OhST6dTse0VhYhDDrCgebn51UsFrWwsGBD\n", + "SU5AoDbscEFE0P/Nzs7aSSqYPx4Mvnzz5s2j7v+T2pnHx8d1enrqIw+yPMT2arXqBrFQKBjmoq7m\n", + "OJ2ZmTFDDgta1Crtdlurq6tu8ra2tlwfcpNAMAiumZycdNIrdFMol9S4FxcX9jumJOKhuL6+Vq1W\n", + "s1Po2NiYc0+IfWPhEA1HeYE4NhjGUywWTb8Ewkwmk5JkDSWDD3jNvG5OHdAIal8oACRhUeLUajVv\n", + "KCQSUKdzoQ5/rN/ck9qZGYlOTk7qd7/7na1S5+bmtL6+rkgk4vru5z//ufL5vEWhDFBqtZpubm60\n", + "urpqYnkul9Pu7q6dfoKZH9PT0/roo4+Uy+U81oVSSk4HCafdbtfiWQwPkVuBvEj3vGzG1gxd6vW6\n", + "Li4utL6+7uYTt6Bms6mjoyO9fPnSihpKrvn5eR0dHemLL77Q7Oysstms5f6YshDAA8OOkHqosuDG\n", + "lAu8X5FIxDrF9fV149iUPzwEm5ubhgevrq6USqUUj8c1PT2t4+Nj1+1/CLUMXEFXeWAkorzYeTEQ\n", + "pwEjE6/T6ajVaimdTiuRSKharbrDDh6N1WrV6aLgsKhTmKC1Wi1r9JgEgiiAQUO8v7m50dLSkmKx\n", + "mL755ht1u10f2dTDhUJB3W5XyWRS19fX5hJfX1/7n6mpKeegoA6pVCo+bcrlshqNhnMPcfAPRprl\n", + "83lJ8kQSJIPvw7iG4Qc4NtYJ4NN48dFI5vN5+9zxM66vr3V0dKSTkxPNzs7q/Pzcjv4fej2pxYwq\n", + "AvM/TAexucJzAl/km5sbpdNpFYtFnZ2d6eLiwg5D7BLX19denDc3N955GQtDRu90Ol5k8XjciaU4\n", + "AbGjsbvDU2C0e3l5qU8//dTsuJubG0cNo/5GNxiU+NNoBR30MYgk6+T169fmKjM2r1QqZrMFx+Qw\n", + "14AFUchQ58/M3CfbFgoFlxbY3SL0BZXAyByTcgQHeHUMBgM9f/5ct7e3xuwfc4Xgm/77foVCodHf\n", + "+3t/z4w2Im07nY7W1taUz+f17Nkz7e/vmzOAjo2FwGCE7n5/f1/Pnz9XsVhUKpVyd399fa2lpSXt\n", + "7e0pk8moVqtpbm5Oktx88QBFo1H1ej2tra2p3W4bY+52u1ayIErF544HcnFx0SIDHgoeJBznpfvG\n", + "NJ/PO2SSr+E0KBQKevnypVNS37x5Y0SC3ZgouEKhYGd/mk8eVrByONIYKBJRFwqFzHEmiUCSc1ku\n", + "Li7sWY3nM2FDWPv++Z//uUaj0QcpW59UzdxsNs2txbEnn89renpa5XJZp6enku538C+++MI3EtRh\n", + "b29P09PT+uGHH/TixYsHsp5Op2PEACNBvOAoYXASRawq3S+0q6srj4tZHCcnJ3r9+rVarZbev39v\n", + "ZyTstorFohlrlAIMMgaDgYUBDFmur++zCnmdSLVQdON0j4Ch1+tZmIAYAIrm1dWVPvvsM/3617/W\n", + "+vq6RQzo9DKZjMuQubk5S7c4+fgcihaGTvA6EDBcX197N7++vvb9+NDrSZUZcBgikYjS6bQDJhmW\n", + "hMNhJZNJbW9vm2iPJ7Ikk4pYMNjfBqX5mIBLcgQvquebmxuLNyEXUTfzM/CFQ/U9OTmpzR/Tq/A9\n", + "bjQaSqfTtjdgh2M3Xlxc9AiYWAYWONIvyO6w5xgUofpmV0fahWoaCi0nCLUxQxOQlrGxMfX7fSvR\n", + "+X++hixEBL+UF0S2QWBimvnY5k96Yot5eXlZ+Xxe7969Mxnm+PjYZPOjoyPjwxBmgnAZuCfwWC6X\n", + "s76Nm48UCKYZllNAVjQzl5eXJiIxgJFkcxZGx6hLUKvQvBL7hhcG3hLValVHR0e2zuK1MuhgVH17\n", + "e+uJH8T6q6srR5RxkuAN0u/3PXbnocHABaI/ZRaELjjXjPppbPv9vur1um192X3RD0qyAp4Thbr6\n", + "MdeTWsyMctlRsZDCYyKdTmt2dtalABRFJmEoQzgaaXoODw8Npy0uLmp2dtYEc2pN6kUWNNRImGiU\n", + "C5JMh2Q3oyaWZOI7BH1w2dnZWTtrMm0EP2dEfnt7q7OzM8ORq6urHu3zgFCjg8ODtExPT2t1ddUo\n", + "yu3trc1gjo+PdX197Y0BJ6NqtfrAJ4PhDQFIqE6YGuIlQvAosi6cmP5gaRu40MdFo1GTcsCRMekb\n", + "Hx/3LhWM+oIWiUwK6AtJE8ckrpt4wM3Pz/vmEizJlBAcFrYcuxcoADufJJcUUCQpB5A9MbEjUKde\n", + "rysSiTgDhTg3/KbhZzAkgliEzIlgeUm25EUniFFMLBZTs9nU4uKihsOhzXLYtZPJpAc4PPyE/QQ1\n", + "gEwiKWPYaCA0kQmIGOJDryfVAJLn0W63tbm5acIOY1aOYdw0gbFSqZTNADn+KU0YGsA2k6RcLqcv\n", + "v/xS1WpVx8fH2tnZsUUWRKGPPvpIY2NjWl5e1tnZmR2ScBhl4Y2NjdnqgJ8PbEcj+fnnn9sghUZx\n", + "ZWXFY2AeMMJ/GEyweOFbkAfOsEWSxQxB8xa4Hufn50qlUqZ8TkxM2MUTlUkkElGxWHwQkzExMaHV\n", + "1VXnAFJaMY1EUACDjjLvDxPAwIWTEDxgIsMYZNDYdDqdB5BaoVAwwwu6JdwNRrtwKc7Pz7W5uam9\n", + "vT0NBgNtbGzo5OTEnfnNzY0ymYx50nAQ2GF7vZ5WVlZUKpUciEksWi6Xe2BRi9r5m2++sSrmzZs3\n", + "SqVSqtVqev78uebn550shY0AJw9Z4UE8nbLj6OhIr1+/liQTs2ZmZvT+/Xul02lPJ7vdrhYWFnR8\n", + "fGxIMRwOq9FomGrK68Q4cXJy0hI2Itqq1aoNFxuNhvsGSGDRaFTff//9o+7/k1rMU1NTRie63a47\n", + "cnZCTEtACJ49e6Zvv/3WhirD4dAUxuFwqO3tbftiAItR30GW5/fRtUO+oWbGDYlBCUR8yFBbW1se\n", + "uLCTz8zM6M2bN8a7Z2ZmDIlBAqL+r1QqbhwpXZ49e2ZIjtAfVCjEMyB76na7NoFJpVLWFDIpZeEu\n", + "LS2p0Wg4I3E0Gnn8zRSQJhT5FSUPjLqtrS1zQlqtlnZ2dtRoNJwUOzY2pn/+z//5B9//J7WYufGT\n", + "k5N6/vy5ecVMvoDFrq6utLq6qkKhoK2tLZN2YIhFIhGtra3pu+++89FI84SDPC6ia2trtnulpLm+\n", + "vtb29rYdQ4kdg8iPwBSlBiHzg8HggahUuocbQS54GKampmw2uLu7q3a7rUqlYh8N6lM8N3AXQjgK\n", + "9LewsGDrXRQvWAHMzs7q+fPnTpcCjej1eq7vz8/PbReAWhvWYq/Xsx4RtIXdHWSEAQpNI/YKH3o9\n", + "qQYQpUK327UTESR1tIEXFxdmrUn3xHtgPCIO7u7uTKXkZ05NTVkPCG+Dpo+RM00X/ASOeeA3YCjk\n", + "9aAQ3W7XaABNHxM/eCWMw+GAnJ6emrWGsoUHNjhCl2QFdrVatbkLdFcULJxkWOiGQiFzoEulks7O\n", + "zlzbA1/ynqFDvL29NU4O1gxjj3KLJAGijnlN/X7/DzmAwQszcGRHGFtDjcT+lYgESC9YSSWTyQck\n", + "oEgk4nFyrVYzKoArKDv9wsKCer2eSqWSmyJUL8iyKHWC0BlxCjc3N/ZbZsrY7/dNOKIWZ3Gw2+E3\n", + "jXs+i7NSqbg8IAxIup9GFotFc1fAskFY+NuBznK5nJUmLFyYhLFYzH7VIBQrKyvGlGu1mpvMarWq\n", + "q6srMwiZdBYKBZ86DKcecz2pxby0tOSbvbm56eYH4g55fMPh0CoMOn8GFBcXF673grsY1gFBZUcQ\n", + "62WBTUxM6OOPP9Zvf/tbB6KDX/N9QVgNNhzHNgsJGwOGHvxdwGJ4Xuzs7CiXy3mEvPljzAW7J6cB\n", + "431MY7BBWF5ediZfIpFQq9XS8vKyHZhub2/NQwFjxyNvMBhobW1NjUbDmwjI0OzsrJLJpOttoDpS\n", + "u1KplJlysVhMqVRK1Wr1Uff/SS3m4XDoHemXv/yl/uRP/kSHh4cKh8PK5XIPvOX+5E/+RL/4xS9c\n", + "RuB42e/39c033+iP//iPdXh4qJ2dHVsGYF8gyZ7GOzs7zsFuNpv67LPPdHh46PF1IpHQ999//2Aw\n", + "Mjc3px9++MHZHgRWMnLv9/s6ODgwXAh/+pe//KV+9rOfaTgc6vT0VJlMxlq7/f19ff7556rX63rz\n", + "5o3TsW5ubnR4eKg/+7M/e3BSXVxc6ODgwEoXoLLBYKDDw0P96Z/+qfb39810m5ub08HBgT0/MDsk\n", + "gFO6JyuVSiWNRiO/zyTmFgoF7e7uOuuFxhGeytjY2KPRjCdVMxPIAy2TuhW8mRIDGRTQkCTzJthd\n", + "2YEl+SiGnwAJnZ/NRROEUaMknwT8TkodMGkGFpOTk8Zc+TpOkuDXUEPDOaYsYBIpyb0CvQCMPl4j\n", + "P3NiYsJupMCIvGa+hr+D30lCV3A0Lckfp2zi74UiwP3gNQZptLxG2Hgfej2pnZlmhPq02+1qc3NT\n", + "4+PjnlIFPTA+++wzlUolT7iIffjZz35mvJrygZEwqa4rKysPFN/cJMSm1L4cvUB6PCSYFRLZAFxW\n", + "q9UsosUtlAki5QbWYhzVi4uLuru7U7FY1PLysnZ3dz3pY6HiBUcDDBei2WwqmUzaHw8TSaIqss3d\n", + "TJUAACAASURBVNmsSqWS+Rk0fsjEbm9vTW4iuWt+fl7Hx8c+GaC6AnsCWcLC297e1mAw0N/+23/7\n", + "USE9T2pnJguEGpB/BxlZKEbgXaRSKVtLsYMxOcNsheYE9hej716v57Ev2Gu5XFa1WvXPZLeCWokr\n", + "EbRSdkGwbXR+lUrFVElG4UiugMqwsg1i471ezyIDcGdJdvPk9Go0GpqZmfF0j4xCILWJiQlnhgPv\n", + "URbNzs6aHCXJzlFwL0BSkE7ROGIHjM0wHHLQmsfuzE9qMW9ubhpPRYoEngnLjboYvJTFhdWs9NMR\n", + "D3KBfzK0ToYJ3KhWq2ULg7W1NSUSCS0sLGh1ddWNJCPnyclJLxKyQNDYseviXIRmES4IWDjZehD4\n", + "GctT266srDjCeDgcuinjdfF9nCpM4SAwscPShGKIKMk+diA4sVjMFr2QpsgEDH5tNpt1GQW+DsZ8\n", + "fn5uEexjrie1mKnJwJQxLCEXsNFoqNvtql6vm6eLNAhYCp0fOjU0cCipcfeRZAUzwZaFQsE8CEa7\n", + "DEsWFhYeHOM0SZDVQQYYXiCuZYGDBTM6hgeBMhsyvCQ7CpE9eHx87L+LiRyLB14E9FB2VngpPEwE\n", + "6pTLZW8I8EDAmOfn511KsXOXSiVj1jDsrq6uzImm1gZ3fsz1pBYzYk92tvPzczcwmKywQ3EzkExB\n", + "rL++vlY4HDbyMDU1pY2NDbO7cI9nYsfN5zhmOCHJgwjwaZh8DDtoVnHEr9VqqlQqD8zDsRoAamu1\n", + "WuZLBOvwYG4frDXstGZnZ83jhio6HA5NLuLvB6mhyQTaQ2XOyRU0d8HVFBECECjDKHgtmL4QLIp2\n", + "Ea8P+ofHXE9qMff7fTvlg0xQq7Go0Zo1Gg3vxKAGtVpN6XRazWbTbLrBYKBCoWDGHQoKjmL4B7Dx\n", + "SH1FdXxxcWGhKGYrdPhQUsGpg2GPwREv6mkMYDKZjAqFgur1uutd6aeUWWrZbDarRCJhES0fv76+\n", + "diIrGPfi4qJWVlYsb+JnsWvCJuRhgfYKagKygnaQoRGlCg8w2kumnLyvsAkfcz0pNAP+ctBG6tmz\n", + "Z/ZdBthPp9PKZrPK5/NuwMbGxrS2tqZQKKTd3V0HvlODQn/c2try+BWUAoroZ599pkajodnZWW1t\n", + "bSmdTuvu7s4nBMR4rAComVdXVx+4gDKEwAMPn4vhcKjl5WVzGwifZ+FR6ycSCfth0BRChGfs/erV\n", + "K/OdIeHzHiCFSiQSDsREFfPy5UsPWCQZA0eIgA7yiy++8APICYb+kJOHzST4UD/melKLuVwuu4Q4\n", + "PDz0tC1IXWSRwg9GkNrr9cwVYBwcNC2EI10oFBSPx3Vzc+PpFVev11Ov13OqEg3Nt99+6yHGYDCw\n", + "TW6pVNLc3JyKxaLK5bJ39YmJCf32t791LR6NRnV0dKTRaKTt7W0dHx8bScEuC1uxZDKpcrmsV69e\n", + "OWpibm7OYlF203q9rmg0augPRIQSAXd+0Bni28rlsr3rfv7znzuCAswedQlWYiRrYSr+7t07m5jP\n", + "zc25ESeh9jHXkyozCHthaEHjxxHJoiTMnJ0AnjKex5CIer2e7VhXVlY0NjZmXJjdPJPJaGxszHBa\n", + "uVz2Tg35aHt72zIpeBc0oSQwsSPCcFtZWfGQplQqaWpqynTRra0t/6yVlRWP1RHYJhIJG0PCc8bJ\n", + "iAVLkhVjf5pS+BIMXhKJhHHzer2uTqejZDKpVCqlTqdj4exoNDJ1lLII56Lr6/uMmdvb2wcmlCi5\n", + "Jdnc/DHXk1rMZIXgI4E6mhqOWvHs7Ez9fl/7+/tuhlKplDKZjPb393V2dqbb21s3UCxEUI2DgwM3\n", + "Ze12+4Fa+auvvvLuNDMzo6WlJRttw3oLh8OuiwuFgs7OzrxL7+zs2NaqXC6bfipJ33zzjeLxuPL5\n", + "vNrttur1usuYt2/fGjl5+/atwuGwms2mSqWS3r9/7wWP2eL8/Lw6nY6KxaLTAEBE9vf3FQqFVKvV\n", + "PMKfmppyhjgCVkoZGjvek4uLC2WzWe/aWOGCboCy8HO73a5KpZK1mB96PakyAwz16upKf/qnf6rL\n", + "y0ulUikvKEmWD93c3Oirr77Sd9995yYJZ3e0bIlEQrOzs5ZgUZdKsgCgXq8rnU4bZoIRJslG4QsL\n", + "C57e4bu8trbmRSvJqEe1WtVgMFAkEnH4ejKZVLfb1SeffOJmFZtcBAG7u7sevrx+/VrxeFynp6da\n", + "WFjQ+vq61Si8P3jLDQYD7e7uuh4PyrcWFxe9uw+HQ+3s7Oj9+/cWEcAbCdoWsNPCf0aqBa58c3Nj\n", + "XSaDHAZUq6urev/+/Qff/ye1M8NTGBsb8zCk1+uZX1utVi2NHx8f18HBgfm7qEbgJNCUgJHOzc15\n", + "8bGrTU9Pa2trS6enpw982ihJWGzwgKFsLi8vW0YEP4MygCENKhAMYeAVE5/G7giaIN0/zEFTFngg\n", + "2AXQIMNeGwwGLnn4GfQTePSBNqBU4YFh8IT9Ge8Xihegu2DZQSmCvUO1WjV3nGi5x1xPamdmV2FR\n", + "TExMKJVKWbIkyXKf8/NzbW9v6+joSJubm27M2u22lpeXlUwmdX5+/iDgcXx8XDs7O47MhWQONbLT\n", + "6XgxAkOBw/K9OCQlk0mdnJyY8wCbLBqNGgpcXl42cgIKA4WS188ImITYsbExh7pDxWSHB+kpl8uK\n", + "xWI2mlxaWvL7FovF3DMQRElID4oUhklzc3NKp9MPLMWSyaTla/Pz8yqXy0omk/4bgkQjmmAQjp2d\n", + "Hb19+/aD7/+TWszr6+s2AEdbhs1Wp9PR+vq6fSwghf/RH/2Rrq6uTAGlyYN4c3t7q9XVVUmykHQ4\n", + "vA+rpIljBIxfRigU0tbWlkfM7OD1el0zMzNuisbGxmwaAy+E45dkKnZy6JLscs+fPzcLMBwOq9Vq\n", + "edgDG44mstPpKJvNeleH2Tc9PW2no2g0ajx+eXnZej5orBMTE47MYJCCDnJjY8NoBM33p59+qna7\n", + "bUiQkCRIX4y2d3Z2nFSF2fmHXk9qMe/t7SmZTKrT6ditvVwua3NzU41Gw8gGYs18Pq9KpaJPPvnE\n", + "YTmpVErv3r3zsGRhYUEnJydWRoCYHB0dqdvtamdnR4PBwEc1ZCHKEYYIKLgJaz87O9P6+ro935aX\n", + "l7W/v2873aWlJUuKqIuj0aix4W+//VaffPLJgwFFtVrV+vq6qtWqyy3ITPQEcCkgy0tytASO+NI9\n", + "flwsFk0uqlQqSqfTZtCVy2Xb8VIGQXY6Pz9XPp/Xy5cvjR5VKhXFYjF/PaaNCHwJOHrM9aRqZlwz\n", + "yZqmucI1kxuG5Oju7s64KbwJsGEaMr6HsWu1WrVkX9KDOAigMnjAMO6Y/mF0CFQInCdJlUrFtTW1\n", + "KGE5xBnX63VPJ4HmsAfj9+C0dHNzo/fv3xsWAyZklAwBCoUNY26wa9AP0BqGGzwYDD3gfmNRG5zC\n", + "np2deROhNKNODoYfQStluPWh15PamWma0Oxx5PZ6PQ2HQ+3u7jrlCPohShI4wYzC5+bm9Pr1a+c/\n", + "X1xc2LwEXBXQH6sCBJ3JZNK8ZGRTkmwdRm0+GAy0ubmpw8NDB8PH43F9+umnOj4+VjgcVjwet1VX\n", + "IpHwgltaWtLk5KS94lA9Y1ozGo30/Plz/+6XL18qn89rcXFRxWLR2SaSzGhjyMGUkJNqf3/fFr9L\n", + "S0vmVmNxMDU1ZdMbFnkwi5HIYpo8xK7r6+uKRqOejj7WPPFJLebhcKj19XUnhMZiMb17907xeNxB\n", + "8MBBn3/+ub755hu1221LmrDqajabFoaura050AfXeUkPXO/L5bIZdWSaMEZmbD47O6tGo6FoNOq8\n", + "wRcvXiifz6vb7brGrdVq5ikQBAQH+d27d1pdXXWAD0c7zRm77cHBgd2Q4F3ncjljvoQPYca4v7+v\n", + "ZDJpQcFwOFQymTSunEqllMvllEwmdXZ2po2NDXuJUMc3Gg2trKzY1Aby/c3NjfL5vG5ubjQ/P6/p\n", + "6WlPZbH5Jcrtn/yTf/Ko+/+kFjPHKME7kHx48pnMSfdkm/X1dcViMSUSCVvh4i5E5ggKFUmehN3d\n", + "3YdTorwIBspTkrDjIOiEIRcKhZRKpWwpgEgWfzt2V1AXdnyaTsonfgdiA9h1k5OTymazrtV5Hfw9\n", + "NJ2E0jNan5yc1NLSklO5+v2+zSXxGWm1WrbbmpmZ0cLCgmZnZ209FswfRxaFjTBja5rCm5sbbWxs\n", + "mE4bDof1R3/0Rzo8PPzg+/+kauZareak08vLS/v/BhNGGWsDodEUnp6e2t8Ygg6RwOz0yP1XVlY0\n", + "GAx0dHTkBXVxcaFer6ff/va3pmqCdYO9SnJWNmJV8FhQB6A7WH/dbtcTOlKyWDBTU1OmgoLYML4u\n", + "Fos+RYrFovr9vhtKFh4+yWj2iMCAg4z7KKJYkqoYAOFzwZh7enra9l9MTmdmZpTP55XP53VxcaFo\n", + "NKpQKKSFhQVVq1U77lNjP+Z6UjszMBcYLWhCkCLJsTwcDk0ikqRkMunSgXowOLkKh8PGrgnkgfZI\n", + "3Qw0NjMzY9srhgxwhokpY0wNkw05Fq8VeuT5+bkymYx95HhNpJsCpwGJ0bjBk2DoAZF/cnLSLDaY\n", + "bDRfg8HA9FYmpf1+385H1PBwnzn1hsOhVldXXT8H45zJ+qaJRM7W6XS0sLDgARHUg8dcT2oxMxgB\n", + "DYjFYl6AwGJB82sUx2NjYybm09W3221dXFzo5uZGzWZTsVjMC5LMFBQi0WjUE75qtWouRblctkki\n", + "Nx4zGcxQ5ubm1Gg03N0TY0FAJnkn8D2CtrfJZNIjcEI1seeCSwFngqhjmra7u/ugeqC/k5MTxWIx\n", + "uxoBH2KE02w27auBMhxord/v6/vvv9fU1JTW19e9y9K/cHW7XSUSCZVKJT179kyFQkHtdlupVEr5\n", + "fP4PfObg9fz5cwejVyoV46EQfK6vr92QwZ8guHJ6evpBohJJTezITMYQb0K4X1hYMOWx3+9rfX1d\n", + "6+vrqtVqNjjM5/Pa2Ngw+T8ajTosh92KAQfjZ7wp2O05iuFNAAHi7zYxMaEXL14YZqP04HUzzgYJ\n", + "odxgZM2ODucavjTcC3oN8gopDzBgZ2QeNG9kEETjmE6nbfWAuQwIBp7Rj7meVM2MnRVOlNVq1VTQ\n", + "wWDgRoQdm/IAJAADbG5yOBxWtVq1+6YkT7mkn0y6gbrW1tb8OuAqsCCx/EKhjA4vaKrSbrdtOdBq\n", + "tRSNRt04IrcC3wYBYHSfSCT8eRpgHJLA3SmxGCkDRQK1zc/P23ZWkn3sGFNHIhEtLS2ZDYfcS5JP\n", + "MzBuHPgZvQffA6IieC/RbiJV+9DrSS1mRsvdblej0cixvxBhisWiGx2mdTRftVpN7XbbuwtYNf5w\n", + "HK1k8rEAMW+ZmJiwIJRygkYJmI4bDe+Z+AhuJrtas9n0IoTlhoxLkn833Ohut+uROo0lYZ1B7zw4\n", + "29fX1zo7O3N9z0IcDAaG0VjEDHigZ/J1NKwMi1CeX11dSZJOTk40GAx8QrHokYxx8b1BA5wPvZ7U\n", + "Ypbk+T+NEvxhTE/Gx8edecIYlYkYuw6UUPBnxsiE09AE4vMMNMZwAPJR0IKK6VnQ6BB8eHp62kw4\n", + "FC9EFv++m1FwUWAQDnSHxAqbL6DAlZUVn0ixWMw0Vb53YWFBkUjEAl+IVXA8Li4uTCHl75+ZmXEu\n", + "IaUWJRpe2JLMt1heXjYhifuApzUPDxDoh15PajEXi0XNz88beyVC9+bmxpOnZrNp2iJvbqVSUalU\n", + "8lDk+PjYGSBATCizsQqg5gRzJX8Pdhg72Gg0cug7dE2kUexwSP6xCJuYmPDroVShgQUGC0JaDC6w\n", + "PiBQiMaNRq1YLJqKKcmMPLgduNmjHOdEoAw5Pz/XcDjUycmJnaCwNMD1v1arOTKZRns4HNoscjgc\n", + "6vj42KN3VC0IeR9zPanFjDMn/scYm0DBhOQDFAXEFg6HTbfkDaV+u7q6MtRGWZLP523kDYbMjgTv\n", + "AH8LGhyw6JmZGXt5SLJ3NBM/iDdgyVjISvJgg9MEvgi8kmQyKeknewIWN+UColFcSXmdQGIMlvh6\n", + "yrVgk3Z5ealsNutmmdMPR1U2EZAWGsugmSLpBfPz89ZNBgdaH3o9qcUsydEJOPVQJyYSCaXTaR+9\n", + "UA5xrWSHJS4X/dvW1pZub2+VyWSUSqV0cXGhubk5R6XR2EBCD4fDymazxlgZaScSCSMDGxsbhgQR\n", + "iobDYXOMKYHC4bBrUmpxQnOC2XxBiJHIBSaE8Iuz2aydh3hQ+H5UNb9vQbaxsWGUAe9lJpCEDSFC\n", + "SKVSnrQuLy87JwYkCauuRCKhZ8+eeTq7vLyslZUV29o+5npSixn3HjI2UE/f3t7aY2J8fNw1ZDab\n", + "1fLyshEQdjSgLmRAGJKz4FFnQN8E3stkMkZOtra2bGnFbiTpASzFKJcj/vT0VBMTE/r88899CjD4\n", + "YAeUpP39fdfM6BJTqZRPllQqpcXFRWWzWde3pKzSjAUHR1htSTKPBdMadHsw+KR76RnuSqFQSPV6\n", + "3XwMGsyNjQ3L2DDWubu7c9nGrs19QbD7mOtJLealpSVls1k3TigxIpGIFhcXzasg6ou6k8EB2C9N\n", + "GPUoUBc3a2lpyXHAmUzGlmA4zc/Oziqfz5s1hg5OknFkEq2CEcc///nPNTk5acYcjSl1LmR8Ysmw\n", + "BqMMWVhYUDKZ9AgfP+p4PO5dnXwV7LeWl5d9zE9OTjodKngyrK+ve3LJTowFLc0u6nAabewW4Lb0\n", + "+33F43ETmiDzI1RgY3jM9aQWc7fbdboUuxqRaYg4qQelexyVN5Vjs91uG5/lZ5RKJcNgklwXApsB\n", + "lcGBZurINA20AfQAUhK7PrkfQQ87anfySBDLSnIDx+++uLiwmXq1WtXk5KR99HgAwXSpS9nx2aVr\n", + "tZqzDPl9TBDZpdl1ee3YLYBvUxJxusEODLoYcVphJMnAptfrPVoD+De2mEOh0P8SCoUqoVDozV/x\n", + "uf86FArdhUKheOBj/20oFNoPhULvQqHQfxj4+FehUOjNj5/7H//ffieNBQsnqDSGID81NeW6kURW\n", + "Fji1M14Y2BOk02nnSkejUU+qgNXgKkxN3ccEdzod17IsRsxXQAuCukScjTj2oXKyq7F7swMD11EG\n", + "xeNxbW5u2oqM5FOI8wxwpJ9EB0BjaP+oa5laXlxceKwd5CPDwAvKr9AZBi27WKiRSESlUslGkvxM\n", + "EgIQGoTD4UfHDf9NjrP/vqT/SdI/CH4wFAqtSfoPJJ0EPvZK0n8i6ZWkrKT/OxQKPRvdb0F/Lum/\n", + "HI1G34RCof8jFAr9R6PR6B/9Vb8QDV7QOBu7gBcvXphr0G63NT8/7x3tiy++cPN2c3OjnZ0d28xi\n", + "qEh0cDQa1cHBgRYXF02+j8ViVoQgV0qn03bDBOcGQgvWjMBzHNl8H00cjWOz2fTpcnd3p9XVVS8+\n", + "Ps4i2tjYMMwXiURUKBSsR3z9+rUKhYK/ptPpaHt72+VIcHG+fPnSr4WSi40ATJpMlGKxaC0h9ryE\n", + "AH355ZfK5XJqt9uampqyv93V1ZWOjo58316/fq1/9I/+ylv7b3T9je3Mo9HoF5L+qiLof5D03/ze\n", + "x/6OpH84Go1uR6NRTtKBpJ+FQqG0pMhoNPrmx6/7B5L+47/udw6HQ+VyOZXLZR0cHOj29lb5fN5y\n", + "feLKRqORDbHJ7RsOfwoxf/funRNIcUgKh8O6urrSr3/9a83NzbmB4ohmaJHP5508hV3YaDSyLlGS\n", + "DR3JF2GhBm1mwWibzaZ++OEH7e3tSZJlU7gJNZtNXV9fu5GamJhQuVx2XX5+fu6H5eLiQnt7eyqV\n", + "Smq32y4rIPpXq1Uv/MFgoLdv36rX67lMgYRPU8dJVCqVTGTqdrvK5XI6OjryRPDw8FC5XM4Pf7lc\n", + "VrFYfGAGA0X2Mde/1Zo5FAr9HUmF0Wj0u9/7VEZSIfD/Bd3v0L//8bMfP/5XXqVSyVAU0n+ok8H6\n", + "sV6v26EIsWWxWFShUHB9e3d3p0KhYCyXEoZjl10F2AwtHnUrg5ler+cByu3trT0tpJ8yUIDUKpWK\n", + "arWaarXaA6ok43cmZAsLC5ZyYUqOLxwPQi6XcyQGHA5OLBY3fG2wbgYesAslGV7E3xrfZTYENIFM\n", + "DXkogfiQnQXH1QyCIIVNTU2p1WrpF7/4xSNW179F1lwoFApL+u90X2L4w/9f/o6TkxOLTS8vL/XF\n", + "F1+oUCiYS8uxSk2LLAqy/cTEhLrdriqVij766CPr8mB3YQZIGiqWBORBr6yseIwNUhAOh3V0dKSP\n", + "PvpInU5H8XjcNE2aQ47jzc1NIyPFYtFmhisrKxqNRmo0GlpfX9f5+bmNGdfW1kxs2tnZUSgU0ps3\n", + "b/TJJ59YUFupVCzpB16Ea8KOfXt7q1Qq5QFJcLpH/U4EBTs6WSZMIlnkNzc3evnypUsiEgAYXF1e\n", + "Xmp9fd2nF8Oif5+i03YkbUr69kfW2aqkfxkKhX6m+x13LfC1q7rfkc9+/O/gx/9aOcLXX39tn4Zv\n", + "v/1W4+Pj2tzcNOiP2HVhYUGj0cj+EEwAQQugh8IUC7LNCNOZmZnRzs6O5UeM0VF3gDlHo1GHBEEm\n", + "4jWEQiH7VoB+BJEPxubgzOzONH00uWNjY5ZupdNpPXv2zBZk8/Pzpp22223TTLGoHQ6Hzs7e2tqy\n", + "zx7+e5jO0G8w8YxGo5aNIb8C0UBBQ5wwDlIEGRFngfnM5uamUqmUvvvuOxUKhb/u9v5rr39rZcZo\n", + "NHozGo1So9FoazQabel+sX45Go0qkv53Sf9pKBSaCoVCW5KeSfpmNBqVJXVDodDPQvdPwH8u6X/7\n", + "635HIpHw7gB+2el0zIPApw36Ibatl5eXOjs7cwIqgwPiDZDvDwYDW2S1220Vi0VDf6g2KEew+uL4\n", + "ZhcEJSFzj9o3yJlgigksRhlDLSvJO+twOLRhIT8b2RcRx/A0JJmOiWK90+mYlonMC3Sm0+lYiAAa\n", + "wuvp9/sPXicJs+zE9XrdBH4ecMS1/D1AkFAEHkvO/5uE5v6hpL+Q9DwUCuVDodB/8Xtf4hC50Wj0\n", + "vaT/VdL3kv5PSX93xJ2V/q6k/1nSvqSDvw7JkO4x2U6n452TOg0ICUNsOn3cheAzLy0tudve2Ngw\n", + "t5jakjICRhgGhrVaTaFQSBsbG/apGxsbs4sogZVEU2CVNTMz49gyVCRg2RCSFhcXXVvPzc2pXC5r\n", + "bm7Oo29chxDIIse6u7vT+vq6lpaW3Ggy5MG6YHZ29oHUHx9o6urd3V2Fw2E/9L1ez0JZYMdIJGLW\n", + "HFPB6elpTyQZ0HB/KJtAj1jo6+vr/+4u5tFo9J+NRqPMaDSaHo1Ga6PR6O//3ue3R6NRM/D///1o\n", + "NNodjUYfjUaj/yvw8X85Go0++fFz/9W/7vcy7aPJw3kSHBkFNvROgtoZC2OUiFKFBuXH12LnzGQy\n", + "aS85vOqOj4+NrYJhg5JIMpdhd3fXgTnwptEerq+vP/A5hq03HA7NL1lcXFStVrMChOkadWkoFLKB\n", + "zcTEhJaWlhSPx21YmM1mjXRQMoDJ47OHjRnDmo2NDQttqY8XFhYc0TY3N2cjSJh1GDvyur744gsN\n", + "h0Mz6vACWVpa0mAw8CbxodeTmgDyJrdaLZcJDCbYAQaDgXcy6I2gFyggJFmEyWIJQlIc6be3t9by\n", + "BZtKTgI0g4ykg1M4/psmKcjvZYeldoXAj8o6GKADbs1ro6ZlN2QYA92TcgPcGJ0jPslM/ySZ8A91\n", + "Nfha+NuCHs1AlVBW8cVjMcO3ZvJKYw4777H+zE9qMXOcjo2N+fhuNBpOOEIPSCpTv993DUzQI6yw\n", + "4JuM++X4+LhyuZwXnST7SnCT2u22xbI0R9L9QwT1k0kdR3E8HtfCwoLq9bpyuZxlR5i1MPLGShcF\n", + "Cjg5zD3pHva6uLgwFxrFNX8zP4NTAlgPn5FgjY8/CC5IsVjsgXedJItz4ZJwovD6UWnjZc3JAVkJ\n", + "24fZ2Vnt7+8/6v4/qcWcyWTMzKJ5i8fjDyiIxO72+31lMhm9fv3a+O/d3Z13jYuLC/ODOeqpoQm1\n", + "OT4+tniUr8O1Z35+3gaG4LxAfCwIGHf8O2jIkkgk1O12NT097XEwnAiYcMHpHLs8fQL+FbxueMu8\n", + "Lzc3N5ZZYUnGg8fPZwyPsSInBuUDzk8TExNOv0KmBQQJVwPVSpCeWq1Wjah0Oh39rb/1tx51/5/U\n", + "YuaG05RgHwUtkl2g3+8rnU7r7OxMP/zwgxYXF7WxsWFBKsy0YrEoSR6UAGthBfD5558/cM7ENWh6\n", + "elqxWMyeciSSMkkjICcSiTxwQULaREQbY/CPP/7YjRUnhSQvYEhOEH2Wl5e1ublp/d7l5aVhR7jT\n", + "6+vrFjMwEmcxNxoNQ3NY+galWJJsxEhqAGbsExMTWl1dfZALiJKdEmdtbU2RSES7u7vK/ZiVPRwO\n", + "HZr0odeTWszAR7FYzGB/uVx2PRzESTlqgZ5qtZp5y5QcwHHwEBhtB1XE1Mq9Xs8Zf9PT0yqXy1pe\n", + "XnYksfRTTt/a2pptBqLRqHq9npsvxty4Il1cXOjs7MxDDOIXUKcw1SR2AQITTv7Sva80dNRGo6Fw\n", + "OKy9vT07cI5GI6MVg8HAtge5XM5DFTjPcKrj8bgymYwuLi5sezA/P6/Ly0sdHByo2WxaFAH5C1Zi\n", + "Pp/X4eGhms2mNjc3fe/+EDccuIgmQwvIsSbJujyGKsHjcmpqylRKmicI44D8aAJptKA+gmuDjsCu\n", + "I+gdmy2mcbe3t9bFUXuS9NTr9fwzQS84/hk8oCeUfqKihkIhe1lQswLFSfKE7vr62jpImHsMbyDS\n", + "83dfXFxYdSPJfs68PuKcb29vlcvlXLfPzs56YHN1daV2u23eeCQSsdE4pybY+fT0tCmwH3o9qcUM\n", + "ZkpOhiRjunTqcHQleRFDsqnX61pZWZH0kysSNW2QC42TPQ0nnXmj0VCj0bAKm8WP7o4mCQ4Ei4HT\n", + "gAuqJeULfOrp6Wn/TgYaSJ8kWQQQ9KeAnw0XmeYMbgT4ND7NBLNPTEzYh4/yAoEC5Q9kEreghAAA\n", + "IABJREFULGx3a7WaWq2WERR8+G5ublSv180lAeunrEAE/FgK6JNazDDE6NSpn4Gv2A3Y2YC4Zmdn\n", + "LcM/Ojqy4gH+AzsS0QiwzEKhkA4PD90sgeeCwUajUU/U+H24FwFpQTEFSYDYgyEMNScoDOiJdF/i\n", + "NBoNM/KIQkNYCx8FoSnDkKB9Ag95oVDQcDi0gpoNod/vm4V3fHxstTmnHqcLfA9OuKDHH9knV1dX\n", + "nqbSdNJk0qQ+5npSixkQ//z83JAboTngnBi7EB3GwgU6glR+fn6um5sbzc3NaWxszA0lgP/t7e0D\n", + "gj1DCth31L6SvNuBcZdKpQeUR/BeFNoMNihFwHERml5dXRktQCyAcxL+09FoVOVyWcfHx+r3+/rL\n", + "v/xLj/er1aoXDrg6FmP4d1CWoBKhxwjaijWbTT80wZE3KhXQo7OzM3sxByHLqan7xFbpJ5X6Y64n\n", + "5TUHwB+LxfTJJ594ogRBiLqNbp1uHMdPjuhkMqn19XW/4cB1oVBImUzG4TadTsfYK538xMSE4vG4\n", + "ms2mlSCUPxMTE6rX60ZFUGfg0dzpdJROp122vHr1SrVazcd70PKqVqvp/Pxc8Xhc3W7X30eK02g0\n", + "0u7urvr9vi0G5ubmbNuF2//S0pIf0o8//lj5fN4j8mw26/cV4v329rZhTkoMxMFkaiNCQNhL6Dul\n", + "0c7OjqT7pu+jjz5yTMcfEloDFyR3doPz83NzjqmJGW7QnOFOz3EKTgrXmQEFJPVyuexjkp2LocDN\n", + "zX2edrVaVa1WU7PZNG8Yf2Qw3LGxMd/kYrFoDLfZbDpXhJjh8/NzG7Tc3NzYNTRI6JFkCwX8lYHx\n", + "yuWySfHn5+cKhUJqtVoezgwGA2cTgpLwuuEsU7IwUEL53u12Va1WXcvjxl+pVMyN5t80pXhAd7td\n", + "9wtAf4+5ntTOLMlURKiTMLnQz8HcSqVStpdi+ACXF0Em/hXdbtecDKAqRAB08NR+y8vLvsmUM+zw\n", + "7K64jtLwLC4uWgfIMT89Pf2vGH6DvBD5S1MIGhCsXYOIzMLCgtLptBdv0GWfZhXpEtg0tltkvQC7\n", + "SXLZw5gavxEs0ZjyXV5e2q2f4B7orezinHIwDR9zPamdGf5vkGyDKJR4BVCJZDJp7BOpP/4ZENX7\n", + "/b6urq6867A7UU5gasLnw+Gwp41ra2vu9iORiGMjIKGDScNpAE3AJJ2RL40kZRAPBoQeCPU8PHd3\n", + "d4rFYuY3j42NaX9/35yRdDrtfEQsZ+GkUB8zjsdlaGlpySUAHhjxeNwRF3jgIaSNRCJaW1vT1taW\n", + "7YHBvjHByWazTn2V7h+QpaWlR93/J7UzczOoD0ejkbOr2+22fvaznznTr9PpaGtry94Ul5eXrkW/\n", + "/vpr0xdnZ2etVoa2yQ4HF3l1ddW+xix0yP/hcNjB6OCuQF29Xs+eFhcXF3bIh42XyWTMfFtbW1O9\n", + "Xnez9+rVKzdTZAciFEilUvZmvru706tXr7SxsaFms2lJP+pt+gl21uApgX7x5uZG6+vrGo1G9smL\n", + "RCIOtXz9+rWxa3JOVldX3SDOzc0pk8n490syNPfixQs7pv7B0ShwEWnAMCEajVq3dnl5qV/+8peW\n", + "4oN90uX3+329f/9ey8vL2tvbc0cPfIW7/g8//KBqtaqzszPzb6+vr7W3t6fj42PX6Pl83mPe29tb\n", + "7e/v6+DgwDBhLpfzQ1WpVMysazabDuQ8OjpSLpdTsVg0aw/E4PT01IOfcrmspaUlnzblclmlUkmt\n", + "Vsv00lKppNPTU+caMu3r9/uq1WoqFouqVqvqdrt2Vnrz5o3x+larZWoruDY9ytHRkVl43W5XBwcH\n", + "2t/f1+TkpBqNhsrlsqeYcLpPTk40HA51dHQk6R4B+f777x91/5/UYkblMTExocPDQzdy2GmNj487\n", + "LGZ+fl6Hh4fWpcEpeP/+vfb39x3zAH4r3fMRgrVyqVTS5eWlMpmM5ufnHYcWtLm9vr7W4eGhfSGQ\n", + "VtH4VSoVVSoVN3grKyuOhmAkL8kBQxzrBwcHloENBgPt7e3Zsek3v/mNbm5uLKz97rvvNDc3p/n5\n", + "eZcsoAeUBxgYohaH/1EsFt2gvnnzxkLWVqv1wCyRoQiLnRMS3J9mGvX85uamfx8ql8dOAJ9UmcFo\n", + "NRQK2SeDWpcwHDDOWq2mr776yrsLZUk6nXbIJf5ywFfLy8te+GC5Nzc3Ojo6cn349u1b7e7uamFh\n", + "Qaenp5LuaaIcryyGeDyuubk5LS8vG4Ml1HJ3d9cNFI3d9fW1tre39Zvf/EaJRMKEoUKh4DIAoelX\n", + "X33l180kE3YfCM/Y2Jg+//xzZ7BAjDo4ONDq6qp5JJRe+I0Ew4Du7u5c4jDeD7p7ZrNZlxoE+8Ae\n", + "JKkLDw9IXt99990H3/8ntZjJ/6CZYuoUDoe1sbGhQqFg5CGVSqlQKDgxlSFGMKe6VCopEono7OzM\n", + "kh+I6mDYmKdw5MNWY2dGAcJghHKBAE3MY3AaxUAlGo0aj8UPRLrvCwjWGRsb0+Lioo/y6+trY9Px\n", + "eNwT0ampKQdrfvrppy5LwuGwhb6j0Ujr6+s6PT1VLBZzc5lMJhWPx5XL5fTRRx85T5vSand31+6i\n", + "5XJZ29vbToglZm56elpnZ2caDAZ2RGWsju4SPsljridVZqA9w22IYQgeGpLs8IlcSJJ3WiAuRsfQ\n", + "HZEzgVgg4iyVSra2YmwNpTMWi/k0QEJPp7+wsGDVMscsGrzr62v/3HA4rFar5RMGSZgkm6dLcvYJ\n", + "xzmTUGrsTCaj7e1tIy3IuYDk2u22RqORKpWKR/AwChnpMwACsotGo3rx4oWFuQyJgBZbrZYymYzL\n", + "D0or6K/D4VClUskml5jWPOZ6Uos5aO4HvISUh1pa0gNVc7lc9hEMqM/EC8wVAjwqEbjGmMLQYJL2\n", + "ymgaw/Fnz55ZnR0cZiBUlWT2XTCMp9lseurGiB3/ZeRWwJGrq6u28gJ1YfHncjkrZ/idGItXKhVt\n", + "b2+bHTcxMWEfDlAZPgecSMPM3wNTjs+RwgV1AG5J0JOj3+9rdXXV/I3x8XEtLy8/6v4/qTKDnQrj\n", + "Fbrzdrttayx229nZWSudsZ2CjVapVBSLxXR5ealisahQKKSDgwMlk0mPrsGKeSiAxfL5vNbW1lQu\n", + "l7Wzs6Pb21v95V/+pdbX151oSqQbkzbCe1i80EfZzcCAc7mcd7d8Pu8hBRNOVCl4S0PXROEdiUT8\n", + "fSy0m5sbnZ6eampqyhg8Q45CofCvOO8jYG21Wvrss8/cZPPzMU88PT19kAkIxZX3Gi860J5er6ff\n", + "/OY3j7r/T2oxI33H6QcjlXA4rGfPnunw8NDHtyQHr4NPS9Lq6qqlUalUSpFIxEORUCjkoMZYLOZd\n", + "nA6eUgMnUerBdDqt8fFx79rEDWMWTrQDQxeGPpLM+ajX695Nx8fH9fz5c0/TUGpjLnN1deUdG+0h\n", + "C+jLL7/U0dGRSw2w9Ha77QcYRGV7e9tYdKlU+ldKokqlomQyaUrs+Pi435egH93W1pZ9n4M49nA4\n", + "1K9+9StFo1GtrKzoj//4j/XrX//6g+//k1rMQQ9mYK1qteruGbPA6+trJZNJ1et1vXv3Tjs7OzZc\n", + "mZycVD6f1+7urgqFgpEE1NXlctnG5eVyWdls1iJSiOhzc3NqtVpKJBJaXFz0CYAmMJPJeNIGYWl6\n", + "etqsPZzrwaPhQY9GI2cdnp6e6vnz567ty+Wy+dfQVUEhUHpfXl7qzZs3mp6e1tHRkdLptDkolBWt\n", + "VssSrLdv32pnZ8dC2/X1dYcYNRoNpVIp9Xo9nZ6eusSQ7pviw8NDbW1t6erqSr/73e88Xq9Wq+4J\n", + "KO/gV/+zf/bPHnX/n9Rinp+fd94Io2kMuQmtnJqaMnIxNzdnHzdqZBACPDYWFhYkyRESTPWIZSBK\n", + "DCckGkIQE6AxOBLgzDRjkpwGC6zFrnx1deWJGgSfRCKhdrttvJjaPJvNuoHr9XpGVSDvT0xMeAwt\n", + "yYJWSeadcGKhvIY7Mj09rZ2dHUNulB6UQQx/+P6FhQVzMhjRIwKg9s9msy6lOG2SyaQpoR9yPakG\n", + "EGJ7Pp/XDz/8YDSA3fjo6Ejdblfn5+c+dsmWhnMQDoe1v79vbvFwONTp6amSyaQGg4EtXxlQkCPS\n", + "7/f17t0714ClUkmFQsGICnActeK7d+8eKMFpMlutlvL5vNl7V1dXOjs784ADGyuGKJQ533//vWKx\n", + "mOr1uhl6eIccHR3ZKheL2cFgYE+Ld+/eqdfreQpIJjj85lAopL29Pb17987MOklWqmAWQ2nBCYG7\n", + "53A4VLFYdANKGdLr9bS/v69Go6FKpfKohSw9sZ0Z3kM2m3V2NGNW6t0go47dEYIM0h0IQdSG1JWz\n", + "s7NKJpNaXFxUq9XyTomsCoiOtKWFhQX1+31Fo1Hd3d0ZW56fn1c8Hlc6nbaUa2ZmxgaGqVTKeDkN\n", + "K8gJLDXgPx5AnIiur69VqVTsvjQajbSxseEdnVSrYFTD+vq6a/pKpWKUhPp3enra9TOC2KBJ4sLC\n", + "gtUrQYNJBk2gHeSZoFSfmprSZ5995teytrb2KCfQJ7UzS3LXTR2I85B0j/NyhEOAD4fDPlbD4bDJ\n", + "8Hw9aantdluzs7NKpVIeYaM0AX/GUV76yXuCUwD1NRxofDWA6djR+FmowyX5a8F9JZl032g0vJDO\n", + "z8/NpZB+0kQC0yGZAk5EmT36MW8bxuCzZ890fn5ulQ3OoPzO7v/T3pnERpqmef3/hR22Y3Hs4Vht\n", + "RzjttKszO6u6ekEjulsaMXBEQgKEaAEHhIAbHJFAnODACSE0h9EIBiEhREsDamkaxIFlUEs9rVqy\n", + "ypWb006v4XCsjnDYYUd4+TjYv6c+dx8G2V3drcCvVKoqp9MOO97vfZ/n//yXoyMbKDG69/p2oHOk\n", + "jOr1egbvccC0Wi27Sfne6C/vukZqMzOJYtzq9/sVjUbl9/sVj8dv8X1hfCGfJ+KBGpjoYaQ+lAvI\n", + "h/j4YDAwpIPBArERl5eXFicBcZ4sDwxjKG8Y5EgyBUc4HLbQ+nK5bKebd3hCuhbWAjxENFgQe6h1\n", + "GVA8fvzY8hIRGriua7RPHkpJpqPE8851XUNrMpmMGScyxYtGoxZLhykjcCPmjbOzswYtggLBl77r\n", + "GqnNzKQPWT5XfCAQMOgKuibypv39fSMPSdfQHBuBNwkyDzwDJnd+v98cfSCXU+cmk0lzAGV4QpnA\n", + "EEeS1Zk0n/CxyVxhLO4NtPcmvxJrwSDC64gkXTdzjuOYVAweCqoVyq3JyUn1+31rIDlx+b2GQiEj\n", + "18/MzJhZDcoVoDdJxoGBocjCcpjUWU5u3p+Hk9mzmFBh3H11dZ0jTebHYDAwR3pkSouLi6rX61pf\n", + "X1elUtHExISdQizGvcBPs7OzRtfM5/P2+Y7jmBfd1taW1a/o/TASZHrGxxlseC14oZ3CNJOuy429\n", + "vT2b3LH5h8OhMpmMcaRPTk7UaDSshMJw3CsEYBjEz4sbE/wVoEBvXLIkU6gcHBzYz8MDw+tlmAQN\n", + "9+DgwN4PvECazaba7baJihk+3WeN1GZG/o/RNtYASNoZdzOJwk+CUwiKqDckh1MZMSlEJca8dPJ4\n", + "v0HSAVbDzguvCMbYruvq4ODATlo8JGiiyFzB+Pvo6EiHh4fGhKMPkK5Pd3L8uBn8fr8Fv0M4QnaF\n", + "oz+bGoMcfo5Wq2VIS7/ft5iGg4MDTU5Oan9/3+pkPOy8v0NJVqK1Wi2jgWJnC4LEQAqUhQnpXddI\n", + "oRlo9SYnJw1KKxQKpiaBRDQ2NqZgMKh6va5isaipqSnNzc1ZkA55JYxll5aWzFQlHA4b0TyXy1nD\n", + "0+l0NDc3J+kaH3706JFxIHDtgYqKeoXJGajB9va2OWp2u13Nzs6q0+lodnbW3OYDgYDq9bqi0aiJ\n", + "B6ifJVmtj1TMdV31ej0za6RUoRnmZKQvwMcZhQgJA1hp0czSLPJgwuMm229+ft7onicnJ6aK5/ef\n", + "TCbNswM67H0FrSN1MnMK88Zj2CLJ0AJOqpOTE2WzWTMWJwaC6FyiwmZmZixfWpI5+khSvV5XKBSy\n", + "k6vZbGpnZ8cyQM7Pz00SJH1phTAYDLSxsaGjoyO79mkaKQ0YFzuOc8sOtt1uG4VSkk0F8VLma7qu\n", + "a01rPp832iYnKhseh9NwOGz+zeDePKhEx+EgCm+D7wMnhduHg0L6MmEWl1O88ra2tqysou5+ELR6\n", + "FkoKTEuY+LHJaVBwFdra2tL4+Lg1evCLm82mGSwyUCE3EKcflNMHBwe36tX5+Xm5rmunLS7+sO/O\n", + "z8+tGeV1bW5umtVWMpnU1NSUhasjEMD8Bf4EdrQgNNAsyUvBfuvs7Ezr6+vy+XxmSQA9lTpWktX3\n", + "TBt58Hi9WDMcHh4a3EcIKEw5hkhgyJJM9U5ZRFNbKpWMVgB8GY/H7/X+j1SZIck80Z4+faqpqSml\n", + "02nLI2GAwvi0UCjo4ODARtnpdFrValXLy8t6/PixVldXzRqALI5arabHjx8bXzeVSpmHBGGXUEiB\n", + "6iAvAX9NTEyYO+bU1JQeP35sjSs15+Liol3pp6enGgwGhgbgLMq4HT8P7GwLhYIcx7EhinRthFMq\n", + "lRQMBlWpVMx7GluxVCplmxY0AsN2xLWNRsOMZbBWyGQyarfbymazury8vKXMASb1+/3m+BSLxVQu\n", + "l3VycqJisWhxGRg33meN1GZGekSy6cTEhN68eaN4PH5L+MmVyBUNNLa6uqqVlRV98skn5nnBm7Cw\n", + "sKBms6mNjQ1ls1nF43Ht7Ozc8l6rVCrmN/fpp5+qUChYWE6/3zee8MTEhN69e6dMJmPm6MViUUdH\n", + "R9re3rbp3/Hx8S1y+/j4uDqdjh49eqTDw0N7CDFqYWixvr5uDZ8kazCRg52dnemTTz7Rs2fP7KYh\n", + "U2R7e9sw4Ldv32ppacksgGOxmL744gs9e/bMyjYa14ODA5ueHh0d6ac//am+973vmdXu9va2lpaW\n", + "FAwGremkLKK0evBn9iyutlwuZyQZZEvHx8eWDY0KJRKJWPYzENbBwYFtfm9cL/ZZ+FGgisB6lvEv\n", + "sWuhUEgzMzNKpVJqtVo2MGEczfQMFQcRZhDUveVMMpm01wSpB6ycKR9NGX4aMzMz5iY0GAzsRgqF\n", + "QgoEApqfnzcVCYT9wWCgx48fm+s+ZRGuQ8RhUDdjxHh5eWnTRfgnS0tLkmSYerFYNK+74XCo+fl5\n", + "44D7/X5Tkd9njdRmppMGA0UdghoC7wvePO+Ym82dTCbtRCZEHkpnOBxWo9EwX2NYbl58G0IQAxk2\n", + "AI0p7pcMDyAKwa7z+XwqlUrmTYE+EYYZymnMzxHNcpKfnX0Zf0wZhI0s2C+1NvyNqakp5XI5TUxM\n", + "qF6vW7oAzkjE0IE5s9E5UamtgT8ZefNQg6gwtsaCADsvRujf+c537vX+j1yZQa16fn5uFliXl9cp\n", + "pODDPp9PyWRSlUrFUA8k84hJo9Go+Vd0u10z3p6bm7MGB6IQDRhWVl46qVcxIsnQCUbtuI6GQiEj\n", + "GDUaDdVqNWsGwa5xqfeyzkBkGOrAcUin0+Ze32w27ecvl8tqtVrGycY9lKkllFGI9vBNUJejdsdY\n", + "Z2VlxWRUwI7AcJLMbRVWHYQmGs1arWZG7vcVtI7UZgZvbTQadhJ2Oh3l83nt7e2Zsrjb7ZrXnCS9\n", + "e/fOLKjy+bw2NjZseME0C38NfukMKQi15OFhzLu7u6tQKKRUKmWmKq1Wy0qSra0tM6nBCZTanTiH\n", + "vb09K51wPQLZaDQallaFoSEMvkqlYpDX+fm58a753bTbbbXbbUWjURv/0+RielgsFrW1taUnT56Y\n", + "sSSmjdPT0+anjEkkJzRIEHAe6bfHx8dKp9PmsYFaPZfLqVqt6vT0VD/+8Y/v9f6P1GYmugAZFFJ6\n", + "NhXX4szMjPr9vhYXF7W6uqrl5WXVajXlcjn5/X4tLS3Z38f6FQNzGq1+v28n8ZMnT9RqtdRsNs2o\n", + "EbI+I2tOJIhNSPxh6JGvB+MsnU7fsiHodrtWZzIYmZ6etqHMycmJ1tfXlc/nVSgU5PP5bJqXSCTM\n", + "vZTXgko9m82aAPbq6soCLa+urpTP5zUzM2NNMkIGbhPsc6EHUNpg6sLwB4td6ZpzjlgC/jZ9y9zc\n", + "nN68eXPn93+kambpyyBGmjemX81m0zjI/BnWr41GwyTv1WrVuvt6va6LiwuTVFHHAiexiarVqqRr\n", + "TSHxZDxQ0CUxXYTny0AHkjwnJIy9k5MTS5elQQUSY8zNyeitf8lNoX5mQ+VyOeNE87oxPidTkBhm\n", + "WIE8WODPRFdgWyvJmkWyUfDgANILhUJmuwuejBgYNTw1OEaOd10jtZk5dbrdrr773e+aG2Uul9MP\n", + "fvADxWIxlUolzczMaHFxUd/+9rdVLBaVTqf16NEjMwtcWFhQsVjU06dPNT09rSdPnhgPASkS+Rx0\n", + "5JKMdD81NaX5+Xm1Wi0FAgETASwsLBiCkM1mlc1mLd1Jkj744AMtLi5KkoX6kFWIN0a5XFa329Wz\n", + "Z880Pj6umZkZM/CemJiw9Cb0d7Ozswaj4WtRKBTMYWhhYUHLy8vy+/3K5XJmyh4KhfT06VNlMhnL\n", + "BE+n04pEIiqXy1peXtaHH36oi4sLLSws6OzsOnY5HA7r4uJCmUzGmtKlpSWdn59rdnZWkUjEoL/F\n", + "xUV97Wtf0/T0tPL5/INxonfhZBQMBvWjH/1IR0dHpoT+4Q9/qFqtpv39fZMhvXnzRhsbGzo9PVWt\n", + "VjNzwJcvX2pnZ0fValVjY2P6+OOPzWzw3bt3dr32+31zBhoOh1pfX7dQm+fPn0uS0TMDgYCeP39u\n", + "JJ4XL17cIjfF43Gtrq5qa2vLTFKomz/66CNjrWFntb6+buwzWIG9Xk+VSkX9fl8vX75UIBCwJjca\n", + "jZqtbb/fN3bc0dGR1tbW1Gw2Va1WtXWTEHtxcaHnz59rb2/PmHiDwUDb29vGMlxdXdXZ2Zlev35t\n", + "rks00C9evDA7r3q9boJanI5c19XLly/t99Bqte4tmxqpzYyrDnIjsGKQCq5qYDRKiIuLC9PdQTL3\n", + "bpTz83NVKhWjMKJIoTHi8xkOgE1LshEwZQMUT055xsX4Z6Acka6HHXjTMdYGPeFnREQLJOit6ykf\n", + "CM2RZIw+0ATIRECMUDqBNkEi4Jmcnp4aZIcyhq8LzwRKZ7lcNjQIliK1MjAedgx4Yd9njdRmjkQi\n", + "FhRD5AKnDMy1SqVi4T3o9Gq1mlKplOLxuF6+fGn8g16vZ/J/L6F9bW3NnDObzaZht/gwe2EyHg5o\n", + "j5B/CAA6PDw0F1Bqcuk6Lm1/f98SXicnJ7W1tWW6PVxKyQV/9eqVksmkxbcR1lmtVs0oETMX6uKT\n", + "kxNtbGxod3fX+N5+v99IRFBEId5vb29rOByaqQuEJep3fkZKMQhSbHh+d0Q7IwsjMcvLIb/LGik0\n", + "A6nP5eWlnj17pnA4bN16NptVu9022RR/dnl5aXgudd/R0ZEKhYJ2d3eVzWZ1fHxsymcmd8lkUpFI\n", + "RLlcTj/5yU+Uy+VsWgd7bG9vT5OTkyqVSnYLQGKfnp62CGRG581m08SvcB7Gx8fNHgGJlOM4hiWj\n", + "K1xZWTFRbCQSscxwLBIQ8ebzeQugxLne5/NZ4urW1paVRZysExMT2tnZMcNwHEERrLIJaXrz+bzZ\n", + "N2DxQPO6vLysYDCoZrNpSbqJRMKoqPfxaB6pzQx1k+katk8MDhqNxq0ygT8n9Ql5EYoUkA4wYuwA\n", + "KC2wxGKke3Z2pu3tbXPLhCRUr9eNJITxSTgcNlFou9022RIO9I1Gw2AwTji6/snJSQu0JxjI5/Pp\n", + "3bt35h2yt7dndrSgGJKMpsogCWsw/gzO9eXlpTY2NrSwsGA+z1ADSJslk5ByCCemSqViGHmv11Oj\n", + "0bAHC6NxuNno/1qtlsF3d10jtZnhOUiygcJ7771nXT+CV2/edb1etw7+8PDQPIX9fr+ePXtmm4RJ\n", + "2WAwsGlaJBJRp9OxzD7UGoPBQKVSydJK+b5+v1+1Ws2+DtYDnNBc3f1+XwsLC9rc3JQks5dFHOrz\n", + "+VQul20a6fP5zC9udnZWtVrN+MuE9FDy4H46OTlpATnAdCARR0dHhjF7hxqcwGgmIQvBdb66utLK\n", + "yop2d3dvZbPw0GHXAF4OTOo1bbzPGqnNjAH25eWlnj9/ru9///t6/vy5VlZWjMPw7t07u+5evnyp\n", + "YDCozc1NTUxMaGZmxtCEYrFohoftdluZTMZO+/X1devOHz9+rO3tbVNykIf35s0bxWIxJRIJra2t\n", + "yXVdQySGw6FqtZpKpZLa7bYZfOMsOhgM9PHHHxu3AfLQ6uqq3n//fYsuQwaFO//jx4+1u7urt2/f\n", + "amVlRVtbW5qamrplI0Y93el01Gq1rLlEZULjNzk5qY2NDSM7XV1dqVarGef75ORES0tLRmuFj7K5\n", + "uWk6wEgkYhwNLzfEK5aNxWImaHj79u293v+R2sw+n89y+eLxuMmksKXiTYIY9PTpUyMQgXSUSiVD\n", + "NpaXl1UoFPT5558rFovZaT4/P69ut2skdhKfOGXi8bgODg5MFpVIJGxYgkuQJAvxOT8/v5V7PTY2\n", + "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\n", + "hfVwMn/167clDV3X/T0+4LruqiRLPXccp+Q4zh87jvPxzT+/dfPx3M3HP3UcZ9VxnD/rOI7PcZw/\n", + "uPn/zx3H+Qc3n/vIcZz/enPy/7HjOMs3H/8rN5/73HGc//2r/dF/tevhZP7q11NJH/8pn1OT9Odd\n", + "1x04jrMk6T9I+rakvy7pv7mu+89vTviQpG9Iyruu+3VJchwncvM1fk/S33Vdd91xnD8j6Xcl/TlJ\n", + "/0TSX3Bdt+r53JFcD5v5q1//L0D+hKR/7TjO+5IuJS3dfPxnkv6N4zh+Sf/Fdd3PHMfZkLTgOM6/\n", + "kvRHkv674zhhSb8l6YdMJm++piT9RNK/cxznP0n6w1/KT/Qbuh7KjK9+vZD0zT/lc/6hpKrrus8k\n", + "fUvSpCS5rvt/JH1PUkXSHziO8zdc1+1Iel/S/5L09yT9viRHUsd13W94/nly8zX+vqR/LGlW0seO\n", + "4yR+2T/gb8p62Mxf8XJd939ImnQc5+/wMcdxnul6c7Eikg5u/vtvShq7+bw5SQ3XdX9f15v2Q8dx\n", + "kpLGXNf9Q12XEN9wXbcnadNxnL988/ecm+8hx3Eeua77M9d1/6mkhqTiV/jj/lrXw2b+1ay/JOl3\n", + "bqC5LyT9M0lVfVmC/K6kv+U4znNJy5II9/htSc8dx/lE0l+V9C8lFST9T8dxPpX07yX9o5vP/YGk\n", + "v33zNb6Q9BdvPv4vbhrFVUk/cV3386/yB/11rgduxsMamfVwMj+skVkPm/lhjcx62MwPa2TWw2Z+\n", + "WCOzHjbzwxqZ9bCZH9bIrIfN/LBGZj1s5oc1Muv/AuHZAPr9VeA9AAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.gray()\n", + "plt.matshow(predictions_df.values)\n", + "plt.xlabel('Classes')\n", + "plt.ylabel('Windows')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's take max across all windows and plot the top classes." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "name\n", + "person 1.835771\n", + "bicycle 0.866110\n", + "unicycle 0.057080\n", + "motorcycle -0.006122\n", + "banjo -0.028209\n", + "turtle -0.189831\n", + "electric fan -0.206788\n", + "cart -0.214235\n", + "lizard -0.393519\n", + "helmet -0.477942\n", + "dtype: float32\n" + ] + } + ], + "source": [ + "max_s = predictions_df.max(0)\n", + "max_s.sort(ascending=False)\n", + "print(max_s[:10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The top detections are in fact a person and bicycle.\n", + "Picking good localizations is a work in progress; we pick the top-scoring person and bicycle detections." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Top detection:\n", + "name\n", + "person 1.835771\n", + "swimming trunks -1.150371\n", + "rubber eraser -1.231106\n", + "turtle -1.266037\n", + "plastic bag -1.303265\n", + "dtype: float32\n", + "\n", + "Second-best detection:\n", + "name\n", + "bicycle 0.866110\n", + "unicycle -0.359139\n", + "scorpion -0.811621\n", + "lobster -0.982891\n", + "lamp -1.096808\n", + "dtype: float32\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Find, print, and display the top detections: person and bicycle.\n", + "i = predictions_df['person'].argmax()\n", + "j = predictions_df['bicycle'].argmax()\n", + "\n", + "# Show top predictions for top detection.\n", + "f = pd.Series(df['prediction'].iloc[i], index=labels_df['name'])\n", + "print('Top detection:')\n", + "print(f.order(ascending=False)[:5])\n", + "print('')\n", + "\n", + "# Show top predictions for second-best detection.\n", + "f = pd.Series(df['prediction'].iloc[j], index=labels_df['name'])\n", + "print('Second-best detection:')\n", + "print(f.order(ascending=False)[:5])\n", + "\n", + "# Show top detection in red, second-best top detection in blue.\n", + "im = plt.imread('images/fish-bike.jpg')\n", + "plt.imshow(im)\n", + "currentAxis = plt.gca()\n", + "\n", + "det = df.iloc[i]\n", + "coords = (det['xmin'], det['ymin']), det['xmax'] - det['xmin'], det['ymax'] - det['ymin']\n", + "currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor='r', linewidth=5))\n", + "\n", + "det = df.iloc[j]\n", + "coords = (det['xmin'], det['ymin']), det['xmax'] - det['xmin'], det['ymax'] - det['ymin']\n", + "currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor='b', linewidth=5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's cool. Let's take all 'bicycle' detections and NMS them to get rid of overlapping windows." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def nms_detections(dets, overlap=0.3):\n", + " \"\"\"\n", + " Non-maximum suppression: Greedily select high-scoring detections and\n", + " skip detections that are significantly covered by a previously\n", + " selected detection.\n", + "\n", + " This version is translated from Matlab code by Tomasz Malisiewicz,\n", + " who sped up Pedro Felzenszwalb's code.\n", + "\n", + " Parameters\n", + " ----------\n", + " dets: ndarray\n", + " each row is ['xmin', 'ymin', 'xmax', 'ymax', 'score']\n", + " overlap: float\n", + " minimum overlap ratio (0.3 default)\n", + "\n", + " Output\n", + " ------\n", + " dets: ndarray\n", + " remaining after suppression.\n", + " \"\"\"\n", + " x1 = dets[:, 0]\n", + " y1 = dets[:, 1]\n", + " x2 = dets[:, 2]\n", + " y2 = dets[:, 3]\n", + " ind = np.argsort(dets[:, 4])\n", + "\n", + " w = x2 - x1\n", + " h = y2 - y1\n", + " area = (w * h).astype(float)\n", + "\n", + " pick = []\n", + " while len(ind) > 0:\n", + " i = ind[-1]\n", + " pick.append(i)\n", + " ind = ind[:-1]\n", + "\n", + " xx1 = np.maximum(x1[i], x1[ind])\n", + " yy1 = np.maximum(y1[i], y1[ind])\n", + " xx2 = np.minimum(x2[i], x2[ind])\n", + " yy2 = np.minimum(y2[i], y2[ind])\n", + "\n", + " w = np.maximum(0., xx2 - xx1)\n", + " h = np.maximum(0., yy2 - yy1)\n", + "\n", + " wh = w * h\n", + " o = wh / (area[i] + area[ind] - wh)\n", + "\n", + " ind = ind[np.nonzero(o <= overlap)[0]]\n", + "\n", + " return dets[pick, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "scores = predictions_df['bicycle']\n", + "windows = df[['xmin', 'ymin', 'xmax', 'ymax']].values\n", + "dets = np.hstack((windows, scores[:, np.newaxis]))\n", + "nms_dets = nms_detections(dets)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Show top 3 NMS'd detections for 'bicycle' in the image and note the gap between the top scoring box (red) and the remaining boxes." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "scores: [ 0.86610985 -0.70051557 -1.34796357]\n" + ] + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(im)\n", + "currentAxis = plt.gca()\n", + "colors = ['r', 'b', 'y']\n", + "for c, det in zip(colors, nms_dets[:3]):\n", + " currentAxis.add_patch(\n", + " plt.Rectangle((det[0], det[1]), det[2]-det[0], det[3]-det[1],\n", + " fill=False, edgecolor=c, linewidth=5)\n", + " )\n", + "print 'scores:', nms_dets[:3, 4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This was an easy instance for bicycle as it was in the class's training set. However, the person result is a true detection since this was not in the set for that class.\n", + "\n", + "You should try out detection on an image of your own next!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(Remove the temp directory to clean up, and we're done.)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "!rm -rf _temp" + ] + } + ], + "metadata": { + "description": "Run a pretrained model as a detector in Python.", + "example_name": "R-CNN detection", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + }, + "priority": 6 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/feature_extraction/imagenet_val.prototxt b/3rdparty/caffe/examples/feature_extraction/imagenet_val.prototxt new file mode 100644 index 00000000..b0a1cefa --- /dev/null +++ b/3rdparty/caffe/examples/feature_extraction/imagenet_val.prototxt @@ -0,0 +1,238 @@ +name: "CaffeNet" +layer { + name: "data" + type: "ImageData" + top: "data" + top: "label" + transform_param { + mirror: false + crop_size: 227 + mean_file: "data/ilsvrc12/imagenet_mean.binaryproto" + } + image_data_param { + source: "examples/_temp/file_list.txt" + batch_size: 50 + new_height: 256 + new_width: 256 + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + convolution_param { + num_output: 96 + kernel_size: 11 + stride: 4 + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "conv1" + top: "conv1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm1" + type: "LRN" + bottom: "pool1" + top: "norm1" + lrn_param { + local_size: 5 + alpha: 0.0001 + beta: 0.75 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "norm1" + top: "conv2" + convolution_param { + num_output: 256 + pad: 2 + kernel_size: 5 + group: 2 + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm2" + type: "LRN" + bottom: "pool2" + top: "norm2" + lrn_param { + local_size: 5 + alpha: 0.0001 + beta: 0.75 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "norm2" + top: "conv3" + convolution_param { + num_output: 384 + pad: 1 + kernel_size: 3 + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "conv4" + type: "Convolution" + bottom: "conv3" + top: "conv4" + convolution_param { + num_output: 384 + pad: 1 + kernel_size: 3 + group: 2 + } +} +layer { + name: "relu4" + type: "ReLU" + bottom: "conv4" + top: "conv4" +} +layer { + name: "conv5" + type: "Convolution" + bottom: "conv4" + top: "conv5" + convolution_param { + num_output: 256 + pad: 1 + kernel_size: 3 + group: 2 + } +} +layer { + name: "relu5" + type: "ReLU" + bottom: "conv5" + top: "conv5" +} +layer { + name: "pool5" + type: "Pooling" + bottom: "conv5" + top: "pool5" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "pool5" + top: "fc6" + inner_product_param { + num_output: 4096 + } +} +layer { + name: "relu6" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "drop6" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + inner_product_param { + num_output: 4096 + } +} +layer { + name: "relu7" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "drop7" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc8" + type: "InnerProduct" + bottom: "fc7" + top: "fc8" + inner_product_param { + num_output: 1000 + } +} +layer { + name: "prob" + type: "Softmax" + bottom: "fc8" + top: "prob" +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "prob" + bottom: "label" + top: "accuracy" +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc8" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/feature_extraction/readme.md b/3rdparty/caffe/examples/feature_extraction/readme.md new file mode 100644 index 00000000..5612b020 --- /dev/null +++ b/3rdparty/caffe/examples/feature_extraction/readme.md @@ -0,0 +1,74 @@ +--- +title: Feature extraction with Caffe C++ code. +description: Extract CaffeNet / AlexNet features using the Caffe utility. +category: example +include_in_docs: true +priority: 10 +--- + +Extracting Features +=================== + +In this tutorial, we will extract features using a pre-trained model with the included C++ utility. +Note that we recommend using the Python interface for this task, as for example in the [filter visualization example](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb). + +Follow instructions for [installing Caffe](../../installation.html) and run `scripts/download_model_binary.py models/bvlc_reference_caffenet` from caffe root directory. +If you need detailed information about the tools below, please consult their source code, in which additional documentation is usually provided. + +Select data to run on +--------------------- + +We'll make a temporary folder to store things into. + + mkdir examples/_temp + +Generate a list of the files to process. +We're going to use the images that ship with caffe. + + find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt + +The `ImageDataLayer` we'll use expects labels after each filenames, so let's add a 0 to the end of each line + + sed "s/$/ 0/" examples/_temp/temp.txt > examples/_temp/file_list.txt + +Define the Feature Extraction Network Architecture +-------------------------------------------------- + +In practice, subtracting the mean image from a dataset significantly improves classification accuracies. +Download the mean image of the ILSVRC dataset. + + ./data/ilsvrc12/get_ilsvrc_aux.sh + +We will use `data/ilsvrc212/imagenet_mean.binaryproto` in the network definition prototxt. + +Let's copy and modify the network definition. +We'll be using the `ImageDataLayer`, which will load and resize images for us. + + cp examples/feature_extraction/imagenet_val.prototxt examples/_temp + +Extract Features +---------------- + +Now everything necessary is in place. + + ./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 leveldb + +The name of feature blob that you extract is `fc7`, which represents the highest level feature of the reference model. +We can use any other layer, as well, such as `conv5` or `pool3`. + +The last parameter above is the number of data mini-batches. + +The features are stored to LevelDB `examples/_temp/features`, ready for access by some other code. + +If you meet with the error "Check failed: status.ok() Failed to open leveldb examples/_temp/features", it is because the directory examples/_temp/features has been created the last time you run the command. Remove it and run again. + + rm -rf examples/_temp/features/ + +If you'd like to use the Python wrapper for extracting features, check out the [filter visualization notebook](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb). + +Clean Up +-------- + +Let's remove the temporary directory now. + + rm -r examples/_temp diff --git a/3rdparty/caffe/examples/finetune_flickr_style/assemble_data.py b/3rdparty/caffe/examples/finetune_flickr_style/assemble_data.py new file mode 100755 index 00000000..09bfa261 --- /dev/null +++ b/3rdparty/caffe/examples/finetune_flickr_style/assemble_data.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python +""" +Form a subset of the Flickr Style data, download images to dirname, and write +Caffe ImagesDataLayer training file. +""" +import os +import urllib +import hashlib +import argparse +import numpy as np +import pandas as pd +from skimage import io +import multiprocessing + +# Flickr returns a special image if the request is unavailable. +MISSING_IMAGE_SHA1 = '6a92790b1c2a301c6e7ddef645dca1f53ea97ac2' + +example_dirname = os.path.abspath(os.path.dirname(__file__)) +caffe_dirname = os.path.abspath(os.path.join(example_dirname, '../..')) +training_dirname = os.path.join(caffe_dirname, 'data/flickr_style') + + +def download_image(args_tuple): + "For use with multiprocessing map. Returns filename on fail." + try: + url, filename = args_tuple + if not os.path.exists(filename): + urllib.urlretrieve(url, filename) + with open(filename) as f: + assert hashlib.sha1(f.read()).hexdigest() != MISSING_IMAGE_SHA1 + test_read_image = io.imread(filename) + return True + except KeyboardInterrupt: + raise Exception() # multiprocessing doesn't catch keyboard exceptions + except: + return False + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Download a subset of Flickr Style to a directory') + parser.add_argument( + '-s', '--seed', type=int, default=0, + help="random seed") + parser.add_argument( + '-i', '--images', type=int, default=-1, + help="number of images to use (-1 for all [default])", + ) + parser.add_argument( + '-w', '--workers', type=int, default=-1, + help="num workers used to download images. -x uses (all - x) cores [-1 default]." + ) + parser.add_argument( + '-l', '--labels', type=int, default=0, + help="if set to a positive value, only sample images from the first number of labels." + ) + + args = parser.parse_args() + np.random.seed(args.seed) + + # Read data, shuffle order, and subsample. + csv_filename = os.path.join(example_dirname, 'flickr_style.csv.gz') + df = pd.read_csv(csv_filename, index_col=0, compression='gzip') + df = df.iloc[np.random.permutation(df.shape[0])] + if args.labels > 0: + df = df.loc[df['label'] < args.labels] + if args.images > 0 and args.images < df.shape[0]: + df = df.iloc[:args.images] + + # Make directory for images and get local filenames. + if training_dirname is None: + training_dirname = os.path.join(caffe_dirname, 'data/flickr_style') + images_dirname = os.path.join(training_dirname, 'images') + if not os.path.exists(images_dirname): + os.makedirs(images_dirname) + df['image_filename'] = [ + os.path.join(images_dirname, _.split('/')[-1]) for _ in df['image_url'] + ] + + # Download images. + num_workers = args.workers + if num_workers <= 0: + num_workers = multiprocessing.cpu_count() + num_workers + print('Downloading {} images with {} workers...'.format( + df.shape[0], num_workers)) + pool = multiprocessing.Pool(processes=num_workers) + map_args = zip(df['image_url'], df['image_filename']) + results = pool.map(download_image, map_args) + + # Only keep rows with valid images, and write out training file lists. + df = df[results] + for split in ['train', 'test']: + split_df = df[df['_split'] == split] + filename = os.path.join(training_dirname, '{}.txt'.format(split)) + split_df[['image_filename', 'label']].to_csv( + filename, sep=' ', header=None, index=None) + print('Writing train/val for {} successfully downloaded images.'.format( + df.shape[0])) diff --git a/3rdparty/caffe/examples/finetune_flickr_style/flickr_style.csv.gz b/3rdparty/caffe/examples/finetune_flickr_style/flickr_style.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..5a84f88a05871ac7bdb7be4cc33fcd4cb53fc939 GIT binary patch literal 2178982 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

    }D|fOLT)-%S7F>u?h?YJ= z{DMyjzx%qs_wxggxH#W^CS)_%MGWE9o_@8#YGt-35CkB4Y5!lM%H5o0lIAVV6n^7Q zai=GA$KWie3mH(oWBqn)#Rjb$`JU^Lo#{5pweIX}Pp{q9!6r?A{x_Y68Yq4)(Js=6*CS8J4ZhPwx$*D{H#rG4lY+2PIDo9#OhaZm~UvA|?CQt!r3}(8>PP z;F2?I3Ur@D(glYDnPsVr%*6X<;!x?hInSpjzj~`Hw3J*~Hdd!tY`E;3n-^}G9fmQU z^*_G&_pbHc9-|(-bm~1PAMBZM!EvXYws@zO$aI+tV56Z=A~BqnBz9ZiEHqqcs6`dz z&Y!h5&HxZ{m*9&&+F;^6Kop)|suYW%)1T9*=%whZ!211`(gKj3M{cFrs~7Ghu=x+Z z#%}EQmCtmhPKznl>hg$oytgRJKS@p>`$H+uegtxqf= zzToda<~GqWQeKHp3C>;WU*3{UpR@&JAlrZ)cx5@A)c&c6IPbT75AK&sg;soXa&2MJC6?5y4qDt5M?x6&jK+-Ta)rIgq@m6$sjsD^m8TYE0oa)Mu*(i`coMsiAnW&MWN5$#q8|^!U~sEkL~fA&uq`6rmlx_TZ_JB)G2k)|=ws$0oCmQ?Y}4o12m~unl~d>Gy}|vi#Ttb3whRPC z7xo`~rS{mI4H`#`hc*{JG3e+S0=|WAjFRhm{~)7UN*xXB=2uKSvIH=eAbv37tVGx?heqfRs+<=npbSa z`gdYT#r&Yt`xUumq2zF&(|h4kaJXx9IU}s#*UY4I$*ksbb2Hr^4V=xG=HoAaUdV zPCJ6yS`qf0vI}l7O z$&_;XF!C1xZi!$`UKdjMOH#p?A0SkAeuBDq=I8AG4y{bHCs~Ju!zs*2EK=i~n()Vg zjT6LTBdL8_MtYj^=N>p%3yBg-^3gN9Imkw|N}H_Zy8WtTxjK0!Nwv~|bR1DNBurj@ z8~0>h3J)4`5Vv&ejAo|`c7{-|F-L3D^n>?XlNhLcR+$+;?B$6KgzD_G@OoIwQsNO! zTN)gG`THvi%pkGn&s6)mqjY9X2dS<=#NK7m<&S7`ZLiKj>BP?R;^{){%3s1#%~!Y> zmhV4ZrHTCm1NiZAv=&un!O_|i%$xqw+31Pgl}x2}z#Nsu|J|AWufpLiIV8sVI$B0q z2~Wbr=m8+c*GCdZDp7?~ZGbwd?sHm{r@DsPHN#9qe~=-6C|$J9&-aIvd{6rAb*7@Q z=)Eo_tTlwN4_62X5ZG(~CBbS%+PJz3oT}!Ck@mb+#WDy0?JAYEmG1LgZz5X2r|Q-e z(6}31Fm*=|qYf#UF-p(;xAwF*z_GyvW|x`M6PTg#x?ub<{EOF3b_ReGx-*eP3Ub=y>Dg8ea&ZP8;P4D&MWx<_{PHTgD=SI{wqHczyOvq zYyKW+!B3udJEYXv7mGmWyt}L%9#~irh7S0PqKPz|)^_vHn-#0?n&Cg{{n{%wvOg@|59@J zvk{~2&69^4Ik%e(Xy1*8jar1pbZ@a#71Unb$)^j=px^Io4hbEtQW+*NlB+(aOLUHlv}G(lFb7Xqx{LCx9Z~r`fTC*$;zbfO zX?wg(=73CV;Cg29$gh3S4yLMIIItWc|1$yu-^q=Tix4#j93H0!{8WDcT(xk~x7r0P za?#hLPhgDXEVzPHcp6n^NEcXQ72Sk87d*Yg3xIjqt*5Cjcc=Zzrk3#V57Qt?1*=DG z*4CSoo&}GunaSv5IX@B_Keru!GLM*_b2Isc>mPn{rvxl~J@sRFZR+}KtlrP%y=!}h z(*D4l5o+~uU2HoEHkeA>3 zY5$`!UFV~j7ca8^IjVluhvNwg0sJlfIfQxd)TEyeY^|cUjnY@+$a4^9x=$-}yjCjl zuY0@>{@Nq+JA}#pk0>K&5$v2IT6vMDDGnrnPVwhud{%z#+fWWZf@)f|y>bH{9ZlQ2 zfA1;)u<5G)z3g~y=fWdmy4>^QY!)eUwYL4$5 z%k|`C9=K5_{w*S*hQ2&L!E9*UB;x!5K5h5UXN*{y)D%dUHbf!TT-$)w zK!pFDIGaCYN@#=-zxy9y7Z+TwCr+Ufppl-(!OUfhiJ&XIFe0kzQ;?6$0 z=`KAtb!_?=+P9$Ay%;m1?f!pF#iJlI0@@$PA|N;k9pq4lprlZwt7&be5+Gqig@qH0aIj>aUh?8A*+#W#6#jWlQ_^{1Zg!!~Gsb@`ZD50AYp_KF- zi*})o+fuC7#!~(=$lSeIXVa#%>B@qWZxFqfg8k=TX7?B;M7ft$@$z|gkBsy`vdOE)ALtwK4Bg{v&9E**OGN`LWO_e*sM=q( zh7=W`-}%6q0e$>bo4Zq?zTM18!sRum?4F%}l>`G0~UlR3hksKvxXTAn_tNRjhuRs?P{(V;5==A~iueqnN;`>2G zMH6dSbP~cf@p$P+8x@Fs#Hp~%hhCP`sjsu;Rj&|q1=T&N`Rh+3Lse*01gb5?bNTzV z1OuR{{Ecq}uhQShxW043O&Pz8Pdo^(zhd^xz7K<3gPb8Ay(PCr#&S_px~d#!J_+%*lbtI}B8ULWhR?5Pl_L&+R2ld;xEadtwM?W!l5pC_?Lvth8@>7MJ zuRfXr3JUHrAAaT1BwZU|E#L|Nqunz6`-JFr_)VuW{<;3##u&{(>%6uKp`YkGxaAz5 zs3==PPP>PBgK~4lk4(~>KR(k5MVy4t8{PK#cLLf^g3Dn-B&L!kO;;!}XK(|trsTcbV78)}xRg!h5LJ#r+XblNATXwOP9vVq` zZAukd6lq3u5x@PG@>(ssXV3L3tZk)nAXPjXWoBQaX>U$iUuyE=x_NFjSSXTQO*0}0 z{xy`pid*XD=dj)rqSNCC)CM=a4Ze+Pb~JN4XFtrj7N(!5-+U;}yvcRCP)U~IEV+VR z2%XA|C;Z%9UJ$q3%5C$@O{W>=PR8bm7AOGyiTNnDa4#fG&S})4et6Ze*x4RvM>sN6 z7H~;ff-(H_^W>r$l>I87Yg1f=u9A6o89iQ0iwxF|u5he4Uz;KbMinz6wHt)MSh{y5j{@dKh(QoE>JgV1vyEd#Rb}VjYJ}u3Lw{k8$ z6pNy6Vt_?&l@3ERPSpqbN~yq76H;_)lPF`frOcjBcy#mhja&TE(2VZ`XHk_*fmEeF zHq+{AUvIO=1FpBoaB+pmuhD^F=80n*8W3*xLlp#>em^)7q))WK6LQ)El?k}>?2 z0wa;|e`TuXl{ri61yw(mT-8KVW{n*`5jk@Y zOf)(2xRIp6fe0lsr3P?S8{L?T-{D{+yDUw-QN_2O*%5+nLy41@(*+w$0!fDA?jAZy zoIDxk$s@#ftyyrTqKrM)QDpWZVCt70O0!haLCQeJ^S+cDYm2PL<>j{%mSz*s>L6nZ zRzAAGGUwTq&W6(8rrfMP$b6~r!lBb=j*V;1?f4dclKsBD4O+ZuzAz>2iWv;y zcHNNGnzh$D4}*@BYI?w*MEkva+1GJMAVmC#6v>#9)ta{;LSu%?EPl{7_x)o7qd|4j zp@>@Eo1*#ONe5-kgWP4$OgP-(8*%Z2j+QuYPb0)#a5w6%!Udc7&OxlG^eby*@oQO2 z^HoPybPi)VR(DH!<~37e4;Y9V()B+092~tkuakZ>G`9jU1x%^DPYRVHRBZjD%(H7n z%N@LC4U42b7mFJ1uU%&Y(l<+D$HRFIZ|)?X-=aGFCtGMT>$|-0ZeuLrYs^F3Q4$*Z zaJHMQwPTH;qDd_iq_534up%H9J~V7BmVD8eoq$OFi!P|r+Am7B%aoY#<%#P$8capGNl~l+fdXMiL1>L5hlkWX+D2`$?L%gNOfyAdBnJ;y<)l z?KpEQskWEi5eFxe9k@k0&|mNYZou=u8kx!^dXa^8%5RJO9A}pCQs#>dJR>9HJs$&l z6jFcMz)??a5Ng67>OHYhni^kT%DATd2Jo}YQk{J$ag7iSNBcH*s>r+QU z_P(ikdU8(R3+_G82v}Y%eAkr=3FFHV&~Rs4%ZN5YL&KD+yNICodiPTIRB%*;<6vud z%C}YmgP?VL9Mz|FpHHs8(|>CNTiVf`dul|+N^$^XC1pnvE)A^ox&q}rn@Oj)ZzAI$ z(;RqHdGvExt<9*^mPk$X;Y&ocn*;aopvc*F+E*sxbf-(Q033#?!Bx)n{>uasn*-(G ztf3*Gn7anu0vy*MV0z`bA9_$ErJya9hbQ-g#Cy=@JH4Qy^fg>379{)tIR^G%pU5{M zt1x9XSSD0gbUVF}C32_G%xT@oj!T{r_bia9j8m5!GKv;+GDh>_JyD+;gi#SMCbmY_ zscGYCu<|nBa4~zh7zus1emQNK_@0ljYM%1}^IVhn;rYePSoSY}SJ(h!^xAEi`}3>0 zG2c$SaOe^v^3n<;=2q%Y7TH9hElGc}3}dtzdYIPY3k@#Lmb}*yxhikSYQQ#V*0;$S zuyS}GQvFk@rSZD#)WW9}ITvaz+bP=nC{w?k(1Ob{Dt}Y`It8Rh>36etEH+=gwr=$| zhFI6+FQs9wLhC^Q>C(I=ApJ9=63b8bco=2VcGdDc0tgIYkztws7AN~`iPnS0$MWOaOXYRx?Nl7Y(mq1dZlFj5 z3R+a8F7?f4EWK%drhIg=V%G|!f32Dyx7^-W==6#wBR~WAiXvCQkcMr+T+zr}pbD{1nx=+&6oE1RX%e zj6c!8eUUui)(Ap6iIKv-R%IfQJK{`FlbxImOu)}_1hqS>iv$j;uXa3DEELk9pwH!PzqCLY^;sQ#>*h?1BnpK>rmj9Qh#w+bzd)=%d)tZ@9v@m+*&{q|3FZ#-amAQZL zAO&x873OvYt+2j@il;d3qXHGbFVw4@_mNVFgI*4~tl>{g3>76~NsZp|^5=KclRR`x zFZ={(A47W|P8arTeGVNCjjeWw#EW3`SVeTqtW1phKcI4KPssFaxAUY!`n zB`i`6323;0^j{9+ZqZsErz4q8&uc5O=+|C_a=0~3ttT}r<<@^QDuXX8N5NS1~0 zdY^RFi`Ea+#Eew~(mjn{SkXAO=GN2skGxs6w%zEECu*$E17-?7IPGJa2%~XHpC@jU z+cw?mowa^hjvl?AheDNXcmk!N%LAL2r-|7dp?j+c_VR^Gb$Ik~f#c}=m>DVo#S^zZ z?GRbwY%8+RWJJ}a>kJW@Z63Qqj|0k@14OO`9z+{7Tq4SFB&PX~Bn=4%h_Y+Le_hd--M7P4mDwrl?! zJ>L5l5b=+S%-Gx+{@5+6fwC)!Zc|y*mKdiMcq-NBJI|tKVb#JLQk4dB&6F>#QPY8~I%vtkF)`LF?b4@I z!p9z~eBf>+_UwtRx-Mm_!Is1*0vG}^n=D*3hO?GwBS3oYE{?u(n+z+xVgtqUVXxBL zhn4PUQ6>>TDay^nnjn%Rv5Vv!pA&$Ix=4%|ma%XV+c}eeD7s#FS3q@>%RV{M!3SEz zlM4?!O+H#HI`%9x!crIg>Eh@8YlC*b2=VD4CIX@?==m$%&tYw#7-wAV)A2z!)A0Zj zfLozmG3z0jT?sOktZS~!guFJ#$dOG1+3HU)MOtB}$MGH9q5M;@r4w&ISt+<&o03fYjmEe~!yj6t^A;s^ zy3+FtZdQMC;lAHEtyDWMUc7e&L@cEiB3dG0?{xi^?_y)Db%S|{N-Z-`9wO5=Bbe&Q zRz2TwCLM9QfwXtrzQT!+R{j<~Cp?L*A?hRM8NRCqf3`L5Gm^fPff*oDpDT`DtZ`~# zV%5>^L$UaMta;HfDu@KgB~=n9YaaE0#o9+1DaIQTi)g6Rj_}q0J;~+DNyYa0HqaM3 za{mxQEtONK2~Hn`8ZSN(nb>SHV$$=+S;p>UP~AUwy~}5jGT#uT{5EJ+RS9TSVH(Yq z58wL>ppogU$$h;xed={Ny#N9fP6FFs+tMnqKx6}Pkh91Cot5y&G$G6g zlV;K+1y`P809{yfsW0m__fW@2OV)ht_;X{}d{rSA{kFTJG3U)UCSWUNG-!?;o=$|N ztRi3q1;WY3l`N%)l;Ncy+(`&imfoE;ot*g_h{G$p(PzyvOI%~mGvdln2{0o?4n66z zHvRyB#~949Zip#c8`Qai^u#^)qkaCvycYn7r`Qra-^|Gr@fWHJkY8K@wf%+)huXnM z&dKZ7NO6pmIa8l)er^d{Q2uh2W*XIs#G71-gnNgN5s$&cGk8IWr0h=&v|oiYDZ48{ z`e+)Uio8#E73|jna$$F0qfvO@m7fbq--?9>r%wcm%to95LTxt|caJsjMu;H{T@ z)t%V4{P7TyiFf>M6gvw5FpQkZO9QBTZ6tHHyF(5^02 z>#$etdHCr19veA?Vlrx*mi77U3nzc;q9PqJ5t9^FI_b`}zt8VLcM}Uwy9U3VdLb4U z-lYU-{@ZdRLT|hu2yC@u*XHWb;upK73GX_)<)bBOS5%RF^{CX7U&J>w^92x_B}N_8C3a6|ZNc7u{^IW!stVOT(#@ zyc}eT=BF8Yqs$;okv{%RSth$#yhg4nalBS?gueZJM|=u6{k#zE)fc;8W^y_{F24Ux zOgR!0=y}bBz2VG5MCakO%F6i7{@=T8I3IF qiL2(4w|^zO3rk9pneA;dR}5LnOm;zP@XRwIlg6esKIUX)XTn#*WEg)cYf^Mhtl zfLv}5kfYXEG@*7Zw`^LZJbzSJaGkQ|V$n&4$)}GfcTrPM||5)sX%$@Oi8p@NwWbL|o`E-6-Yke9Kbu_Y6 z1Cfi;`2Fb9)o-8@pEt!KyUG$?(PPk_y5t<4Z?nF`P|10Ciyoo4Ez6uM+eL%A;Ac4F zc?(cZkJX=tw|DDNLED`wFp8vudxJ*Qo2EB^u%NT$O5M3{kkZwRc?*-_k&-TDn||3s zr)UwyD%iNR=b}2ulW;83*eomlB7#MaXQJTURfRtwW77oAbml7lo|fT+Geoy6w%vi> zguC6UX{&Zoe=kI7LP>Ea(_)hpRU0oe7!{wH{3@N;P>jfcAE=|g7uDejm23p@JcbrQ zM~%wD(L`Ov1U+qMr@X=GhYe=sL#JRk)pmpZ^0pQ_`?#Wwifw9yqh51>bNKMTX+nIr z$A#9QF#G(b`$6JmY32u=V=K@2?Kf($zy~j2Jv>h$9fb_0+jKd;17J8cCoVnpheyg9 zIb>Zh|D7G{*2`;v3!hjFMv6WrJl{GxOd&)~#aM=G!5^(&1N7<}36$xid+YRQsBAnc z9^vv}-F0FkHqhecSZA868b?8K<#2}5RJ-jPVz*M|{6&DQ)6U+G?ivW(t1^~$Y*OPp zHdhhTFOyD|CG6phqvOoS07pyx_kK>#S~LPQyqs4n8`;}Mmw_HYj)+K!!1>67_3MKI zHfk(DVHhXEXRbt5ues2ON!Np8fFmG0jKA2@4DV(m5AWz1JWq%7sv0S3C;5_f0{77r z!Drc->-7?N>a8Tv!XCZd%@-$9E@w}BQ?b|1zh;h69v}3hd9&q#(V&*A-`X?G$Pe@a zqtUeR<&^#UM~sUtTbS}(I?|_EyEMJ3LF)y(cgeG|Xm?3^1i>|D8@>kHKUvC^KVLWu zqrC;|x_OCsGiw}0F>hvks=f%Nv2YN(i7g)1uo;4Mx(ANhSyy3(+qFoiuqA7^8>L%@ z=vJ?S;&k?6L~(TBVi}(p=4)@(4zfTh`Zy$kuZ>0J!Yook{&$-4t`B8qJ1*z~)bEte zyv(wdHmmCr0-P3JaRZ%2=%xd&sjGs0dd_R16O^EMxh9=wk(j@53_5ldcWjwyLQ5;@vNIsc=qq;K?`svku z#S`PIsHmNHA``2Pi#+XwPce6u2iJe-4EYTV8#!4nOE5_8kNDs86Q!4380~|Yt7Du# zj1q5%gIYhPl;_=7i9lSv&qoY{!kDV^6gGxS&_gb${lU@0*D>7GU?1z>5Zyip`lt-^ z2LnQXx)mAPj9p&?3!2WU6n6IE)Mri|ADW98^7!`fiS(=})k;O+zyrm{evJIHp^cfX z(mJ5)1{bloav}{)#DA3xZB%QEwd~WWVA`PgeN~wI#sCgNXNXCRCaJE{w12o6uvDa9 z*%9R(6m*DO%IEFFx@>#Ux-gmt?zlbVs^W?=$ec;BLNg2g| zV#JDJL6Y-Q1_z(V;#q9Dhra#W68%TTcEcHIe-|&$>p8Pm3sbtV8-8(Au5?yf_^sN9 zJCBxM>?(UmH$NP`AX9~@^ZS-VRMHw7b$I(wD|c6aZC-F@n-HpiR=69jiPBDWbvup# z?Z6+Mq2Q(-m;Cb)XY}-iSWA!R`+B8D-XYXo>NTB38!0q{)nGZsUyd7 znKD~3uyBKvF8!`c1TS6&58c;3Abj2@Lf+vM0z`zYxc=^^YL;@GWOyZ5R+ zH(Ga~o35!@Zm&O=hdNQ^!?kL+gH3yciN_83E$aR2>b5}HY=QRg4 z3X85#=PJdPqJ4`ZPA%KJj>!ZEUQlU24_V|}L*$-(Q>i0^pI$b${+}jse1I-8GV=t4 z!A9=CnlG7L!&rn^21P9Dr^~OtBx46VMQ(H0=b|lAv2rUEgwuxS)9Nr51hps15UY>W zmO29{4M=#^o_f2vmU_GdP0yXp<<9h8X{xT@<7xwBYYi?5^20!y9zQu`Z2BZGoF&hk z#yc}7nE(GS!k=r%*CcG>iR2yVwsnM)wnh-~3Q4#{?PBGnLb3xN2aMH{?L{0T9gxs= zrRc%G2&Xqv+Kyb*z66UAgs?bB+1K52g+WC(lrfJV=85lDkzkePkatzxlV%REc-cHJ zR>ij+#{HF{hoBdD#p+25J&wRUB125K{zGL`f$ZF@7V~;Jf(^X1{P;!fl!J2Y9GJBA z!i)Z9qu)a+^dJkz=i`o{#|9|LK=+^cM6*{bUt={dt5V}HlxM};-PRC?CYwgN#q}&i z%RsOcl~k#Z;XUy2SZ_yz2|yKh5(e6%>%K`?bMUM31{k9n&D0ZV$m?6XI7#$7(pg;_ zW~a`VmQ3VWyYcP?DxMSz%#YY+$EKUBRYv64wx1=^ufFu|@IDuOZv~KWTHH!PwDEha zR3%~$!MU=N<5Pewja-%eRzzbb(>2VqZ8{rY9-^Y^yYZDHOL0i6@QQ;RqEKJnh}=WF zM0LzO04pb;=)JBtEITtre5wj4Usymd9`D_6gN-}E@0GK{ai1IM*~3l`l+H@>6`j%; z!)PC@n0cx{@7TF3beRSq?t;^d0o^zlX@7#Ne0Mu@l-R))e;j+MX)8uBOS2sDx%Q^t z{bk?Eq2jiV`Qb^nwHfF{y`ApW=nE&YbSX>|b!bT?_|0 z#Z}o}^YwFUwVzdqhw;iwa|DU=s)<2WlY0I8)MK=vGHgm4Kd=m3isS*UK`!zS{AV7Vv@M2tZVe2Nt3{i5lfFP{i*?c~3 zH%y3P9x)^{VC@Pm{zxp}-GOt(4Ue!-Ij=wc7yu!npMDBY&`vMEw^(D80&Idy&*gLJ z7nPEapi;}2?|@a?xWsKnqdPA4X(G+9`o0B_|Wj&_0Lmp@0FYSf~GUJNc9&< zO|`C*z*VJgpr_3T7H=E`W@mY5zYwZa^gBxiWBZL&)uvV*obsiZ1Ns~$e$kL5l5>s( z8UHv&=||je@wQ$;Eq09P8_?+pzim{pCg=p`eUtzF3`DUci$8xP?P*!JVDQbI6#C%r zpNX_jpQM8Bs$)x~);cU_p>>I@8A}2F&Qv_Fq-{ER&6@nvR{{#;KX=2Q8&v~&#K5X0 z7r$yP>N)1_jC4@#ItRzc8-j~B*zoh4Y_t36W$XOc^1aF|_YWHGf?Pa(z#tE7PzY+e z989gDX0hs&iwbMDEZwNum-?yHNM@86&Sm|eo+NGvHm=$E|oC< z6SPNz6qR-6v?_9nUNU2|%7EG2Mmn+$U%-7trvP=a_G1&Nglq`lWJcxkc zhtR#P(~QZ~6(>hLSQ*3Q`8`gSOnIzs^RomqKTO}^8q(bu{521@pU9X1)Y6mIa6%-) z$fN=XGGV;V9ake;UY2+LUB7lMb4kGP_rb|U{m9Y>KtR{(1 zMt|Q8H{)nhAWp#4*yzxz`M}HA!vDLjHML`mirV;DRU~sQ)aH%V6)kzk*S2$#aC*nD zhX4b{w#AAw)Zx;!mX&6#K$I>NQ;dJq)-@KAp&Eu%MvbWE;^Bvco2Dxob_E^V)N}W_ z*3I8p=*dZ_3S&sxN8 zkHT7_7r%>akBQAe{i}t3`BtNl@#_&Z5xThfb*K%$pi#62G2z8?8OJPJm|^m{ud&V$ z>w(AvAP4GXCli(fz8pv(-pHiMmK!*ET!4b;Gk080=0o}yaqJ)LTGN8>U&5PrZcN1i z&5f@Wz74v}4}WZ>{87{#f6?!Xz^XZYJn6C2q7@peD`4c(wIPsJC|;Cggt)W z6aP32YEP@&-5ca9WrOxDEqE9yP}3jhfU8LDK&Knj7H?!UN|Q_^IaMR#a?E%UDV zkq^NW?S2i~E@6y1nGajpOF7aLgpXy${@4@PiJP?ZCnvff{A*-@gsR(O^COOxUEAXx zfR+YsoBLW+AJ^sr$(Tuvbq)*P+KAw@JB|OaG6?nF#)~?Et$Whskn`?_WWt%F#`jYK z02aUut~74kj>rMx!%Uen>h0TTp&5VA8uw?#ZCFTQa{F9NS*1+^cvo);hq9tT`cd!S zBERzWc|aL@zwsfa(e;qtvZeXAR+^5dGW3p%yraU5+BvXKt!=h=;UNs5;&Y|L=e;!- zmq)3OAkG`W+0hoAQ<|P#c&^Ea0%l*tkh`3qBEpXWA6qvY`H1L|zjF#;>_l=ATE#En zH;cNfli&pqeH{KB^XDz}2r0(F7_A$WW^5>^#KG_Km3&+KSGeSsLO*NGVui+#-th!c zq+^NCOvdN^^}fT4Uy|=!V9*M7%7T3~ZiE6A^P;yZ8E4jM9`o-rb2@0>!H4tA0lvY- zH>Dxtp5GGr=tsh@yd+hC*;uiQ$lQ74(Terf?^4=mnDZhQ&$(IyWnf=ETuZQ&j%bRa zh`8p=9RZKQOi=GCeQ9WNiUV=u&dv<<{g(nhAS)dyxnloR9Ad)=t=Yoz#?4Z3Stt5l{l6!r1@MY>(>%Lwr6 z1NzHKnQz!`8DC=x1}PFB-N*s8QB*+wfW?VX3focKPeRnenuW^!tZPV`4a zcTK=HiNKS?jsT>ta@t$ZaVEKL34jz!o8FV~v9FW2&w(PK77vh}k3 z#)CUrjg$$9CY4QfN>aM!NQe6L+svlxphJy#qOdAqcHRcn0O*e_7$;^+p+j9>7E(az zQ472iV&qSy@HZDp8!)4%csuio!=u4>?iH_UMS_0f)3w@4L+G$s6VrvVmS-GGY9y^@ zPHLP_9pGM4G0Ejp9WcW?Q0+8^Psd+fIxklQydq2X_-7S(a%pGcwm|D6E{HuL`qP>2 z1X8Z6k*GWrEhxWQG5xXC^-Rgtht(n^W9ZT2BH={tFh%2Syr+w;nV2ETO=J#)9GRK~hlYG;YCdIN z&hKW;TP|dN#y)OE+R5TW&}_AVi}SXFVgr#|#Bgi8B(r(@BHsz{AKH6{L)+Q4XMn>I zl^H#Xp8j0Fb4D+QLk+kxx|l znR5Rc$={(R0$*Qh&m~1<(183H@z^i=pu6%1(GByI8NC1#F;-}|`7UGF{0R^uDJ!|4) zcDN|aNGi>!svXPc!z{K=GL-jafH-Ba>%rv>`uo97(8J}TFL@!cwb6mpOHzsYKg*i-eJY|;;X9XzIoBPPH$;6UJO z%$Vrn+ZlHolUfd}D5G9u33-u@9hbg=VnR0P%VwGFm;df=GJO9oZxJ&dH4UH!B#}eu z?n%zi4}yTIvHtqm>)UUAzs3mwHbBbMacA(g{D=||hqNSZ3)-KhgOin<>O13?C0pV` zItqCSw^h7Wy8>GyiTf(Z$!MAp;x#=_R3GCM{$p7^+^8XYhEcbQ&A%W)<3^3+EH5mX z1R;^FZbpOr4WQeIj_!|R&h-6CATk51)X=lTl`v-w#@NJ4tW?r(zoL!CSAu_zgr_V%8L#!eI999&*Iu_9CB-6Kll5uGPi{jHQ;@6Uamv80c! z9vhOayFwpOwa;As7~Q89Q=iudl?fdS)5EPp%0JGESO&EYsiFN;F7Izs%AR_?`n%vw zqL3my7a{~?AC@LEy{CFC&t?bJ2J72v7bN!w?je{Anl091{|06Rd7CUtgg>&H-RsW5 z?#rq>@%N{hf8$F-G2s1tew3X;q&2Mw2v2xwdE2qH z0#nDjmzb;1#REiY%@Wa;5xnyG`d8^^AICv%Gq;%5K*yLPA}I>Jjwt17jx}uirA+kC z^qJ_L*6TQRbnm;y)1XIwCu{jBKEo$>GH_owNmJ7Q?&3h7l|K&@cA#I?-*knY>CLAG zJlEo0TXO$v;$oOs04c*I$yimrTN!=_^;B7@*G%N|{Uo<;tLNg?Sgmi?*9!}$?LN8* zjFkU(WB$47x(h%HD-0|~0pTt=M^8lGWHaT2|#1V0AC^7ZJr!Ls0(d;7yHPe1$ zS_z0;3@osHt>yEuCxwhYOqX6e>od8L2kMp^Eb$h#s~a?#+;;DaH5dm3@wbO9wlh!f zfgb!4%Sx<0A__VE-V4OQJG41GNj9D8zm4yI=iAr8$9>oPM7oS%b!e!A{NCaegAHO= zp~<)?(pmG93={5F_VY23@sRFM%%)Q%LYvgr+U~a3(I*bSY`^N! zkXx!ha}4_lyqCUisbZo&Wi*aD%`=7>FheAm?5_q1+j@m6NKGSrdpv$xyXu=GbQ&S6 z)8~;2#pyTFocUmFSF9h5-cjG$Xg)r$(#Mrt+N#_QXjQ3^vdVUK8~ESBng zl&ar-0^)1gm+s%3p<#aCz6?}zwAQW1nCww&ANbBe8&Ece z2=%U*?*;RQHFc%0N&9qAX++|oh6g86ixB)Q=Wr(Kj=$D(9f1MPqtbHJf{Rk?LMmVa zmpr~fUO)`|#ej^$Q`I+EG>K&0_0iFcYc-p1fXq*Pdxz1-eMg|SE6jP+5%p%1xOTe8 z5GBJ|(oIXW(nk8h|M#**RWvC43b?$v68Nx#rVsa0776NUxNKdXpZ8w>3d?)&g#TY@ z6K3F-c8pqE_4@&rSt|vB{^siSuT&?5@;}CWME+tPmI(?OxH>V!E)?ekYGjy*uH*+K zvwXht_+TmXqnT+L=UHOaS4W1)bFSGBWnf%{i=qRL6F(AJlrn^gzSFN+%^Mz~Lie<2 z^Ou7&ctcFlK5pnLvcN>U?d5?`O5uEUn|6bX2?_b z4nm1YWJym#ZoBtdX2IR_yu`obV_>QgVbUGt6VV@r2bz{{~n8OF)ptlF?G7P?!SOrC@t2ZG}y0$ zIhX0oh&$5EV^2$F=W-_LA#BG=Lr?TxeH>zB3Oi(y)iN)w=W$_Fc7?I~8#Mk>SdJ$1 zihg1MOObi@Gn{zmhYdYsC}YAWHXY`bG~~Zd6IwkbqDzk!(B>Doz0q^Ey34hMR1$j} z+jt``K@TEk+HsccMR3ym6W+Vt58IhDng&LPiQ}cY1My6UCYbN2ZG>xXdUo|4%p)Y% zbuWf8!!h)G6PSmY9BbN<&iPkDG59MPB9?L!9fRL0#-G8|mn9O`iV~eggOgG>tLz>m zYAM`3d~>YRePk1!yrJ#Y)Qox>Phs>nzI#V8uesVKgrZrt*D`$UmoOCK$AIByD?oE? zSC7e4*Yrp##`)eG>^db1I+NT0z?{gyVgwtXq(Igj#A!)_25U+LKJaH3UUDM{i0qc{ zBHz8FmI*@r{?X45Ox7)3VO1hSXT55ANXg$%6$5!9j+ZSOyM@q>$$-Pbhsd{^#}xzh zMQ*S_8IEp9=dU2~-r>71B~=*`!S@&L+8)<(F3zEcX#0xHbGCa#Eal!p(n@Rt6gKs- znYe8gbGsPyWw?S9zN$&Pl#h7;b~%<@=RS9?kG+dq(=_4P2X_-S_x*-gAwxQ!a$Ld_ z>uyzky@P@}o+*ww4^a%sJT!BCfRpJg;iCQpw=(5Pp#vC6`OR9y7M>{6%GFkvz@><_ z^AdO3|Eo3w2S@4i<5xT)rb;`VV8E>IhsldsO2UT5Ihz@$R_Rx|mO5oWf;PXsv<4?0 zgNQVbmOgZgmqrDM6)!&ShsT{ZfSE^R^!lQ&YJOkj2*RMWy4p#B3oPR`_Th!eqO>dd zt@@Ke4=m!``h{Tg-x;Dr@mAIs%lFiPJ^Ix`5X|Ia!t4fH{hkl0#_bEXVWsSk-x?H& zGtFOn8+~>%ou45D_Z0Avajj@MqNz}Q;gr?#gq^) zkQ{2$B3-loi6P?Z9TKr$kSS5!Jxf4SmWwdLw5suA%KIyH}$vHAI1j~-oN(wtN z26ww#s@K)S(a)>5PE&oqA)0t3t3BsSx(S^^2MwlTe+4;j#Ub*{r+;kp-&XKT5ukiU z{a^#7tKBGCHoi~1k{+-rYfdBFb$rf24^cAkdS@V#hnT}s5%~2Fog;kDJV`Q+Ec{!U zpy%)U9Fb~;j@@BzvCp-7eA#%r>3mEJ?nBr6Je9n}Nt!)Q5q4WfMqsr4gM$Y96C#SY zq&pbN!w*=~@_03ue{58BcTVM%Z76^?c$<_x-Gq}w$M zfVzcXv3kwUtASBkdWeFk@=+J-s|9&!`H}|RBk5`hC>=_tjM9x%Qlw#&G>+~NL{LCPq$M1T z?vQRlLP6lY`@MgUhv&KXp7@+|&*z*S4+}7hwlpYL$AWudmQJMd(&&7)bNsPb`RKf^ z=^;85GN5)&ZPoT|{nwMZec}6A_Vj^OzW>7FR-`;-t{dU5kNM1aBA7qa31tT}ao-R; z){prMMl*xfEnj#G&wlGWwp4OxsB>RO6r`DNtj(G7rFvyLVLzKW&x^tYT#oD#xbicvvM(DMk zPTvOSiERYakT04ogPOStHNABMLe8O6-dkWjpfVR#l8I-)|Js+TK9V)i^o&^fAPd}! z;ksWNw(3h8U^~BfIlop; zymv=cavK+To{SU#HAQu19kK#)S77e6?R-A2 z&*INP4kL=zPRLhiyO#BT8Uh>R(cJ46OX&IedUIoJ4nG;CyXx$!tJ+hBl!6Hs!qc6R zS~W9+b{Nqg+(L5cGe$a%ndRVGIILqWM}2Nl9AgCW8BM8bu3x1OY@uL#NmCpLrXXw| z)h!IQs8ugHe@mM3x`}orJj>BfI83Vk>%*B{rhFfUXZb_s7Ky(Iea@cY=0b~l63lkb zZQYSb8y0yg5?S`9Dm}Egg!1EhwH>BHO7tE+eyZENwWc-a0Yl{7a>cZrX*-OpJGK3y zzk!#i|5Zd=YFj*N`NoF$#px^4dd8x7J*uR~d7BkDHfG0x3t^~IYg22MZr>*g32wtV z8M~FaOBNd8W@X2(Q0~nAJNdR|-rD9_{d89ZR#HXxsSvN&DrNp1Xh^{bsTs)J9-5-P zk6n)l1;~E&TqcT+b*u-NC0XT=~*a)C(|Y z#BG>C(Bk}TbN_P*9z(ykFP`_e=W)kOt2o=YxA~u_mHNLT6NZ$JU z#A&n~GiPk>nkws=;!t}bs4K2brtb35m^=56@gb{uy7}Yzh7wkUwWisGy=OX?`;BrI6 z$flW~H<#?ZWzx;Aj5luNzn{f4*Waa@_`IJUP>BM^ju*{c+R-BXfKia?@?}3Q*CHr~ zF%6`T6333@O`!#3wC4S%S`q10>0e`DU|p@kQnW;zm3rCOt2`~C_5W&TQLZa$Y;3zjMCP-j3Qo2JGId_9|yr ziU;(3oqBnD0*I}gpv}gI@~Rb``9*-!;g&&BxFdd}QBTAJF6Am>)qww(~k?{zf#G)B9APJo_%Y3wR~8*T(zCw~}Y+wVW{xrgubPul1@TFV8B8oJ4mn!g_=b z8TmG6o8}ubdqLH;wlY!uz2<7>*E6tD3NNGHeZYOAiyTeIJXkg4T%|)21~*s6K_hi{ zgs{z7WX#!w$ow(L_5L7csC~$^Z!GLtH1&8e74&iPHW%|8VqTlvz_upvw-Wvu)1S33 zBoTvS*jNh_|Jt+&U2v9uBrUN(xk{3;;ha@ZuPjrhM=2l%^kB|vgs1BnZM_5I&ZYXN z3tqp&-TOA`yN3Bb!ZOx1v*X)IkRa34BGVz9zx-IK7tS`U02_ zWEX#a1%uDx4B4`zH`dOakQv}KggI^=-g6uM9eJrJr55>O)6?*;f@ z*mOEw#R&6zQkqBzT$%Lo1+@Y(mNGH3jcLxZS70Xv>H)Tu{`cfa3ZOgxHzj5#OqaAA z`V^0qn=21bJpPCyS3YSGf@x`-9?n>xG4ul7n|}oZ6Dr;zq@` zFs2==id}ybu*<(PMZrqBgKCm>hI-9-8(S4pUtD&fJvs?FUW85atR^vw-o%+=hH^pi zV7{=;_jGQQPKh>_<(;>$tphDX$&DCR+}}aC)KOC!xz(&n&78*b={k8 zR~;Xfb%GAo`&PQb_5DJ~SwCoOOk<==+ur0|$O%u1;}%YbGhmtLZLc zZ16$A)8+`Fe|dRsgk`bFYePF(|J84#yM80)NiV1g=_8%k(%TYU@?(k3_3$u-9fIrL zU5hF;Ko0q?oblE5vgFs5?m1HrYSl`uLvfp9l3URw56KYj^Va@5Kt$TtYTL>2Zu&db z6CP2)9vX&8tZqr#YQM9ZS}@D14g#pbPeyWa>YBy$z&ytGpC9sRtGe5n=>XMA?t=QV z^YoeS`R7wGAnMPNV_(AW*T3wpYXPMxfG_;FybWqy<64RZ|E}+>xFxvJ#%@G^()Br? zSOps6CskTvj-X?o%>(xTM_^;Y{#knSRBK*q4qMHD#vy+BMf*3B_9+L2d!@&` zG9m(7-+jO|tB*)>>lRtDiMF1OZ4BmfzH!DfGfT7hvmn~4zT{@)TQa`@;n%emgVV#{ za=kEJd(GhB8%||l{)>`C%OuvKZ?ab9Cb3RkAy@{5q(5v$ zvckG1o^Zjk)_AAhrlU?vJP#&WN9UTM=U_x=-W+vjS94d!BRbvkkB#>!7nl_s&>6P2 z)A!(lQt8hwlw9{*Vm=jrom{kPtU&`lzp2pKa?w6{h>;V54k(P%S_p`KZpLQBaLps~ zl(5}qpUa&o8w#fAZ49P^_Xk$gy~l0Pz;E+I)g#UG7&Q$DVNo?=qC7P%*R1tfX^k}C z@CQa_g34hQB6A_waB8DZcUr?avgv5xh_^IQ>W}}R7eU8RhO^R+wz`Ar8@YMSbBo_j z-@9J)wcw$&nY}L<%gXo3GI-^0pAu>hI@%+Q#KK~W?5`{g&^Hq~1UrJPkJ8X_9XIr* zo7J4ppM?|Z!o`d-(%xw(DI)}+Z;EG_1DFl1-g|^!D=6MCO~ zARB4Kv73heez{Q$Wmg&COa2~g zN_tBl%Ys4@m^K4{VWwAehZC3cw{FOUjg>+F($F^Q1}-`)qVSbc1eZn{6XBm}1?2)y zOPpR;G4ldxC7xk4+!Q}9ExfE-xdKjIN3lb^Jl%<73mr}wmi$oS%-g93yh9@W)d`Fj zmv&s8*UaW8Y*#k-__LR9ql2EiSOt$WCNy5I&~Hu!rPy;My-RhL{?yXSRLRmrXE^oL z>Jp?khB6-eFw**8<<~qB#LzS)G3sI%-1r(xuo*+EXT+`z0tPFK& zf=#okLi0mPt?|UiG~ERjtsYl941)77G;GmE%BG^>9zqCnN5iF$MjGxN&z|`R^p8lG zR~c>vQkvA1D2MJjjqQ^(%-fr_2eIV|M@m6Ce=<$`upp~8`%axCM0uR!S}u2JR>(0y zbW0Z%57gcT6iZ153h-Jus#EUv8y?m&C2|P%#|o?H|jdTG<87K0!il40YOda~^HPG$TfY z_y1dkzS@OFKSise)W`WOcm$LKt98P!drYFJ7M!W~9Ymf9SwEkQR~sT)M!tz$7PJZd z>TLt;(Lb|U+xw!e!;FweqI2woJd8x|SMZU_XzB z{-S|6q#;yn_w3{zR5L#Rz7CbZB_7d-t54l+ti?p18ibF@gfjF%WtkwN8TyB7i_;$E zlI{|sjXA|v`4(6*`EJ(cm8kf3r*|`-eR)XJQNYI|WBYnY zr-T{RY_i~Aw9B~*#|tD;?PVs2Z#q1B2rM{N1oq5f>U6X$37G$@dTy6Pd3gk_%Ecc6 zQ8HGndr;E*z?U1v_rJYu=7)-HZOncgu`kf|2v>h7lZ|-N}8$_#b|- zRrTB7ma&veD?zRUpBu%o(LFJRh#6n)G&Rjj`v(l)TI%XvWe$9QTgS<`?RtR&>YA_H z7B*+=?^}_QfMsB)Ffz2dsb~hyS%xctkS=0>;_Yn#e#j}=Oq~7H#-b(JKlkBBOIXnF zSI6v9B#l4(d_r%+F#2s9O?`Yzlf?j8l69?UA^{ttvBZ1#$4L1AC@KjpEFEcwsky%X zkvY$ifV~@>Cn+#BcUW|>X3i5H)5By|+@ikw@B5`sz=-vO+1b)!?ww-&*J}(kZ!obN z$xh_9=AzIEHexX|V*B0$>!)2x`38k~3as%{3{MP)H(uC^iMH+$v_8uz8`M1Yg16yW zwxbZk{*Ak7IF09m`(hckOUiH2Q;1xx^bZ!N()WPnRm`jJ{9X}!cxIoACCWN~*j>Ce zvBOPdFQTqls66gE@u6Lhi3yD}h-aC$GTbUWkbVhlPd_q7ee>Ovi4rQPM4L_hbr>Miuk-F`-H^nY^iv@SrzQ=2%u%}F<{4E`0MH}B ztlX3n8z?t0mv`CuTt4B8tSdu+X!H2iaElEzeJ&H?NWXR?N5inMSM6Hk*BKM=%?LXh zn;6|2%kpH;EReb-%!KNcA{|L!Irh=Lp^XtQ)516*YPLy&N=IJzy~JpJ6!XGDH6mv3 z1Si#Ky2F*`KjsV`SY*|S;`GP}#tv*xv~Jw7RSiN z#mz>>^OBW{*2cv-_UQ zj-LAJtE@VdiJ!9!OxEgObPZqPa5IhEm<}7W2s7sZsA?@wI(8FT)vWKV9?=8w=(!h4 z=^Y#Evwk+FnIIzGAJ>OwJkvOP8J~*Nut$8RA3XWd)83~P^hq?ab))TZbymfwt#1V8 zWYrH<@k>7Fjf#cFuv{d@Y5!|9k7Lo%bH>)wz)(t;4>Hju`0W?zo(b4U>cnl;O{S2? z-n58*OH6PIH0tLqgT7=oToiRkW(oaC+3lBp**OZfF9*6iBb>ZHn*&1@xP3ju(pjtQ zC&{%OFxi#YQxZ}iyIs1C(+iH(4}a)vPgQ_>i$)|x4BIuUq5r`Fctnv`@cNt#3~cSo z2VG`=_j(R-xHR}T9al!p`7v&Cn|l3>7b9y4QQ9NBTZ(!^(%nVh!kyx z2;ZOi7f}Lh-9wWNd6F>(9JL*2TTAkt!Pmgkh7kE!5)glr%ppYfFiKW(8T~1XKXE&E z`Z1Y_leb{oqrqx4_bIi`x2IWK z7p$N1{IvEx43(H%lF+sV`>3j8{^y_DF;K0${#kLfu^>N6KyO zf9M&4F(+7d6Ae=|eUUV6n9sKz6v;-=G*(y+h4E{>$X3Wa)MoH2&YFFy3D7_`6H~36 zkpLAYyLm3%@0zMUtZAiQ9YiB7xsvh`pN>>Sx6C;q6~+b{U3ep!+YCY2NU{Bn1%uZs zCu`Kvzzt)IeXX+)hR(y@0{7WdlHVf?DHdJ|$_TTg5p*uGdA5X}UVFAxTT^46@QwN& zf36~-38MVpf3fs5MfnrFF2t5U%*|@Os$E|Mpol`sxe{k5`TF`?J_pNBdCtc2g}{+RP6EuSorvOfN0Ka~SXL0`ReRg-m;Kby1}S zvHw+}gm;4dvUH>`dukAt!Rp~RiicaquLmw_!r4p~+4aw;ifqIV9}Q*Omqy!s+0D6M z6c~zciC1*R51y__h_l^dHk@44ynFMW zPM#jT zr8!q}KX+@&yCBmQY>|MEY`IqlA{a{;U~)IubF?t81w%DlF&_ zY#U5@a$-M)E|$#*>q=)4`UOh?d%>N1*EQgvV3;pAr@0hQd_RCMt4s+&vaO_ME4uEn z_x_%S7=ZZZa|%+|zdnm={!xcrqyB5r{|-4+>qb6@hN5GQnHsCkpR`%RIH;BogMaKN zUGT4aDWQs=mLBL}RDyF@7uHMRCCSfwL&c18&G>FOJ*I`@`S1nVzuSfS4pVbT+IzS1 zrP-B$rseRg2uj{J#C8NB>TD%q+!oLCi&eLD`m`=_RCcC6P76%n)6mTMZ10^3uvfpa zaM36KRgXxie)E$DQmw!dK6|Z z`=R((ykpz;EN{A#ttT9B@bgWY!J=)nA1n`?q*9&Zv+YU~L4hCgWQWf2+(qACYV1-+ zWB`i=zud1jDYxEalAFVA|M_vd=h7FrA{ETu$W01_uPtm_oV-+Zj9}THKO?n_XbFSK z|69U0za&>y7n9d-vT5LGlmWVW@yqIqA4HNLc|#efC%5Jp5lXobvl!!yXumZpLS#2$ zcq4(^;`%!^4aB`7<#)ZH=KF7hd|5aruhn99jb#r*c)xsY%Yn3T-?_0x)+2yWJE^^G zPsmI3AGzf=->A8y{-|8vT1(4aj5e=hoDJhMU34$|acy8|tEyY#pqnSrezn6E53$02 zpjMGDFY>Y=i|$d%Pmc;s@LU+C2a+@|h?3@2yP0tZ0#_1AQ2T&UHyV)P=L>fM2oE3@ zt(XIxK%zu8MrA4 zfb@bcRnX17nZkNGOkVTos$;RDxF+2!u&G7V3-4HCbZFAHO(>!2?RVm0){w)`xVnM_ z7KC5Fu01&X*#-TZhW?dEoJi^}p;Tgl=F*Ayjo6whJyylioCsc3OUTP>Mq8D2iM}7{ zIq3RjYdWH#K_H$z>1vGkf(tHH=PYW-*-O3!4kWTpdE?aQ_-30^cHnEOgTU(36?7m8 z{PQSv_(gp!kBA9vm0~HALs0#z1a3-?+*?s!%5CSw)a^^&TJWNF7!mI)MzWVIflfIo zCxIo~bW`Z?oNEXD0xN&Ve?RsC81#Jxr{~y=P|-M%821HIq28rddq#8e7D$jX*79ip zpL%mMX!MbBIb|==pLQk{I4Pg@`#?Yl4wTSEcDnddo8eY}*yBeXVblt0Ax9O({~p30 z!;D7+y4X{9#7QV;QP8-fr*Z?ApQjT{FYwGUIYGWh52-m$D=q*M6FCRy*OC{{i}|FW z7boi6>A&xW5g|pYEh7E_5*0k;c7;<-#VNJn9FVhe3eMP;OBn(0n82au2#)`^FrU(( z1c&PvAr<+E!N$E!&9xDB9zariOI67qR{_ZixVvu zsavqfeoM`apE-;I8{8QMgL!Kw#-0+g%5#6LnMW7^hQ`2DWek1}k&)aVh?TulS=reC zOxx#H-Pe_0*;`Cy>f25QTNJ(QRWpe#5!4~dx2EadWtqMdYIQ*KBLnAW>gb&;a3H%C zicJX(4YigOl`DOJv4bn>(AJcLCl^J3n9yo5J>Gx);rpL$FOS^ru5}?eE@r5mdP|?4 zdLOU<2<;&JLdXzJm)g|il6%09JpI#D&uUIWvjHZgMhuEXN6sqKbP(y?J%bPboL!64 zUF zF_a2eA0Y=#v30i{68_i}Z5D(pbF9jv1Y1;15tnTorEjx?1dbIkPg&JAK$w2j$Q_>Q zd^6;u>uWI!5plN8IC&dA9iqSpc27R&L49ek6aq3|!*n`%ThQFc{=>!GnRzF&e^>4L| zBztGvH(G3ND5X0ic<4H+PE zbxGQv_x&_X8;SiGbiB|=7si_68f_;q>tK-h*WBK(0>>yS*KCF51;HhngHgt=E5INi z)Ju4vt@$KqZ&{FS3W=1wHv^Sg7IWA3^lK}{Q(blLp{_UrfJtXq8SkyoJj1?+jc=s1vKU4Tum?-o;fo;c9x)pyp|YJYLH8;o5;!I zR^7X9U5aPeMSQ`7kcT|UXD>!)InrNAHRwt%tj>Wg2K#sFE@|I6U`zQ^94R#cp6~~z zfBF{51&jvEBq=|$XuOnNOH;&jT1mo

    m5G8v7= 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

    GaS=A2NN4V0bYO+N?H~ze@)6sqZ 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

    FC$z12&~p*epVu>GIV+GJzv%KO@l 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%0D7i%P5{%~wjj0(FgCsN)Hu)nW zM4qNiN&SW~X!BVy`Kzw57`DChydu&IYhRm5`X^{yMZb1x0uv(VI*mipZ}8^C))eV; z-5Y%}hHmKxl0Wz3x>wvPtuJwE7-w5+b3<_qj}6h*dP2kr3Rn`j*KT51w9kSK^pLa( z^Q_W2&*xLo+Wtc&(aa-a9&{-2@ETt$_2}gNjtHLhU1@QEB@p-126wU11_8GUC*OfR zI|&EV(4|bu^%h<>tGZ>TEZ=2I2Et!LLLK?W#)#{gW&{8dpd=D8yvV!Q1T2@*bSv@- zzkhaCz#~RYH*EfjY(PRniZ;16k&L-Eunw)X%pgvZnxOR&P z@f&u{vg#Q0KA7r5hOT>bceGVHguq_&I_0qpPbVU3D0h5pq}fM4TX#aZOtk57H7qLA z@{3)}w40^=^2!URn0T<$ESNe~y?1&sQ6}zw02L&4!!_Y9kG*J$?Y6c2*g{L_#a$M- zOkeqRPEPR+nT$rArGRRKM1rv~SaOg2R2;fVZ4na|uS*8!m^N5uJQBMyHn{U(apZZ z)mL!5LVq1*N0NiVOwbV3wX9JO_9fq!5t^lDIQ-OOqO5fMd}|9l4mGlU5*KD1R59lM zdBn3jjIIY17N<$D?t)2>j?}NY{Rutaws-zLtxcsF(&WFrtE^Sue;h2Jp;Fzam|wPz z7nj(9#O6{eWqP=!wAL`xxXjN%oTh0;(L9xeQvhv>gGvAK9QEthLN1o@snhW)i!{gA z@x|rEinw4ae+YEXwoHoM*iIYrEZ)pt30#2$ntK*BMh~)pw^aaRZEALE#SV>h(@5a0 z1)A~67=ZfElu-jPjLe(g+*tb^gA_ulSCkYGEaCb4`||f?sC@I82k2`JbT&4^Z}Ehv z6CKnYep8L_R`or%CXn2qbm4%xlqW76*rXk$>?9{2IoCm3;N{?JZ6jnw%Dy15e!09 zMxkxb;uqqcl~KVn;(YYv`f?)ZUEo8*4^Zj0)E^FU)DIG2l<4Pi<^#8izp1jhS&|% z+6f#MBfFTqEIET#Y>Y!K7VNx~H6H*cUIiJ$*|pW?FS1fW!a0*jmWKWICp||1Nt%Cc zOl~x+VR5lQ$KQXD*?lJ{6*$`!-!H0H5W-ho)hnI~SRsV~HhM*~7=9(y2+`>vCPwY< zew`dp@nM42v?{rVvnH=pzZO`gKW#@uJuYF?d$EH?x9ixSk;Bzb+295R7} zBaiI{kVL?YNs;slF7>LCa$HIA4U;-7Swek?ltENufC2j-xE($DjL$?E?gERov->D% zQ&Bo_d$!LLfl4#8w->!NyheGXoc@Y!4w+hzt->5bOifi&JD6Bq(1D|Le;C-fyJAa% z+JHT}&Yx5izlU39ig#h-Zn*w$)Hq#2vX6$&p=DzWToG_Wn}<+%D_N4h?|r=obD5U_40cQ82TTlMc6Hj ze`x%SP0P7hV(%vTASR^Bi)wv|eri5ekE5LKii}X%_-1Ws2H{WX`?1{=)g5<4jdNMh zy%jTo4xNpm(jju-QMCYz-e2ArQb>L}+CMvaQx_9eNWYC^a=(~|-Q0`ab;nznvCf9C z_+^qaO(_{+!{hSg5VK$TUBBjmG7;3nDYU8RWf)D0d~nGHd26VWc9A{0w z#=;!ghLU2Mym6Y_O1s87e?DS5>%fkA#pyB36;gWi4O+u&-RB@4xkv^>YEBvB83|C2c9qA(6x>!cwb!z!AIA^tCCs<$wfxa}#C_hmJZN$Y~Il zsTX=cJ}ut(QIP`;h$Nje5Fk!yRcad@daYVdeO_B1J}0*zfN3rn5ff!^PZ;plS(_0z z$9D@h+FaEaKoF_?tD2^d-vazGRxWAUgb;#pSwC=!i}d-LaNd34>?{+s}21@X-3Kiz$1{`Bj-V7A?32DM@$~5 zZaCs{6^l*q3opLE@V=MeeUljb_O^xxLgQOkNY&?c<%mr}?%(bW=E4O1K9A;@7K3xr zLnKh|oqZ`}B(#$@LaEl8iSjyS5|V7#=6-!wil7i)y{M%fTQ8-EKqUT+JEX_98(-_- z+5I_yEVwrvQnkdR&6oH5iLLN0jtzCkOLK1^9tpNB(f-+87I3V?48OxeVlwWY8?gEU zv`Imu8f9K*u5tI11hgsP+ml{rDs59B4S6ng>+#N?gL(Zxa1$w&Nq=#rfB+7J?its^ zVn|9u!gg*e8|b>vu%>NWW^!phf%osVi<}6T_flp^@((J|&BksU3*{7Ad`XFk%GV6( zvmo2d9?-q6&s7J4B?O@}doSnqN>(d9wAS$%sqyTcyM=a-&m)M{&jkVgw%{k@FZ@2~ z27kfR_kb-o&5HtgN_bHqnLl=Y>2R2e34)f|$@rRU&Nul-H|c+9+`IH8nG+v+YcNMo zcqC8xhWY3?pl&Qt&(ILJk}w%fQqSwnCLdo%lvHH9>52dE_3?Xg>%{s z@zryn<4XqpZd?csf#~!^;mIlsxTdDAorZqFIhBApDH$P!7OTK>W6`RI#hYk_O9H0Ry)^hx0a`q{VjgN&7Mo&onwSLmIJK3# zD(ac2%Fh5|QE|FfuL0l|=l8Klv)VuscN)xJejlz#xXro1Ip&^(zj|da`a((d-rjJM zc|FYx7F!CHALlwz#&^Jz4ir1r;XnLJQ4FP-sc`jsvqq2o^6+iv%>8Yd6n0u`Gf(*y zWUnc)kg2n(l-3O>Dq+^aFCZ)L`I!Ckzm&3w1RDJ7+MML=XTzM!R53V8Y>SDz@Qj@k_5C}V!Fq6Ogiou4^0kFlvdCc% zC`44Z)RI$D{<*6B2ZrAVOOCR%B<}8#!3- zW39|1DY-6hv4C_={Ev3qA_!2qfV%@7cHVt+?67=Y$=4rzvmm=4wIoC-Ze!RLuRD4F zAf1q_rB&wYqNfr>*iz=B6@vh?lNiUpH$XQ7YWl3QOE7MZjZ>&h^$4h?g(UE)F5^&N zq`Z;KI*-=M0xdT{9cVtupre*13?vI;jL=M;^LnlTsb48%S$Rs6`mbsH#WRH+W7@B;FRw^|$qDT9>Qjc; z-BwuC_2YWh_Eq1U3$(h5k|od1mA>HMg+)5(910(eGbhsXF|+Qg3K^Y&mgL>kaCFi; zb=)3&Lfk#&l&#o^zwGg`Wi5I87rje#%=s~P5<0wAkqKDwOk9jIzQ%SRM8fO4vAr?!I~w`H5`!7bvA#D zlaui0?r!A_)|i~>d>thIKyuw1K#zh`ua8mi#==z-#O)ljb9%~q9t$2F1eR{vKkKoh zr*GXpS7W!C52uEDHb|v}Z=77EP`a73P18nyLD$%tRwtVwM|&Me-p7OFHx$Km?2Ekt z;`~$Mt6Uh)B!e%5mO*j;Tmn6m;EqkJeS68wEy7_3CO2w4KF1BMpMWQ-edKy%e7(7Q z1MKPVXXgdg7aZSu6mWHGuR(&0X@@r%U!#9{q44MH%D|hJGk1K(^KA9PsJtA04Ur2M9U%?=Jut#!jx?;Hj2ewOR zsw^8!uHP{KKOfL3l1`Y7h}MG3*2R#Q&CC2XSL~N~u<#)SC`?^L(-rsSSBjt$Gx69{ zw7R=RYl7+|5svNZJjG z&hg)2k~B@Ng;k12AwhEj@6e&nIkbJX`5RqyzNC!na@jK!#he}%BpC53jTOvLD+%|R zndA?VLDVHz0WU6|%z-sM#@y6TZf|Z6`oBMxR?>~q&prrwes{${sNOu~j3=aY@l@5L z-%fOe>2<$VD+5n0@(VJ_$$1ZfyQBjO8A*E3H_A58DHgXnIuwPh=h9WQ1lQy^c$h{LC%{6y9XjN#VUj z;xDxoqrfQjC4e=K8#Y-VL+d6nUlp}*6mNh7nIbG`ve4|bgm(WaHSABc`=&<4c@3-u zXwH+zPt<}uGNuk3*lEiYpKBxiz6ows5c*0!{*9Fl{>K%(zwnFBbiB6lw?q}%OLg^; z6Dn#lU$w=-Y$R3OzkJ1Zigtp#di>|vi(hj$mbL=@qIBA3c*?)n-tzmFTkE>XmuLND zbQd-M`S&(JXg|#Jey|!()l2t$GZ4rqRXotfEh%o8lMguwNLh|Fz~WAbEZ?B3%)jLd zpOU}h6O@VCG@)I{Mc8;st!YCIYW|Jt2~t`G_7}kcLGXU-2z9Ex(*8dKhuV-d0ieQA z$b0fk{e(ayJmC<;V#FO*ze9L;%etU7AUHIAO*iXZRoG~?H1X+c(#v23cUB3@)_qyt z|KIk=&xqCQ3wyPx6cJ)|nz}k9*~&7#mNr>y37W+)mhV+h3fQjrAm1{QBjY#8jS7j? zPo8an{)C?*EK~ve32V3K^-a_#er2<%ZHb$`TP{T>Y5VS)<6C~kw##gw&;H2C^v-~0 zSTn59yAm`5&!Q52SI4&GW{tsC14_r39r^J3`ScWvG*zVh@agSmmi};nqqlx?E&3Iy z`lb%e&(fT5z#%`+_9aoejJ{u(5GLBG-?|1LJ&na%6xU$w+9OzGiDsug#5A0x7#`d~ zbNTyWk0zfl0VW6q3MMg^u_a-WPyBxVCnd%jVBDQ+#09fiU@WiUrlaK+br}6&8r6Rr z{huOjjC5G7-8Gnzk``W7J)!K`O2^5)vP2iqg1!!n$NfeYOI${Q;l#8vNo{`4O60V1 z*x5$=S8MQ7X={{HiOOUviei-wW}8U1mA7cT zR*0Ca4n4F(gzKUyTLT>B#UfA%ZZH@K<;mkM3e=)9FIqaSK%~|mFyfORu zYO4<0&Z+nubQ;J*Q-}J~^xACTJfn`9juMaY(JUf#e%Yb=Uu#R9f8m}G`cTmw=tJZj zOf=(j4Co}Kq#VB=2Leh*sXPA4itNrAwFT6~QN*!a%p6~b*z@0}QQ&t_kNx?~?cMX< z$^x__Tu(Fv3=kzBpYmP0M$zF&KLa$tS%r*QeWbMAu2d`4Qo|O2CCnu}YaQBVJU9*G&Ajm?!Y10j_lsh5 zDSrewo5MF_q1F8UtTV5SrcrVp2|7FBeZqU=SFgM+S%D7NVJQt%63Bch=J->n z`HLFz|IJ^R6YhFvf|RoWWJP+tzkBgZz*646^r%M$xVc>v^jFt{C@iPH*M@yMf!dAJ zh~G8HjIl2SMM$|{1>J{+VuSvDP}9t+3eiEr#katx47~FtJ{WiY%OP9f1CAF6l=R;} zuO*5v&VjHnni#tEU?3pD-P|@GMP@Aek5)n@4dTo3*r|OJz*U}8P1m=W+vp=2{-*3x z&pUV=H@)x)`OUiui^xq^YI;tU8psTQSCH?L-9pSxokHzDL^9EMqC_-E#Xa8S-y7NZ zP{5aDFcwbB`jKX#31_S&@3$qq*>`?3zd&9kdRdt#%O{w2p6oQLzH!Or_1XIC>-4fAIeMA^?ED?KoZ9S#p}5pYdC8fgtqx2q86_xV{+ z&%rvD(EAH73x7qwaSQXS1-28h_}ch z3Y3S21EIf$xNiOq-Y!HA2)Zd$@$a(JdQQ&F;2P_xD$8rOery7N zY)#U-N2wAO5XS`Gyqdt9Z{K4z@3u?(0=_+p5Izs5mDvC|ZKn9YeAB0gP3*^x((Do5 zRMK|BbFDd0;ve|gagKgzWEY83lfCHbF@)zO@L)mbFeZwcY1P$cn$;Lj#})Y-)qtjA zmG3RKC2`NE0|wqGD%GO_;pjYpO!>9=z19LPCaqCF7oC}X@1{-w!7+;{OSC`zo4(=m zx(Q?kvrBMC>}}FsOKFVcj4N|9(>N+ZuuDW9_h**n!jqq^5EBV?ZW=1 z382o19A8rY;u(?;$!6i|pfP*aNzebY6(k8~p={EdpqiI@20NYDRFxbO#XFpeg^ zf8(Pf@WJa1A*67iWUclcg5E1^KS~I_4#0;weIp3BEl9>o;bsxl%yl7~fVLlnA z33{_m&a(1K2p&bn=Mb8I&*|&8^Oy=XMM$}q)qs~TFDRwkSwjKD?lul&gx2cP6B>Mo z#HCn^l!Hu#KsprXt-XG&9P~_^g~f0d#1ilJUw{{akwKc{>@Nq0Kak43_b8(l8sv+% z&;PSGvV$-i>1!CUDmx|EHAm}SS5I#)^|OFXlmo_@Y=n?fx+6zp^-9hPzW&h`)*$IP zL24>8hoZO#=kh7a?1}gvfUgr1-L+(iYM|R(n~!)uUmN$;KL-uP5^_&xUzE@O5L_fi zSsS^AlEx!lLx-g=2mn=Rt_7Ni&FJ5tSx*>XqpQP}O( z3zAT1R$Dr$J)lH)pf_Wjm8g9X?xvxgNXqWxt{2(^09l>Ev-%bA`?cY zWM?!U;yA?%G(y}$?;1ILtcV~}^tqQqL$wtwdkLS#{#)>qKKlj@{OM?yC;#+h$zG;- znrY6bWO2Hk*Box~QZq2mA+qNTtli5GVP^-GN*p=NVa2(;cnAg(d*TGLgz|P^e*3-! zue$U;{raM&-mBCPXWt($_{ghNH=Rdj?)yH2I1e{Tj~W@*2x}0XJDR_WJ2E9!;A}N$ z*H&pmfbDb);8d&sn1`Ga_O9G^&Q@B5B@#;Gv0k~_tDxvPb~P^Yq*#bMEgRRF8yr}? zRdw9O9lHi6AP22rg&9(62Uq0Yw1CEgNqW*L-&4Pvu!QBMGqM#X7rB!EbXC)7LMD}_(}bv}yKB!HKaN@6GZ z*lTg94b6|K;0?YMChlspIRQU$kY z(q=ops`O!j*Ix=xFiY9+KA89`y&8kHZDoW<@$&^v*p5C=Lp`9FBJ-}tyE*3<7jl45 zKe+%0%h=;cXYUX+Kg^{L=T^_p@?V1Rbr~sD)DmKoQYV`(OMX4kgI@D~ldO3)ysX;| zYk?h#or=Fuq2cmW<`9oQ|4ZE}?ZY1z6sP@91 z(kN7?EWvr(*BC4wXQ67<WY>#q6CTZZ9@fb2wfe3BtrjCkYn3JK43L92)JDE;A3(;02FC|8+%hfb1kv+@)g zBq8)48=1G^?N!+~$^DHFvR!7XG-Om`%`&Es%JRxIqHMx5k6o=|;{_D7qH_7;k4>K2 z_k!En+yDy;y@}qEINf+@1N4j4dIl7OdUMO4SJ0pGEb0Y$3v^MBDihEDY6kD*iNudi z-LiAc(*bd9<`Vo!@$-C+)_8E|3RYJb&ZehSx_UW8(X`fp+4sS3`zKg03ZLD+dZbcZlNCK|_{!|}$?IIuKHIn&dT8>HikdP;Z znPH{j$-j8JNAy-6!U`!`&nLm|BD)dl@D;*PfO$NjPE!&5O?gfYLx)zdktts|V9zGW zLB;KKBCspbObIsrlP+->v=% zw2rjX)l_NbreUrY4m+R^)a^3<`YkVSJPj5lZUk9G#jZrYGE+|bp>n(oo@?IRefTcR z{3lS3OQ^;i7`Qp=cmA$5psl!$?9LrZr-06lZ&fS&xcSbGWq|#f0Q29be^41y4hCU9 zX1!?n@Aj~@K%CTbiL_t#3qfD=gZK|9D9i5QY%wLjx!JM>{u9JZsctpzc_hmY&^nNu-S3<{YUX{vY>RTaxj_`H6GnBv z4o&@UMWBW2!Q%Cej&Nk13WeW_;#C&O%`E&n21_xxyuIdDc4lx6z8T)VY)7-7PzQ>$ z(9{b?$hPU1=B>6?Kb~4p)1e(++hg@lfK?Bt^_~GABIzP(*aOrKbJonH!iqn}_TYBp z{$QhTJAd-Q5MGbI#&Yn+MjdV zR`_fm19f{V7ZF@EW=Nk+ws^Mgqt&m7HPiFxz$pL#Y=kU^>m9*_cFMYy?)7ZNM&h{V zmKRX1`gA>|?BBr1NJ>Btou)J2Qf_IRyp)6` zg-@sQi8XCKmUig=M|6&NSDUyYr`VV60e>xVlt5I8y-*ZF1X4RIo+T=NEfJGUH&j&o z6l-!sf`|>2HJL@*G~jK%I3Xn30|r%F{Zj)O-<=h0OHRt@v;g|X92s|k4R2M`a?pl+ zcu^qs)IvK;hOI$NB-j=p!n!RgeVo~QSwOML{Foz-01@p~T!|dLk9M%Yu_-a%?~th0 zce5daG-EG%74ZnMgadKC>4WvY^7sw8h~&n0`Oc)76j;9X=1#w@5OJmC zH!G`5q4$J@0_H}XW;I$|mTTh@LLKHmd{;%Wz}xU4 zYuH;jXMM$@yyl8fD+?ZmmFo&&lcg_;=P}>DS*Zsq3tk635f-m2fF8g}4ip(=B-Ak| zN2KQY>u-+Y6N$0-9Q(=a+fX@BImI+QGG*;=tf%tKY%L(}1PDg>IR$8tq;66`1&FkN zRxQ!@09bE5UKpM*_$g5!;ZaAxK|8W5mv&5698qhswDvsLqy)_S*xVV3KQ64^p+TU0 zJZ_uqnA2QE6*ROEBP0Jf}_wFmbMV-YoEZxxGVLC=PB1 zRTcxFN6|DS9y1D~#c45ya#I|oJFXUNWiK;!$2+VJ7_3(Li|F%g)U%D4DDlYmM~`3h zIpRy#2SsKBF)lp9jS+WUB@gEE45Dj5`ETPpS8thNp+)?kaDHHWv8U6s_}$%&3g}=y z3te6G-swdh3e}a?B->e%p4PblsTNhD?O$(qwvdGtFry(cbGFa(hC|#WP`VKsosOyT zK=^AQQiuM>Wazf2@CTcpxr2z6_*a;>?E_DF-Tu9%ejYg>p$01$;-t|!-KC^;4sPiC zvT`9U3xay3BfFLNrPrCK>K(u!P11Qy`&0qBR#lzJhg#Q#GDk7 znj^>l>ciqR+7QHz<|Tfm){es0EZf)csdO8CJ^DsNA9eIpQ;(f$zu-80#)_3`%l6Ix z=;Po1)!-=`aIB${Kn2@o}g1VOK&Vn$B$9GCvCV{g?nvOg1}VU`HRjRA1FG zP<+WtwplEweb$vP%bFw z{?(OU+K*?N<9dqPx=yn%5=i!n4W+wt1BGp2Kio@)t(1F0K`|IrFT(8^+o~FPjJHGn z9BzT5-uFF(+u`Plhz<4x^(gI4FkjMS)KL&zpr?VCt0fm9lp`vFI;4)~|2*?Yc3F+L z$Br8QYE-c7Qj{YwKWw{6?*g00>o!QV4j4`wzDRtv=l7_DeL}(D7>kikpnQ_vN}f~5 zXOVK1IU-?+CdlfcOc=P4(^gNB#@Z1LxghAsMSdk$>Bgt@&O`V^`i>at#V?ofPTU+L z=_hM7GO>)&Ben`Xc@$TX`s|0?9T8xq8k^+9p7TTwY6WW&cF=?Cgr(P_Ur zmL2%=CU&UFn0!d2HpKx=;-=g7Nl$z7YlqeXxh)u)4>Jvl%NKREAQB6e3Z=9(na37i zUx@HCkAD}^j=Bo+bvf@Gm*YsnH}=5`m~<&V^RlFN2frajuWqnMOtj z7Xt5U)Zp`N1qPa$51dC_HQ<1R1E`=7GU+j^>brMygZ(AN#2`Ch6?HE^?sg~nk)l14 znKJk0%6wFlZ2EOgpj!fXTWttsmX{yu&I5BHXFH1UcaomG|82{eXISfwBnA*tC!xLR z>#NUVS|rj5!iDPw(pEtux2o$BpdBslEYdW7i0SNX^?a0T->|z&GOm5H=CkGE82d8Z&$VWqLcpb4}Cjhx@r1oK%HPU zJjDl=#mYjT@d6m2oN);qW^B%`7;u z^z2-SjwfqwQtY%4x3jX?UsH*38~gFLL|{$>spBi2%ekoowd3!fy@3Y`b07zhfAX^F zXIQ`v;{6eolQEj~5P-P7FQsIt=Yq2x5xUKTI-oE){o6>Lx;61RRIa>=(|NVG^j|oS z1g8V~XLZw+ev2?bv>BL_kP#jW^~j8R<}j94;N&c_?sg;e zh3DDPhuB}tgh79QSNf{xG2{yuPQ~2kE}OFbos9m$w<01vyJ(QQ17Nqv%kgX65}(tf zlADZ=7(%$`Kk}psFWt9xj_9Ol^Fyp4T%P#^cU%gr(oypDpWdAld5k23pGPDI0wmRAN?zEceA_nXi>?rgtn zgOa?3kB*o>VoYTGP390z>-<8O<3 zL4S0+`35!;P^A%@(l&Gcz7~ueUke&IjUH$}`Qt%&ir!5tO!kk^&}aGv`{ZbCXv*a+ z?X_(awT(iPwmF2V4U07K*j$Y-kX&lv+}zIE_dg{Pjm@G=g2))x-|i!Y&&wx`^IVYf z$i`RqA3oHs(eX9pT=Gl!3Kqt~dgKm1!RbT03Rcr3GsG!>th1&a&p3|s*-O8|f)SNm z!8&)J021iiq3My-u*QcA(|bzD?S z-+vSYq@-g-5Rh(IQo2KW=~4t-KpF%=K)OL%U?q0RrIb)4rR#z;(k&&OlJBhV-}|{& zJ?G5KZ@y_p3NkBz2aC7j%psho!7;D3iFcctnzbmqsjJ1ttd=tH-O5LzkmN9plX{_N zW)q;uAmbRWKJt6kbj0)A%U25!iR@R>(G4q;3C%%(&x%m=>c#I#gK?Stq!hS6DTep* zCCOP^&vk}9vNbb0UQD=jB}F$f8~L|e4CvH}+ZF|*f)D=72P@_QFQavIBa*6^X()!_ z1q@@M)@NOnitVc*xQ@b^UE%YUbXgqp`x^?5C#i>U;Buk)O;NrTg+pH5SIjTIQ%yI0 zqFiS19q@#3HYH_OtC%oLcy4n8={IG&P;tEp)R=W#yN!8r9xCCE#fe{2qn8Hg#fIq{x9dOg{dhVCOpM6X*%qth;Ur_g z;(KRaJQ)xuE~Za*I{O9^N=(UMZ9MpH4;+$L_kge1dS%73{X0vHK^*&LIDy>%Q*yt$D`Is8QNvRy*9*3~BBURFI2KsOSMq*jm z%-3R@q!AFISDBos_}X!Ad;>5~=e+p3Y5j#pw*~yOc3)6myT=wtLMZz*-Uq-v?7^~c z-rqFpF?xJh3jF|{q0z|mFhbwDoUHwnASTEE<|+s<;=}U|jR_8q=+tX4U$m^`(ufu% z{Z}7`vtq-^u5iI%LlbHiE}MGb)Y$OD2@KH299x$T2FBNHGM65JmI!@5%-HBcB)Cll z8PnK%;-X7P{jtqXA>o{&TlDMK*R{`?P;CW&ut1I{`&Cy4+T@y;=lYNzm{N-fZ9I=8 zhYUEz2YMriJKZ1(==5*dAv&*OVBR+ma7)IK$RUhK`g?IH#*}| z@nU?@l$=Mv8y580sf}jNm$?>^374(L6D{_WDm8^nd%f}cWd@GmyHY}}J$|np9gxF) zyd_km8N=o(E+GSTcI`UFKF>oZbf2BdC+`&*h;X=*WwJAv)$THbuMD`}WUOg;CJG8R z5%5UXRBrdBn!l*BM@~C`CThTmX9G=%@vePh8qpMmvk>r!8!<~--%}_U{tpX~+o>T$ zeaduVpn;pGcQy`6BhvDv6%}5TVt&QXL$2B6=}GU(hkOt)@?HNeCM6dIw;SzLs^CXu@P{uy19#3WwWW^hXrR`xC3t4hBa1YhA7677JRMpzubLL`ysxug9``NB zpbZ#Jf?q3g(AHX7b5#ot?SK4Jnu|Ah3!!bMHS$eQE;kfF)vI#32@XB?Ol0|OY|KY6 z;@A}ZhObL#KLz=FZ;7c~>`-3ei>Zx9`4@3*f*@p3XPu5!Z1*)slew{5LXr+B*FK>8 zd2-*ij9-w_E!9bczJcebqgjp?zGDy($Ll;@6MwZ!~E=O?viV~>;OzG)k_?X9CEY|2US!fcA!@@KU7#yCps^YU`3**4x}zpx8zpaK#$ zLGy;zhV=u7Sc%x0J6Txr#d!%! z3m6ihCMIW>qmRKcQKl`tEC&;3LH_Js)CBQ+<4V?^z8^3dxs~eJH6*0h^2w6?hddz z^uD#fIPIB>?G7fX)1tKywZTvp2`IbyDK~kmK(O8APzDtVp!RGwFk4})Ke_2exB%_E ziDql2z9xW5@tjs%tbziCj~ZwNhMp@Vw#f*%RaC_Ztct%83IzD258b98(Y@ixFoL!IQ)j}D54KG>;RM) z$E=(G?g~Xa>E#2%*=iIo!bnxI9jf2V(b>JrMae~Pc~BuiVn(KCF#Tp4kY5?6Z`6f0 zOtL8D#Kq$TJzeOW{1WYjT6%sZVu$gA!u^(~n+BE7WN;y#sy0j#gQE;L!knJW>x{tZ z2JlUv8h+=#=}ZV*bydsEJOeRBGU34S2R4o2cg=ra(7SQGvq}fg6>73}RV5Lq>M0iY z;fN*&4AwNZv;M$r2BdY7aHFls>2!mGu_ZOqbaF{R0mwO?LEK6%s2JevOd3|nIZWRs67 zR9gAXD1tkpqi->%veUVb_PYI4F98t?XHi(-N#M6q%pLtifcVVuI_>b=&|-(9n~8D! z1GJgL>7ScA@MO#tDZA`{<%5F_AM#&;9i_OO1^z9u#Jm6Bvdg{CN=e7*dZKWw+=&jN zf;_xIgG_A1fu>K-^UeFA9;kU7@CCr-#Ji%7B=|TC+rBCsUv)|MG%0m1VWIMoe`nyX z!^Oo1*e|&?$k|~mBM> zKCq=*c5i*D&?(Pr^JG5v01`|wU)rV?T)#_j*SjlLm@UR$PrI+%SJ9L!nS zHxl2nF!bJ(bL_TzD*drp)z$>@=8z~#_kZ_~7=l@nc+dPvi?5s_uD8pRHL?uJ9IQnU z5u(~I@tlJ%9mwd-LY!;-qTr*<)oc(&fjV}Lm$jZAbq{y+faXDf5Y`|uzauk_DJXX+ z=u_{*?snM-PJP4E*XvV(tD(DcMsPew3#3ub5~;@G0|PB_x}q!Ix_V=W26(h!w~W1C zY~AqR+lzLO-cUE+tI)fG$taS?KehMNxDOFB>HPzhYFbTBid~fOI2In?6oW z|E$#eA~soGsPVR0g3j_rS`Ky(AY)1C27XFKNA@Z5L4B@sza%PHb8Fy-#?Po>VDsXH ztLxXo6J$Cwy4J_V_!_nz>juRSB%nr5+J{ZB46{SZMZbQ@TZVm;^J4=;`zXDw+#E7P^FVWbLD3MBj!idZ)ht7F zg9%8blVdZ5tkP{0^m5?E&B7VUz2JXW^RT}183Q27a$Tt=#5`$nAfck=vOdFphbbNt_>@WjPpxi_I!*{`8 zqk!xza8QI627HL+luYTZ8X|G>$%ZwqD)#ADw@&(RVTMK;{A%#!E`WNl_xgxuZ3%8n z4FSZUSBmyNXTV$UCmH~)g1f>$`9~v+Hf0mI0}KU?LyHK<;8&J8>gV1fme9yhWyR#w zl_y9pmFB!U3~wBYtcmy2&?~r11Z__`U%2&tbs4A2xB!bLg}f?y<{kC&^^X{wS6OOp zwpuI2&wHeVLO`}Z2i6vK@G#%z9Ec6&jG%b8s1zCK?h6octdeZy+3nclX(5mrNJoW> zbR)h$OIYmrC)q)8ca$tune)fnPXsgFFM#Yy+kiGAHP1$W#$h&LyCWM+G&qWlQLDm(uvuBT-f#?3t&^&_Cq0!YC$T3@HFf+c${|q;Y2M!=Ou80jDGlwFx?jz zelPfIdLOa4@onK*TBlEJXzs()-FAN~6QD8skrUn@r+<3y7H>!98)%dP*{@#D0|TQB z<|uODpOv=tJeO18g-^22Cs?U4>I_%are@Lmz6OARKg?g1+&K@_%*H&(B%{GK}8 zA>LUh-dDpm^vctmx64CNXF%{QQbkDlPzei?ecWgv2JS0jEC(qWApLJLN;7E0axS^C zh7NG#t@`TP_k&-0CB9uTS{oezQPtVBb@sHj85aqdgaTjU)1>5TUbhWRW4B=p9n)BP z_SJd$QEyNo{fJ&4uBO|d{ifUU>bnh0Vl}?eZc|_W)*jGrz)CXZS&Uxf8N&oAYmEX{HClAloxUXD6PnyoU4A{AmlqNI_P4Z<&xL$5AoCgCd%uFlw;XUQY&z?E*VnwiR1Nuw=6_$ z6F7_7wp{T*%9$9rlX6oF-rURPd*d9d2Hy0g^5<-$dP1OhU{%`b6Zd6l^2+!;eg(#* z7a*yMzn$IykUf1U)0*&6t$~N7I%i}Wz@ImWBP{p)m|6Ix#8XHtH$_XbP|>eG(Qo!Z zy+~TJjDu1eeoDp%ku)){6S=1{FnP?qwhoL+IV^HZF5W*&0>S<<_U!4aqIXN@BQlSO zF;nK0OKc>s{lyI(oPGB`)hh{pI5ScM5z7gWHOxcjOJzw=ILxV*C$#H+ z>oqGS55WKKviQ#_2rK5q0V5|TdC4&mSDO0r_s{a}z)qxitT*e?Xn6~g2!sVQ;pWR@ zDd)$%bKp}uel}RFsPSoy3Zm1Qp8C4}HUZorn6bB(&bs47VK0$)`1Xh9(qbQ70lg;6C1~hzxTpxv#4o}s$p4xy zAICa^f!FlXD;v_)o54zZ?2gJe?sp%&dIs|4xN*JHXW2Qb2H7apxw?KMxcb zr$zbcrtKRxb4F{jSlP)we?$tz-b{7}HQ*(@$W8g-Q#r!zn-6?0&e3J=hY!}Lv~`*u zi|1Tpn3>VBp{)vwQ{eSpbaJSL8Ky|ii$Tf{>~BCgD(&4`p#gS+*_;Meh`AD~d8<#& zA2x!M*Kw@I4UFKDnd@hR3D#GU)I^3xE-@vI8du307#37ek43^`fi@_hQ!#{;C~k3< zZd;9R&s8!joCLGuY~j!Phr87OPz?FP()F6Fly>9n2IEfhiO-{Y_bFZgeBJpmoHHN9 z5}X%^>hUJ4{@jwSo?O7BK}h7UAsx+u&g)x6Jcde^lXF2ip-i6=aO+Z$`wc@Sl2^&! zx!*SUEe<1}R*^u@o#_Qg(fcA>r3 zod^Rib-b}JtJh8|aphTXxVG?jL&N4zMX)ik9D3@dSAwqft5V9y1|GJ|Y1a|*gcWFJ z5w7T%?G^A&fjdEISwpGdA?EPg(TvYC8FcjYE}1gzy2!vu*Hve0f;y^bYN)(u3CR`aKUi|DoAt%4>RY1y=cgM0Hz)8VXYy# z)8ygi91rZ*q2I8-$A|g_cE%`=lbtB&a_!Nc>Q}uM*kztE)o3+5Tdz3Vvx2febTws2 z%j%Pmi{m|gO$c6B{*REWoBhe1pHa%p#_1nX2MGPUw_7_yFXOf8R&u3kV{Nf%-;m-! zf;qLv5~>knXqRzdA@3o%$D4fV`}ukc0>}4!T`uuZ>=9d!z^Q{5mxZqDDpoY-C;V(e_&w1c6sZ4!{X zu%!mk$yhwU8!%V`ZeGJ7s#i_29(XXN|(?y2Ri9hq<<}IH1H0kR=DpiXp>wk0F_f2o1WxZ*RG{&={Ai>iWj&OUq>} zA_4K#cLoR|bdLeYG8BCK;t!QKdf<(}P~U+agg&WQ&8@Fa|B%D0-Wb#^1x&EiuGBFY zG;xk8Ds-+SSz3#4;=`}~IQu0nMKSB9?dA1+w??S9Mmj z*@ikCZ_>bX%}2tiRn{nuwgslR+(2}P{G#fmAMLMicGHTeJL(l-tWw=-EZk@vcLD*L zvpk*@S+h^WBMp1|LE-t!%4yq!UtX;Sv<6xt4#IEC9@@zv#wd1 zxEwV2L2aMJfNJdnkmh4~e~TVAaearJNJMzky1LBy!PxAb2iHJWafQc-_&(Y0pDfD; zaj8tJa%ro=$C{C4`GZmM){45?aDTG&zGrmp1XZ=-=?f~PYiGy}DGIQ5e2lY_c1Pv@ z?fN{9&@rfP&y~;m%aN#GalsY}7oblb9&Hj^`-15r?J=AUF%m4|-Pb0{#jM)s=+j;L zmQjLVn$RaOR`uAjn*=HD+5hqjmFjGAe-YuEHW)=01{uR8i#`+efydCZ>xCNsAI` zzHdwn0Hd_nQ1w@9&&0xjX#%1O_Jd!MW}hgRidJU453ag6u(B6+ck}fs9svEG6QdGL zhmdVq2)l~+&p#4Byx^-#EVWy7fhpKCx{_J_wA4RC;eMAUr*;6U!?PDgIegm#lRG@h z@rWW_jAf@~9S}#M{4nm#8_1jmsN<|*ax=j(eCfu?yLnk1EYs|UF9!ybo7sZmm}B{n zK}P+1kG1B++{e`#R4{=VOS?wtuD}J(XscFBF9qTs1Me@jso;&c9bX@ONtd#K_no0w zgO#p4vO<7sJeYHKZh&YLphY_3aP_hObV~x_`!TbLgbPXR%^R4z9f(C>3sZr`AE=zN z{f%D-Y5iWX#BZ$peXmccP+f3<{VIovn=NoPSq~%r z7$PQ%PDEYD10{5yM9p*VqD}0~fcbipGtATWsY-eKV1$4uZieoI@l!qoR-hZktp%UyCY%TJdGVTYIPJ5)=>$YglM2Gxs}#w%i7!Z;X(c)5$0GMQ zu{u4#1ux#^rMoV_)_u-BC&R8QJM&i}S}AG2Z#XMB5RQ3nbk79T9>%X9J|&LX2RX=9 zjPoeM+MN~H1kV{LH%Ss_$niAKm5vd)ACZx&x zAA;1eRg_2acAmb>?S1&zkvD48Wm#q13Ou_s-$g-n#Rln5px5-3QPn}JN0eD*BRwTj z6ey7HbA~nqI2P0F$%nXVldOiXu}|e3-uw3_sWnCvl~y3Mpt;SN$dgq4hCwAw|KRa| z#~U0q#NN2=?(Kz*O>s8IO8Es-yDZ3TRtUUqO?V70$OED^vf& zhw_T=UpC1l9Qu0@LQi;DBkCy;Bw^YMod9EDbZh6w_uM>d1nnkdkFu0vLRRXo(7@S1 z!GwQFj@p+A^La2E6mAT)v>KG8+kP+*m|(a;2PDRP#5E7fTlyc@SH4CDS;uG)mCX_< z5b@5dvVxQy8oXI);#34s_EK$ts*>0brd8_qZ_4_?#iB%A5@SOk z=WxpD^OQIK1CnuB$GO?k?5$l}0F^KqUE*0XP(W*6BWx+awFNuCY8LCcpTOU+@b0>@ z7}a3?SIK1cv9x*NfOKus-I{8WD&0-rS40hmY$>HGy9P%FgknS!VluJ3>|39H2H{9L zXRE-vGlSI2F@AMiE8f`-9|Q zML%xgaTp>C^$kAa_yiCEWK~6X=Ld!Y{E48Z?`d7!a_$zp`vOB!C5 zjKzRDAs5dC!pR@sSTS05c}O5rk{Clb9f9(@PtZruT5LMB+mWsB?{qZ)>4prcV&~+< zr3i=&470+L5$pHRecYd{UX9yaQ8LYYN6axq;%t0y6{LuS`-JcB4Pp#PhpXT$u8rxhez&no+I&d5`+E1D$i>Wz zB9>BL!G!Un-A2V7%Zl!U&bmrIT6V|N-C9)2uP_|_*X5d0WxkC$kS$E6NJQpU)ANjX z1`QzG*!qj%E3KN2gc)Zr92|RGH_KU#I|DHQNdk8n*_&du+`muzKfMN<>(V{8d?OJqBwbUsaY@IvE59boTf+>kzvv8@%rd3er@&3vHk z&9|i(!uPe7iL%Ih?3T>h=0=n8ZhTy|_pPc7z)~|$4Jb{RyU#BifLDv8?L;f%Ol8UW zgEo|XbbDGk{%B}XNh>4x-!Aatkwt>{Tt!P07`HhOhD0)w#}!nPMeXQ6Vth=5$F6){ z9L1k+!hD^YZZ0U5hsVGocD5#&1Xi(wDFw+jIPo&Nttt6tULE7HeT#FHIID z@QUNh5-|cK@?yJ#>)|3JTuZns+9y4E&C@;(f1NpA`O7~I-SD!jjL@Z&@bn*Yd)ZS9` zHQ{S7i%kaZ4ukC{kEkN^@+du@*aegxev8c{GW{F7673M~RBi{}ylTXoDXA~Yjq(7~ zoRXxZ3^1hiXq2#-6c|5<(#MeuMYQCQ{k{fju!4*5qQc)4=|f|9dV4G&^VH5(HP!oU z`J%A&BglTzmQ9>#k2=2;kpVICkM}c`hodipLJ#6=A!D19n)yC5FPlTE#jFnbOV;ylT@ zFDVr zK8SUpY9vgk2=pU>vDo_wjrOBqFxax#I7kX{6?yO7(nbB$$1SkWHSsv3KivRz-0REa z_zrQ1vZ2aKOs*siG<|RBZeJq?!Mk9DNPUH9=~PhN;ftZ=#_%ER2VseXB^M=9L$XAj z@3=CP`x26a3bQh&JFI7M?e<3Arptjs_91vu|A?#g!%BA(!ntbae|Ixv^0B*LdJqnP z$jl_ltbemZWw{yp1x} zxd)K$Z9Gbd7OwIbdjFW=~_hDG`ne8T@G&vEIiTVx~g6(hte1?GBC|E`L<#ks~ zYkG<{(c2PqA4l8xKNNU9q;#Gt7vooSho^`zv=C?Eo&obj(}5N3agiz2Uv=bfv0A?r zAVG7HwoiRj#GQDY2x}<$!`Ia$Q=ZyZd`WvS2o#=G3As$12=@UQm(iGm4~#gHr#FE$Marw(M+<7ohj4@yCei{7@W<#cHf>Ll6S}HDuUgl*)q^FwWgT^yl z`3*Sj+$oF!D7O=EIQ+9xTlc;GsW1n6hX=E+nHAf z83ud~(iLy0?29T4u32`YTwk@)Y*DJ~mQ&Wa)8K7n(t>Hz@!~{Hbsp&b-Eg(i>~|r} z_K?enI@=JO$^q&8HR>fb)7%P)=Y}Le8751U02#dg9gV42Xa70c__M6}OkkNT?Ts@) zfAE9)VS;TP15ZEkL25Hpf8$m@pDg0r0Gq>yIlOwVy1lA*!_Vm{&7gH1Hw>8DOXMOn zb-7XI7*iI@;ID63^y4G(ddboye!4Mu^b{I>k=5G~9f}Hrhl#9TAdZgseEJ&6nB%~P z%1=2|Rx}u}b6t-zZGWFDJ?lVi`Y(_G!B=uL*>PJ_-QqUUM>zX;G#k`#2A8}9R`uA? zQBi|?#6zCqni@5<{FIRovhjsA6>U=fTc_pBR~!>&%m~9hnCI;7@#eRJ>ImlZ3qS@( zeew^3w{JjpiRz*-$*k1V@n+@&LOhtm60q)*FnWc~?QqFda-;5vO$)zIYa3ZKcz4Dz^=Sbx2mkkdFHC4Pm z{>>CNX<%x?ro8@lpiZHI5YsaG0mo+{ z@6aNh58|nyKN9nYMx)IkPZtGsd;+?wL;Z#KfiL6d4RF%hGIgK@UuiBrNSG*p_!{g* zi;!XO5ObZ>_As2Slod*6J;V62t?=o87Zz-H3jSH`BLwr%gHvhJ1}o-^v}xA z?yH>pY3FQ1wtW;mkq1k2TsDeqJr^R|3W(y|1Soh_ZGpt3m~`f?Fxi%0)QF4#0$Oim z1lSt!A{rgFd>t#f2My))!QRjVKFO2Myh3)}s@0vh9W@3pkVw{)M% zD(DW3o#Sb7WNzrD`p&FHt~~4>mm8=cda2gPc`F+txAQ|^luK(B&zXCz^Is$9!3{aH znepxecAc^C-l8P2FBZ4@kw23@K(wnb37ULr!Pwue6vCj5_#>)rs_?W^GsH&_^dj%L zKhO&Ji4MYf=uuW~^SCsu#z;hS$q3qirDkY00c*91Eq4mc;7TEes zINefW5lxM;g>j1wbT(_si>^%5t-=&K&zhh3)-5QaEKl+`hW=;$nmC%H+e*5!va=31 zc*NjSeGXZbii$Q=a$X1ZdQaTz#m_-GpdyvSh7QrFWq>>|#_4t&%wC@?eB7R_;^h*Ym8xk^p_1aDIa+w8Gk|4U%4^B+t>~ z8F(bKPgkp&bIAO4iJ*1CT}~6>E2d|4UdKFGzq9}F zXAMmPOVCRe8vF`hl|!Wv*=jCZBQdwn6lfAx%4f8!fOeC*j3Jd9?T2ea>-JY|%Bv7& z3Xbmi6{R2xzFJPRlD5gAe#I5Jl=ywI;-ziUkjAHt6C+SE_)`{-kpe}cSxG58JXSci zd|>~C?eQ=6y}3V4AQYlHNaM`%0{a%cR5|Fy!iaRN{<2ChMtM1Q)<5e<-1z+id7M0) zRQ;ua@NJ1Brc^*jI3S#r5i~u%>(#`~A}E?=nvOcoZ3y$Bm2qV9eH-}u!*%N`P-O}8 ziVxF&y>dpD6MLDmVPfpPZtKEYJM>(iY%5RQ0ntEEn_jn733vt(9V??V^?bb+=D$eB zbo190WzT1GCWpXKE!S!IXyw$`dqY-%OgifWdR3Ajka8B3*UOnG-|f7t2c21cvKoV* zvkL=_Fd5>JW7C@f>W!isvRIip--SW((Oe7$td1Z#CwCi|E46CIxCI%U{sMW|z=2b307ojuLd0uI41s7&FMGOdm-||OKExi;QK~~mc9I;Y(SFieY zQxhxLf%l_R&w@KgPL6=F(++=Ib##~;t?`9(QL%Zc;`#eTN^lBjm zo1PR>-F8`$PZX#h=;*oxVJp&y6LW>56hjp_H0y@d$2Pr!TiWntJj2%8V|a8M>-FlCHGxxfPsU z!p?-=LQEiHL;`&v1JKKCd3Yb0ZRq!mmN?}wR{O-56)|*kQ3p7db$rkZ)uC$*tT>Pd zJDI`g2kSvM+p3tcr|q(5=yV739C7!Sr^`kWDwXd8mzO2btSj@mP{9eo==Y}#;7M|w z9F&Jwi(gb(B&0Y-11Czplje96W2{&#X`3+*>T!DZ*~Kf@yZ{fMD8 z-JPMn9ql@=2&Xyga3<`bKxQAwm_-)nDAvIJz*%RorJ^4Q_8znU zFMg@5AOabNQ<}|Ynj@Bc;P)Jes1+l5O*?;my2b+97#{_LF|oWY5lC3{oFo?@SVK=n z1TH*IJsgm7>@yDK+4?mEJLmH=f5rhsKAqzeo(nspxVhQ-I<#+NbYNPEP?!AwyPsT8 z|5+sGrX`~#6dUTxzANRvWd`SLlXh&uzzrOW+pa->QQ4;bv_RrhlGq989D<5)p9sW$<&N^TYRT#7Qw0W_ks6e#q zR$!>*SSjoDt~|{wG964D_Ua+ly!}BqkCGzg;f8am+LGgTv#&&ytR1x8$;#M*6(Ufz zL}<`8ftUYOwH6o9dsunH#MU**g4Z~Y;QJ7#xFo_-ejZLf33SuHA;lnG^1J5E-zON+=(O#~Y`X1(dUJSj3A>f)QjK_fQyF0`+m304r1ViDR@{dl zc%pxr6QjcIy!hKD}QHpoBov)1bJw@$i! z*0((Zefh)+YT6d{4EK^h*3I{stM6Z+^#`3Ux>=}8$3I|k;uwX9YWE>j!(8rBm-uPsjduW6-(pboir0f1m_GS2kQc7n@6m-fO#It=C}(SlsJ7U38+@onPn zcLJ%euk%{jDy#CCbjxZ)ugJxl?qY~$Nr$s_>sZa#(t2V@l*vHk0saO$PA+d< zzQ&<@7L>8({wxcGd%UIL{IF)Xvw<0r1E9)MPe&i@1mUn`zBBdVF1>lhmn9V~g)zZ4 z+PgLH(F-kLhOL_0DlQHWb%VF+teJa(S+09TQCJRp^ND9(FOZBj)cSHUX)ChVHKo9^ ziSq)hNFo_#5grsi@oZe1w{fxs6OgxV4%aT)xb6wS1-CX{Cbd!qt>10`rg(W(QW__T z2utB1SgN68G7FpbNAv&b?UoAwnLP>o=lqQ4>5U%&Q7g8-&Zi|svR+H6r^TSk3%ruH zr^;gcLp8XNl+k(!>Pb;g=g%qxK)mq32%I{Hok}K!6~>FhCttzhZ{C7fKaNn?v7*l> z;+-3jOl0)|wYVjV+t}{#=?O-Of+rW{lR4a;W-87D)iI|Phd=B#Iw`670*)}G*I{;V zim9*aF3ap8u}x;N}MuOQUh zbN*8nP;yPF?$plqRE?Gh?w)&bOp9>*ZR4_B)&X z5g~}U{S+Gr%#6|5?rzQCSxyeJ7`lLYI-+IG!Oe4`44406~_dlYRHbFp3v2B*!OGCu|pZEQY z#~yt^QXvvv=&7h&u<8uT^%P-M`eeweM%yBCZ!q&w(1siayxNdX1u|RCI|GlP7Bt>n zMWa9LBn#y~thIfN{uK!5sUvamS5ifGzxM6`g_dkCOJtEa>Kwi>OHL$)%>!?Bhv>!L zn>uKpHvvc;yZL+i!OBbIf*Co{gv}^yAVY|R0$!ZvXeTfjGz245R`Z)IV!r@5XUel6 zxoCZlqvVrsz)S~sAPhGAHTU#M0}vSz8Az0pm6CB&Ry-7T`w3EHeb8gfd%~r{YeBqF zEgW7oTOl?zQ+&1|c3QSIz%=~O9)A8M`-TcaKUZ87`rBp?b*gxBq&%>N$s>yRzEWeE zfDxOZH}b3c5DN18X}+=6@ffE)93QKr(;ffC4HtH;5=bQ;8YAaQe462=N6SefMA?s7 zLvK|GBd{NRBOsCp%g@q4T%c}2A*C~8N>Q-Hg0;!5#}oE>w>-vQIts2LNAF-NTwMcV zVLx^pc*Yg$OeK{&z$H9Kk@PUCEUmmtk126?eXX@lUzar`WbhCNVMC%QMayI(hovqHA4+k{W zc#3hd1_E664ce(z`fLthER3_C?zm9>Rt!n4%44(?mzro^Ujx4HpngN#pFWrRO$7V0 z3TjnS94NgX(adDU8Wp<;On(nkhuEW#dHQ2Mhz)_jas?&AM@5olU$g^LIuJ^dqVdz! z?DW5uC>+V~9Eu%saeGVR1SjY_jG>z6{uQ-`O7C@Q_mva0Cq3`nG2uMBU1A z5#na*CVs^0OMq5gRoEeLw zKN81I2QTq-ULYC2KG&~CUi&2-T8}l9<-AEF?SHbME{hdcq?p#5H{Zj-bAJCC0}$tn z)-LMduDfY+w?b1|U8sAKsh#QCvFF|z3`G9&r0WQ9{O-^txUK-BhKY|cc4y6G2fWK zVqetzB{J`H_PJ!S7z?V_Ft6puG;kcdMY2ZwDH>IxKo~xv(@#NM>rN1Oxn%T$A0MY! zgB~FRySx&HLZ8=UWt_|mJ8y(`zw3xSP12n};udQ|btbAQ;ZyEN>GJMsDPor!CgAav z=jim;O*?QdEk9b_)XjAtyN zmYjGH)QyV9PvFW`JPxBRU*ZL1Qy{T0l$pu&I(9m0@f(0d{y>`~6~0#3wn^1Vm>)#%S&n zX{PlGhEZyhNU1;0TBIPxtILkfG7!ON1ykR?qTrhZ+-YWTZ}bnP*89`CFc~@S7)OC! zV7bFSwA8oqEOkN3g;J%KW|I4shKj-%M!sdOW|6 ze-|c2fHCwmo;bcCZ2`>A3eE%RnM#Xw&N9(!Od!~{%3=3a$HQ0R!|*>84mg=l*xqyM z`E2TOgX={I(T(L})5Idzyw;^c61bNeStgW{b4Cs1`9!@oxCK z_`SSw-J}9t}H8&;UVTaQ{iy8K(tF( za%WvyXrYdd*8?q|5GX6;Ssc-NyBmeZn7Pg;HxCouE}jtT;@x@FQ3IA=UeI(&Zkh|T zO2Sae6S7s;KJG3aEX!>h(mBna(!}8EmzYYSxFV@=`>Q3!jStV^=+X6D@@?UiCN$T2 zQ5d3KMpm~F+Kyp86>9(Z&r?HExbij+U2E!ZSvrhr6$z|p!)Yt(X{CqvbFY&%zaU&G z4?Dyf4rQo8lbLRHnya?OrdJ;ogf4pmj_ugmJJnqp!=%{-1dWasdIVM+d!}<)q<~1Y zs4mRI`RQ=vDnd7lnRX~hUW&})bw}Zt&(n_6_8$Dc<&FaQn*51`!DR0S%M}%by~PAN zhtKwEbyNz}JYdP$Cbl*4r%hl)7}oJ^@3_e~7{07Mcl zGZTmxi@6wM?+RcT^KtKnpWkY)Zj)eTP-TBftr8TdR2_6E|SXOke= zS1JLHWUM#UO=W-3y>%f0T9+6@yLsq#o9n;Lg5n`w=}9(mEyX%Ur>~;#NtspNC1$(R z(3M^Gz0=^-f+|{Roc?}sVxlrfR^IZ~9|MHebVAv3|5#7~QEe1mvduW}t!@qY%(0oq zq^2s3`Yqx6l$ts)Rxx4ZFtKvK#jk&7`{z5x zO0efs)&Z~XmwEG+sBpHatBzQ+?4!@Q8&h7Z8X!A}E_S?cZl!mg%M*F$RwXpW>19SB zs}Ff0Q9aF1H(AEL<|=xj>Y;tH=fiRxTjo+1bAN(`m^HNqUzV zrL9vopRmyGfVt0*6gNKohA$&@j2>2 zT|I=YcTh#a(Rv5aWq6En2ZWElc}tqZW$&$%)_$&^;c)bQatWwDdU-qtS)V`$`5Dl+ z#+ZVnG%&C>ed*%blnGa~-$lPo4v(!>yFp5dNHUUmfjH{eIqBl1)KT z{Yg^;3uqw@d4peGxhj65nV*;@{}A-*03*?Z#0wKkTqK*aHWbFE=V5@KhT4klo(D@w zY)9?$Wvv{Bof&>G7m|_c3@>&$e)jPffG0RzeP=dz$8+H92YH40gRYj1%@LTGE&d66 z<1{?J_Q>wgM3$?0XmMdGz5!!%o5Y%BlBR=j$O zT|0JKpkirOwc^;wIikCAi^rfb30BJ~+C?*tc?UmgNHwz~M*II@64CIMhWM?a1p@gH zUMM>sWD6^mT=V3_5_50Wd=MH-mcE){460nof7Nve_!3&u!M%9@VJ;`bb7t80Z-E$n zN%sLnsCdB*@g~LEE@Hg;J~(!Z{T4%+N`bfprpq#{=gNtA=Mq04w&x~ii#i}_lEDT2 zDYN4 zyV8rZ7h3wt084enOpNo}%DpdK|KuKpddJVA>2e+^_1A4o0%ax`%qpJOt>>xx##_MQ zaHT~9OTm7&Tr4kx9JX;A&@o@WkC22MVI-~&k76k^^zH9a>dq#;K$BtO_GdpQ>K?+T zrL#c6Us9)j`ESXyTxqS&$b};CkH^cCG>Es8%k6qLHg@SgLdSm#9j zy)flqWO4Vrajc(6V><_E63hVMJVYrEcgP_8u>{ax8znCf=^`=pnkiNN8%3;_uZf}g zMes%`@>g_slP>rb0BHG2P^ZlAq5T0bu(Vtl!>WdA*6F5Rc^m;KcF{b4`i-|{iwjWm z`8s|sfwpq^h0Kt9UDg87g(H+Ge5JEMaV!kS#q6lJD?(rVhyLGV6FNsB`cgfec8~DM zeG6SaNK#*O9l|7xMaC%_}QyK{7R zO*$n7N$D6J0vk0z8l;gB5Rnu_lnyB+l+Neu_q^Um+3x$CZ(c!Bn8vnFck8HN1NJ|# z=Hws-3&u-;s3(zExtV0cRca|&DcoPhpbbs>E3SVq#!^9ixKQHX>7 zj@XxRP(aO40c3}OxGIWwC&{UQF<>TG&gx}QTJY?K^cs#r5G$vJV42qED+eHKD;#lh zVUBZoa}B0bSn!;LgRVbcze7xJ5%frJQ|N#&tv#4d3whr2H|f@lvO3KA#J z)x>n*x;2^gna30lCw(ZaM+ZU2`{a+}e7_a8L?Ab`^vlEe!Dws!3Q6a3j1+BCEK_kq zu{LI$kn#CeuM_z2-M#&y@!`g1epe^O_S_=GU@*j;5V}tF*ji_O+Tmt~n{|yIm*TUC zXXrMc-lPX|68}UCK8I(JQ8zwN54KFp>BB+q9!K@^K$ZVolgn*DYjz&}Dan7n1%f-S zB5W@CQc$xU;EKqOC$Yz6#wafsKiZk8^&Ox8O?cXR0#cfiI8(50+$qO(P9hj1M)t>V zTUhFx5CI}>!;5Rm^qH7{T-zToo0F@Qcinfd4S^Yh{(Qu}6`Eb0;zZksw-0^5yTaly z7+@n=D7P*0G|yF+;_&=C@F8g(R4Xg(-v4e6s4ii|P^jt`O5*0UP)l;m%-{#WEZxAS9baAHxn%X+1%`Nrr5uw*|O>_w9()vx*_I)rDJbb_l zu;)_8#P;58gxztXF7}qGQV3wB(0t}@wOsEi{~^1kyu6pC@Hd}vX@QUSw8E7R(0Ufd zE35R$iTro88BB&_kNbC{OeW4m9)h+JcL#TSul#+Cc}y72N|kG~yr%QCd-n;LCp~%7 z;uxtGc@qX?pO}8E4tnpw^w{K#tY7ANj^ogyba>P8ZZT&~WhT3T<6(KW#GZ0(ml?2> zlpqn(fhuJX4c-bh+w^uGXEui8oZ8rb<4_6`h zUOsNgV9cV}r%SXOBwzP?F%@IqG!thN@J!0rQfP%iuISWwP+~Cyh_jj=>)Q3j-fYT& z>veBM!uMIH81a%Ncp}sClUY&ZOw!#h7maOT6P8SJLSHe_hy%nwwI+?-QF zK8jE!mw!fbDjiibp$^sCo`e`Ec-mlvH~{w7Jq9en>8>DR%;>y^yG1Eb6UATg+ThVW z3;~QQ_ufg3+R>B4sOU32EnhPc#=}3)Fof@fMj_tMc3ofrXcfr%>-XKN+LqrEEYZ4F z7>9z4wA9qZxlQjPnPQQ>189iwi;BYXL(o{i9x2cc)=!uNw6$suMbm*;bL1Gl=BU%( zJRo*l+4u!bcS8?$U4Lb06P9!OfKVr9*uH=|Hg8O8*8+M0d~nrUfioAvy6t;rd;}g9KjwrNHh+=&#{ymJoy^u&9_z3{JY5?HUWP&GDYty zLffA4#8+g(%ENm(MUu;Wm5ZPg?{q@}kLTouqq>i?56qF56`v6w;|($#R?u|=P6kZ_ z$w1f5&gBn*NfHir0Y#6UR$aEa!__8m{c-N==JM#A+o8gs(4Xakeq+tZ! z|LttqNd9&|KR5vz7)76%jVYnSx39pd_(2EnC~6j6vNjlC!H|?&DbRXSPfD! zLNc@7t5+feUcj9_3dE`nmBY86cma7pdQ?kH^Tn+sKzFgMQ8^oXLgI@{725kfGPwbr zP{EaEKX!Ljf)N0(HCf6jgk9r5v?*Y6=ze2$iBryy|7!rf!Tq4&}Oan3_780Y6md*$x zkvqu=Hj~$PAHj8aBrH~=^)(lr)c(-V0`l27g2X}~ym3Y>{TZY|zuDmH=MT=UU_;ZV zEeMO&y2hY?OemAzF?j8`2s@oI9f<;e8mha3hC`nrTe%oUlg#4w7mgEBG{QWa84f(e z$il~b72Th!%9z3Hm?=5*#@hx%Yk_)4QY0}#_giwD3m0@IbQogD$*OYpbhq?%YE;f7jOiykP$kedJC3KF=q64H91Sp{%7k>6XvXx-60B_xJsor%DsVLra7 zrGfVhBq`PV6IPWhDs`EG^NRLF-HiGl?_hB5CQSj_jGP85LEc;-r*@8dEX=zn70dz& zUK3}bN%o65@pz0TLxa>r9HCMg=0 zUZ=pUS*?`#rrO5<^flm*{V;LfBQ3H8Q1=3ISzMsOl|DG&OJkt_V-%RaDj=4Ys267o zVsYN05v4Ea-kj_Ml@>t6HGfU2dE~GNa4vR_^K>@s7O&ThF?lIW?f8b}-BO2R(c~5z zTqdAaWWQdj!Ay0>3Tk>u&YvRTQM-Bq!B9<_()0W|%Dd*v@y8tIb!A9VVcMEqvlS-5 zW@=zac=(0W2`2`Q{p31L8`$f_n82m)@n}E58XN18`a8X0wM7>1Nx*QxQ(R+v`c_6( z9g0OMH}c*?RpRD%0%rCkt@c04gbvBC}{=;Ws{0p^1L#Hu|VcRVn~(8bwi+y51!j0x1~3~L!O8RoafV4Jon4Hs9~e_^27 zg~80MIn@dizq1)$a?Bh6YZlMGM-Pv?G>G*Tf53YpK4-pzncCvjo3cGluyy}5t3gUL z6L47a1MVNkGd&!)mI31ntcu9t$21=vHtbcG99RW<4~f`|w)NG2p?%@Z@bV2Z%)DTN zv#R?;g6_;{VsvDC`YU=)TK9TA$jHaZkV7l5V6K2o=*I|y0XEE=fa11R#64wm!xyZC zl!p+R)&T(~z*{D{rh1^vSo64+1iYLT^b_e;YMIj9z=uS80qGjuUS5%h-AwUX#0(gS zmtb<&eLUrAz;5t?H>cbpn6Wsb`F&U?Wm<*MUsI<9Xtf!e0Em{q%e^CA1P^&uo{D%J z)HB%II@GJUvobbZnb@LnWAfLiGr42?KV^h*0qT}-3)@n8!&TqeqSY2P#{van>0Txgo0kwOB zddw^b{Mgq1g4g$-D^1=Ud5D6dWy^stp*z2l0JIuw#hQGW0=hK`dnCNp+=6xt%?AqA?nEc)D%pzg^Vo#b9FE`L* z*)4dqKh~S_Wx#=$guvuna;TXO{zD5b=OWz*Ptz*3hNL5cE0L%6-)y;R?lZ26R{)K{ zySH+sG=F4A$4VcG`bLsw%MB<@?rKn-j83einpO9SnUZX>GG9tp_ z=#6H~Q=7r*5<9UZ2N2#Z6e1AfC?u)1b{|}co8k{yp)yrqUe{ZExEY)g>*;=_1dy$i zPXiTS_18FRK`Fva_3*~GqJG)^lfKbRb zPe-6}jWZF~Bk{TZc4GbEapM5SB(^C+_>VCKJ2?T-PDL{3T*D7<`faZJE1A96N*mJq zsphG6*>Gj_GLzH8k1#LW1URSW2QU$e^pFYk-giqZ1f}1BNCn;Gk#%cj0&*hI{na=! zWymp8liY)xbIhm+bpupj^8?bqwekMy$M<4!78?Tgr1f>^*BAcdbo-*Cvc=IA;Tp_J z2EG9ri!n$eS8xF~n*{s}c?x*JT{~7uX3wE)e*8i=t_8X$14P*#Ey4+@6L-LP7N*gA z%b(LI7V@7>BONo1h5dnCG)UBkx9{MK-i!HcceJB~SuqJzonpb;+i(vauL=G19mdxy z@TPdk=l_zQU^78b0r=qdm3Tk}fUTf56?oOGciU z`)Eu)wcA5BT;e=wXzdIDOTueblKu92qk1PR$NGpd zakxi;oTgSHi3bpl<2h_zP?QXaF{AsXA6SY2Ig4qFSh_erC7uQFKr7Fmn!l&3ePkl~ z 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�vf|94Kp~~opecqibN7uI=W|(ee6VL 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�ADB!HjMpc(pNoVcrVQ`t^Vv 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

    st0t)S){Ycs~7I zt?nev+gKN2v^Vs`ls!|9ETBTv8?x44vlX4?2jJjdyW0wY+(UKLew7F!8S@6Hl7JNAz~ChV1BM(rKl>0< zRdRtf=dSO*iI`Bf&Wg>scJB&;iPJ?jgHjW)DZ0rn zjU0jv$iY+b5m842+Gy7wi6OBhlvgEF*ZrtvLSh<@dRJcNhg0%?!t?|nUI%-s`=`D_ zaqxHpreKzt2Z1RduMRRVp*ios{@p-|7#+d2P97+QeFI#3}5JNu> zo|)AGd`yb)rXAH-_u38@F5*xn(sZ3WqT}s-^Zff?so$k-l1a@;xlu%YX|T$o_xN8 zde0`v=P6%PH-a*c2$fxj=WA5wy^SFBtZ9Y0nd+*sObO*|3Q{9AvT|*RJtyn3_H%Cm z!=a@l!};SWIg_NO`YCg)jCT~K))&i(S6hxAVL`l1azqgp#a!VryxXxAaI#GSc1`5^ z+>pls;P%$=lQuXb+3(~j?1l%?TedFVr1$z@tEWp8@pGIB7QHE2%p#malXLu9Nen@*O4k5wK1o?bF^jYNs~#1oF>= zFZms;#>byP9uxyV^ImfEIc}v$g-K1Z>JhyhJ`Kx*IC3$)X~pwqNL;>pU3GJ_P84R+>mbvYXP)bxW=PvJY7R+L8x?^dIgkR z4UxAP%&p2;8bkRu6c100Z_J z>H<}&8}oXzq^)4o>|nOtI|}QPbg`&)cc8lS!M(_=o7~{<+EBNU%DJm888W-I@^29A{t*5 z5gU>e3wH|s!&1}b~rz#~+u>bB4X-V>GlkJK$!aA8ySCw_k zZhW@|ouFue+SI?64D1yQSQ4)@>mcj(zKf5*`FZi(A*ILL@u{4rcGmdV?JgwjtzA`p z2+R@bGI2E>=}-qWJYm)0M?#8!8GwKD09_-A*w97NT0>}- z*V5ZV)gR?#MK^xfQ%hwpoLoSDE>Ab_`RVL;HK^W6-SmrPaM-7LS7z*{-8-KxJjyxv z8Na;YiQCY*%vQ5mI9Kr2dc<+Jww{ju3rspq!AHJoah7? zOYzDmXsQ>;RmT)!*^%fG7b%f@x5bn`D~p~}hz)mMbAA2sVh(2;F=5Vx?Y&rr6>IVl zZ_G7BmG*UydNMc~?<9Mt!e0o?WWdUkNcePimV~WB?W$i@IfltPAlO`t)k^-9K`0;W zM|=DPT#j#~xxwosxKP*YpMiG&o1mmGVmthHM2_rjet6PF(f@n_wvQm(ekw5dOM(7I zx)#Jgn`$!(85Q%?Jiys1 zm-rW3!LX~JylpE+&>E@;KW4aA{#w6*Cm4fJe1N4Spk>mfRu36$Z$H zX5^h-wE6IIDriJ+V%t;gIk8d==^?ev9dcw7xlNbSad}rGP_3@@%b=%yTNP*Xh< zJkg^(cl3sZ?{fdKj&ZnRt8WFl+IPwKy^L7AJ*$Cv>E(yT`R*^ijm_2zdcOclCF<^r zqYBQTg&Vf_mE*{x>`f0^?;Aw#ENic1b3Y!KF11#R+fuckfAVjAWYJw58@J%!6Z_AQ zFmiQShFq6-&j5#N->dRk&Z8#AE-TIceY&_quRBayG41Q5ZD`4zy*}nTZ5vL~_M76pqhIieDGAZ}9_5r;&5Lxj ztEoJ&3rXs9Rd#MjgO2{i3c7}yrcl;?KgUT8A+dKiBF=a)Y*ZyPI8lM>Y4?Ulx@3+n z^TpVDFR6}tOFl{v;P660#w#o(cfnCUB9!zGTOmhtgMR+tvtjzLNTHy>ESrmy!5fje zN{7g#$TXxK!^E1eI<4USKJd+3re#-WZ5D_{#bp{Q%PzgYW~GLtPSMTFD#AZ8)$}L$ zgfJ3-opHP4$djmbvMcLc<~wCeE4^`%L~NI3gjYlYZ*bbYM;qA&3w0@F}8ODzM>qsP-mWNtyO8s_Sh%&n1`4K$DE0UPyd zNTxJhBe^H;3-RrjMBMK^|-wEz6`0QM1;u+w){eIk|xX%Ut-WH=T?b=XfVtL_`e3N81)~3HJ zWzg$8p`skpH<^fflG(z#r%>NF>LTi^+J-1b@KwqWQJOVHOWVOxIm7(w25^q2%)Csm zhr_=hjq+qmyV;@;M?(KP?_cncXV?+*1#RqjsN7bA{SELrLSYDJC;4t$ey2qCrh0G_J+sZ;o=7uVQ;F_JjM{$Q%UDQQ@sF0o z$&ghkZ-)}YK2XYm-dG5h?3HtX`!?d$Wy0fF=L&~z4B%0ogZil%R0*7xV~ zS*zmuQ1^D3M=hg1^6&^7PoNQJ7a?DGl_d4Hr4ZK?A@l2fL%;Wc>Bp7k!d}qUJR9rL zA_19a{j-G>KVk4v#V>?Au@lg5HN2+lWQx;C$sqO1+i4oK=^f^LcF0a{|K_?~gZ97s z;IE^I5ZCqq4_STSRaG~%Ees!t$S^&JmKHOSuELfTD2){7i}FV2SA^HIJG`S3!lh!c zAY1$_ zUIG#q3AsW>Mdawx#5sRhRIezz&cO@eHu>12>=S_=e=dg-PuPW!;f0vCtG@QK0#$(# z;HT5LWM}kwiB0+WxxrBDk)*s|@8fjQ>Mbm8J3<2zy>}XvP?zWH`Blq?8EmDh?>hf~ zCPIfwx@)~gRlSVE3?t_hwzcQM+m*_(kEHBU7U2U;+rO~dCZydl}VaTw%K69q8F*wA`a>=#1)*|FkC}8yy`JZ9x^yio1bo0r`fOpw43~PJz@3l z!_-H|Hwxwy8G_P*?vZ)M%3jGK8Q098N-U^!L|wZ^5%&~U_s=C9y({#i_Q@0QWbN|Q z14C>u9<}v#jmXfqlgK}<3c>_j@o;s;9)anVx0p~1$tMD<8R zJgP)AA0LwPkHsuF^RS9=Fii})+cjN;s_w^)4YJpVRZ&P-_k#?#! zsDxgRfzdkM)Qi&QC(N8%lMQCTj#NMGo$rTj|8WSDLf9}XK@CGwl@~NsBOB2bNSst& z|I@b3?(?j%rDyh)>WohWeBQ9(U_pSk2?#+^mcm2JzrhsX)!kDH6`XEc-gEQ^!?;ZP z{<|8yp(lZzmSvv=7Q#)jS|TxCj=6TCUcb)MIQ#vI09w_0)Ky+krLWyWCcpU}|I>RJ zjQiU&G%*?Gy=^G9qA7NiG_$Sa+}iK`P|jeTNhsa zx%vJEOc3VDut=Z0l_ot)1)32)|Dt5lBUgFRB2F@-xgL_t!HJ`&qJsA2r!v1S+%0rz z(e1A==*hEAZy(#;=FWDL_LN9&CW_P$Yq9ulAl(wJH2q%aS_E$QQ!UKWd+x(WL`6b5 zm-^7y`@~}?gpOp@ZlNF8$Y~0%uW#k7W+pW;nntYkKQ17>1?Hx2iS@ZY`p_bXmH%dm zpK?X7wKp8`b2 z3R=!QpEUnFy~25u305+c8?QA>WUJ(VTP*0JI5{EZ%63H<$qe#3}>BneQOWGd}ekyZ`kDmrK?Oj1h+w+AjgxxC)&a? z?XMUX^g<^h;)=)lzaD3vT%_d)S~qO!-(31@v%aIB64!$YrM1I)MgJ+&7Nn$$z*Gbf z-H5BZGdc$ZPf}uTwc;R-S}t7ALly|AxcceZQ@FP_-j6NELE*TQyJlW>>a+4gx+!L~ zfPAir8+FvYxY#WS<)LxoWTd0ON#>kpO*NgBL{GE6JZobvJoWj4=#w#~sH5F9rW(;^ z>lG7x%{hGALg(XSV?IAFLbCt_+-$yU%sd+w`Q>Z&e4Fc8hXGs{E@mnSjqZ#?%F7@) zlaA`6)yurXz%W6g|0Zg{+Ruy<`exYJ=t4)E-91`JtKwAw`ZIhe`D1YL9RYOD4>zNG zs3BESalrC3*Z0I@-DmM>RNN8%C*X2|w14$RiR1X#YrR+pfUfq6$PueO^;%%n=x54)J0Qpv*(%&DX zO5r_oSlU{~t9YCfm)}JNQk}M0RhZvTi;rqVVL@2QqKo#29;g00Xs{Bt$W#O!MgKEecU~|*WV1&$yJXoZMp2|<;vBe#Fsgq@-lw?kwzT5d-85J z+L<KqGmAiB=w*5 zcb`OI6jm`;Ywz*pmXZ`5xmYkDoR?nK>@S$LcVd^Zr!qSwbaW1UzgAQ2KfqEr%%ofV zxV+CEqF%j+(}WKECk#+#`pzSL4MI~t*z)Nd0? z25`Cs^jPp@^{6(OeldbpLZ)_9kKSx`!#<+85ZlRcW8SXqnjXlunIWtL#9FYwf#R5TCwZb9h|hjgdXqeHsW-@D)6 zd|=$Wd*A1I&NvfuRS0wJSpH^7-n$>Ctgg z5vr2|Ew|xR9q0Be8`(S%F~}U&TQ*+H-C*Jy$YZv*{lATe`!5yGU2h2nSVr7!TASq# z-v>hx0;1&qXGZd?MX^#26QCmIdZfD~ODqihYXIR7jS|+aO&bfJ1x4WCq>l&g7{E>?BC~V)TRs@kor~1dyw6Csvd-r7YjKaKu3IXJ;5Y*vw^30N`c5FAvaWY`8?+0&h)G)0+oYVH_ zeTj19Hlq{XSd;qyIk|)i)``!Fle~)>(21T;uBMw14!-Aa%ykZ4SpTk9f*Db@@Ps1L zZp;{R-)#2iq6wVncPiq=F!Nv7+TE&_^wz>O+*=}!Lfy}trjHcLd=@KYieA9Z zpBMcgh8PvY3+lwom({gNrm68rMhVgUrSu}jgG?B#J0i$q7E=;`T8V^f0rMp#(_Aa#?iUrx?wK`OVMqI zD8L(m#Fd}rh)n|Y19((JVRCWEZLR3Eg}*Z*V*Qsd-tE!#=Hm@+qTd{{Z6!tVyxn!q zHj!3Ke-AkN^?x~t?dQOR6f%-?ld-ldC?LH&?AF(fHw`{7tF%&tbp=Vh19sJz5Qt36 zhWb#Hgx5SH2ySxm)HvwrCF-F?9 zn}M%+S#i|unVg1M(W1mD@%Aso*SKyl86_7$y_nS9>%6zcq%oQHWg4f^QpOp?583_X6o|^ zJoE3%9WXqTRdPrS3H?GIlV6;CA$d3dS*8j8TiK9TYNrdoS{}qXiz($lrOj>Ts4cU8 zRPEA8)~69pZ#Q$bIqTbLAK-!*7)3i(Eyptl+Im!NzQAMezRL->LMDGmWiUdonR7aE zxxd>g&&O1U3T?gz{#5CMD$l7Z9q})n)}@MXK=8imDc*pQ0+QM&@UW|?_IrV=s5F3|9b$ht%h0W zD=u~5%JskXt?ovS3o3pM)bVO$26SUJVqi|w5LL_wGf2Pj;Kpl!b5r#uS54-wb>u$`HbZPpviPFA*`dIfG1bfo#vS#A{rpf1J93i7r zaM0zE#RTuxN4?$uLXXZE5ianr+{CuA(TT~*w+Wqj5LFkKdjO@MNaRUzN!HaYiM=1? zG+X7TYgwIg0|HZ5x@|U^{PBycMtr9`4~6hKHR~tMqsyT=>q63`-Rlivak;4l^YO;- z-Z(N1%T*ZDS9~#?F{SuL@N`YwLcb+jW$>r4b3hSAvc#`8+er4ta%Gp`u=huE-W3&_mg zrB2fH%e75Ep^#ZasklPNUk&!Y?noc-4c6*S`wqxdLJBFRRl98!;kgJ^6@#{)`8W5A z>4m{jAeXv)EWWt`RLY70Uszvh3V%IZmFvnq`1~6P)qHbayj0*k>;?u=U-tuYU(ZV@ zT`~bqDqk;IY~Ru1s;O!ciY~A(VCQK6(PrW8zyb8d(U{rBZ)-R&#;`t8k8856&8qJe z_4Hep*73*?Z-8aF^}4GwBh*!J;;GxB<5pJQ!%(NTlFK3Fv3t7O4JG*ZEk|KQS|USbP(|5dMAM8al zszXX7w6Yl9dM`~d`{Q6fm>fizMp(5`B5nLH$k5nor9Y1{cwVZq9DI572obmG*H&=T zuUbG9Ll4c)(J$)5Jgjw1nD4A1SC+ZF|Jh+t;!fbgo=P956LLLe`BP((X!qW;J{JU~ z;tw^?Yh(zs?1I8tz4&Jg$wKeP?j~gcxXFDxWlpw8nT-OGW|~CZK=WC!l-k`%>r)GS zdij@*yGM&W+gtFB2A=)bE2p#2;Hm+@t`OxRYuX#v9M9@DKN2Q(wCO($g}?1j&rjd- z&~>=%sFYYeIjxjb=eHA?lhLzaIP1bdZ&ux`<`!6du-sAANcUp#JYp7m7@V1m>$?J*VnwGOqljLund50Su@cyzAJu zLS%+!KL0DX0%OfSgAfJk+{W$9TA&;Jo?Er9ZGEQZ_w=}JDay&4r&oV}zK*5*$F7yH zyaej5(s<%rp2*0{2U8`_U*nDWwYFb>_IX@+5d?*l4()y{!(`3QIzC+CR+gKT^j4-_ z-TDnhnAK!$JT#=tw9lu%T~L}1td`l8GyZ;iyE%Bbivl6MP(l~R6O=K`ZAZc%|4Nj7 zP3qq24wvjf;<@qMEq)0*mp)_4&^viEHi;#bz=8FaKId%vm!XB+DO9z7ACy;)7xAVn zQyC?lIS&3Xgh+=}SAs`N9qpff4Rs>THmWIdC?mopx&IR+0_ZF6oKKG(WCem54vs1eiug|1;lgnc=~%362b2pXF~S8Gkc{2 zaN5Pswx{kQMK+Tgs@?@IsP`$BC<`1((V0U z`yegUEc@WG9-OvQ)7^PFbr=*h$2=I32%J$%4eejI9-~i6nalEoS|{?{N+KS7moes7 zeScx?QdpdXZbQi{wiYC@hTH;kgA`(X$#+9h*ME#$zyaar+N#Gqs9Ib5TH>jh2Mw1V zpYGgQr{95WH<}llJ|Is}tAzP|&2}Up_LPTHK+H(sMWw~9lZjbQ2rM{5RA&=&o&7Q~ zs->nR^uRFtUu2xf+`vwUuBIpQZran^&LI5+4rkmyW@Td{mL`Sm87Fg}M#FRUWW@Sf z@6?C_#=GadVnNzs7y{F+_mll9tGkNj*7_DWeIHFn-LTLB99}_^UoVjLFChJ)~xL^#q1iuK|^W_ z8rRv4b3xncCfRlP>2^zf&(b?Ai`nwfmMW66;}{LQs)DWh-6(#$@Pzph4AlZlD2;>@ zC6P;(wjQifESrs^)sQ#W8;;w<2+(8DY#xRu8SPNp;agJ~?eWertZDtHDb=(>0Fze! z7WP`2FYM&4;ShuhN;Tu#?P#zd-~amw+_LJfB4IUl*03MK0E1hGSTDkC@Tt%G)ufG|ty*`!8=o z3Iv@h?mv*bD{@65RNyTEywm6`7pg9w|Bkanj9?eUUE<&q*ZSRndwx$6Xw}knY)JjG zcs2m}Eo`XqE?vbzGvz1lyX!+uGwD4BiuF;>&mqe|IS>(c$H3MlxAm#7Bjmn)1=4zV*M2qqQk$|PGR|b|Po!fvNhI!VgkYq6( z@N4)i(j1!m?oHDur0$Fia-oREMrrQxtR!bkh3wyVca*9VeXzd4!%6H!`ymCD7uU)5 zgd@Kjt>i7o%pHDBlVYt_A}_J|7=>uO`2t~*+bLpX8`JuvvG$f`pS?-BnxD;&hREL^ zvF>XVVe!>ROO+B&VoZo%taI1qsqo4fW9LOOV3)m*Wm9i2-jY=B}SXFEn2BPdoT%|L7pV#q zK{w8DnVtpND*>B0wKpj#YlZ!8O*PunLvssi(>T(u-;rmG9Po7K12{N4I`^EV#ghvh z+t?+F6}~vXte&$;pa4sP^%3)a{t+Spj5g1*j^OzoomkSXTfx7{D@4=g8zZj1 z&2F?#@u(ZsDp8?mIK|CN-u2?NwixW9*$7=lmVlp?ccZZtVsU|o%aos_>fve+{buTD zOL8Hd8`H|$yDD53Fh=M)Pr;}Awv?|juuYiP-e5rDh2G)xx;VdfNU zn<-c|SgN=iJU`kNr`uodN#arVk%f8_DJ|p#d0*;!y2*2VRcs5rOqprP2B^MCNBS76 zYWb5R`i5kLU9$$bo${fu#$lf}13|28q;&ovmwW3KTl<_@?Ar80Sx4VV7cOi|)%@S| zZ&?q9-U`G!QM0C1UP+nGpU9!*Nh;@glHdi*NaO48XrvO7CyNxEU5QwjC0AUV3CO1+ zY!Xztz3b;CI6#G!8|6`vn}6gTh)uY#ajt_O3YWd7xB4lufPdmdRbI65d?g`k&tzLQ z43%cXtyfD95PQM?0!5xL)og$t+0!IJ*udMM(fPiZ-!dgiJ$TP)9mL-%SgemKTHd~G zIj=lR=ej0R<+6ifLwRg7Bi||O9xUOjIURIVhi2cVkcSeYL4M9T+)@Jo+(nWMQsJgJ zK^Sk^gOfYG;+-Obqtt5e#txG~cut;$w!Un7TJZ>d81%jRdXeG_kF-#^0N>Z5|4$5} z;^DE*oS+a3l>a6r;wi=vbb7<$?r}LekXF>cyb$_#8P*F7k09CF0p{H18Rwi`i(%oJ z(uk_vff2~x^9p}0+CX_pvzxWz$j{O3O)A-^sqWAF>?Nj37%qHrbB?th!W`cb#3@HC zuIt^?+Cmynf&gRG7AEUCO}`qT0R1)DUh<;seY#r!NIb@gv{Ol)fTHCFtqLqKchS-S zq)38|IOq(mhApk4taDYPCwRF#zT_5e2k>m3MSgoJ)7R9c^bZZ9BecWZ(tWs9|FvXx z)W*M-!(UvpKh|qQU^I!943Vsi>Yc}db2L}`D__HXd@mDoOW4oTg$WE8af9xiveAKy zC{MW4quMfj#_}6XbR{Yf4K!h+dpg3J6?wy37IAMu08^H_X4Tx!J*gF9*c)94H;2ww z2W47D(H=`5&~nfrlN|aY!E!}gdFF3<%$qNj;?%auEU{5eNwmTKw?@cTL$`=w<@puq zvDDf54Pdt*oL(X0)aYqPQPh$pT()^wCe-l zc{`(-wvG_6* zA1nThGzg1WsC%$D`$)H;l>*zcj=DaqaQQ>h<0i|AGFSl%MR#tujrc%XYfjWE^;%okwCqoHr|8dE-IroP(X;u8l+dC@uNBmKM2EJJX4nuA(J25NGvoG;;uA{zsE zu;ySF1CpJ9!8NX<7KV-z)$#`Q6Jpqa$7hX{ zj3<3kpm)CmpapK8LX4;uonjKiS0%a!d& z$rPgfz5iDR6qP;Ccaj<=3pC+}RfVMQ!Le)nV)0JqIVP{pFZpusgC?wf+HusxlKSvk z+ED8l->cJjCq^i(CCx}=>EF7Cu!*Gsf%<5gJeLJI;jW(CK+qmUl1aio6bST!AfYF5 z1@aYq`Dm+7vvuCGDSQ{R9jcJRa0TQjtA$nm_mkNSp6VQHLn_w(pVBToSeiCv>$69P zl1bXBmDAQt8^gcmNwC=aS6N~*givUx+(tj#-B!jY`9(Uji#X!gy=D8Rhh@7!)+1Ol zlFeKUmH`VldiMocOPb*wk!85k>U?5ed}^)Aj6spED^aDm6Mq8Hgvla*5dXaU4%cZ2 zq1A#r92PTbB+Y}ni5K-e$zYnxo5LPwqBov{Yz(79kr6+ul(}U2Tn6gTA3&8e66=t= zLuFj$H6sWUuAr-h@&}cUK>O3@QV&7+kr*eXfv!@L^dJspVGaK(BCJ#OxnXZ&(X5ZQ z;PKVE%|B+@PQtLW%(1?8}@AV->!F6-|!IbDFupD`I8`OG{9ENUqDx2n@rHb<=@krmT-t`> zcp!`BjA^@8htrNOtx1<;cPG#dnx{W3kQ_<<_%~nXEse8V=Orl_T3@|bgO8 zaPkVj<;)m16Rx~7Hy8)Ow!lo#W+9veoZ2d~i8_|xobcb{y`D1t`^F1I*6YpNpN98r zh4ELkT57CqqmCcl!pfM$+9~0Ov#TOJfr_BVSqTvTk5pXn3_u=YhD$>(T)x9H`Tk;( zBBJ==7G*qOtSAP`1f)d$rar5&v(bra^j9!DOqg&y^gCfdoMZs{P5F)3Y%WeN}OH5xySmtFviD%8v=k3=jZHsE6x0$$a3WZvdatL^g2H3 zWKj-;a?Ux*+r3 zn#diI#Eq>V0Fq%>ez?7U{O`8PqdC-4)LycJNb(FDoC6%`H?(Ib$3kq@Py=zA?Q3dO z$^1=K-S?*3uo)VMj9g1keh9%N8We|JN?TQxIFj~%f*HeJ;>~-V0f7fQ{A(!dILX}` z4drkMXZlv_ZSR}_koC}9qc%IZZ}!}|Iep2oeBT-)e5#V9_-o~+J4gu5Q{Sv_;?Mpa z{Q_a8StG|Qa$QQ)9I5kpAsXMBW>Gm`#QOK@1^U~>+&@g;niJf?Pc2s!;^2PXCu9Rg^NVI}pZjE@(3AWM0Xa6m-_)Q7D=> zHGQ?fCJX zZU=MS_W}u-cv63!D86d+cs=IiDh^(Di7T9Imi~~00Atu|M|q9+oI%XgTwc6<;pF~K z%oN9!ZC6gS?-AOj!anYLL>`ys?KWVr`t;W#fbi-=(n9tO?jvQ|3+WfpC;Yw+QCQ1j z3Q#+o()h=UYCM3>-6->0#n@yD>~I9u;vS4eFn|%tRx{zek73|5P+h_V_RDWuf`?7pqh>aE~cRGDPt(*2t9_`RH~jNe#1%3EtnDlkC7W{2k6c zQ2v4Of{8{P{6A6LyLl`bd17+^sodIwwwuM$9yu2uwxEL*vL2CL$aYKy0hgn_-sCAjS zqGRKjGF5s1oZ~}6C?rvj_KJ@qs5-5TCT2y5zvtA1*=_6QGTT3p5Kr~frzV5Vm?^bu zy4^U(3N(GIJOeNCu6>|E#4qUMModbd4yYI^C0+E8I&JM|cwdQEeA0;!YBAZ(#E0a24$HO_6Do^j2S*uq{qTb;wXcFO zle9bg9Tt?$Yk2o@0=xV!t`nN(?mS!julmXR*fF&NY}jsI2!y)^TPovnI`O z1w{x?Rd*R1!2?cM^DTwG0MyewtZ4Muv~rDLh!D!1n%fu>1An63NPftaYPbh}Q|3!Q z$yT{1(FFn8|EKahH?~Vx&L^aY)$X7o)0Ra{urbJPu0DKy6zG36o)mETyhT&lT01Mp1C2$L3RK0c0u^?Zae{+&Qg0-p~B~8 zS#s9oo{Z0&!O>so(otfVDx$>9TLNxmX`&;l>)7A=a82-@z8tT&)i%8aGZ{p}I?2x9 zrT2C2vr6Z@n4JJaa|UAPR%S9?3oqCaH9=`z@L?!a)QLH^VYOSEGoL;^>4w8 zPwWiqqbq%u-e{^102~=z(X&ai;QB*)=$~H;-*fX4Uk&N!E*j>(2Y9y>rJ4SJxfA%M>7c!-1pgS})D5gmc4G;-ddmR6BBZ#-tD>YU zA95FJwL2Pb!ltt^$aN6E)g^3m*CT=ruMf{U0vSkJ{AWR8M>?;90Mw_h3@(Sk&afpU30bG2ah*S2~N zU)f)P++HlvMoL=w^~d~VXt!vucviJ**^~i&2}^?3_?Xl%jQ;UU`z{p1K-X=3g)<*P z6O}U(X7m5l`jl^!FYj1`W;CqtL(q>g9(MwdilD@3Q%6Nn+3!z1cH3@3a_w9UXpx2^ zb^l%A`)Iv^n+%G7q+n$2-lmfQwnH~!ZB+G7GX4D0j)y74Y6TDR*}V4-BSl9nWrS2abwkaX*7}^I;hbzmQzQ(oEy;!8K|Vc5a`n zj?9KbVDTYkI+X-=HAen{6s$A29y zS?6x8(L|ezp8Tx@xvD(H8Qpwb5t&?f#PfGxPX5m3xz2VRZni2#zM$hWw3O^vy^15C z&zk%Qj~lJ}!E~R01Z*_UyAa30Z7;(Uo`X_ZaL&sKEqW3G8m%x=tsrMr@fog?D95wG zd;ZSMxAn{XI1W=?AJ5$?)KC^zi zjO-67%~cyr?rDJ+Hb}k&&12CbZq2s#)54Gu`qXC79InWmSTkFkK`*+%aZrTGFEto+uI0}H<(u)g7^x#F)vxkdiORO_$gORIob zknU#E9*RnB`mjL99ER7bx(aI)vhmJ$uK$Z^^yeeH`;rX8jYge4QJ`*n`VCZ%MwvYS z-s3W5Iw2>(KLQAt5SJ()Hp#D@xjlqwKWcw{83~u=EMZ>< z-z}>)+ImTLp&&vcxj)e*CR!($ zMZwlph<1H$YUS5U)}6aN-GjI^3W@q+82pg{jijCZe39itaK|_k%~3y52Xxq$imY;J zln301A}H8KiuTgq$(;FgtAs7@>Bu+)i__IiKYqdXZG^Re*?v#mK0dksroWHE;a=0% zNcl74xwJR7ON}JdJbHIRbdLAGfcs4WnGW(Y8W#=&1EI`e%2YyO7TbOC7?zhJZ*$mJ zB3L21&V~{FpN|&%{R0cumkI{ac_%7I8^YBAnq#m%o?FdIlwqV%VjgtJY-jQ{}4h)h^eVd<30s7 z)medHc8P)3QNRDVu;PGo-*}(l@5R|-F7M3r>!Hx8naF~)yV#(A+F*O#7Rvpjdp5(6S8LN(uPW1JP0tmu^;iaol$M21Az^a7W zOut{pk&sIJhAJ#R(F^5(^`+x*bHoL`Ld*p#@2jENYx3&}v0s7_t<3H_T;*ASU7*Rt8p8a@h-5o*|h16ez{ z@;PZ0Z}x4KTD^H2RS^QTw-n&qRoY0d@p`C&fM{9M1q8KbX@_r_Gvw$m4ZzM(N@^ag z3aNjf=)anJJ+Fe{A={v6J8mu94uP+Wgno6zZnrrwXnfSu#RRSg-M@6g{+{--+3dx2h*hx~q(pO2{%pqC&Cy}?dpZBSvGX*7~1{4q0{yT6u1mT#*vaaJQ z;=0G0_X#ys)t3rN7cIiX?*-g??Y9BSm5kk=o8q_0LFZ$lN$kzeHpoOQ={{n*e`W=y zkS8QDu@-e?i0Cm*?^;$h-K7tmEy>+`X%0V>blcM(Pz1^&3gw~(s9P$`wDoVW*Wz)A zyHNkigt_T>UcJCfJ#UNJY_$w^Aw}1h(k1pBD}t~C6;3zNFv%Amn$yo%l@C%2URJ%- zr9Ni#HnRypyTBgp zDvLVy9}_7Mc*G9@&^hE#k2YFswIzlSDo|x25r&4dsu6wtx&Il6PnU3VtvYw6bdHu< zP@grX$xYadf3IdeS=sZdO$9t&njiUWWJl*7m}oz96b!vL?xc>+Rau;SZGE(8wuH*l z{#&(>;W0n=QNBa!Og{-Od~QDE1n$njotU&)ayyDZ!WiW-c9Fq=c7TiRvnf;QYdDJH zoBCf-&^rbYIHB05lap~EtH3U+Gb&3_)TA;=&pmq}S$oFr?j>gzZ>!X++=5qk*^l_y zves+TLn{okg_#5}t+FKUo1;b-XOVHR=u9}LWcLEFzWV3=o7D`%9jjl!mv9oF1Evl=9)b)h~R*^Z5>Q4+oxkbrXca|7@= z3R`o0r+qdqd-}t3gmv)0Z}}<{wK!wXxVo?HQ=pxGsG}(Ry>^Lh3}+2b^2m_Vz9|DYa89=}iN`J2%HLJv;>4>GK& zhL!0G^WfXKq#7%KFd^A}d`ALMRUynHaLLzT&LW zCX;OWFHY?&;++ig0?%k}`1$??;Q3&m+C6!Ye1>nnYL_Up zsuO=mI3QZn>_~nEi`Ul!=3$?JYE4d)G|ZyIGH+bs#rF%G(L2B0x;eE`a$7!k#f(^D<9?ec`b}wFvGE_eL`1OG{56PT(JOg zOLisxLDtq9b`Hr?xYCHwti9`#Rp;J?s;&=Jw$q@@IGl`R0El071W$f?b5l09 zg$b7>cY*m*>zWNnZ3>l+5<>%@2P38LP#>^(f2;3^myhc;0ftO;(@pe<5m{f;q+rv2pl# zavu42VJVyDLHnJPcTVg<#JhpDqdiq!oi$M9v=6L)dyzOm0^5z={aTP^(2A!R??N4m zl4X1joXrEVe|F|_Nac~-RNRS+U*+&ov)FUk^>N+lLKrITL~IkoeZNFdyktTDFTOfn z+aPk`5uva_6EXz+Vd7F#T>!8fXmIkTyIi3Ju3a#cFlnLE*DPc~;}!V9_^X0JU8;lE zs`aMgFwN-+@2LA+^2glUB0wl3>#3owdw&m@aH(Djw2w}4{i)!ivwbcYy$0S&ZDNDy zxjp|XH8eK8kbiVU-m!Yl0%!K7>BGw;8mASn4@{MbK1j5Gjb?WETt-%lTF%w-2c4WA z0J9;LA{b&%zzI>AMe{{X7SkLL^q2ia$*^8B-Qu9K4)y#0dZO}YhOBHQ3F1XfcI*@eA$6N5{=ov!ztMi+RAnx79i30UL7x$NU zuJ=d(uxh73B)1zU>KW+b4&vwlW)D3`a-mTun%oV#3sr`;|LIy{dnBv5V2dhi`wbq7 z9hz{tmI~#kxnz*dl)5)z7{2@ZUTt*<(mP-cFl;W0MuLL9SZo?cCC+TdYe6ZlMZY?@ zVmxIBx~cRRxAZmkBmi0Q3l_-`^wJk;O)dieT=xBR5$MI!lv&o&`%yc*@x!O`^ELHJ z_wcv2Jlb!L_z_gY4a)*+Ptby~MPB`W-~oOTcHZ}Nr>Gy43=i#<7_At#Hi&^I`7WPm z##ng$7}wU~iTCbvHvkTs)tddXdrGvy%CY|Zs1+oAkAJv{p`wtC6K`3YK2qIn9o8z9 z>hS5=8no;I6B)x}Zw{vk0WeqbW(@~mgC`1Jt~0*g2eOx~1>X-j&zi`*L2ft2q#381 z2Qt{ijq%cZAq{-wfwG}-gh>mnB^i3a&*(@6bFTW0(@9|C753p8`{!)o!R`5*mcGsi z;e&B|TZ_GedHFDXi$mkQo|@z;mb9F6K9*ldazdznaHsLMCUVOur<9|=Y!lG4{(^i& z=5^I4T_5FtY^9OJBJU~RaD8*?6@=#swK36ih7HHPfK0P23RtdxnQ%qpFZL8GOC8#n z%XYzovR)nt^_wRu^mjJg(x?M)yEzn16O^V#UH6+znYrMXhc>B83%4RgmxqX*ibkJ{ zNnR7qHQjYI69a)&(AoZ1q6yr}ZDnk;1pTD|kO-st^KZIP=z44>Ha-3Mx|wP&-1p&J zIU_pIEiFxaLZpX=QQworEjTmsIp_BF6Z$agC#*$w81W}$# z^7hp558oQ9a_ateL=5Y5&WnA6d09{se?KP9r<@L;&2%H*{rH4Z!6^3ZOReMMvbayQ zhy&+=TV7DwWwWInsJ)eMRBt0MmL*`Ih~F@pW^22VMd*o_V{y0sY_?~k{YxhBb`$m+ zhq9OEU677CQz%Ie{{&5@_HtgDUhbMn2ySkGvhavf(bQUl=&rrTn>5+le$ol6*|%pN zecj~B3z-H7vxOM_5jlhB^TWJ$;OgD%{hL+#B z7s>MwPa>1hSA8u&j@XCWiUzKXFatt#QOQf0`BD7|J?Ne8nODIF&nkf1`*FF0CW>DsppykjQmVwXfsQ` z=t#~#6$#=ld`iHuj$C=iPrLD<&&?LuBvS7hAe$0&NpvXhS?DGQ1F*i+mI2dgQ_sCX zeg1ka5gHbM|)rI^mcJC4c z*3X}C=l6hsMjq(p^|Uo`(=6aEBAm~6NS`w<;&%;{-%C$N7s4;?|IyuIpC*!>G@ToA zzbtEhH@p~cCqSup$}cOvX7|n3x5VCaaGU_0%&QqDp7;>Md^qlOg6E$!6dRi;9*6yT zfp}tN*)SAC^g!WpiSGAs4N=gllVz*kq%1q<0WSi0I%xCs{o?-PL(XKoCb^J=P_T?XyZ%H&L~M>d~50*K03 zuwc7B{Y~RrTCF0g;&G9&1fWerA8?q&O8<#i1>8La0^$`-=N37=}NYO5PSHc=S0Y z=^~Zxm+K@MB%n>kfLBFsoQsm9Zl^vO3LcykooOVE%2)b8e|rXvTT}fQI-6{Nt!}nI zb5m`E2LAVw!|ptQz+QC51gj%-ju{XB8^sJEkW~b`Qmxy>7Lj_IbYWZBnk&XoB$j)7 zZ@R-JwHkl%OA*(z{b2yET0JT(9O+gQ{OBY%7X9^BI{pP zMx~mMeGLsm@)u&Ay!D|fQ(89@I;ipwNJyKI#z;YY!H`!z4nf zj6QC43o-Q61j}BvSCLZ*hARQC$m!Ro;V;2Y^hO%Jhu*TUR3g;1DUFKJ#N@zQxXk&R zF{QKYp@4QkzbYomi9Rg)n~oo5yIu(_F|=aSb4#w<3A@>1|5}-X7+|Qf>R`Zjve=e1 zV(wP)Cx#zPE7E2qptXTY@TD|wt+Ff-LYKq`uw!wp3Vq`2CDUYUNx&6C#n7u)dhS-R zl*Tt%%2I0m43CMjlE3(NNq^DAQ5o}OgtJD++4TRWfl4qC3zQ- zU^PPiSZSv~YJ80x?RMRnYnUbI{b#q1nrB0$nvYi+r3Q3?_#o0i8!d0!5)A~PKTJhk zWAi=w@J07?brPEfrHA(HNB{Q~2Hz6n7J~*4&C1J20Nv6i&&HO=&qTRB35Aqrhkdbt zy$t4=ph|7SMmZZZb0+oA_UD*A2HpgzMlHR`aN`^cBJ|a-`V+8^QIDt{Icc1y;88}) z@93+WJ~n1uHuCQRvR66T5zKq?3o!0D7H6ATyQtdIDqbA&^;eolImKahUPWjrj*;Rh z5P32-IcE`5&GqL~ctMxljM0YA@uele(u$w)A5agi8BfcFTd9X|f0+<_Mo`wjC_ z!*+bEqaFgMjQgYR=N8QM+K*vx_PI>Fk&9^^re>7;otB{JYvZJlLH&(@u*)0NqNNaS zB?=B9Irt@f=OZ5MO8tb?o_7Kw@U<5`OUof}Gj44{)@>T1pUGdCPG? zM5@RuuXAvD9j&apiJXu67OZ;3*w|0C(eX4>O}eb%(LcCnT)}2unPGvti)~elg{tk-%1ulJ3d$!i%A+M%e%Lnq*AP zew8DZAQ~cC`oMQaJJRhOFGd`%{3Sqh-4u_^gelw*M`oOT=qClnrVrQ8xf9O&K<)5* z{o-aW{N4(`Sja>PMqX>|iYjy5_bv)GIJWS{aPLC?&;`}r<8|6u!w-`08ksHb&*B7O zVc2$3Z+ZSFOx9azC0`FRH4?zTPaBe@mAwM)9QNIn zvASs^r49Tm?XR?46X8K5rJBavs4kPgxT!#S2piJ-9bP)Y**ZAkVu3-_8nxrVhlW!v zxc;@dVfp$k;w1P%=G-&VoL}P3W&=-r%Eg_wOe7gNR%v1a4V!Rtgrna58iGvQct@N` z8RP&D_ryV2Gp-y#BbzTDeL`8kIjz5N7U_-9&tRaM&Ee{QgZ6JXw_~g&!*Is`eba|? z-=hOlshcq9FQ^vE0&vd?q@lJX_nt5|@xh3}JYD^5cIotr2@0Cd-4Lg|(QpjgO`?Qa zS*ht)|9{l|OKdxRlvTn3jE>W+1!iBWGY2{bpAHUQCF4&{KX#3aM5#HMFq^UhRfm&* z4B-d1Ls{EbFZ?(NWuzf^@^w*o00-n2f9Orls8DhYx9Tkv00AHdkm zFE)^V8tea-1X%NF+$xoVB2A8%9jEXL&!$4pE3o6R3$V;m-U0=k#*McC=B?07$@*aV z_Wbc2f=Si9Pf5qQg?VFy{!-UcHDNok{+(^wUFe9}j;aVU)hnmdh$o1IjTRu?+3HE@0{2r%p`9JYP@{(fkHXn zBxDZN`rf)W`cj$qz0=lkMn>98?H)@L2L#o~n%JYwE0(agj$4zzxcBY7Q5*p0^r+M` zGIOL1$6Q--c~S+|=@&nrFe8odg3II3rM@8W!Cf4wM7iv9MuR8-}emiMhE!H`FPDZM-VAcEk3#n$O?qQ5#vo>z4Gd zp!TGJg(;;db;sZHozWGpUktaC`FR6rI*)&$2c=1qJw%eFRd5W(JkD@^Zi#~=oC&{qXI2X!J2P&aI^?E5@DKa zC*FlpTN?DxHfFxxv1~-YVP_7j-MuC}csQ(9SS>NG492KA{%8F=cQA?RAd$Y8?Gt>> zc4>0)>FuuWe~pMav-7S6l~!4@yK$-1H-Z0wT?BV`WFT`+SaoKK?DLLp#)hODd3*@qfrXgm%0 z1^~qNX-4G6SY?jsUEp_IL~TI|C(u$oj{;}sj`@Sm*NonF*liPXCYg_MsxTc(H3I$y!l8_0A<6z=bxEdLWa)W) zDOTnG^%X!4i)jo}eh=vO%bHtY)~RfkY}1=uZPDvK(&qtUL)xRlpU=v8RK{shkMp%?wOY5r(E+8ucj+B|FiKTBx{1}RLxbA zuIz&)En!7j+RPJS{L$qs^d@*%Q8(*17?y@_Jp*d_G?)A9QazDGWatIwO@-_{c+GF( z2Ahk^{YFRB)&ee+Qo*Bdw;Ct2*}-sCmSuxTq(|JIkx&g0i<_2XWBTiwwt`ro3lr~Y z9o7!_^`QqsvOvNVIgeYEITMvvq#eYEs;OruiP`&>_$ z#^lBL3-z6?eNjEa?2FANm#d&OEtrzN((!v@mkGdX*TdD2G=g_GMAfz3R1#NXgLa!{ zzVG(WF#7z1dNM+m$kD56ZI|=#O0Eh2#r$}KFxU2{7iG_iE}1BLohEV5Mv(8dV-@Dp zSc0tzeKN`*D-IzxyhwQl(0C4JDm*Tlh-E7wBk7N7)CN;Mun=2iLr(5r=01d>NJpNf zNGni_Vl+AntkR)F_A(*INYtIyM!-dd@cq^=&m!BrJj!AoR0Hq@^O8JNFLE zBo?qD%MMCS--`Wjt!98J`Mg#8VM7{E$v?o`>%K$Rg{+Pq#ew+}Ry~p{KvMM50&F>( z6&GD262DwH`@YQyxl=0Ow-@U5qYss5L_&R>+1mc0N+~h<+-;8XVvHF^+lxX~rr+1I z{`F-@&HKsW@42Zsv=F9{;?dFnNIL7VD7UVSze-6X9Rr9kQqnabAp*jHbV;j-gn&aS zox(^+3@Kg05P~3`A`Q|dNDUp*-QS+`{d>Hw1I+Wx-fOM9CT>_ue4`4sCb4qlHo)LfNd0$XPYh zr5D2v(vYc05V`7iv4TOGDiEib=L%EQkCzkR41GR8 zy=Hf4c?Y~FWXu(`hf~XcfePCGEZNmP)ap~dZ$zX2$T4^%!WlU~DHeDgLU1bW_By|C zY>qOClJ@D^+B@@a>gkr}zew9RV{5&|7v<{Nqm>AA9hFd%84-p77cm?0+<9CPh;^H; zO9x7o$C#>4Qll$-r@{RZuK>&y)#vo`31EaQ5Ualj*Yjq%!fniDCGWQ~jw3f9zNG7y zeFL*W;y0+PQ(As`xUG9w!TO(M!b-vZiQxyhvg{u%yi`TGZe6NHrU0J_r-0Ce#}{G1 z_Hi6|9>y_!TOT$SnLZ&H>tey;o=sdR`Q5JVI-4|LZ9mRNiw#h-58Qv}bkJ+EkgwiXCK_Lv z&~43t4}Opx{kX`jJSln{SFEe~W4}#OI<>a}{VefmpjQD4Ey(Bma`W6GgNq>}Mr{cD zd9e2tyOxk$i_|iRTq?TMywc#c4ZLhx#CnKk73CY0mOz<;=oT&2WVcPS)wbX&{UySJ z9ZQF}P;mUuO-6iPORbA@jF?hPQIUXMNo)qB{2uC+Lh4H9-aFUynmmJvh80St(8g=K z^Nj*I<4(E{y!`QLzAG%1&`gi@N%ZKlS33xytfscgIU9_^9|DezO?U z137mE&cK-RJWsc|mGf_!AhBFm;;#|MbwRIgQh~E*ik;fv49Lol#h@>M;b(OD$>9{s zZGn^(O@>E(nccv(L~Jx~aQwFJ7IMUVQeXNf?)f1(*m>|kSuyeIqG8!<`c}TTNn(+% z!SEj%9~yDZR_qmcINADvn&0t9243VQdt9N0c8*EmufWwyDh5%I?|HJvbp42i`}H+Q zISvkE7Pnb?l*QwKf-28ri@#@Syh0b zJn}vIU)<9jBj?6#^$xs!kN_=$z-){Mb3z{}lEJ1}$IWM%QBSMcJY17UbAX`w02yxJ z+?Vkj41YD;+`6~UBUH! zhU?>J1ia^i_Y~QGaC184AnI-MS1qwtggXpo=JLihn|2WxgsF0eU*i4fR0>i$B!&Beqo z(y&A;#x?TPdFL50>i?t6{FW`ZHzpl|xme9@q zlc{+8Cl&jTFAIjpPQFqL=!Jl`hcsUmg{!+y&z1Kg-8sl5gHA0T+APqCeWnVmHu4Z{ z)Zwe$hfXr8UKd^b1eGuDF1=AQ&u7+XpS66{{X4Fh+@TvdDSGF<`-p=nd@R!IK#yi* zOVrUE_c*JGiA@vCuv2qKxmQ1t0zdr^^Xm%Kyb#gc9(RHDobal1lU7973uD-!|9L z$9sB*fao59l=t3WV^%{Q5@ZpLpIDd&rIm+`wDuda!6k3Lk$a_)BJ=ZO4BgKXOeLq) zp9Q&v1B5>C$}07}Yc552*gb-XPIV`Q{e|Dx^8E%B;-#NA?A(7KGoY1f<<>oV$?bEDUAs{&$ssx1laDFJPj!7w}te5k&-cM;ND;&mmaLl{XlmUN0uKryH=J>bsxdx z8wEtW^VVRFH4}_GfU72D@)tEoUBj_)>Bo=M1}SV!hlC*fUh~>adhw=d3sK~lZM%i> zsDIA%J2~_GpLS&F$>QybJENhqO=Ye>R~T$0B_|f~_}H(u6iM>~Fo?9*spIzv+rILf z-5pEHFu;K14SVtj<;vy>ZlKNwDf|^poq+D~uq)Xg)!(c4eI1JNiwtbQ@z&YC-07Gl00G6x8OZX@07h7D1{+h zpDN=_Ih@@qexl!wVec;V`!K2Zw~0CSBi9j`x4D)es>$Rxbsy+cFV1(3)EM7KeQCrX zm}T=v!o(vuZ`wO69)hvd4joV8i34|0*5o@_X5WmS#+YjPGJATp=eT`(ToHY;<8NG2 zc2Ax`5E)u8wx)HPQCLi!#m(3R&fngEx*L-$XX~z81cx^QrTVDRSMa!T%&1G6G|XZV zgPXN!y5;(_Mcg&Dpg8Dpx^|U^Fr*=i9>DI{TD&m<8>ZkLa^$YKrcxjL#+iJ8Jx(TiYi1L zPeJ%eQ4R=$juY@RbXP*LN`|xj)-SWS98-r^5HZ+<$KKvd?*5Kd&!dvomPuFU#1o@T zne0YQj}v<^G;Pl$&fh5yZS8vls}rbsRxl8dD^l4`Ws$E0ZkhLLd3}5c3-@XuC%YKW zJc%7`_xj+R0UEW-LZ>~8C}1hz@eIgwjD=LfI62^l1MknwmY!shhD$xA=p0a(!epit zw(tssR#cF6=1kZhW0TFrY6j8t@hkomsr$>^G~eNMR&RFD2fM!yl2SJtxa`V!YOdxj zhA{|Ctxx51s7HLY?iV-T1a23{-Z&|J;s(_|-s0AlkdVmiW{%I(IQs6IE49p^b*#{0 zE!Z)sqkbL=76=-TE?=^RUS^`7WW@QhSm3V<3-B<)70KuVnSie^$HjyU?m;NZ+!&5A z0=77+AoF z>M8?iqw~{kDlm`Xum&8maRMJZJ4%5vY16Rdf&xj&55!#!IZQXa*!wq&T{p7T4!(8w zaH(87DoYktZ66qsKl>p#)%C+=8e-5!N=r4H!}Ig~qWIw){jt{CUU><{z~T@#(CyZ@ z5~u5B&-$&&W^+nB%tV41_qXEQ#oLLP_-tr-zUWJ(I*A{8!lSye{`FJ4XJz0VSIv68 zX2)?Czj^ruDDPLH>W*G)HH6BE`>rA90-qRdIMmt)o@dFXUiiuEdv9EQV<4LqlYS~NB#*R%G;;j_cU?WC1zzsh35Xzig_Y?8 ze>hfq-+@w+M_H9x?8+hfD17M_0d>xlngm>@sxjP`zPEp?6%+_Kukma@<_QReDC8uf zi7OkILNZiSnS4$>2{#SL51<$p%0JzWebXOD8ce$j6?EXkZ=;^neEB9W3B2)M=EMu9 zW)>j2L&s$pM45Vx4W2F`LSHGqj>@AV(?1(`wbfsG{ceVW6@0iUmZv4;(>u8jAkXY# zC@lhC%;78RhhF7OfF-K}am9RsLGEeqVQai;+n?Z+9?3H^mAu$o!-f0DOP;;6RUC@H zz(&JF>?@@QAD5-Et2%!VsRHg5<@fS02tEVLBiB&6)E`C;!vyyv+|ooqQ1Fr7J*E8! zn>~9#r4es4um&$8IwXki6697_wnJ7h-wqwWni3BjSE2|P75DMydDA-v4f1$&%Gj9Vs#@NV?n}pM`MNu=nDyUNi(+btBQ#;D>snix zsZ`x!X=Oaq?;c}0C-=hAIX)gyai%6G*7shh=}fffYV$4bPYZ%hLP6Kz&pXN6;I?dC zp1Rw^04*TBe*bNU?x@Chsqt}OWuq3|LU?+Klc;yNl$38qAYZq`L>z6bT6o$ zTJJuIt8hE|_eKQ52;?y&hb>B7>1E)!ogKJzLgndx&xN!qiEst)j`hfYFV$EK)dt5epQfZfX7 zf|TwbCP~h8K@|<(m5x6u{7xu=q~=<|>i+2UNoo9bMQqp8Zpp|u;K_LkLY8anikf&r zkF`d31WuK_uzyC~_~~rr(}N0d6RSE z^c!j$aG6Li+h!K=tSREV!}!M_I1AsAKTFk;eue>Z*u?o$My}G#xa8M%RzmC)!aGc~d=YItzu9t{KLYipU#E$~C)3kY;a=KVUbQ)hNM-qf0r$W04FAdG8?9!zwY_X>d`k0Ft1D7@}^Io z3Uwb57wUw~r8omPC)tiJrCyAvS-22{?1MJ#9-CceWTfiv?kU?_q{BXsh23slNgqt2 zU&GuXYa?IPP*g`qP>vA>b{Opj-dzuiz+?h^AaRrn{L9c>Ah4RpDw-am)m#;^inuY_b5 zhDJ2`hcs9VU0HEpR~Z(V%e8daKSjJLAudF+{LLrhbo|g~0D(BptqC5*m5N}zZ&Ua~ zDlJ65?lV$&H1Nblnj{L)()(&FQDGdh^VJ|$N5}DzzL}h^GiVC)`oRRc@DUVGZt!+4 z*RTJA@DXY#{w^sn0mw|3f+A5I3|(HD*+`cmRy`Q6pT+hjjJAtZ`O1k_zlbcmQ=ZjS zQQ~FEsC-=yW>6S)xVr$VItp?(hwqDC85flSXO#d75#|pnapMicK+b1w9@z<+5#oq<^A8Yh-fAfeENl zOWxu{FXK&(t{JhQ6#3-`zfRs00(U^`OP5DK$&v)gwED`x#zs;43V(Jm`n zQfI*ynq_QcyK#E*NeFhb9I*ZKLtEVh_S>BK*6940P4d`Jo!G_kFBE!ta^k)_#@#BP zLOCTLz;{z_mgF*5MIC?PQ0%hC*y?1StjyU1e_}C|_S8>G#?Bt(HZ!j__g9(ISivoJ zr)+KUlQMN`l`C}hpHJmBP;fffPYt#EhN}HwKpJ zV9Ifar<$1j9kf>U8i*2r4xro@+Z0vn*esaJ)087FmjAjrvmnZ#%J04t78UVHmdH^S zrWcO!XZa)>8-;A^uBv%d=ah_XYm<_GSJQok;U;3Vs92WsdCRY(^@;@Lup506Ti;%N z8&6}-sKL1ZuKnRIP*^5^SG!yKEV5@!i<0I+`X&|!G4DuAZAJ>&=tkJ+X_i2g680Acr|(3GNPu!e zXLS2Qr>E@t1&rP-txU`|fZ=05)0nAO1DGd3E_!&r;_h@pw7L+2du^qx=C9HolyX_# zg#Kj48ZpTVGru)#^u}Q*9BhxY7G&_BkyT8FXFu z?<*(8{8PGUtpUdz^#s-SD)GE1b&it zds66^;T)2wg>TotfN2`YDMGF;?lL$ef>|gI$`0&d(>t26a;@AMG_3bs5@V5iF5f>L zozoh?1LX}HNic2IB5~e-V{|X=K>HuzfD9*hFVph~GGrK)+wfT0i!}VO3#~~k>*y~6 z1`&m`3tdA&0K=(jEjuFDQa|&55RokqjQ}BqCt(?X+Zkv9V^}u%?i8 zOwxD<5-CCh+Xy{fkpXY4`ROitG4y-F^2Z#>knuk;kz7KWLw_C{fwgB?8w?$kPw64B z+qN(>n*DYCbpEM;Lfb>uu@$76_SVqJJ8Kgx!H?#n)zoXvpHdDf2S3d5V_^c?uCnMX zp`#P?fCCao%*Gil&C!15D?kCtvF}4(^8Px0_VkF%Xg3~7UFa1X)pkPh2;f5i7o$h@ z=Jka^3Y`j4;bBW0?*q7HhvByoBq)42>o%@TS(8EWm+2ibroM(+123i2*RHjH8w2*<#C|3>S)7}FQA5qa1~`jx|j19&$Ay&@eL zwN44u+YW|;XNL@>?m4Wr@UA9ih$O0n$S&XK{vK?CGt+VisSa|Hw8$Ql^)a#J!R7~D z&7J!Vk5QL8qPGelbL9?SKuqVY`XztF1hJl7@@RNA6=3ZOpE=u3QjlW}zoZ~q`J86uYbAoZWhb-0eJ;98$VRmS51Ed@ za})DB&nwRT*JT0hEdr8g;jQW;47mNMT|aCUjIwfK9mY77O2e-N z%DvUDB%E^JCFO6$JloK7KMb7`y)*{7pzZ*RSPn6g;Aza-hLIyj%`;qCfN$m?2+mT_gfg=(Avn!2(_ctDsr_u{?$OFX;ZWd=J4F6}hB zLOgBmq<;|y;{1QVVkPHCDu_CS!@whOY1!sDbNnp0${hFN{ zGn$`((JD1|kpA3OdG+-%xYY^Vl0O9gFUYZ21hSxAcmRgVS+if#VqJ#v(;4^R3lIB1 zH}ivq?cCsD9foPF=_XExi+>q8QP2!JmLwU$DLj&jSqmbWJWPA*EWzH&k!c^SWJ0**` z*h)tW&$*@TFnaG6!J=K^dSN2REzUP;Gtw(<*xx%$ocf>XtRM;UscK%~Q&b$YI)Z0| zAz2#Sy@R=BfrDq_pTzHhjOa@>w_i216KbE;k(vy+BGqro24vpWH1JO-jmWTmC z%eObQur*x<>$fo^j*5G`?Y2GW<(Z$#NpwcEq>hepr zRO}*LVHLfp6Io##)+|S)RB0Zr(Vz^!o6U7cd>2$YPa>x#cokd1Te1HBZp`P;w^#L| zP~dWiTGW~Bc@E7w zOk@S3h7IqtlVrm?nuwejKKIx5hxN}I2k3W;Q@0j$S<8kA=X1PKi%Hq$z7zu4#@*3R z$8JA!0Bw6yg{bmFKdDkQZ9)@=WR_YX!AFFC2i&g>T9EtJ{uA{PUpKWESV-0RE>UE_W9!c3a2&eJZH*Nzk9Pu zGiJX$gDVL8{tg&uJr{Wcf?ot?!?xjL29$env%9EtzFBPHr!&-S@+Y0oBt(IWrMd^~ zbme58Qqz0j;rJKZWKx?)pAD}DWBir5`8}*tx!!~qe#_^4;tAANoTy-~Pl$hfZ#W^Q zqkDD*;@vMj4G$wU->=S3hp^+H>+kgD%mHp94xiuUER>L0WGUvy27C}K<`y2)9{v)u z!x<9P9)8SY&6oYW;KdW7fz7RX)1^<6y0+r-n{y@rtWICpL3J#pxGYYY?C5b$hy@S} z8WBJI$MQ&gKC?lmQ#52mMQI}ZV_48U!d0y#c?dj$HXY#DSC9F1CVk5dn5 zSbUCkD2_($%v7i+fI>F9VCUVj{=$Ot0pT|q2`a>cRUQHs7kKoXt>+}Lr@GsX!nBp* zU-x=hqDEZi0M$ymYyDT8Xj0^ z`H-MBEAI^>PY7XiV-G5&yK1R;xEYi6o z$WLMFB6+I!Nt%H0;!w|}xjlMfow!^5Q=YlR*ekp0gdEKK%pxCg9$zJlfDgK&_oxfK zaoy`q((hx=wYqS{P`Elr0)rGl(i@(kcuwcQ$o}LiyTa2?ZYA3lhb+K%2N@OS- zf+ncO_ccf|kbXaLzHGEO@mG)9qG!2((d{9?Q)M}+&!QB7%X#id%4$21vOtYkgk|oL$zA^ zPB?UXL3~-|tD?&?hwXUuH&S$R|FvJNiwW~Mw|rMk88%5#;;dicP?;M@8El|sn{FL1 z3@~+IH>FGm+g^t?Y$}e^T%eCJwBSYzXvhQM7yqWt9u*B=@*#F@z8jPl<@z5+c{t^~ z1sp!K)auC}D$7&79R#|PrK6f7bmAPK(tRV4k+=U=UC81?&$0i2e_eyBY>hoilZ=OgU(*S|sqifPq~*2z-%l*dg7eXu?+}0Ov@IsE z2w5gF=~t-CTm^x4;dw1nH0P08totc8Sm6MpJX4;HB0s49iMfNGtVO^#Jay}m!`b)& z4j+7F|NS~Slwk%A90C(DXmo{|^ZFu#M*5;hGB#xw%XRB`CigWRNo&@bnw2LFT`RXuDH-UMo3N zNgvuRa`lf`2AIQz`En=}2G|h|z(wHT%Bjkq=2_ zU6j9~GIywb0cy^%cg4yMs>6*76YkT%9FjR66Ifnk=`)SE)04K%vq3rSjP6{aK5+IH zT=fjgqG83;CUXR|Cjy7kH&^Rv^J)87UCjZeC4X@2_9d^ax1u$xZc~byUjnY&=ARhq z$(RHjTgIsC!5F`ZpR2%s2~l>WIeNlZP#J*a6#Jhiza-WdlVylg0&?k=-DFmrICgo@$9|j;i=v+YeRh)h zE7~1+B!K@?{o)N&+tOk)4(QQc0k2%<#*v$N>-Z4U@>tnAlDdJ zewaXw;f9WGSk*`9QM6_)rIrx)scH`<<$t)GR0EW?k!D`4dAPZ!^BXlqQX zR}%$nfQj7K;~x@(w#GCFAmxp!+CuQD+QsWU$h`x_A<|*>=*L34J7ov|Osrw2s5Fgb zl-|SN{7*mAcKoma^(Xtrfc?KY=iS@uh@Wb6Xf;+;Lq99duiT5@(*g#ifoLHS2}rSs zd$PIyu-VqcZ&v^tyrC&O8u98$rf3~XuSZ)uz;MkA2Kc41k&5TcvoyzT=D_;DOqi<0&v|%kh!YY;5fUVU zk#qP=D^l`D12vtv_C-Zp@L3G0yxgityx4Ws~ggT80FM%Ak{5 zPSQU}kf{ygl|1kp8KU=M#(h(wV6wg#+3zD!u{d`dX&3o1oJIM$^D;iqy~ZA_jzq$r za`KCv%}s*2l`UIn0&N&L-_zcHH)wA~sNxG4*mH2+5ndB>#)k+;esjPd;0%4E@-*C& zMJCCaDk$M|=3j@`LQ;_J4m*v%TvD>P3%ezyFRY>g#Nw?=^P`R5r+gBSl4ylJWW1}c zW{;N2FUuAZ0O`L_U%4_Rza(ly)Y$9twCg~PK1x~#pZ_xjYsE6?rDt%r{LX;vmP_n_ zVvH^RZQVnicVsFU z{cp(hsF7lPe{&m9kzwfbSubC_dM5_5K5J>!EjGe#ry=DyMFDW1O<)A6lh{71u^@K& zdGpCQH@40#4IIG{gg)%6|1jf(qHoQb*O2UasR6e&Uwt(&^J7y&_KlJe=cgAgd+!1k zH&h;^xetf`s$ie3l*IlIK^rqh>YI_!mc>ef6cLk7RCT0$D_4~CD?0_WP11V(D~GyYT6Fe-$K56CF9bEs=AM+!VjO=Y*+-7BW0Bg_0a1a zw^RQhp^`O7A;;}@?rZXiR&~B?(r#3&bno@#UE)0-= zi>!G&+19_DDS$jfx4cpz-o-eU% zorK)?*bee9BHB+yOE%PjE(AwoL|c~%j}}Yx0h8LWDh~+rlfP@}ZuKk{C3@P02Uw+Ab=vPwq$@)CU` zf4P~4FN$$*Or=Zi$y0eI=`8%Go}vjThu!jh;)-9X>mVe^u&S+K#;i7)kFjCZfsBiL z2-&}Yj3+n3c%2j2;-5oLuyLgnTFwi(O3~!~)m{5As+ijbPQgDL{*x4z>YhnQh048d zco5r-UJv*JUZY8q0LMa4<&|5=1CGrKGn8u}Rzpr?=e$YpwK-R1MW|rfi0KCOx(m{& z3mtrApQ`tNKja)d{*iR7+1rlD4<;kHe5f>b?^LX0HRluO$cBkUQplTb zM3+sclt=a5K`($KLPi98UHwjqJo!CYoOjwa`cN!v+1+QK*rUVru-6+CvSOj zp58C`a=Pfe4glHm@BX**09wxoa`C6hG_!oDJ3-Ilr56`VA*mN%{p21t^RgDFyoW^( zuq&4TxLF_G0Uv~o;-3@Kr+sAfAqpx0_(u2XXTpX32rz}a73%qtpF(2fNeIGZv*tJo z5E?N$HvRo8cHrz*u=PCk*6-+ueh-^BkEk;@T8Pg6#oj&F`5Zj8p1Z>OOn#*Wwsk>{ zU?)9=lvzGyWtx!W{9P$lM@}$c+>#3*@4&u?zm}7uYT;y~^ICYWz9CE4vq6114R_t^ z{9S;;cSZu-d~;M^5`0l`Bt}}2&Vl4zCIw!4nd2roOv{STjag|}SR|8HWkxz=;HC5S z$P?14S()G~DjYI6^NN&Ze8XRzRONT#)jpPdkZ3J~tJz1rharVHWLtuGHyFywzgL3+ zz&6c@ez1T~nYy76$wYRS#v+vtD%p;f#7)i=dFTNs;L+CSR|%U=mN;Y+!56uBoP>T? zY*_l+Zbda-J~vk9S6{B^CkR#E!0zhkWcM}jy}Du)&pQrj)y{d>_Z;2`W?6UTc$%|q zgrM?YJ_~_7ol#mDW{8dZ@r5N=y)6Za=>c50o5iAoyD)K++v85Q39#Kh|{(r;_|M#C3lGr6oh3+g(itx!ZU}8Pv?62h`&;M2b=hyNm$W<{7Sc!S^K;Isp1`Giv zbUq_b25)bkKe2|T8X6Q-a1oka%vNG4Vm~lfG-24yEn#v`9QoCHGQ7u2)4@vz>jUW9 z0L>Bb%Qb$AWaQ|^)q6|okhlvptj+z$pE;V8aY@_bFo*{};$sb5B3_=M@dT>itoBKb1~P@EDG&ff=oEbDf{vLpIMj zu*M@JxChjBik`o{Pg)eQhHAqmG9O9af_|hIwPB%;I7nt;ZRo@1!2@m~IO+L`rKIF{ zyBoCl^HWOCV_ha|UK`-T=Mdw8Qji8m>$k^oalfD<7P<`kn4m8J>inFOdvwuVHP96#<@T-nw|3m5fCCVRKT4~gk;CVt=>$x1US-CAnXBfb%V9!Kz)>Skxu(y26rf+Zlbwp^Xl>iD3wLNqAZs! z9Fyeh1oVQMkFQ?N{bp7`X!VKbn8a}P$l<;mj$#gKR+~4Q0DZ2#?&1DA$6dN+-1Xd| zdu%DWvsBWtD`BAT;R@)}7VBPA6OQ|S9H$28o&NNmzr3PIHZVgtk%kfa+rv+FHr1HI zllMl>-e55biQ@7{{$(E?K^kfcN&DepnYc=%`s$t~^ed*36w|+Zn&qB;X~Qm5A({+k zHAGFZ&jDQ1CSpF!2|h2gRSNdWjD8fXHBMXmHmvn>D4+9yV`jp(OEsFcKTo_B^Su)j z#%=KZB|3_6s>W^`81_oZ6P?|~))%zo!C+UtB-JKKWx;~VxZ)b_1y+B#XWlQxd$&=X zEezSX%fqrIsY-P4w6xssNhfwxsJL}8laji^SdVe9xLC2Q<1lO%u^F1&opu9O$DoJB zC&5xB;Gn!?_!+4RcP=ORym?8sc(SQ{?6cYRXwNg^GmsH&RPp9iAKvz3JG#t$Up!C& z)_R6~wRezr3oXeMhLm#~3RCkzpEHMS{F(lSU7z7#;GH)=`a#l@e%n9Dt?$nwWo5#^ ztn%V^n5*4YS3ZQFczRO?ZvRuBGuSSx1U0PGyi_AOVVm_m=z||cwI>6jqN3m#bnI_5 zGc$IQF0cZHzlifZJi&ef0yZEl>h2dB82W#znw%(p4NG0ZM4} zKu9j{|A5>t&s`dxqdJJnHwjCZh!Vz9j;Pmf@9Zr!N*?*gmOGAO0^78ex9<_r`-zjd zI8NDi1YOU#6E=VZ2-&xu_X{`iOM1TMF5oe;b9}>%r}FX!N#Yt;c=w6|Wi<=w^4AoA z$pX)K>Pz#7hVaJ48Gl_PWT9mfN6-3yaz{*Y@6KkBWfeZ;cW84D#N64pCP{bvT3dqv zuu~#L0?!xhr-f6K8!LMAo#DG?S0*I! zvc{p94DFRaUdwILA&Vic1^t`f*;oU&_OXT9J35*Xufifr&^K`B4zP}1G_X*v)kD-oH2qaJlH3l19{Wcu2tT=1raF9E@bfpnRyNF*bA=9+ z=uY7u7Mhm)TYJDfAP-e1wp*~f26vE+m?_kRuPmD@Uc}}Kc1{3_H?m~KTNvUH45IzH zhAxWZ)+)HsOeIRPJyUkrT0%ioZeHJ|gc@3V!rX3{!-2&NguN8j5Avh2guMidTEAHz z_N(YbYt!iWtaCa8@6?Z1-r|8)8(1JDO}W7;Ly6ja$I+;nbjRwM71%}doJhvq4}U@D zA=u1OBC=T&|M6$`#!DBns2M@f0u!0o>(9M8VV-w&d|pf6p~EH^ zk#PRz)jo{l4UnKxG|QmSFytBVe@aN&jB*gdupvY5Q}?#bIQJk#hVkXwjuJ3$FgHEk z5pzZ{5g&!L2IIdiFbb#rq%)L9F^)G3rg>Tb6Y*_TeFF2sS>0V(4;mIwsW&7i3u<8= zWUX%AoXov{u7&&ysk0zTO^9q?Lug?RVI2G_uU=GY z^6>9~SCl45ClBw;u5s;;f6zDD;6YW?)Z<3_&&H_iQ}rwKSPmXo+-Y81ws9r6EY65S z#s=ZB5=AO{i5rhLrPmyR6@|!tJ*a^o-xU=JGJ1b(KT8p>Q)@(pO{O1A(z;`IS!i(0 zzSj*P1l^aFMRcLp-{gJ_W8u6*cY+Qo9;0~4c*{>^cVlH){ z(-!^qV)h<=4W#C^wa8J#Vwm|IG44&fm>iJlcaL`>Xv|=(Dm?@X9D<~H&1-JIozud3 z#hgFl4Dj+V(F`5+R3RDB3}iJ_mQ7@dxX!p%I(i?d!vNp97ej5n2G)0Mle~h7rW~%% za2Nc$a*H7CUp^hINvX`dAicJ&tRRQ9H1@nFM~(ejUl1~n8>6YU+)v;h|3jj}@2t$d9Q!^-tIdTsN~XZ%st0p0|h z7pVwhA|Bd2uK+;K`S@zk_JQYLV(R zbucY}&16bP&n^$z{_Z6uD1`k9>qaRq*{9}<-e6bZhzqdYN8Z~Ix#mN_O0&!JZd9{n z`4}|TzW|KF5`xXTyJZ_ZVwTtK869cH)S}niSbXw)hRSa`5I{j14~3LNRqcKB7}w1di{eWYAjrfP=IxUHH-gU$oB9{Ik-~y0W1x)_9zM}^qqUL zmZnemKe3u>w)ggg^0~>pf9F)ZDUZ3{+`(IEsnsSkJ(55Pw_ZT^${daV9WMYUJZA;| z5U~8`-WuZ9yLg;P=e1-lcq}gb=D)@_+C*=V@!l>7v@8{?yBx z<>=h)eEUplXKs`R;~a>IY*tlnkK|vml0F2a%OuruWXxz8ncmiD?&PkOv#%qa_Et7f zm$GoTS__P0NB<1#NecZoaRlpd?soMZd3wG!{|cObyBp7t@p0$FOHSQ;1&Pw|>OH}w z#Je`~U~_~Nz0v#a_TcNxV4vK*9l3K9pnkGP4uj1wGEO3CY0C3%<7(Ou z0?*c+S-h6pFOR^6#dN(u7BOLX|7IsUX33QH&gVpr58rsr^MOf0fbPB{13U#+sXKmS z?-zhd!c>B2;!Z2D{18}0N5Xq}-EZH746NW-^Hp}1$4_bk2fOE?((tR406a9WsOw=? ze(Zrl-P? z(?k$}`daF|!BfDagfXIK6l(|uvqJ@|BbFFTPmXPWoDJroWOk^Li=p(h9jz^_HW;J| zAxwV%gQgwvsbKv@$pfRj8WS$>e%W5^eT80H@sdJqLuv3KToUEXbt)7&$dAhpp)z~*L0bF^-d{p^PZ%{@#0pwjR+PI)Y%{VDXgW-ZH z8kiW>iPP=&W~{oIX9yq>-TY(Jg&b!mZ^4oTi?1EQA2gl4m+rwvwHoT}<7zbgx`E}y z*&T|ul(FXu(Ve*SR;>*6;Kv~c{l6Jv$zouXeO#}q)o;6&M}kC0vX6SJ{vsOk-becc zD`O*OyL!Az6iS^ywZPcqF&FYc3w}LqS&@`&0_mb2`GF@GGeY5Fb`gk{7uT6yw)sYS zpy-jVkOydyaCyoed?MIZ=s^fh)%nwg#(ebpZ_PuMQvF{O`NtZX^1x){BdfmGqEct$ z4e}Ev{|h_eY4UoZQ)&d8uW`^c*?6hgB;@d|e`tVcIM&sIRmzWkvUyW-xfzcPIv&w! z8^FGk`X6g zSJ-PB#wizd9UES29u@{x*6n%I30pxn;zGK!vf+2Id56ggc)2l(U$T%z(hV%bQ74|N z-!{7#^aduk@}?<|FZaqE(pq_kJ{~^A#-6_SuYItJUk8Md{F#$d;<7=k+Q=tqwaC9E{WK(ZV$y^hnzZrPfpFFG^Y`0sFhbo4pBdO5UuX- z4n8nJl#on)z`W|_^Zl$9Q6tQvkuRCnmf!-9dAld6`Nd_1f4k{{dA`-OGc%c98X*u! zQP5)-+nM%y9LY+ch0G~;bUmO;zm3w3a5cGUXu$f*UPtS(U=k%mTJ@s>k^oZe+uBoTh_>g0RGHWK;%dgf!85tzL1 zQdb4{U1qZ9nkdmzWuKP4vC?(IJ%LLbVEWU z2hyRWN=S$>x?30^g0vu=qvRvfB`~^UfOJbqgQWPJ{hohCU}Nud&VBCtx?Y#-*X9j+^Go@8>_W7z88cvDpOsAXsXCvE z@i}{@7F(x7N8Qqm?3h@(Q?}QIv2ywrz2l`A1yr{uz3h%V*h880=0U>T8@$Gxw&Tg) zQDlaiErZlnA^ypE_XE@LeX@kziyx?86US(R#|&``*Dhv2>qhK0LJcdFzXVy%dOb34 zwHFqcftN{!P3fK-RAkR2Oum28w%@CULE1qwt|GU@o?{4@LoVb!2Gs4>`ZN9z6axwkDi%P6VGKWbdu#be;JnAZ0+g(MGve2(W!w7Zoalye)$X_D+JA^zBzoV9{%g5?IYzc&vA04-Zih3enYUVBxC^t-s-fnk2VkeKAPtuhx#y~opCFX=Go2Inu1Fuv6h(#MV;fg3$=N2U8U(4+cA&FeZJ)vS?W6yRzjgRFDgQNi?->d%I&qpF_ZlxaA@{yQEHXa? zfYn6Uh@Rg*i6SikdCjQ5#xOP4RYtazSGGGmt&F}{mAgp4l=q5rrjm>}-XR!M?ulN=@Hevn;QS(X z8b4&4pg(a=GXYbn2y0_K42_$<&MQ5KOTJ(I*DG{jzMpzUffq|8l;VTR@SWT7lm_J^-c_FjrFYCXd`DsxAWOnA(u8kuR} zS<3V6y+0_3(cgq&e8p+^Ac}|P5k}5W8CN63=<(g#+FfbLPj5Ufk`Mt-J?3C4LJC1C zugo_&0B%kn@+9}AC>Ehbgtqr1YGEX325-IV&Lft8N|G)dc#py zld`Nes+$<#?BD&G= z^^k_M%+B~;b2lyBs>0EVBsRPHjSy9gnjX)Y+8wTRf}ERmL>z*DW?IrgbiGq0mAWL7 zb@P*W)g3G4U2L5qeZeZ>ufAF{dT8%DYMHZ8VM=I~s#lX`X3=BpvJHwAa9g3-^xj4YrIZ^{f;h&#|PE=wDtU zeN*-^3=HnM8o2lc@_E}gK&d@x`wjC*b@^wlyCFK{!*lj@-BE`m{u-NE-JVxqwhtEz zT3E@a&IB|#(bbiTY*jXLv8vL%Yu6(T>(ZZkV!$YwbG<^ z?v)6d1CB3)AQ-tXXn~S?OAR06canACETHB*p@kTqm$BLaeHDluhtZx$mHKK-C`@B0*Fx^pf-3To#X-d$L>Lxi>WxS>u3~C*i}5F~>!AVD51< z&Q<88fTqPe%zq;#Gp*4=pf$rw>%I6W*sG_LP|xp;XiE=huG0__r6KNnwFKcB*xw%| z%+`io=r^3rKJ2fXb_whKKzx<-Hz=T`wO*cRMkk&c&B{4^K81M&8Z+6h29zGGfbWA2 zp3=zq3-kg^k|2p+)%G9_+Z0y>(1XKf_&ZK8Am@^V^Hhf<919xTT&rjYAHu&L#xll~5q19?ShF{{&OnOC8_y8nI zQNI0~+=3uMG6ZoDR#X@(PM}c5U09TCs`K1QFVw#KL$Z= zH^n6rxt>Ge)OrY^x5a?%tUI)S#UmHuYFM5AbQky)=rK-k{Sqt{N~gqkwu5_P9n33zn_jQ_5;=53JHT_4F_`OpIJ_S-N#!@ zhjKb;$&)r{0)52_IN(p|dgqh>Ik46QO)zW1jD6ND=~Q-RSQ6l0!hZ%rb}`NU1Gwl8g0hefL$-i zHcMiD@AgRQBLQr7;)Ci)Z!{*LqlW&`dbL!yAqTJGOkwEKoyf1N`|-1<9?xs`^;`fq zvGOPXCe_s6_XN;!7?BWKSC2&Y1u(0=1Rhtxp^M{PW}*RH!?ozr6LQ+OBI);XA<7jms0W#4v%5m*vcuxDbjIydtcdCn%`!jqWHK;$&5|Bb*sUO$x^|JQ%x!+6t zQTXX(byk_cT4V8RWuxt57$!!;S->Q2S4GdR-A8sW3BNs{dWh|!PyYNMh_?G&gqB=k z^&)c-%>R_R^r}~#tX!r<@`^g-^gcGoPV!CU&19Pp%;k$Csiy!%56ujrdVhqFu)7C_ zc>6GQ>pOKX`Q08Jh<3k@b09F+)}^V`nZz$*iIShuTWK4kHJ-yf6GkzO8Cb-Hd)PQXo8HVHP&+~8Ee70*U*?u6sRb8 zaycR;HG$)h3CETGi&~K=`#f)QBM&%aE#|X|xNDE7@Uf^{j26#$;w+--^&0l2>Oq<# zy!%gp$AY8`umC6@M+Bk>;9(!8Y z>mw0lwUWAY$5gt{utY(8T<;dwR>y5ImB|Ct)V)HY;N#3TRIMPolZ?qS?)p(uDqCj? zg*2kZOPgu((C1<167YX&Nt_w%6UUldP}>E$8~}{bY$yAY_t7YQ(G9eTlaNG!s;g!B zUR%k~HyL>H$!kWodB>Tb7C=ds)*MZnn3PAQRm{}HIAnVd-~2EU3;s+Y1DL;_Y01v# zM{$+|hK)&y0ZG6gDKE`83GlK)irFWc>EaYD zj=`oTDo$Tn!70$7&Dq|!R@4Xb6qmG^DD36_XS%>o2GOT1b`w;S5SZ5VR4ncie*~XY zWRNB@YaUXi3t75z81(#|4SKOR29cU@)nAtmG?R->)(hWpC-lQmNwS*j{Hdrg7W%}ilII3CA%znToKa?;5cicrb0 zKP}LYcM<227Br1e^<)mAf{tHqOC7O#Nme6@H^%mV;3I{#$WpQ#tpmoGQ4d=?b4@g8 zixhtho?~1BkDuYthkXps zvwiI0&8F;HvX>LS*b5(wd%<}%VbFm864MF z>mJ4>Y)Uqdl9bUO1P79GMP@AWhs!;@EMO~odY|yFB9~vnyNt9x5k?#SbErrWpoJi@e%O5*w~TUyT%D*KN_C@3`;J{``M|?3_hryrFh*qBWb)Cybak= zuR+DpVJl+_#s96mm+9V@G=Mkex!`l?&wxZ0;e|lPOi=ymQ`>J_pm8Lq-1)@>DVh5B zPOgjpGt&96o8{g>28-In&}0zjMC;2Ito@qRjKK`}#1IO~KVHl-l62EA%%fTQzj@s2 z<@NixJ^tXY#iB6OyF64exC#f`HM44Nx_ARQm{c0{k94}oM*w$tHE82BnE_mqHV+lN zA9%Y90B>^8n>W-PtSNXN@>Ey+?^TxKXBPGws@ZtSQTF#CrQxYOZVxiJXH2i{Lo*!$ z*){4!^&wsf02g@eM*YG$LKC#7C)(sr&>Vdsk||nN5u4mVV&hp$zwk1^SBO}2F>CNm zTZ-$a_ttOq#P?s+^aZ+(TBY0Z%{_4PJ)Q|&`gBNBq!6E14c9>C{XVNR1q>7+k1zi_ zcLK>&s=ex6YLs8Er}X@t9gc!&qw{Kzdo7}iuk;X74#wQK3Fb-Z)O+0wFd73s#UI}M z0D-r9G?2^4IGyd6I$%&kf1}3TUslTd&CfvjR#E`eUlspLo2&aZM6P-9lv9!|h#tyX zZSqBi^X~Hh|Nqw|yrThPB@8IIpoxnTV_afvu)Nwrfpy_od4WnaoAYlUUWnd0=ou@F zeUQ~WhHF9PD0oOzVfCkY={Q}AMgg82^i;RzTVeN`f9Oo}WR-{rI_{`*Q{glGP% zL5f3a4>;bK^xxKu>AEKlzWPi<>5g)@pk)|=zUf;;}IP z{}A>y$>=y6*;w$SbLH3Unu;pv7LtD6nK9ZK#w5O=ro#XlRDfKMmBhVTApPJHb{i`< zNgs{ULt?{$YV2sLI?3pNm#38v7n%wPpb2cwgq$P+NY>of%mt@lZ+_jaS3URR%X!)> zkwuiJR1)9y_f_}+b>iy(xlhS&; zL$w4+Hr)HrU@&UdLD=}}Z{smYjTMOCGSjg(1ud#>xtcIp-2|z9&RZ@H=2`W8-!j11 zqicMm6562}#}g0^B03FQEq442;CAm?ZUm?!1bt{C_Wt-7;JIIU&uCg5kba3Gut6>P zKNkt_ZM7lscgFeoK}f7^_WOVb8;ZD)bucXv?RY{Gfe8*N$ocqPrzLAvnSCtUyDIBK z{qf?Hfkdfm0pdTZ?F6LnRAggDTkFc8Yw1~u;X5)}Hwd1ueL!ntGIw!cF?!}gwVwXSe;0(0XC+Ey@*2;PRW-A#%l9HgluEk(O$8QUm6amuGhN;y$~8Sb1Ku7un|s@ZY6FM#g*UrdSNgPvRe5TX~k z25kDQs=G}}tX(Z+aFc`o1SCp0ZY0S9UC>NHk71~Xt^RA z<>vL+4P}DKk~iv!96NvM?{dve78hom?ip>pC;?*U;XwwqPnD$?RR)hY{fAz#^JIVe zMI(peDbf+lq~+ZD_c=wQp1FjV5E)vYJw1oA;e~Z(OL9Cs4`3`wcYVngmTK0Q+)a+| zd+sbH#{ILA*LGWXxbN2vxZ=s=CLPT0g?@Y&ru#8NZ^(|5j!7Rup+>)pCl;`I?HRv0 zdrz;CD1DG2SEUk1<=~*`C-X)Vbc1DbJN~gp2DD`J9>%15c9X8Etcv=wX@a8`?bg%S z#p%*BegiF^pL0N)+}<|)L2_Khw-XFx4#KIO&K!Oou;P~P_#w>UzOk!v0b-Bv!c+|+ zIjbSKU;`Ar&F>LbkcVJTB#4q5hy>8zOgg?co(+-~fTHQ{G0E3f{u(d^AQioG9}S44 z-=MR>2qi*?{VyvoL)L+8ue9F)@C-uShH2Y}*1qEL)0^}I3!*bNG-zesq*G1Zb@qpmE&B<$!Z+rD=aKs z(+9efU;Oa+e%ZPgCZ%j@aH1HBs6GFdFV!>bAc5#w0FyBgdi$AcwkW4 z{2_iIC~)oHgOFXVUAi+jqBl}Sj9dLwL_0T@ZHq7L8!riI4t{nGq8{q&=clWjKbgY~ z`&@qq%n0Tf6~!C#D|nw%SKmZ();OoLgRZ{FTjoAzlz(^7^L-zA4^de;6lO{v&5(-O zm2wU<`-GI;_JTRcdP-`WA*7i06?KI#9+vYx&};j*2D2D^XXbnuN88@?Y$!0qwwbZl6IsuY zk#Qq&YU-Ph^X^gb2bG-CBki9{o^u)Jl9*?cKcawfZjzMGedLGr0)6!wJ#>1;H;G>1 zq{*H*n@%$lXxnUCWh>%>nWb_VqmAx-jiz#YhD1In{+ARLPz_RF`{b?JH$CV;dGJ2x zW`;Ss{r+mV0z8Na^+O8EI{VzJ$Oq8{zLJ-MSg{<0@pZ0^I9ejr2!mt%32T z5SUJH$D6GT&TqU26Q>$N&Uh%D)OMTC4fwjJnIz0tc!y-(So`UXVvAZwEIYoRnx!Gc zD>c*!!ya70kGxFH;!w+EYr^d*N+8MiSh_JpVKB?=+^uCP{7<`pZq#ZsIh>|RMBPO8 z5Ft!iV+A`k0Wg;gf8C@6b2*DX>q4ft4yb6C{>7aYbN8DxqKm-T{Vq>2U*S_Khpd9S;0_UZa zC)iICv{A-DdJ01KER)B!J$WSV(?h#Ltz8b1`yo`6`5Q7LbRn+y@2s_T`C#{+u{7V8 zgxU4i{>(}GNv>y2=%{cB``uqRTZ5}(MJ`{o0f&hJuZ>g*|AVeeai(-vW{S+T#VcZ| z8b)ZVHnQ4X!v8PezF^r$+l|q`gHbHrL%Ii^mc2OBMO2+}XoCDl4ahRcY-#3Zle?E5kUz5{k zz^0{QvvT|9MVAnOZ4A>p%Y4|vgSs^8%k>f~TAYV{PdwmS^rh0Htefy7fo_(+@IION zb^qrR&p=0a-|{s1F*IUx|A_y?Fsnr8s+HJA%4`x!7T0+K=RiVYE# z5s&{Ac?63Z#ndn>Q#0=J7Uv}`kAxh{-=SF`m0Yp{ZBYD07NW4i z^MPHC9*VJ>p#8eY@#d>X&-Ul!gAD*JO<*{Z5%%r|7wrjG&g4P)B(4*uIr7oJcaR#N zhStw4-@vnER)>p8DLn!T1RErVasd4~S^hq!P2=_v_?(nX*@m!H0rmeNo5gpQDAeLQ z^<7kMN27~72-?gxsJD~pz zy)W-wuKcAl+#L@4Sh29f+VdT6l|Mb$pCX>V8z#*32$mxtF;&dbO4q8bFSVV~5Dl8) zWJI-U+apl;r?-_!ShZ;-1+fAxM{gzp$a=-I5sv3ZS|XnaYU!Z`8C#NWiK{D?l}y3C zF_*7VU$L*X82<|{mj1m9WZYf(di%Q|Zv;P`9Z1gOB!9^>CBRUYaRk^1w-gLp12@j_PSQNVG4>P=W_k+E zMknU~bA%K>+Gi?lmlFn@RyEP&vAAXr6$UXr^w2qw&3yY>RFU<>micAv(jumxFvCJ) zIp9g3)aSL>0F=WeQCZHJ!>?2`@_?2DxPa$)5*x2abQ?qZIF+b4+yndp5>@cMXU0D3 zl0j8_bj9so>LW!f}jzu?cR zm*)63HR=XZC*cJ&j9|K^@cS)wePm=DyT#V#8%gjhwBW68Su;VL%a(qGo|ERG>Zt(e zuQ?(jl|G3PjDpAAPG6v5nd2MXkM>#+PotGI{kCzko3v@DH!wuD?CBR)wS;dJ1gA^0 zg`7lkN2MEQ#~UaWnjfy6T7<|ejOKP)5>TBvI4f8sWFc=n*d~J*Yt0$lttneg6wIbf zz~RYMeRp}-mh_`rwn4KWy;T%jLvsQxbm^0kV+nDIWnV-xmu6kOaD4P=G0W5r<86s_ z3bo%r^bf9{_ng}&XAxNaA+^UCH!-46gJzMGBOGqQ@%0Z9qL)4c9md&ku3V@y8C)Us z^h>$iXi|7D()Qh(tm9SRFl?^9u&TH9N%I##y)}`ix=zs3Y7a=}+TXO2gikJIaWOA7 z(cYIW1Ci7x-Mj5`+_zKO)?$73N_W_eBhZh7OtgB1qXeBE!72o6;l)X-+~Aj4HBK;=wMyCfvozMV43YNi*OyBJB`g@;kH>l5QUK#InUGL{5h2fXyk-74?ecm zJ=hlZe}C&=|AaXJt`sv)FCBhr|K#`bvcJyGA|o|Z<-su&&N2ES>M_S%%+%SlGD&>Y z2@O`~NL7wO_5m2en=v0d$0~?Z7dhB9%bSmatTqFTUDT83>yRP1z1!D#Db9|6|X%&WlebQ8|uPKpn8=K2f)!%`pB*11c|fXvZBZuKrIY! zbZt}sSfWjoPGnA=hkU^)vWEZeui0DeD{}0-$TmFQCo!p_O!*GIj%QyskH0YOCPTh5Y`EZg``c5sL#*rz@}X+7VwwgbH{4O0eVM6a9bGx`et9m=G~ zpdC?3^2?OUxzUPVL;G*xZOs3|Gt@wX<%GKkAl7t$8SaKqez!kGv5AAfh}Ql4;_?vzVr zaqNlwHD17(%zi)UpI9CMkwcsVmvv6!>ThAb8kbzzKZAn}eE&ZxG5GfgAn%rMd|Gz9 zTvEH{COY-cp`9dnrQJn*sAmTg)^HBo13q4>ID+vk|2=(ge5Of*)@M`i(?c}wIX!?q z*{op+d)P&o3L+%+Wr1ewxv)KLmH(zd8noz)#3>1-?f)F{<&gwp=`Hz z*}aWzeTjbTGN!86vA^4N*;qs|Xzlem%KH?3w(Y&rxTH znL3RUZe#$jWd8hD__`PJX_rXV(=XY_q~MUUu~%yC^Dj?+w1|l+LWRAksL-=|5=u-|CJSZQBp`5AjMvJP@(A4?Ann!razX|+HnjX}BGNpc zDhTY*Yw_bsSstH#-h{T&K#oSdi(%o76YH5eA;>fLmKoR+rc@#mKkU)rDTp> zzEX^u-nn0zwHIkIkd2k&thX++*FBRkY>@9CW%cYx zqXy$`{r&GhCphNDg_Uoh%SpxYaUUw*Fnu!|n|rZ6?%%v`+2K1;da%DfEuQA$;Y*() zHEixnysnymveU=xXaDJIa26n)u}Fq{02#L3R(CoW&)m)-V~86HCmXd2tzE?oBpegI zhHEKip%U4O#DdU7C-$Du|HG;0NO(Cu82^(*3x;^9kx6U3w$kgip%^hgS3H~|dq<%A z(VBD@3KuVA;>(I8`L_Ibd1O8_#T-<%1mps8YNXP@j21Fh0INS^b2`YqZR_**s1oeA zX3vuHzEr&FM%mc(73svs*UDnv$x}T2hL^VwD^%>!JfZwj13rge4_?gWv?pFINu{T4 zyC2j}6P8bzSO+gHrjD)Em;OUHV!+DiO1ESo4%$(afWY|e(l%Mh^~GR%Kles7Az*Re zBA-7sUkEC{6&4axw>YI2-+wEO(<7tB)o-((^T72a(2%}cC+-sc791~Xbfqywzll$KQn3vD(RT(*!edFlLPc++-tu8|xB|ae_TN+~mm$^L_Be=xKkF>6U%T9TbLoL02me3jC5T{V^tFX< zztc(-|L_-dCcO?4`uIHAU@L$ImghfSpnz=l%}Hzh&HN6yd{$l$FVnmyJi5`2B1SOY zDlE8;$4l*u!B;r0pRfEjPE^yiO0Dyq6}uzsCki zAvqS2Xdrwx`c8p|ZMCU|aI%UCH5{t?J5$bl@9n6siFXD_N0brOOGCa|_=TT(adc{_ zC+hW*=2357rCH*gWv(xR{HH^-ZlyW+`%Q=0RxnoVGxD8{U_4)*xuR z{O)GnQ2+4dv#4O$(6znf;wuX{qXR?F_afH5o{gzo8=!hwvd0B~ebB^z9T);d=d0e0 z6ETi9FRIGuNyHOSR)VP#7)2W=9>dZ`iWs&^PVp>@W|>lvy{5RQr)uQz+Ocse{g*VPL7#Q+cwaQwOQ@UxGiyZFijn|y@1V!cy+!V)$s`0hi4ZSg@`B`I- z{rX;T0G{x`@do=B5n*Zkz|dnjU}fR_&H zI^%I7fldz#CY_z3!ekwjMCr#3Nzcw{C}8%)iD}>BRNjSbJ>L@e@*8+pofa#7katM# zlarw>-wHJA3H+=S9wG2f8z8}7RXEE@qmsXZ3`vf9p#x>4t$@~RILg6E)bW9%uRo*5VpZ5+=dx*QsBIsBE4x|u~ zCq!F6fyM@cb5WBSejiIj$F*YeS(qmtAT@9PZDhGo=mV4`S8n2S82+5@2Q=?GscZ)O zS>_0PFs*9!T*r!?sC~{0(JoX(Tf#8Ll~1a?0Py)&zgiqQ4C5#9o4tQVpYu}I5a


    6u1_G3!>07IL_SRt&tFv^((_DKyByFFQp^!a&(ka3v z)MC)ev8X^laL2hwk~B`2a*4tQ-L-NjQp<;kNyCGld&qecAuNCZs(*M+T*%SBsP=#IxXs^mgvNiy0fzMQdFCc2 zZdf=V`ABpL=;IzCRM_uY${#trhQkCVX-#NDM{U(qW4xl0<$xyEs=ZlKK>rso_~}Wd z81o6M6^|@$#wIaE;7cne$LM3GV_UCD5!lzT4+J$8dH#3p3J{@%$rB)jFuXUZ+JEyHe8lKc`09XN-fs5Lo`p$7T@{#}#q}(87UUMpZQ_=GDD^UTNC3 z#j8(PBe@)i4~!m4qW=wh!F34tb!Gp*xx(6?4DO_h51WDV1C#o>*gfPg#W9zk{Ep%P z6oxrPSB9?yt~90{M5(Vjbzkpt{7C~=;7qzo2w{@UOF=TotecGmdgYGEMdm>ZzF?Z| zJO4Y1=TDgkGG#9g2o(D(`9sSx@w{DVW>tWu{oEW-^ugJ)@_n+7@c6SX~ zfSHcI*yH>c-(-=J!gh-u+^?1Sg;a$7m0lOsLH>bPLc}XmYu3KX;e&t%xi6TG&qk zr~Xj*KeKvt-e~BEYyI{n6TV=AKL5^gi}MK7)0K|pzRUKC$c`s`E_Y{F$QZy^ZSsDd z62*1Sy2F3Qn@FmAwML}!OyIuYPdX2T*e0U9n6>0LS(jHt@{xE(jtK>gy4Wu#I_RjM zIczQZhoh+(2>oIhz}!hqZnyW!g)tR*rF_PtbgH%q%M$^W ztwS369Khm_s`WAx`AZIfn$|Q*(vI)$eEeC?QUu^;u~(!|z~ZJ0f85H8_lL3alEQjN zz+4>@B&k%5`KNw|Yc4sQTw4p*bCdzD2+_rUW^y{h`#wb?zzo7#9{Z~A*fr(`#6pAd zL!_e4%>iwu<1#Y5rS`!%7dM8!dm6;~j=#jsY)ZdiL3ahrNJlKkgT~PBG7gjp_%%F* ze9hhuZYL;>iD)^T;dJo!^_zp^4I+7+(RE9oD)|0LQV4`wiUyhIEnApD2i;Z}yqUae zs=MYEmQXtRgTD8W$@;~Dkz@3DN7qc{@Jh<76lY5)wv`z}X3}FE^z|xb4FR5K-zem; zV{;);QEp*4FCH_ip!~DAtV~X`FHRn8H)<_Ckh7ib76qBUiNTN55eoSmBL>}?di!9< zX*r=JT6!1@?w=-10!te0+b=7O(^Q*O)s4VBOaN1T?xBx34BJLMO!&pgzqx& z@*O^XIU2%gem1Eq%>i;|Lq;%=DFX%V(S$E$dj_FDI0-dX%(D4$;$6KeUd+ zRbE#;dkpmMR%VSQVPQ=yWRL*F+k+etzb}(Q zkTo~5yWCr&Z!ZB6Q_os=(dR#o_}rdw-Gu!!?)xbJqK%5GA{Fs%&@qKon-*?joI*%yIJs4g2UK{e&mQ zY=5`qxoL>J>%AS!46&|^7N=k25yhbG!q)qO;ue3~6e33G_28f8XdWlW8R~<<0nK*z zb(4aQ`^kiV6)w3MV544)&qs?@?YJALRk#^R?AA?Iv;NEG*CIQoBG<4zvaw#crk$-7 zRHXBB$2x3)dz|M_r0UW4V324-;#T}5k%l8uEAA1(%w{o2^Q#Uf@qcy#2 zcyYUaVd5Bxe)d%<1(#_jmN%2gic?+p37C4=_73keN0gpO-nhaVE!oA6K z91H}WjH`V5jEhr$468gPa{SBB2R+&%7lW@aW$Ci)ERfWF17wcY+^K|Rjh^@fQHGcp z?pt}l`M&rP^VgQa(D4Iyxk~2?rLp6nMNC=`zR2YGD`n*{5 zJZ@~LXfSR2Ysb(|ViqoD>=rteEMr_;t@j?h*kEIYN_!G9>7}jlY7hN$%uE)=gOSzx zSfzHz5lSjvBY0$Y-OUH-;oFZsxG#v6TR70^+T_qzmi<;^AT39c?!p*j-~dp%JrvzF7#H-f~a z=;}SvV^9%FWkQ{Iqefl z^p{Ud`%WLzd*1dmkLz(flo`w#L~wq2BSqhKO&)#}1Q6==QeUf=Ia!nQQfnx`xL)}=A}gTX;H ze$^|8Z7&xLEI$c|5Qg>D9QelI$v(sM_!mEMs|M>*l3aM^VBkgSV#PSvKsLDf%H#4B zn5?d~B3h8qoru0z9an=-C)3O4k71*>xf6=_kZHL&|4mY70DMOB4Q)Mob)y|XcVSL4 zt8htl^>^aSxfYMafgHIfH}fxu8N_NdAHo`S=ZSPV8I_vBG(A2kEp6<0x#^@dK$V^x zZgQSC8_O0;z#Vp>5a90c`9}pAF`tqoY1}X43U4%4JF;HWFCv3sSb=z#Zq8r*r_>$X5cLS+A<3P*zAEO@M9YJeAGbA-EysfXyvQKO zl61$OLE^9r{plA2;#_!Z+VGnR9>xi3&KIT#0 z>SR`9q!$L&Pd1^23Ev3HI#_OpwH|~E&YZ!(kMHRxFpGg7rI!EWHuR)cr}15E!pvw&{h{Swo8SG2z99CmIpFK%cfznVF{zp! z%oQR^HynK)Ulro>3sf&|Unq2e?~F7P9F(8Sk+gYx6L^HzhLJm1E!Pca-$kvfH9r|u z>O|oR-gRzPFO;CO7Q5JYicQTcT?W`b8PBiUQp`WW={Drl-9j<=a|FgSBWu$*d4&Mt zGr1U(rvR0A5;5tSZIMGg zj_G!9&?w5;59ZVUU0Mgn*b5v@$3UedjBoICX`hW|R;ZI`mRXZ-pcNrR@qV?bGvlIP z0#3t*D5?9NXRWK0+sBWWC1IDeO{q;T{opbvmE;&qR0mtJBhr?;tmt{_k3-7$=EQ{C zV*k`p|7C`C>3vXGeqDGAIjwm#3b#h^ENW0nPw;(mgPYLkH(gSnZ?Ub3o^>4!^I8j= zbknULf%`M2J7EhRk45qX!m@T_BrpkSm9$}btXr%9Zjr!M z3jaR!YYt|yDIwx@gWFVA?s)Mb;Xf#7X$UXzVbkH+7U7pWZ6zUqmeMe&aIX*$kt)Y_ zRyOwlPVS-E-WMBZ!)a*YME8h^KEkk5lJAx7!#NgHLZ==?tB=*PrWic&evM5lOqKe0 zlWHs1eYQH?B^JBx5tFmf1&Of@k%yv1xaS3PxY4iJ&B|BkK~2>@%$_I~){JH4F?Pt0 zY^OSE0#8hA2z7#=x$9|`NZNd?_J=2G#yb9g$H#n8f<~`3$57xysv~F}k;?H~A!=IQkp2x!B+&>ILV%NwrNq2pih-ei1PL z4-TxN&Yi+x7vb~Cg`^SBl|yo!y_cEIb#kabB-4Xq8M@_JUmjd=DRkbF{n^{Pxa!hz zY!se6_q50_ZeF`_i2T!&c`aNV<^ zv+sz?bs}FfGlTeBh;F&Ax#hnX%%J+~&=R7=$=jw&J%&a9F2UM1D|WscbZyF8Pqi3z z%PvkJiuNCm`9=XNMWEob0#2E?B6WMcahr^3+c&j6S4oV9_uIwb?M8D;jmZf$3hAs$ zmwI;?(vHrv;~oW{ygphWglN7_6Q+y!zQ5k+tCDPyUg1nw*Zo`21~r@%_aittLFkGh zdJyp;7Q+_SLf2lS77{|T=6<3QcZzWYb9dSh)hS|14Urh75Q1r@(6XXpGX>wGQqodT7RV=HNSK%)g+%hPX@}Lo&Ha&^i zeu}dRT5tkEhcJ1XrUJh!Kuao0H*-zU}c)P-tAV!k+K0oDz)(D{o;U}*4CBX za`?}<&x?4TXd)Jq_Q%;WBN?32NtbOM#e_;Y3IxNtq|mwF%ym@kn*|8=#_7LM51Qh^ z90g&zW$tRN0cOLshqvjnSzOcCY*28~RKa9EA%2o&f;2Zzh}g#v1IY6 z!$I{TlE{*rHJa}^(0$1JwduMaQ4+)`hlF4eh)5ZZ+eqH?`EK0-=9C!S;&~y=#hR3l z69X*SwmBq5UngL74&#LS%EasVw>dj(6YMPQ-*f)v#pOxJrh?v}D>%K>p!sdrYoTu? z-QcsdirBi?&(1az+ok4AUACZP->=Q)_^AHHtOr#)X7lO z;U_p$JdH1cI|El+L$)}>V3`oG%Dd&PS~%7|O!Ic4YK5$a?Dkkv=pt)~b??}(rzNAg z{}pF-a%rlC$VX467fW;WEWKn!q#ub3>`Ar#(+Q@Brr7xvZzn0VUAl1+nCff7H-)&AXg^>?;R*x{kB^sKJ$Nk;Ho1ZQy;S{(7{p zs0OmqFvFfl>;tY~OZC*bPc-DbLk}Vz%e+m`DcyX0=-lYj#@w~3Ke2Au_1=$O%BqM! z*0Ds8v=P7_Ie6wwN&*|QO(1d3WbL3eTKC2TYVoxIawrGp7sI`Av^$DiztXs($VcoZ zegm}+YO9UzFnh#2Sz%acz=IhSZkUQ7mVol|m|N)W|ElLbVMu#~opADDd=|L+9H7FA zC*Pg+6+T`L49SkGP!^_q$IsKtQL%fE;+L<$9U4N;vYi(!glJ5;_hv#=dy?^*C!7wE zz@Hr`y-n72qFugGZhW|SAb|Gfq}B?{%_dPWzRy=fW*#P=bNU}uxr5<6%qX$`@&R}u zUW*-cfBLYGlX6>ws4ew0DA>IMI)^(+SRGYJuC7QnI$%1kp-3zx6za9=A(rfqujX zIoqCK{jH03|3%ciWXUCQ*FS%ZY})qLe{zSB?=HbVYYF+##>eF?{)|!k>Llp=X~FKL zeEn1cn0#Knr@qA*87$np0x7WS1xQbzlBa$~w@T1uJou8tjUTyi>(IJuqu%`j}g7p)mjV%ABk`-IXNC8E)2#lwArUnuop*i6p=+fbKM`cR>A7{EAw zLvv`S4b*SE90J5OHUogtbNWs$wAZsoq+=|2R6WD^D_Bore%H#wMd*UU&9 zev*J&z6_QeHRMpLW__vr5HFZYOH7v+vD?cTQ%CNi_Gzs-8ToFndb)iMfG2}VX{mt9 z0ls8x{8Ro(i$r_#jrW0Y?&?o0m|o^m9{<-3x<&FQOB1Q7C90k5qg38$t2W?%h57W; z??+9$S~~D=s#Il7u^iCoaGL`y?!@Euw^C7ekN+P@*BuD;|NlQ_Wu21kj6yaMx-%2v zD0`HQGD5^z+2k%RGS5ocBZsJLGCP^sEBh{F?@jc3-S_vmb>8FodOjb|$6y|sE4U0* zTxekzx${@W;k_dGp)O%br)M*zLBOcS;;SG>H_DUlP;um|cOQto5~Fg}VkH+g2wVs2 zhZWbLhrzAxH<7)|4HQS&t|>5&)N(rF?CCqqyvZItyaZKbE~p-vVH>nWd<6n}n;5p&(*(Nf~-C;lmufJwPU zP`Fn-e6nsC&VQ#j9;q424gzm4&TG3-Cgb+{5dbctKa3{NVPDS$(rEpVDV+pWomhXB z>Fm<`_S}}1QG%;?1j;&|B|3(!t!f>FBcdj$$OPxkZ@?VYYE91*UnAntjP$~{ySIrJ z^ZJRI!k6@H;2gl-qTN-IF{jx?EA`Q6)N@^iMKMfl>WcCDV*Uehd`pT&sZoTqWnolx z!D8~)JMzo&yi!gG&L`Xe5;5-(w~Sh%PSqxSd`I&8?S4fbZMJCjkKh?a)OWioA|k^W z6tw}1%wzX|x)|8G-RpF8EY}{8N%Y<1poDK~hyCGRhSIqH0Wbjvxt?w87TC_b#s03MYjL(DZd9dMNG93UN)`I%XTzyz5R zgS#v4z?|eNXE)`{imCnrpd!Z<3isrgKD%(VS$iSyXHSDirs`ZfasY{!@#qyFngiNz zPuX@Ngqg_n`3PEWsvV=`y3g@PQv!*vTH<;&WmD;cL%hdy&n4O zR@Gx;4NgYgNSKV@Pf5j}cGrX^{0_zc2p7II944V`520YxEv5}T4g-m-HOI#W zAQzo^x@tlvGP=?Ho>JOpzZUDt5tYD8pfp?5)fWzLK1x)3SLo6L9IZ>|Lj6AxGHfZ5 zh{I)r$AM{9rnfGQsd;{GKNc-lTExwN%nR}18DxMyZ!BFEOS!^+v#r?lT8j4dopY5{e-wDspb9jcz~E#FFoMHwgyvu}Cz0bkPvDX8H<_WLKf zLSk_8)%$D(fGCXNWB(RQbr3iy4gDl(O!%FwxE|tUOVajl7B`Fy?tt{9xP5nS^Tg1o z!)q&x=JYQbz%8}w;+p(0{*_^w3R3WLU*bd#8%`fX2do=yz_7w+7`JPs;7xire{9#B zmGFD8X%@>U#)7XUkue_yX{?`5G$V1HCuy!S76Ju@FEjTV9I~aCb>eu1mkA@F>Gnsy zbzIk(s+pyI4POjejb^F%wr(zsCw{+Dw;MWn%;O5)RXVEtQEIDD=szqaraWi-mE44| zyH1#$VO8w@AlwX&+}^NOLP5YC63GxcQfSEg#=$)7jhF;L5V)_om8kwKz)fu-_WBeG zityxwbJLV`9KjM47Wt{HZaco+D*Il)Zx3^=!}vq2JY8gNLW?A7w7rw}0LmXK?J}Jf7Gv@`lG+auF6)V5Xg~T_0dHuErFe(Wm1Qvc{s$Yln@&}pI{Se$kXJY^#c?ywxt$HKI^E{`xJ*d;H~_?t zT;b26Ts=5pdkmK09z3{1BL#(cOlUa z$26RaSUKXgRo?Q|%RXEiSrNd2AzN9YK_55@ttF^R{D2&|9DG+fRxC#4Fn zmYQfA)}-nI+o!I@e2WKIlq$)h8=P6+R~y`mkHED{b9~x9ui^f8!zl2F-tPCb-5o8a z@g@^x3w`h~{LQxMoH0R|tL3<|cB*_!hL27D7znBU7B&m$hac64gMzM5nBUWs(tcTI z!Lc|dJ)QY6Ci4{=#CM$13?jL_5);5Dn*Y%#3Or$r+B$#hU#O*^b#&4YJc;JQ2D(iP zZ21ChJ6T=1!94MJy^nNM&wG||ysro`rz`-Nwd9=XISl@mcXDAb6b%>NnXt%VjU`FZ zxgoZOQ&if-H22FG!#DP zpcoLr7DI^U_EhK7U$Sk;OFy8#o|)K}lF3s`Hx#c3fmcy2*9DvN{%-^&)$n&n8Zg(p zD4of#efI7o-P4Mj>Hg{=i$MF_O=y%!L9YBLW7Emx)nSrGAQK&|0JXgJ0(qx=NkTJj zUsBIl@x*rd^qB9neUZ_x+2e2qBY>G0!;%UaA50GvPyKbB1XrYt7IkPSm(2zlF|{9A z7wFWwhPCZcj`<1>)_6mfVb@mYQ#Ta85Sw4emBMc&`Y`gdFDbfvVQXUj@z1(pfJqWd zxholbj18PGYPj3RBF5n$#9=CP<$cgD9hE~5`-@uj5{{YG3J^0X;4fZ?>^-e&A>P!? z`8EI8W_7NR*`@gW{h!bElm+BbU} z+2yX1J(2EprB%L*XVS_$BB_uPqwSh#s9~ZaWFXkO^*Y8I_=vm^&|8_i$^)A!B4k!1 zC+3}A)10$d_##EqW%0!M7v6cL(_rrKbo90f4o~E#y0q{+ zqDaW#Nx!4-DVPImvT~X?`|r8~XC=tJBHtGzmL9zCt+v*+FL@6&>|y$U)=ci#X{7(h zC4$cM-~^+;h~{}K#)aq5)2NdTQkjz!lxFTVKswU9<$vI3sA+zeg@8jkP+#+lmEjGl zp4z41Pi4123qg~FKJ#R+x#dj&Wfu*7FlM#MHz1Q71BrlJt;e>6Nxw ze)d?ip6{650e!9?irN$Q)wi=C1%I@Z3oNip>-N(UXpnZ@MqBh9Sww|*_Y;~D+eogr zcgS=%9ZI-43wn<4nlGkfHI4GwAj864Oa6%Kd0dqjJ?<%i@{~Y)bz53?cV@$U^2bqg z_ODxjPA*{i%!qEr>EBU1X~gx76=|_0!+gI9-Jt#VZ>J!S{n||21o^IGSh}au1NT1% z@m|SfPuL;KmbjC_)im|fW{o1vYZDmHB(+E4H;>?MF+@V4+?IEmwy~?y^>V$~>3#&O zDxEp&Y1GB`6M4MBnHD_Ryg^-jnA&G0F?AYz-mSpi)BE!oS{=v^)-XW|NnzeC@&AEv z-|IpSZpJTGwOsQzvgxY(OS;)fd;5zW)kUmKP~@T=f5P*(=R{ZW~>Z}DYF!HLF(TtoE#M^ zGVNkLu2yMiuCl5a5l-DZ+HhZg*V>(Q=UK-uW_?nRt6 zhjzW4#B-Y%s@$QHi9yQ_`N|C1D^`3pjT0Iz0jsNB)0Hwa=CJ1A9$HW3xlnn&qRrDq zIFE8SNG7pM_#~Us`uPPjMdZAd^B&QnwfQskprZLB3kRN0sZhp#Ab1BV*}|nPd~c zjSU?PvB2*tR&RQ$LA;$=fdh&yjQl<-K#`ZuAbbS7cuWPJsmlR=5b7|;~pzC&{ zfZvMaa|1YsY&3Z5+sH=D_#6d3`lidlrbgS%QH=sl2H`YM{>)Gx69eb7R?LP&U9IJC zmCit~y)EX8VnV#O%|R91+dtbu_Imh+`43pJJ1;m2zVZO6l7 z7!*gAmRAH5!4Yik=&^+M|6vlDXb!cqF~`T)C8x5&fYphVbU zH0{v8^{omRr{$jU;i{fa6`;H@WcL4!+=7C@*VM?E!u}VN7*8zO;`*+18Hka<2cgl0 za&3HdTYB_AQ+M>r=gn~uth?2v)sK&!)a za+~>gOx(PEd>)GydZ7JnW*)xYE)T_pm6rMx<^=z=(x_;ulaPZg>SVqz-SE5*C(p;b zkL4JmH9eCoPBQ*3^{L^37al%PR{AW~Vhqx*Gy7YXHLW%D!_uD1dg0LDcoT?@LlbY? ztNj#8Dl@HtAH?L=fJWdg4qLiLL(l48d=`>R$>}LEx4nFF1J^Q|EDr=P$}2V- zyhYg+rmwitx_yQG?QaK=(-G;D-dhK!WW7w zRb}-TVNp0;`Sr;}Tv>KjGJhX{EgK-|y>pEDSM{|Fz4#u#KuXMA$-(Ze{we80)~xw0 zdlc#z>z_I+zVoug-D9fwF$%Jm>uk5F!fLbzEeGa3W|YWCrwx;U*jLwMaB3{Eb+1eO zHNmplISXz2THH+cl-D;1&@j=_PmHN^P(s#h4}P|yLYT`HU9uARA!%@RvF@o2%R_qk zDA{|+n#gLRh@6&%7dL~n{d&z4p!C8FJax1G_6NO;?B9@)8Y$xcS~GlGEr?NU5TGR| zTBiEOG;VLezlo_Gxbv-iJ_j&mKzkyD_bra|-UKLjO33%K-;$jtS^Yzo2T2OXj;GR( z;Ey*oY1`J3Tjw4dx+!__^5>k!orZ4yhooH)(T$>Uh-Lm4G45w->|Jpwe!ZlFp~DS$ zJD6d~B-KK1cQ{+|&_g!#HO0*l9EGH$^W8HWeY1&GRg0_D_-v*W$%?3Yb%riG&6T4i zRRExcYJcM8ilB}1f#rG34$S`0E@xxe~(Q7b|uck^lG%;MZOQ(qlT7mA}qM6QbrQDP4R0Xc=-V@ah6<NZ|X;uEem#`yW;ev*x1-a8WPaS?4(5B3V zK34r}2h54~+%=$rt}6& z+XeJ^CXd|CupDgRnrHx5yTCS;eNjBidbu)*cqG56mdJRz%m#754Wy|KFRfbwuaI7k zqo^B$%Gk`z`#@Te*&y9!8p^JbdS^--4+i#yEd=dFJ@Hvjx^~;OF3ba~og?f3?&ArF z8TIO2X4|caK@*G}C{l<7(R0>+{C<19386)Z{|DYL%^Ne5XH^)b6JLdlLSp~u~uZ?^w?&9Bj_@JyRXj_nOg z!{ok9N=%xB+Cr{g=k*8F%t?!gPe#27s9fg1jnGo(q=)j*M2#P6CZZAP1*~&=?Z2;S z34#?WPJUCA)qN`vLsm*3-PS0{IBhKWK)gT0q${njg5ZS3F|P+JDmUffi6Rc!+PT=B z-<#!L$i_cmU1jSFBs2%N&a@vVQf5^>ySsBOh?;S|kui;4?J^3jP~7X&fz=LGp@{f= z9Zt=B;&^!66dtq+ESgnfs`v|)e_t)^$b2>qXf)R`KN{8!VkLv-0EgL8@^5ew)8(VV zHqu6=+Z4_4p63p-kFnxcbq=U&5k9|LdFjGaj zqu%I^(z5F&ImUYY64_42@=Vk%mt=dEPO?a$c1(-hCK;eOj{xaIVe0%-?l|4LOTUdS zCzg$t4Etf!I#vufZerV>wcIdn|9#1w#5;=5;ieehA>mr(#&_mquxnc`(9#~g(USMz zk^nhS#zlu~t6_9hDW83hcK5LN6y@8N&X#T|fE!`q-(>$UCdn`;o1r4XJ)qs;s!I{=A%xUiZ=K z8kr~&lzrsmw;Q#Bvw(?*&vp#ZIh6q`QH^x7=2O6#I}lm93HW=+_iH`tSM{BThKX@& zT>aR(=)7myxyWs%_R@8LL=Ed0W_>E(L=)qdzV3BZ&oilo8B!JS*n%a84UWlXsvz9+ z>Su`Nhilw4k`@sK{R&-dXz7^^CF=9}!%EdAJ4EvV<%8^pe@e z=hD3=GX@ug>pSPATv3(t+SR%R{q4Sd%c4e0-HMI1%#?4=E=~ePet2MhZcO`_+y#SQ zb{6(!&@q3=`x&tup-=LXZdnKtQYn%E6)o+p&pq$^9{9i$wOYkJpj+!uO^={>X0HGY zSIQc`yH6vqTrr-g$SjUnkoFXhhM225ym}_<1*BE&FutpSOIVFmdPn1lMQ8wc-n8Hje7)Ity}lcD_7-oa>e))opA0t@l3guk^Tj-+^+za5kgZmtI`|B!Zu9wjk4b?)T?ZD zx#SzQdKtK>0_spEDUN3+HiT$>>^vW8dj=ToB}#GkT{~q z2)saj8xg_L8|_;{66r;;ye?7Tj-@QP=pvQat?mEKF!oVQf;Oq*UX;yBP}cB{>h;I>Ylr*B%swr;yx|C{?i>c8sFOX@g02g-taOZ?MK#srwvz_$wIPQ zh{^`m4gGBiFx1^%)ncb1=|yQ#rvEq&>ojL8=piQ4D~d5jwDZmI=AMJ4*Jw{Ho=RqD z@BDu3deB-`CzE0cFaxEj(Tsi=8i`V#4=ToQ5 zAvD|pZnLM|FLbR6(*?mGO=R|Tk`oR4-)mFk4b*vp29=*?@X9ZV^@5ww$fi}x7%{)p zfaywx#p{|##<7P>a|48|%5DLcfra0S`Trdoga(5jarC!ioH_>BASO#WU8K^k$#MPG z^8!B(AQB)~m7Tg&c5pf+2V3$@(=%rtrQ>Oxp zdw5Ol@4u`(8(##5qpR8xO7Hn^pxsM+PRiv$^N#;f&2Z@Bc`xG^B_@|L_SuN|GCo0^ zInUob6#|+@wdn%#Xw!*sz*v|GNiKSkp z_J5aHH<2|7O+EG{^B0btZR8idqT(ZS4ho!H+*P?CsVnIj+lj5w0!1(xS#k~llWF8m zZ?bdmfVR|EeaV<$_1BPcPqhS(c=31Ca(&acoKXZ6ZPMTsl7ud7gkj-}54 z`)6PRlmoW>dWFKjTmLecWx;V~oTcNZ!cBU1CexTd%hziPEZ=5wf12q%0Y2Wv46@Va zudS!aM5J(t1*}SgNxD?b=}Bx~S%NNSn}MEJWr(_K*e3;OGxlrfT{)9I1%#e&fkxc4+e?)gQ+e`QLUfy zEOf`LIFe(<@K0~`CS_ssTr;1*rf>(d+7TQL*(+C;e{pnIcuEZ2Ref>FZ|AxSABFvg$M8X~`VEyUPB3YwNBrG45mOAk6tNUNf) z)J&Gybre43f-KsfdB1x+NDEiUZwUI%Nwug5g?So_ITzn3ckf1iIgucmnk2tUXxJT+ zUI%4A)rR}9E%;w66(m`Edy?Oux3yb9<92Ei>Dq}HAgF-NBV=1%)*Sayd#9BYx9#V* zG*50Yk)5QwhTIa#ateTA^We5(`~Pt!`BMT|vdhp&uP`BosDH-psz}EFh?_D=a>Z;L zEMkBN;$~|QHM*kRsy7{sKB9-Pibx3* z2?-ZO7YSFI`dfh8k;Eq~h^z0SO(zm!{8w^Nc7FAbP3e36s$r3BQ;|>218p&CWj{o& z7U!9%@fOfp3E2+41P-OwN8)F#tCYI;$l8a7Q{GuL2-MzAyp@h$dPsT+EacoXvFWfC zH1W=M1F=53b@9%oM3GX&k7K@Ks66qA=DrIc+fmieS(KUeVCy2Rfu#H`)L1KMQ#&RG zPz*v>ROWVWGG;E2OoTf^$39M;qAYj@DKU{Mg~`6!_t)-U7#x^)_;wRegC*w2s?O5? zb_?pG)#wF_m}Iru=BD%f0jR_Gp`vNQrOA>5n#4Od5aaPr4&WK349^K)W+kCdo00Om z+ubu6*o*Lp=T4NjO8}{d%N9rNTW!_`n<&Q{XqxJ>hiG-(Fx0K0Js18@L2I!fsO)gC z@ouIQJc$cZU2+Z?aqiR+NMhZ6=4gxd%t+B&dDrYPjy;rz=E(P@d3fY-i{2pA9VcVp&1Ff=@JpNhoqdY zj!+eoIFZkHtqXWy`gdPO>?aPp=cK_kq!57LvMll@p@QO#%jzvCN_Ol){&xX4?!?#k zbsG_v4_9dKq(7`@W(sz&25yC!i{ANjal`mCDUiHUdYNYD>M59ZBW4zD>jWa`o5-E= z-tvZum|pUKR)vovK2iHr>F9h86mFK!+CK36l6M`up~&_P+EuBsG+$JxTI&sU_2nvd z4*WW#_A+-u)k6vFM!TW?pm)T>3KYfW$3P_+*hos2@9JaY_0{$_GJ|7pj_P@? zjL4gL!|W2Akpf&71@^}no$@|E$c@UfL>+*BYy<7uYmszQ@WeSfP;0SLdmsesj|{q_ zjBKvlUVbbZfjO4tjrLM9P3j5Q*B=jV3?bko1fz>q#Qg@(y&G=>vP@=K-en~fqBL~t zo}^iYNe<>Osd2s1Y1%)Lt`Ow~%irXYv+_xXc`}<vb)WG8Dy$%76`AKdOFyq5|KtXYw92f(>;YDPh_tFFI;may(}cm=>mwn z*PhT9a7$_3DX21dNzM+mcveEiE=@kNpNAzd#3pM| zPkk!~G|I@Kg!tw9KYRTPns#;1-g%|In=e!zdKp^bLCFOfnK^HCRlLWqK-ss$)Gi7r z`>a|t=0K42{*4ce+^YSJ#Cum?=$TNvA5k=@)nAOglOZKBH)=bOx0>ZMTxS(Dt?;C>A>I5fZ;< zINQs@e%*b*kIbjhm41JRBh>W_z&H?|j=75Tlw`Fr;$>Z*3Eu#O&(}4viO78q>#)@j!Qy_KNEmC85zEV}Vwyk&Hb& z7T!J~A)HT(^fmqNo%+gc+?plgIJjqc;IoWw<0))E;SpC7e1dscubP)SV9=%GEQ*vx z>T0q#+$SD_S-Cgz`uY=|S5n&RL4;S@aX)rt5H!J!0dn-c094~NtVR{ZKdwiVX9A~ z+Zh9tUf8Hav>>nkAcYi&!KaXL_);z4?J{yDC?K2>k}CP<>PN-zDpZSsX}_7TfNxR} z_JO_j$`tsxo2ah3)oi6*(5m@1HHcW*#nZuJgwj?U?r*t3TG_4ez@4 z&H*&b0MadUb^CTSY<5BwGh{g8WGv5L)m@zQgJ4mh;jG#(7w}5~Iu$Q*RYH7)eC_)C zk<3?QvLSX!YQ@!)JBz+-8RL{x>v)4bF1OBIw*4SgB|rJLcV3LGaFH8A+us9Ov@k~G zDX|eEZ)kdB%?id^;5-GxrZ$q4)$+^8OPVra&wuKeU;X{k{gGZZ2&mt+3Hn9Vre5`e z9nv|a%w~M{FT3NA5XiOad$Jk(wQ(3!3HhI)EKwb-c}ybo1JOCa|CH-;g+9ddBW-~ASVVD^Jgn)Y?X3A4=CSoMOn_m{S3ran72NCn$6{2t zcAI=mha^!LF%{bWRCASlk*c!RREethGA? zA?Rri0tEkofayd}tO7JpU5(eT{x5l{R6WsMHOiRO**x9s!h+! zO}R&=`XSkteerWWc{ZcNX+ZD3ULe7@FFVLbNPyb0+%c3WehOVB^`RyA`LsrDW`Pfz z$ece&4Ep3=MK8|Y4zS(%E%rrotnK)XaN_WaN%5K2;1$-~=11g|&Z)E&k1Oe7dTV>% zY6O_+mwqPE!){D?oSb?w@^BpsJ*F_e9b%Wx%GJL&gL(DP%7z{?+&Hh8nC#`B|M5y8 z98KEZ`10ED^gsJ`+=4_3 z7r4Le13s*fn&69`$&JBhu=(8`lVT4o|1<-pbh%vo3K%T2BK1&b-*t7u@j*$xLw+KW zKlk^eajd-*%!{Mbq)|ofpXFe+|<1 zHClV#^-mgtiUvq^SaVzFv|T&q-xC=0=wDZkpXl3uCGZ6Wyf+a@_7Bwg8c z5o2yiw}|hhDhjfN|06t-#U|ER^F+>qxT;Eysawm~`DpfG%_RT#p!#V*!m9qB%TD@p z4^mQHg;;l*2^QhC7YYi@VtbD{7zBO!qon>mKn{15-nWkvuv-70szYs#Bk`bq6PdNs zxo96X?>%dPAS?f=GndBn(!$m5%8O~$TDKGisA28aP3?um8Z@dch*Ps}k&xDkWa8yB zXrFimQivCOi^FG8;H@2jGj3+@+d4k3yOnDy+XFw{Sr5Jxc2e&^AI4Bp1^AiOGYYUBMMXa8Mn~*wCOc8br=JqOo%IbuYE8$YNLh*=!qkK6 zl619dx!8$&J1!Uz0;H5R_tVp=@$rwMz<#5wb~pbMZni-p|0 zIT(L|a?0DhC)V0H@k%vI((WT`ln<5X-RQ!uTgfbvQP4*HDab+0L{hsCklXysaSP3j z1i=*FC1kTCb5Qa_^{|KTK1&4xec;mG5itJ{H1*Eb>>7|OS0l{i^$;;HV-mS{$jx8& zKBCJ^n4ubQo++ope1mlz^lId!n)_c3h%{&D^>cqn!@M*34NVu4kJ^~_pF8f_{Q3L|^>F1sNtn_EjV+8RbH%`| z;^-fOgyl%78jrnqV-3gqJq#JYtif#4Nbz*gFQ0>ly!Y$*QVUXl*!4ifELk@G2%8%Z zc(o2;^|98@4Zs2V1$?d)>2GkD!gF;PbQ z3f9v%oY*n|dPoUHX4lPfg8G9CBLmQk(<;y2t7;mm6rbrW!R5Ezl8_t|V2^#>_2SKm z-;1TRU1V1H-Ngl~2d;<8_!a|*uG02r{*l|G&sfl&91shMM>|J@{>479qi@_}LH7)@ z6`2!qtEOY2_vO2Z1M|$r$@7<)!qM5^t#7aJV!J9hDtB=izkodFKJEK-)Y>t3OB)gf znIN~)ae3_acx=Oc(+AL|iZGQaXdWdtNP&Dh1EynCZ`?qC5nZ01$_wy z!soJv@z`1;}WGumQRiEaODl%&CmIcYR5G<0+!x@CjW=|xC$nX zEWJP5U=eC>^cyCuhN{WFrF-T1e_l`l{`z|S3XXUi?i z)49TJD|n=cPo{2R)Lk!=4gPm8&D=`g!(S4Z>W_>fw8isw8Erh)p@e@!ndc z9qiYxjGUR^a`OkSr0<8hm&OSeixdp^R3DJVynF)7(@AgRDY#mrg4#7UA5;Vvx8Aa& zr{VL(-;XonAyjYM$~vnP>g_|u$H7X8`IZbaF-bR8gf4AINa)|fS;)LoNp_Thw zG-Q*+yf*^;w;+RlL2;~i^Sc1|iLfe-_6Ll+MQLt{2DPelKIvLK z@zPkTjy`tfrc_+xUS|{auI4kK9pp9L3@G+I-Un$Jy~skOb__!WyJF?wQY<~mbbzlo zzhjIRpKWpN!>YW!+s9P8zwHy70M{6H^xE{k`KbgLbTp(X=@jK`H-8hTEeO7|Xz@oN z4@z-GsONNm==*6A^&vkpGFw>Ze9vJH0-pZYgW4iN-@rrM5 zUQ4Rifo7+akU~-)S5$hT@~*db(O3DRFZLtlcSzUHd>BQ+mFK&A8#a-&Xux1Bpbm*k zNmtS;u*>@E^ivck(Fp+aClc1X*=hVoiGxA82$CYqq79u>c<{1nVA~BfcQJdkkQfL1 zh|6--*AoL#n)CYOlMR$u8KAlh4Q#D~&QQC`E7q2c4v=aGc9Kw*(kiqMeM_mS@ZoM% z?=6I@MZya@y`j?C4g3Ko1;1Q!@RdpQxt&J#KO%J% zG;g|lZBEQ&U(B&I# z>t;z}C$=TS3Lr-3tFTU&%i-)!D7sMOky#19jfnqL!9Bfp|6Ge|+L@Msc63$Ha}^{E z89tIN$%ohpj2I9$lhVhq4%51%a)W)>s4@LPVqQ@~c1{IXp$+(3d|8FHl7pW;Co2Ic z^XQ9)Afh{Ab725sjcVofEwyVW!>d}a94w4tVRHT#J%wY_06C;X^>$_r_;h3&iP|FS zaZFYBeO<$3Q2C_y$kM(+*<@aG+>R8)DF+Bj3x7!Ny!T~_!5zWUMshJ=gG)t zXTNqXQ@LK7jc;*Y?3hYy;}MUD-mJ#p-$6&cL`W3Smw!J zTG{oyp^w4auedXNL~1j>O496p!E_7-{6pWGhXP9~DU&BQuwQIlsYAkFvyu0fq@Ek2 zIYHSn&}>QHBm-~lwWFd{%k=r=T(**5kfEC)^Ge*p8w_7tF#z8-VjSZd*Omy9xmmLt z3HT3ULw6dS$Uj0Q_b4$d&rSC$F#HVT3TRF{J2^U1dzYT9XkTs8g%pyQ9?yneRLcy8 zE1gCagHx;gH*TXg~b&<;gT*d7Qc6@KH=vS-65V>DTkL)Rja|51lTT+QM0K0HgIoF2#<7h&apNM$Vm=NFRN>Vw>$AQjITmQ7^+bCq`6xJ1@}m0EMf{870} z%@vYLHWS-JMEzI}T64X7c8f-w`>>xAEw#Gcf|MSs>CR6<2KKQRM!4SS^E zPW;%laF&kXu^WxdY>>8g1!BC!3gM3Silyy0w;;f$;xqBWl9+3WuM1j9tu(faNVsK;-;qvpE2l^=qxQ@s&wRPMVS=g9U zgh9XA^gjAa3$b}_Us>0UKUTt6%TOuy7pVy85A6ntQ}h6fsB2+No1!-)*%(${{I1N1 zG5V8MpwZ5@Gnyd-1v-(N69q$-2EPNduSYcQo7@JJIy@0))I17rKj6oQGKwTfJ=*Ko zDq>KC3BrX^VAMHnce|z5ky;`+6w90W^^&2`v z-L+0q3tmsYthmaVSj;9N7;2Or)Iow~mJh zNCE?$k8sW~jYVSVxE`>2lIN~*t;}i)C^q{=M6P;dEXQE)kG&G*xP829Hwil5JA5-V z+zP(=w_$mK;kWY2X(VcW6acd!Ml*`>pHBDd4I~U(ei)yGn^lUz{D@YFA?fu)+v~I5 zn%TvY;aiMUAR-?G9u~l;JM9h??~=HI1>0uSBEeh9&d55K-7rn9r1|>#hH4Ug!tjvK zU8~X-s52Z&`kpu^KCHrN=UzKi4EOF`e(7$kt=~VJ-tdtQqhEUKv5&S0TmLoJg8OYP z@VD7}-(I!!jkNT-gsbgkXFdJEpQ`1>K+J(=H={jMnXlIKl6BZyanZ*lPq{-6>fh!m z_Ku0z_d3DEWZmLgAIV6uL8O*MCmH!S+it)U&>Z$@q=lU0L+ZNgoCoivq2fY{Lk~U` z5H6Q9ZT$W|SHDggrYuk_@l&^p@hxLRBIve~yf#PE_t3;XB#_`znlMdhmeiWsgK#Pk zbR#-zYCtbYSN0L&xaFuhnQ!bM$_mAkX=#iYaue(TEmt7FT%*v0&o7LEEEcke0empt_d!U23( z0mSot!EQZPj$@B0s8e!3O~-On_*NU%{yq9h5`Xq5GqnmlI=BiLcF2{<)W^Rsb+rXv z%xjZhPa8UZDrS-}qf&SDaatORlF!}U=)kge9U=jYK&QA&K4A07?z)qo247L)Pm@M@XuaHR^W&2^FE#ZSuq91{&BWE;cPj4;T4!K#TZmD_kCAlPhj(>k zFIM>5Sdk>Nqlo;5+afzB&yoGZyvZK^{4{_ z-gf6KuMq{&#f9*g=BB<3-tb(HB79J`?>{-P=AzTent6Syeoyz?Q{ck`Tj9S!t#mA) z#b-$#q5bVFW8mXDd$^jIh_&3`Rdf46`)B%yaZ$U-9$;Kv#3RtHCC&aIixTxG;us9# zoiVrTCfob`g6})PCK6#R8+95Cl5SE!n>XwYKDsRHYW}IV{ zN8w}9Iy0J1D1Qvu#7cojyS;ihUv|FA;w_S@yNipJ?$S4~gzGBedsg8l(8KXQ{%roA zSFckLE)L83T5J2lcjPb{687w6JkyI&nBdHN!M1F03TAJ)459ppyuc^T+c>PML>je= z|9xHWxNz|%Si7PS2K}yM2c)H(vF{>5ig#yg?sI|Qmu%LTKyrB0TYY9(^#-h0iCKb# z6*mO&zsR7jP4(=sERB z4sY17R zv8aR0gXc2mT%=B^shj+qn}O8Cmn_LBK?WviU1Q>umEN!YjrU8vk?$_J+0YrD0@#s= zuIXbKgX#>udApna4zf-5&Nj z&3&Cqm(k{UB+fBTxBRYKk-wXoa65j0aC!HsVO@D1<+>TVL$$6~=Y~VisHFYLyI{f- zz30K}Ziq>w;+H@gz3nm3cM=h*IhHrFl+-!0M4FBr3iuTncM8pAPJahSUmNvzl-Hl>LBbvJ z+87T`Ntkl~Xy1(qgIotdk^7(`Q(Cyc1oaU2)$UB}2Q5tWtB!NDR zKzDjKXo6q)ow~tmVG^vO6BBnB#BTcy>vv@vzBzB0`FFRx`wiU zezwTAirg}5nf7Huh~0Ejoe3*Y@8b>nBfzoqW5fBjM^h1mDya6kt2gwbiIT=&%@cP= zfQY6BcLlcx9XxSUnIa%ZwHA6&dGQakIF&<0GHQ?coPDv^f7pC3_EgkGtBHv8+oH7) z=R1U#gA2k6H&$xvKBP21N~fc$mn=q%Xy+(3Q7q@}265WNpv-GZ8zQ}7?{?Kaxi&3A zX({OgJ{xg7C5>}@AAH>VW^WA{Q-#mfy6R+~_+x$hfKGQepDMM6!GPnB4jS+6Z&Kld zWn8od5rOuK`j50v&G!4XcfDat7P?`J@8*vWbd=VCQvmfd>*r$R`?p)JrMFmV%3$}m zx24GUYnJ2}^Gc{h@O9N9Mxqo$#JJ~Tb)&nP_K} zWd|(jyNbZp^2)w9da>vWn}n<{qAv#cz}Q43F};=w3JWA$#>X?tYGGx_{H>+`w>A@R znG=6+2N)Z}?n$faqIa;O|AO~P@|&1JTk>F?b76YOK62$}SI76tLMlBS5v^Ubg+?*K^Tj$^T$WSIop6S@^0h_jL!x8loyq6SA4?WcR z^(Glbx4B*e>O*s3aqO{qlO{lCwCaLCf*##U$N%!DG$3XhwI2VLTiuLhrh z-ITjPaGui7fgDG6{gMy&L-Y^N{PQ7xK($Hr#a8nfIYx+Y^V zLhx}rV&*uUeE6r43K=| zD7UhMCYE;xKG%ievxEljqc36lOi{bpy^?l^JD@$TU2`%C&=KM5|2@hYlLBwNlnkwb)&UlQnBoZ^$W zr+E=g^=?Cyp}4! zX?+1*$BX1Dy8^X1BZJN14E#zF)-u&b_lWt}8?Nm>W(EeGGHGN#n*L`L+NeBE49Ta? zDc=jlyd-7Cb!{?Rm4Ysz(48nR!_WAw?<44%XYw-+AHA2qh>V#wzi@&|T1jQ%pV??# zhBtb?uk0wkKbt6D%Icati;_$|xZ>_`3}_lY{ETINk1bfQtt{NyvQGoD3CPGtLh=T9 zWHT05b%REZOY=dvpw?6Lpsgd|#mSZMz_l$Zl#c@BN`HoUA-Y=AS8Vw$5AY@u4O(Ae ztvR+}=u2%iD<@gD(Ab*u)F$7q0BF4V)EFRUAQ(jx(a(gW(K}>-8x{E(S@` z&*XqhXj4ykqI~KUn4|sN$)wj;B~W^MCAY`_KM#ORL=K_A4PVgFu3Yv1iNDtyIWha- z;$M%g-p`OT7FNt15m$He?i5R%ScAXEx?f3dR&nI*g*EGBYH*(X?Ct0Q@N-L$o{p}a z!zAzy71}V82+Te2T3ke9U$F*zJAndf#L&z)54@u z1Y;A_0&XXe`X(5i0qdQ|JBt)c{;)os(R`fLhyZ3{$&U)8<8oE0#ojQGe@1%0@86d^ z|LQpUaHaK?gPMJ6b3-@m3V0}G&M=>;_H^1lxrLr@VWIEi_(IBiaR0ND z$UN|?lHm;}a_W@eXM*7D^dd9qk&Wc`OruiXBOPG0#FlwbTQfHLDUlJfXlLD~kPS(g#r|j$ijo#);F# zkUlJJD4TGd)$IY0u=Qm01F3v7DD-&Hk%J5}4CYS#LbF;Ichsaxb1zAf19Bgmirau1 z7MuL(Ncgn&`y>c{*$7{m6-#2k%56qgseuVNjwFfQX}w_|wg5C86ZyTiFnzwtj`-vP z3x80nE?5#yZw~OCr_AcP@x*^W4~5OhGLHTw0UogWkgfR165ZY!FfLV@RuSZSh^(&Y z_oPo9-hD!3F><;203|2{oDwnW)Hnl z8haRmc>M|QnkEVm+L2dEJD&sF$G+lPU9BBkX+!jr*|kv<7C_O)kDxvurP8_5F!xnl z8L8)nvsQ5cchl|gmU#kUxy1w_rfK?OsA?Mh+I8g1K8*#+?-p@6gL51kR;D9?VxEu9 zRwG)_Dp{&pkp&!WEOD8QDf9m$2q7q^9S-NkOeA~cBCHP9|KZh~PeP8RC_~Z!vQ$Ma z=qJSODVzUqJ3Z5CDaz*;neZLjg~ydpkPnmAo8!*0svYKM^wh36P(^V@Vw%`2H_s zmzQW1cIMfOdUTjQDa+gSw}|gaWz;*rovz+DjqM}IfEjlqJz``Yiv zr#Yq=+8SwojCHIxkIkCRkH!bA>gKF{L+~oBW{JDm??#)lC`3rn3 zZ=LdJ6U>UQ>7_aIkp68u$9f8LRk>(J$dcFq&33`U+kcN`&T*;Zob^fO87z(m$84fd zhdLcnrD*v~!Zlvn?4*#KH|0yj`shjN!l;k_*erRsiG^6@68|u8t(C6aBYA=hsduhmO&WI1tv}&^q^pQ zL>o>aJFO_2!(7AVmG>kX2&lM9yPw8IYaJiOhr){wpBOW0aVU=pj@*7S4a8bnkd&KW zhy|+LPR$CLHP-^x4OLxCs+Ira-A)q}v>6E( zb8p51^$gwuV%I6W+nK?D=&XHyZfH>2pnzhTD`fO+gEHqTW%gYTRMn*kS&rK2EQtQ@ zE(GYuOw`{S{EJ+Dx&dpPDy0M$7nkL>BCT+Bi1UPxkK$7Q64O2FDXGFd+Wl#SzvKKoMj`T(R`b6jGHZPZ z+^{PQ^UjjIxaf}@OBCGS^3S&fF9N3;)wMDbV(9iWXUiyLHp-jU=1M|ODz&GIBbHG3 zTj~-B=O)R|boXM$9LHAR=u+3KEEf;m3-aA7=ujkiBBL&`4WWn%mtVvBfbhJKX`g)Y zp@_m)nI3{P6N{UL@jqdhHYBa`(VUd2Cy}KQZ6{A6PCX5?B8?Bnc+8eQFq9n@vjRt? zp6i$cE!X$~Gpd+$K0;y7K#!fc-`8T_`yT~p3D=q`n=imn;@>+tvH0v8aD7S~U15T{ zPkJRwpY441%ddg2;-}1Bx8PiNN{?$W#^vHAX@2%_@H0?Tl2Wx2-BX2`GE>&k%g$8nJ&GUwnRGZUT(ChfBQ%67(kdZrq1c_KkwP3fGX>SQB2m zw-4*)`w#nc{l9I@8n-D|t<+F-Him$(z$70s>jMlQ1D}-~>s-GL0PJGs)?)Nr2O74- zprQPqCTE_t-NFts5Jvs1{x}` zwVoEq2yj_vul>OA!p%;8#GH~f)#+p2)u5@rQN++8t0DSx&Of}(3j-NSs@pOnYh&A_ zARdP;oo&s7Bw-auT}~9|qrGH0UYh+B(~j+=jdZcJV>E>+@p6f)9|WAfO@b%x3=~ct zmiN@6UcisBUd4i3w%0>HNaUDCRRCkx#Xn=V623$ye@x6!pI!ez zk6omJwgBKha>PzYq6OXCAik;aM*rEXSm5})>)+rHywduRWx5J%jsE#U4&INTDsI;r zE!mt+0*~}6XKe@e!PAzhEU8Cl30~mfps<|fzzU4;(k#P`bUBUmb>E<3Ik?Ef)@$-=%N50xrV@yav2BAKGpRf_inp11dAp z`G8)ospqRbXaYJ+*fq3>YQ$Y`p?hkS|GdKNWL^*0&z3IJWlviUrVKpn>WE1MrZP-F z$Rz*CQ9fjr&CNY7And^cz(gkHd1m`@r#1X|AqX25iGkU?=CIr(UjTjwsFnAO%G=rf z*g;$-g?Bo9UEf9jBu^6b?GW|yv`k?bJ|CLWf?ty-+~{#DH%&$fD5iRxMN?>m^i_T3 z=^@kt{&qq|up?%VZ-j|v(vF~f$#TI=5s)8%Fjo^C2YGdD?n~_vS7oW!PN1`pkhtV& z^@zxD!O9p&bnu@iFMJ!aQnB{Pq8yzkiluA{7ew$%aX(~tJU}v9lvi?rbJ#6dm1mh3c+y`5O zFZxbIRJ`p8-NrZbMfss>abKk0iz={Q;^^EGT$fH!dS!T3!b;2)UU2pJ$e@; zM%hlt-X;F2k(c7iD;7UH_c6JCp+sMF4a`J784qBLC{#^mvolaygY42U{R6kcI4wIq3b5J{v@V1kfh@s4*<3J+XwxLe^`wOChmVBK{6d;xjiazzmLELBM4nVE&JX- ze9X%PVNIpAx-Ztc+nH4VN=>FB2pB;MsSinY$}TG13Y3#HmJkYVzsW-pbs6w<%MA#q z+qRK6y%MC&YH`uJ;`T!_lsWMne%dGdeWZXV!3N`9jqF`7!Dh7^JHLvf;fR7#3s;S9 z-M0dzwop>zbVs;tleRTHPRG}InRPW(e(~r}F9qO4*$yUEZXU8>Ow5>W6=+dVmGELt z*Z%(JzfCV$1>D14bvlFO3EkK|g%O#EN{cdYw^N|_VDsgQy7KC?hC_RolJ(+8vYn|% z==XJH&p<)EUHgDdz32=Om7(?DUPZ!gmbFnSzwtWX1wG}t(Z-&U?gAJiXf=xGR4lV` znp|kFT;Ng@ixlFy2bg^fx=2*d4C=TtPNgIc-|E5jslbO(8AVn&Ew zNftRQ#aL&k^@_=+zX}FUn2%O;{&`Q+X%xJG|K`piEtDCGHDq)(m-C9{AO^ceScdsq zKZ>N+())%srb*79l}MBmPqrX>eV^OI?1g^-POCg8E6F?j7KI%m4$EjE0FE{-1Zm}K zp@;l}&_3>(!isxE+^0-iV#)$d$l- zwR)1kyCs?A*<=k*#i0yt?-iqTFtXcj19*vo5buwsq7)oKBF=S|c`%RN_9$gA@iC%- zQ#9z!D66YBoANv6?^ht<%BLrh4`Zj0e80{0*H+uDA-5;WGF#&A&L(6ba*aOW?Z@}R zdYepwYyM4O!Psu|Nmipl*PBV4R$9f1I9*p-+*iG~>Wx`|2tH<2=q~MLeXcP)4&Zp> z_BV6N+4T?cuV8UE>erz=WS%}8_ass9^2ePRLIr=kDdZihpxG}Yt65}Da6OYZ5>sq; z%gG$eGR;wWU}HvR2F(tNM4Gu^S-szkhJ0(zH6Fyf*Dym0T<=a%@8&?UIC+XSxLn+n z@`Yipn7;=oJUd`vEKEa4XZWRXc_%1qyx4)T-*zF4aa`}n{6 zr}2_7j$W3NXDqIAO;NOarK93dsFzM_dnO_JgF(m|uIMP*qR+sW&WpP1=?kB!3D=fZ z6ZPeiIZwWUmoX0M`>DVsLJZ1^XnlT$-yn*kT1CTY9Pl&y?_jWp z&E19ViL#nNNH2DtmHV^TgLd|(5Y*VI7h z6`PXW>+Zc=4Nz6S)(s7O1}#^_qN;B4PsxlatL*q8z~mW2FkY^W`7zpVa>$-m5s)J3fV2N86g zAmUN>>%RrHRAA% z*Avu8`kqe%jsxa^n)t9?qv#LDXv5UOtwsBb8M=?xsI`&JP4-c%1g$Iu5Z`lZ$L(Ie zDz;`NhtEd7uK%X06VERn9L|1b-Hgv3E4{cRdaiWI$pk@gGbNW`Qi`ITwRoFk z-0+7}U*{q)r>&YDQ83WOR2tgYXG$}sFA9LFHCr1QEeQ{)!s7Pxsi~3+%?k>6B(2TB zY#;_Ze+TA4R0-N?V*L+N#nNn1@gvGJ#CvOaHE%Eyzphr3nF#S0~q`tz)R=ojMokp8C?UyFj0Vd5TYLlHSV~l-$|J*xZ z7lOX2a&yYJ{WJ%gg_u-B#J4>fp>~pW&))*s_V+_cHMFjJqk<=JaR-c*z1iH0TVduv zPr*3Sw3++?U8Ef9NF`En>6NI9CgQf{pzmrN2Phmx`%&EM{&O ztLLY@90Yl-S>4P`#twKz%BN3=*&iY=YBF4=a@XI%#72Y5vG0QTM*0Utkc-u3VEzaC zb;7U#u{;oL7QbRhGHTSSa$(8}<`TFn?Xx-f&utZ8-WR9uFwBN0Z*qWn5#%4aknez6QFo4A?b?Y+QwJBdc+#vK44+(+x^xmcgsAQpgsXEG(0 zUptMzY&Dx_a-Z}E(06ws9){K~3`gQ_^R3xDEnSHIA|HM^Y>`0ThlB)+d^8B$|GP;K zfsbgZe^-nD)YB!Nk?rMD#SH2&<-cUb&kwy^2_Qtgg6=~8-J9!$(CIhQ2Ph3|wcL=0 zfj3OqFVs=nG?MS2J5v{;0#YCB<}wh_-Nx(mk0)`_DK2$w_gB9sa{iELxUj+_mnB6u zX(K5w;h7gv*{O-YzW<^=-T|-b$x>6BB}ct$^J~t~f5Ac7rH@%OksB*+@fxWXaKXH0 zuX8IeQ3embi$)ug%aQK&dr0l0eZG7j3ab>lWyDPZ?q+|^g?p>l&Vc4bgQZUDk7ft2-BIQ~+nyVm3gm|W(_1zERFl|KSM2XFw1`wXQ{7yY0eob<&D+V3$ z%p8pgjBhYdEH0oO7XNQZHcgp&XKMHWBnhU4xMnSGu_4Y9xM-3^RRCDL_{3@HYr%xS zB|u)FHk3qWvAI7u7_tiq%mi*M3PSZPhqfx5sje^(^j_N+$5EE-zG!>SdNi2yMdVa9 zU(C8ZB7kgsHYoW?i_DUx{*!b}XfF+bpyR}8#!jxiDpz=%@#~y#8d*I0 z@AbWoiYK>-$Dv-GdY@!4ocXsn%MHNU*75eH3@R+;=eI^2O314dp`k6k0%-6E=>*$z ztpe#`Mlb!@YiL8>n$NLU%5T?;EA)MU-fUeM^^44l%lJ;1%nPhH0II$ClTm7VUW#Dm$6dZ8UTGog;x z77mQq>Y#!qYoxHOEK1^o-Z3NRoyik=Z3P6o-~ux*%4wTveN_^T)8Y?j8%#_nbW>1>$yw0j>5qgbMX$E5lSTDv$}a&tP}6K$`8# zIoumze|7@|VNoEYdN|L29ll^m!9{mT^46Zi*5kyYlA~WC6cND&knSW(J*b6mH;Uw8 zxrA?K5chVrPrmj1k-je&1i=H9jow1wzvZeQk8s^A_}VwDFyx&f32v?ka_vfuGhn zu*`pSXZD|_?Fw|DB$kpj^~iK~WsfD9LE$=Aq!QM0xeeBsZ{Kl{itCDlBo@#rSxXPY zf9+RQUqh?0=GuHw&1MqXC_NXk@Pm)Xudy9L!fCjGF`r(G9+@?}mi#YoPciVzgiOLo zvbE~3o5SHL$$|xmBYIDa9T zm|r~-g@}dxt$S%hN)OCY)%1HUhPM8LEnPziZQ(W+fZ5R5o2!y#6d1%(Cg8d<$H*iE zp!!0WFSH{o>#O_(kV{lzq{@C^s>R62<`#WaE7*TS*Ac(9Ucrr(dj1IWavmM1M(%63 zPuy-HDc3~b2Qb@WDA%`ASXX?83wTlfa(PY9%!s3oIRRg0TtQ6drpBlLB*O%w;gjjL zoFB{lvDc<2m9J@HY>MaxXO%U-C!t-^62ziLJ_2C)kbLl&tuPI3FQ#vRzx+9Pgqd~U&jJ;zeG0>&h%NZ9?Crf?kI z4qcaJ=VEdrdLF2o3=YvMnADRej=7PW(?IC(XPs0@nbN!XXVny{Q!ld>TENlJV#RfK zdCDKOXOSe<*bEtx0UC+V`WXg0d|~0U{^a-*Pb+SPBa~+$eg^mCF#b)uvIfGgRk>ni z>pvB+kpAVA5*><;35)AQzqbB}iIndeBpR5cn#IF@Ov!Q6O|K}%Aq*hWuzsT(4HH6W zSCAi!6nb*}9UMsF;@MO+EN-$UhQ5?A)+w-w@yiRB%mwL2tgqP)sz4M9TI)4DGDn4U zjv-~B*R$~g{U$BJCMWZM$;`tp*w*zSt&H$B&e_&EiQ?9W1+%OsgkRRa9&G!=K-4)D z_oPS2MEmpWq6mUh^{BmFlwbKUEL32nf|&sFoQ16@Gc7mt4vm-Q3=i4C17h?~4z%yD z;4M3cme!K5b+?m$bzKSwh_2S_d_7a1xw1{OGyTT|QTe{~(gEY5@|Oym%0eKkuXi-g z0z#y)o?7Z5ReY-ERtd9ipy=*C;_+@Uaiaic{y65-mXXXrQfQH6SBDu{}=?%eEd`$x2 z8*~QTwVyKM5bx*C#kR(KQIA&AE~aX2rg}|oNP&8bHFT57OSkPBF_UdV&;bThW%EWW zd-=O8;2;t7PG6Ajq<2(dvv5vgzK^ntB@1ulgs)Bu;u$ner0^@H$>M9oRbz5rE=e$N zUl!VJZ$0D%Q67t-aXsJs;ftOCz1$dBEfo3S<>k{ghGhK$#9s$8f8LI8hp2v5E20b^ooMKZ!#fF+6#EL9{G(~U0o|a` zbVelR9@>t1tbDIYJHyr$Q@n;b9@0fZhzq*^VAL@y0(#60N2{fhK<>(G<3nmHnQmK$ zo6Ro2OU{bila#|f0)GB0ETH1w_d2SnjZC{2BFD)}q-%WVmuic@>XG9#-YW(j-bxnu zf~f>>6MM|`Ds?|V{GzxTqwoXfP8nR2mlKKe$C+!yc>_a|u^ewNzQQ;0K&eQ^5zCeK zCFo9{o4pxRAGyAqlLWq^oi0=`0NUTwhdJG@KVz?pje#QFGaf!v5Y*C8Ti(E zgLw#oW*B_zupG~(-C8KU>1EL$LZ7>SJ_V?>N%aECT~= zLStt|t&#d>MRIs%xuV(sm|i0rg5HjVUhsWc1@mlzz`ORh+p;V#d6^;)Z6ilCu%Wy3 z(nR#&mAN*}+j{nT7hFt%(h>|Z-JugnH;gG}8Xsd**MDVl@}gF~n5wR!hue&GXsREc z3O`PBO{35F(bOXH5Pl2Jp`_ma%Zjk+up((ScRk&i`tFy5)pW@>Sef`&6Y;SNd?7lO za6Q|T&gJJyv@_m+hrsosQl@s(T`k@iVl1ZzXw-=J*4 z1QwC|Em!a9@C~Xd2G>H9M+{BQdiL8joRpreI5^?ocMHHy6Yxmie6Z@~FUExG%xb?) z!Ht~%z)Jtx^^=I&a%v=ozluR0Ro5uThQB*mC#m;$osQfUPgYG-D3R7Tw6C~ z%{|lJ!c%*fUDj9p?*Ic+D!J+kws?`VKmDjsVdf=xaZCfwFHX}Bz8r=ev6s^t#5-Mt zCfc`Gt5OEqxpW?HH5drs*GJDm`?kez@w>O+ne(%JPJGCGF$E>ttAyJgz=M=zX-4PF;~~*uitSF(M7YhK9Bqh?SYL{Y>pCEqo$+?d-Yv<3cQ}w&O^V74JLW+|%GK z-+|dwH1<#bHwI~Ig}rZEsQshHdY?xaE?V~A(O%m2;{KL*vASYuxg#DKG$Fcj}0UTQP{HS=!D^0f`rqt%AOvD!O?8HyRk-EW7OKoS`7w9(D*ANw4j zQ5umg^=Lt6S2v@9g|0yMz3QPaPCck61UJ<08Tw*eNC#twwjwgb_@Ez|hcr!fm51*L+~`Z$Gb+QEIcxW+PklH%n@FOduOc4CXfd>(1bJw7`k{}ZcF=#4+NhikxbyaGEmIr}0A0D->pgya!G<{ox zNsbNtzG>Q61I%9U%H?>%3iW{c4X(~ybRkR0omnCPB4a(Gp7xla*~t%U~q zO(x-nQ!zzy(YUM0 z8JSRKSQfq;Hkw|;Q*C}sns4>c@}n0A4d;;ZoVfde4COLQK`cCI(4K+SGyfoJNsth(^pG$%J67?A7zqF#r2a z-4&+ii2($hb%I6)8ROe$r?-erB+G}3Qw#0my2t*A?&3pkqusu^=gQ6jl8CXTMf`#$ z@|b}^&Ah1$nwl|>J33S7*al*NmDFx}liQ`b5{}w=Gf~pOHl7Rp;i(ojX0PoAbk53$ zdsJmj%%=iyJjQKhgZU%PK(Zg(Xb=~>>YA!0lgYQ8QHx)Qq<{OjV-7c7)gfEoXxYt9Sv~l(U(PwYS~5i&6{`LjougB+WUd(T-7Q!M$<^h;#xJQ@0#j*0@Bv8!(llA z13A7`so8_0ATQ##O@-UEtW1o!EB^!taw@<~aCjl@jgOw_`Dy`U*(v6#T2GH=GEiUlpq zKJ2Kn{vXIjD}hE9Gm(&reStD*xV^}ca_$5nW@c2_T$VtsarZBZ8z`>Mmz>Ylc29S8 zqf@}`ZqaaW-trj*@XNkI74DR+a||>m2m}2P|0;fgJ5>CY5cCsa!PT^FGquH5L`sOw zw|rkKw9T^!2(h(Y&SzPq&8{`;Z#0-&q!r~izR1FN*~e5gTz#r>4NtSJkqEgccD%&> zm>9#gpU-U-f?aeV&4WEJ{=K|$crT66Sp-c-7zMeYB8be7KFa#03wBc4%`b^rW>SJ> z6s{7&)#_8_QKntaEx7tky8#u<9DQM+>GxJh&YnPf`c|IpA-Zuv; z;`b=mc3FG|@Jb$Z7oRPX>GZ7N7CcfZFFW+Pj?A4h{w?o^9|4UBM2GGEmij03ai$K0 z#19Zj9&yMp2N{a zIA>}Kbh^5{U!I1UAFDuQhLQ4 zSX)h9b+?$qse|AC!mV+xZZQvNW}JQp972mqfxyFGV>^r{XgP%-*eS?DqNLK}7icDW z#?p6U%hUcT_1@>t6~ouix>?ld(ZpE~fy=MOrtC$?$qt+6BXqEo0sA~rHUWm*2F z-YAgE5=hlpagmjQzqvX-o9;x&SQ2}t#SJ@kPuw%PCCK7BMcX6O32NXuH}T#uzcl$E zEv1(iaTq^%L2&Wl%a3Pv2xFXGi_Bn(+OGPXa@K1`mni3m|7gL58;8q&v(HpRg4}SW zN^0m_!R98T>uOlA+0)blqKBjg2{eK=r}HXfINo}(<#Ltw?*giq2i*~F`^w-WLkO1U zpMJGHhH)_ybMvrV;_iQO@vk4+*3RLHqAPnG6XOZ6L)&mYyW@}1%-}us;41Nj`p*tM zx`kFHGJ1S)J)y0iSfOsZf~6fF5nlL*@QZYxqtp@|1OW_H-1h=s+n3&4dDZ;qIexl7cs6ip9x+OcW&P=*Znd)6hL9O5vhrYMwn$dgTfN$D<7@$7!_Bm#;uej`1?}qPF#<0&fVAsC0`0K4mX_6 zvAX?D(VV1IT^vxd!m~#1AQ`l_M_jjh6&XOO+dKG=N+TWQlVxri;=pvgKs8+K;T3x- z0FB%@VvleTfsdnLsE?o>92CJ!Q-X}ECo?8JU~xT4jy@Jwvw(VmVB#rtX(3EM$cDMl z$|L>T>xXI694_rdz5xz@zY#=^p?S#a`1eIj!`fe>_hT~reFT%5TL7GHYPLfgno`hb?iR5z5Nr6VjejkBr z)TqY#zBU_??bm`x_2Hi&mbAiqjq8g^fw5^I?wyf#u!mRI_fv|-8AM`OSX^Dzk>mF| zsoC3VJO_f=owF?9_}&Y-IkUp!LG%&Hq|QAILnvcV^EiQ36IrxwpgB$63F> z-_i3>Zw7k`WHaUwj#5uOD`0|vT(Th{wy+whpZ}^n?dT*@S;m8(-?XFK_n5jytk-*q zQW@F$=t3v=DC!bVc%z(9JnL{6e*BIYs^Ov>9*Gh3t?hhlc-W7+)$LisfhKd`(z8qd z4MAsDi!q4x1d0<+W3wAQ`)S!t5{OMUN&o%mTv9^M@3!!24YP9cW)-#AwD>#Ig;1=D z@lU9fI}`jRbcff5e7lmFQx-gdULN`RY2$TuYQK=5&90l-yThS~-^Gy}p3_Iv{2_0S z)qVj450woUsRHj5JayBqT_{Z<>23zqW99LW9}eHmp6Y${zGQ@Kgz`c2lm#_nod;jB z^o{p79KT!rrhEyfFHBTLQ@QP*3f}_|lx*eQeRt6Se^oR#U;;bx%JLw!iO_sV z>2?tJPuPRbfG-Q!22`y@`h=DI&LfWz;*sDBSvbM-u}AuP zV`Yl6w+93;dQEE8DaPqMa!cR?_r7fu0Y$#1kryOZ)<4B)H;=6G|H4%sVLCiP~Rvk;D@_ zXC-3g4N|jOnkJ1E8gp|)!VlZ+B#H4xXDzyaHk?lDY=6893g3)iW9-6m_7&wNH*JA* zdrNmst&U?+e&OdYBYzX&4Wgsq#*UsEZ zt3P+)@5T>Mk#fOgjyv$|NrQ;?Ixm%CPOG)}g;cMCV1#tX0}{Kh5dhK6w5#8LzQI|1 zM=suLCen!luoPn7U}||qfKYJGdEz$bEY55x7;p`sb~lhg`gnLCQIjp9SU&A$nr2o_ zCK5oMOYIDe{_u}-AKl=_dij;@)G$#u)?}L*I}F7#`gA*RhQHqf@YoW!bGbEi_J6!8 zo+w=Q#pmU!-4>!2_5}1PnGWs}RocN`z0BmO)oKvDko~iY!uCvu4*eV?&J8l{Y>2^d z=hU%S3LU^?6oXpwY+_FyBsRQ&r^W}ap4%!szw1$zE2NIM#vt6Uf(dK?uC#=&Ja`{E zsrg|cyQ#fBsJVyv33e$$;CRPrzmB^71id6K?P$ZY)=s1V*X6i1^d?668bZ zZ%)yM9p0l&GmK~ek*7T?`83wy_1abgrEf!t{C`Gc{@H)VdBn z0|b4UmTRXe?LZG{HCx)wrw*uyy02@Ja1;qBmnGD0Z{n&DIQzb=z+pf#=eBy zhDDQrOUL+3e5K^UP>eL@9p1Mwcu%o={@gQ8DC-I^v{V94>{p^TMrAC3`~+4OS> zUL8M0gO4o*b#ax!QQdoEWl*s@T5iT-rf}?<`rcEq&;xK<+;#gUbsAJ+M*(Lj=$f54 z(59B#LLqI=y78Bfjr)Y}dT5&g%PsV+wyEMmKp}1(BqS_}I z4i5N|e3`hJFa9{2ilLtr{gOp04keAB<{b^qW|AsS!;hRjmU1snwIst|x3Fep>1Zn= zg}+5W2pW|d&w{~w?+|$gYg+mF&=G!YSNJGei!q z!dL4SUr5?`WX#6j2PjSjg*t>9Y)YI0&>?zt0fl|VPaOQ>FyXS{zPh#H*%7IK!}fUU zjdfokEb1{b8~Sk%0lP{EX$XBEYOW&&)PUSGGp!ZLzszaJs1S0`Ya;gkIsj&q%asq2 zgHXS2l-7pYX}HG%smLvpK@ds}DB%eNlFlrLiM8cN-&s(FhO~BdFoE|?3v{3`i$19J zPnElx2XtyXg_@~Uj_<8@ixK|(WZ=LK$$BX@8JwI!E{7V}*}N9hP8~!^4!gr*Fp6104Utoc`Dkrla3H zXL40&>QDP{4n7br3{mDABujtCqhIg_SHyP!wjg1#(E|_4c`$CMEwuReJY^v@=Q@vb z(Qpq~KRs4A7LoGb{jcCaLHbri;+$x?Ni&Z9s`vm zk~*&K8dJ4f8K*}7L!221ov}9>o0-TOXOG|INRAcC>3q$$bh96TxM)7_!sGqN#A0OO z#?D$S*sQuewfs6&%3c=EXOa^7AMlE>a|5TgzfNyVq6DB*Ca=k^v~{Lh8H_(Ikq6<` zYaW|4r@lv9(6y0uzV{yvGYnC5!Np9*-DN8DL;Ya(A zz_-MrTo&KSk&nmlZ?Oqv=<(8(&5cJfr0#tiwc*n+|!fzwZc)crVt`7G5`8 zgVtDWk;gQmB6!{Benjo~%f=V8@8rllrb70VDIXwUr1btZKp?Zw5??|T#T=#t7;tLB zVqQ)0gylIqG5S8bRX3I;ctwaF6mIvrPuwc_uB+>CfT>-m_zJR?!M_~}95K@H1UBT0 zF@u$Rl?5tX8K{my;0%({^B}qL?qkmgaKQe9nCNI|0GE_O1DOh){+@ZDfzldTQPk4F zSbqbJj#YW8{oPI(1o=e%F*pyuLX*qo4huf$`r>sWL9%iWlqsX-6e!BRIQb0CrY00A zW(z{vh`u-$ZN=@=I=1!LcV%7Sz1^?@ zia9UF^97)y&~7&!g4{7!{-<53B_OKJ085X~P9op|}ga#a56VoYA0$3R6AS=nHb=nS@3lsb0Wal9nKoAr8PAdN%)5OP}T3lvP zTnQqQqdU1rASY^DF%56dN*z1de9yj#-U1#hYPzgHn2VWG{VdeaJ`9@C-xUJ`x7p=P!Mz7GB0-tDM}Jb_$tKt~4;8r+UX5jkjbR z;aavFu1npV+YCIyd*&Be8duh6#_BU50Nq9v2@@KyxwGi?jWrxJ0ybI>yUJ4;x?#1RZZ}~t%#2GRIk6kX;t>f#f`F^4cQXI3%P_i*Wlk#? z&>1}}X{XqV-t5SM6Sy2Aq(Z14TUQPYHdDCche4!{V#Z=Wb06o;q|0zmmMm%x7r<+) zQ)&ClVW%9?R3_LMZt+RFvO6HW_up4jq0wMZ9E#Z;c_!D@P1wI?ao>axSx9qqtu<2P zk`}`DXYWZyb-0SS&&?mX>%V3#H;kSsNZvRIk&`Iq%wwty=P?Te4@mjfPZdYr1Ayny z8EXf7HItnC3i%9ls8>LLA-0Ug$cRov=La@XS^^WpEGkde=GNbt53zReCJQ5@3ucB7 ziJ?BB8{tZD`7|>SdWu~3MBa4Um-5$K7C-QBY3=Z;atN}_^Xml~BU-y$mtmun>4;!2 zu*cNv7*c86*dQyM?;ov!eiT?yRu>+{^QEqeC*t0*kmA}lxV5Zm*DZD*{C1f;*Rqn@ z&=gY;9x#Ph&G9Gp^&t7)LxtVlQq2XN%g+)h<7!-{ZqD&TBW0Nm)F709W!O@0SPY8` zsMSN1NuQ&rS>v6C--~YfJ@!3enXqhl`wFbxkDJA zmpPd{Tnf?*9kM==J^wU>e_`&t_e$Ghsrop7XB7o6THP$O$ zC->D?k$)%>?GrB?{e$qHuDdlQQ570iKsTs5N_gbx_~LOccJM=;3-74cU>kl-N(A?~ z{%vI44q>jxp)4g<&$HMLS>s8w6NfgPG*kD?3nco|X9uj9hH$qn;4Wc`b81AioQ$DV zP%GXzm%)beq2Pmv&UJHJ+dh)*`v&CQbaDBD0_w9x`cyiC!L*`8)xc&L`3BTuI<*i`k&tZY?jL9$X=|Xq@cUf&YFkk(^acj zSMYp)`kiFE-NSJVx#76#AJwRtF5y+s-&OEU{dN<<<^K7qU1jbH13=f`S(-URXIilU z4WyS06Cm z<6vI!za!#NgUqjTYkd)K3}zGw8$+2E{1~Bc?x28WBgpdh3$ZJM02pFuU0wT3nc|i5 zjn+f{$U`2xE{&?*TWJLzh5@=+c#J0>tt=wX*jWw~@G_2#%f!JHsJTv6Io%-b(Cu`Z z1@s3MFN#m98H4OWe@A=X!0WxTp1mi(yod+rC%?(d|L}S}4^!3%XlMVDlbU)rb ztOUN_Y2gZ&$Nmd{DYp@hz(2JjW%};l?#dO#;DnEWs1@2{D(_)F0!;9pO_%G-Uh>?z zS9+R!1xp7U{W$bg7@vsPA;6=&H!g;;>HcbWyw_UP9%w_su46_k|L^rqKXEUsQ;?S5$Gl~DPWC!D%DTTrA3sa$Z!pcF;nNSr{n;4MlPxFjYTj)5J(Kf56Me-Mq@q)4|o7zEPd(m3`uqq*h{@T z0;gYeG4X&V7qQd(4{F8Jcxd~d%~-ti|`jtMekmN z7py3Q--&xmzpdBOioXxEOiL#7ZZETgv(r`2+1lHrfvG=kmxir3NZ(Eq`SH`~&EbYk z7>>o%EMo1iU?mC>{E&S8M1C^&54b9{cH<5$6-(pSjndiLR>RXo>LEX{&4Lhv_NBf&+pt5tnTnpkUG3gfp3Hp@M*K~Y`>gov8_hkXvVhHN z@}e)da5m!x#8lN!dA0iCYyX1WK}5K_BUj&)hFgOs3F}en8JM$x<8-uiiHHNqxQ_Lp z*r~prwe^mUsE5GRFE47*{JqFhFh~CN>%jN`v(@(V|6Rz@08X_%QE4DOJ(vEB@w}<< z-JUj>k}{D`bB9GrhpuiQ9y=Hso3|B;Xzg ziRFE@4brza`YWsN)bHM3`3J!8=r!GBJPVFn!qH(5%@h8-AIq*hClvl;^|Fso1ay>^ zma$>Q6fC>51-5wl(`sRp@_{}> zh{rFo$U`C@@)-Z-Y5Yz0ED`i^`ofi{MDw46C{QS~m*|`rd$q`t|{oZf^XB{!4k41T}@2z&`>6}}fC8DHF}dkgf;1iZZt8lDct01Fmc(7ri$oRONf#lxxT-TufQ3|$KEBrO3FLye@^ACo zv&6XgSu>EK#a90g@rBlh%+_rgdVm;3zUncX{exK`@T41&k4ah&g;`)?AmvqYvnl%< z+1qaLzB@=65f%YZ-xnO*_Nn0*$GTX)_RP$975q;&_K%iX0M=*96;i|-bH{t=ja%R; zi1^#=_}w_zW=T8f!jh3OkAos|z=Y*!BUjQxYyNZLt!+HI=6|vS2*!kL00zH%vd51P zl5`4Bk&8O{n4%Q=gpLlfg71oY?(BNV@=5Fjs8AOKe4UB>TjxDw7Z7UL$#P#&ElyoM z&)DK<&rDipp_ZSG&u>^%s(ho=c^ut=AB}19>`U}(>aFYV^QzV3eL_5D{~+dGUrbK! zMuvi_{P_~?$xK@DjQuWqJv|fI`_F+q|E!)vI)xWIBqG95>AkwK!t(svHTYn`$kv^# zQ#l-O<~!i}mI=S>3e^LllqBs5nXXaK1gEm*8cU8Wz(DEHu0KtBJ%TfbeH_i0A(z8p z|4?O%C$H4xIbfQX-HItbH2HmFcY4&2mWUzLa855-cw;WiO(%@m3sYI^^QP%Tj5mIs zE1RfaDi&*&3G-K+{Xg-VrMnsKXXmEE^{t4z#LA!qn^u}T#>9>VXK0iHW%*5u8Ialzl^OW1X(_H z;yu~OeVu=hqJ#~x5jHGQ=^kiIHx+xmtlrNljf2bZj1%Mpj$Z9iZ zB@s8^7^(Q^C}AkWA{OiW^r(*(D7KRY8DA_K2Rm#>VDl+U#@{^T{jb$XD;u=Kb*A8p z1ZTNP*p~vHQ>Aj*95O%h3Ce$Li`-}lXlOR#2Kk;xK8L;^r=JT0IqksK?5#SHjgpUO!p*FFS-QQnHi^KSE4vNpFAA0h-49b&p6{uXY_x ze?wdxG9tPi5H|wsUZi8m)3X($WzzSWb9Mni8ODF>zCTw1sP?`(XQ(C1!6bG%L1>M!>fzv_ z#@z=w$JIlJ4ejK?c8XEhakiRC^+q1f-RxdF=4C12FCXIw!Z1tL3;XHY2p!}6lS9SS zWo-FW%HEit6gbaaH0;8uni8oD3H=&V{Z26%W#knC$$uQHp1%;6^%rPMxcu6nlDLuxBVYCU?WK zWL~#SA{ddX>7A%5Z-QSlmJ$v^6!pJ*xmy0wXrKAK?V`z{3+Wl4(@@9xCu$v$XXa(cL7 z&uDYQ(8&C^885^6!r^PMH5H(+`v_FsCybnVitdF+Obf&mCXEn_bn*Z?CmUho42HUA z9rPU4O5gVTHH34_%5Mcn1tbDd8aiIQNHzUrd`M!3{otciB@<`O_s-%SH>SB)`R8H* zf0U1G+`2+7E!xVBCVlZu^y^L<4PMLbv#KJ&6xPlJ&kG89W%w-2Td0K^W_*O!{`ltXa9$M9K6-lYhX zD@fhOcBLQqSh0xRv(it&HBr&tov+j;SZ|Tu(DHJ@XLw}vjg-JFt2;$qBdgpc;)+OS zob=HdSZH~?6kI#)vnXq5!|yCkK83$OlDLbQ7xvfNZpH-X^~&9U=)7*kdNcpKyqxCH zZI1rc`vUc+<3?y5qZq73Oz`?4I=ZT_onar}E zMcG{A%F*$9+v`7mdlwp4WecD|qSRhW+0K5w+;-aRIv=H~^P}|3=C?*3U{)Ow(1?Vq zON7LBXXj1*!rgP(S`Z*qmEhI0c1Uf=yp-g3i|*l^i2E*Kx+egrkKAYbpNkbKBQ9K^ zaf7kKv=)?hEp>jw2x%AH_{KGDIMsogAhVWsQL@V0Z7D`pUU}T1@e(Go>a;CAP4!8n z1pPnb@HZ*|PaBJK-E_fAlszlClw>U_t=y|-9oqQ5g>F{wW|}UF7xkN6PGozMOf{q1 zUVnO%BUZF18uP>-tOF~-`A^$_eO}Q05A=geY(Wz`MpWhpC)1U#XOz`d^y%12s^JvVl(>BkGfvbK%%$S;E!l zY&-^zxBXHi7U0nSB-u>|*nKs#) z5m~Q~H3|ArU-3RCZ>*x1Q3|q_>?UdW>c{DL?(#H&49%BwX27a8q~_Fu7&ZNF9B|Wm z^q%;w50hL&b+Imu#+GT3!xL$ix%o$AxPAZy?!VNgA42%VT+zaiac8+P*BRE$RpxU0 zu;6|mqKU+%!(DhCq)m1YacDY3$OC4Jru&hY#HHTdq_GsuW z=4j4tm7?5~TKN2hiLvPmt0@t5~=K?58j;pB~;e+H}^fQiCBR^>vWNSuG zQbPcvqfPWK=3M3({yJ*(tcu44Ja^HbK`!t$XHRM2A<&s1fV157R_s;yEB-C< z@)p7L(D7f@H1kp2e$=XgFN+jN1_Y-syyOJ4J_MtSykZ`VN87*J_^P;!XqMOj@CBq} z13vC*wBKVG)o-G=&M;v``vD#ah)t>`^z?8$2=A}*_^&qwY&}FEC4@_J8-hTt5&8R?PQHXL zJugfRu>ngb!i?%{|HCWC%mW(acXLT!P{RL^ILq3$d}Lk+LX8@SaGlT+V+C^&z6D$utmg)Ft0$VUTNu5SzdG`08K<0)pjc3+;%%z0!3y*x>Ve=5EmV#Wj zvGJro*!lwo`&hsQW|-Xkfk$txK18q|9FZ?3bnRvGUe}x?XazRv{Y~6?P92%{)0<%- z34vDn{F{gvfW5;?8&tt1;TGD?y{YX1M89s>vlFlGtBGO(^FW_vN}V*9GwoT~d!pR) zTG&kq&~4XVTlgZNV*91y;5mZMG?LPtWhN&Ed&GOgKd`eTT*N=yO~o$#{UlK#$|t#2 zwiQfLJAY#l(eRa}Q9C%`B4{2E2>Uy-v>Y&^PN#FgF>OFzJ~Axs_WM)qKv&`T#tu3+U5PWcgx?Y$QZvlt2xYO< zV_4UZ1KREsx~oLY1SY^QaNMV*&Z+Qlc}!i1d_Ayf$&csG&)KReAir!nm#L91&7|Ly zA1~0}0?1qwLVE{}XM(^NCXW#e(s>3%6nsJ`qnY*)+zbnu4N@BzoF?#V? zk3znCujir!sKspv<`?C0e3q4k{a@0PzG3}jYa02K9Vna}<`=fa6(?rCjTOH3zwuKF z@8LLUOle*O3YV~~!XyQ_<{jxLi2Ak#7?|-%H`HD1rkXpsc3~$~-5llB>KI7cry`}c z?av0#kUo2P3ff>W2-rv;Cx54fnQ;o65WXjIL*|pTPWVtUU->>DhYY%rN^Ymk>4Hs$ zhe(S(Wd_5zs(LzG3VJ|az!Ld}BsRKq;TS)EEV zxQ2*jGBH}%&1!Y{sIC1Ly58a>la+^e&&B$Ss<=3*9?8Y2>#U+2KIDs6wr{Q##`00; zg9njg(a{F^`tKg!XtkUFagfwT)m?{tz}|4(1u}z(@8{gW`<*rUxvX-EsdR~`@2xHZ zVds;;=(ADdpAPaT9U(YmFsnISr#-Q39G5)wM^HAA#k7cA5cG6`;4=N{9-WUyimfnj z%k$T}#mtjlK{`U&`KFJEC$USKABmimbJFiw0ew|H7 z&YsDqA@R5doufQ@yJ^?UEt)yBAtyl*7+>b}(K92}W9Jb4O;;-qatP9OBN&%`v-(## z8vW>?41w%e8IKu_KA9>KoF^b_u(M9GuPAOxe`{R*wGNVVz)3Ji&*eKK`Q;o3y-Y|K ziSr%)>vwBjwU&kLp8%O$Nk3MT5bcG{P{;`&nL6dHPzT8IXqc-}7=BuZ%VDS@)L`7DtdZ^M*C$*-wV4m0S^L_0qc0UF`OAI@40@*IxjZPX)x=LL zE}WBl5w!@f4Zi?ubYioZ1d+p(=4(%I5M8`K4Hvhl^;>b`G5xtMI-Dl$qwsH{^L$q3T~ zdW{(nAF=KoONYE6UmP;SS#_T}%(kn$u#jqE#Og+Nt%vSuh)I&zBKkN~vEnKUU0F!W z_!H!p8L|-A&oG6r3q0G10Za6>RyD@~b)yrN+?zMq!@w@bGK>p)4o5-|Li{;j%e`Yv z#R6j|07ovc33J;_d;i-@#UfO<1`qssv|2>=q=g!5HOm=eTG`Z<_fKibZX7aI8Ru#( zRGsGRvpuIF`mc#?0OO8-K{`9v;miV^rtXy&ROP5;D2F1RR3&Jg8KJdwMIN5lcXcx- zWKl&8bvfCI&iq?ao|m*j>a^6_zDLE&BF4odpH^uVii8UIu~3aoj-Fw{_p|YkE3z`o zQ0~~6V^#IS+v;D}%holqD*)SRAg-ztd<8FHK{#$H$T9R9gzlXRl*&l{MEbs%zRJJm zfr>9Z+t}rdP^6sDeSiEI8&o2poCU7#NaUG!b?yE(_3YOn5jS9_+?!L#&U z^nG7sAsV0)*fo3%NFKJYJd4S_omoaF$vpZ2!W#IZsgs2=YwR|<-p~1IkP5v0eq}Y0 zU=UDsHzfCYP@@L5glA6_SiEc& zY^r;Pq*uui1C@A4$thc`3%girw3~?l`KAU7>X5scGtMH3fDAueXo*#u9Xb4PN@9jX&?ec)^|?RQ$Kf3gxdT)=JSBPCR${holVY}<4rKKVYJhu(Q( z>vx^&jlz!h?5>j)N=%vy06u1N96GqEj8`gt^7r&xN=aIs=i6#^m-N53CWj0-$u4AS z>pEQgF`JS(+btG3QurV(>)iWWQhMebynpEPH9W$y;)-x1GN-&HJ8Yocs?KcMH(;ITq#;zlk@e2`)2>>>6hY?BX6l+U_(}eC1eR4FTcF zSe{L0hPqg?LN$r3KPN$bZ2KXM(Q{Cj`6rd3K=yFgCn+3-uS4P3C8xv#6*MnO- z5gn_D)TgaKpGAW6&CUIZ2ML?7=pD`%0D&-7!f0G}S`PGdpxN!Wa|q!3O?rATP8kAw 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

    l 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 K{Eb98Ym6T*wFlegF+2|SIzjX$EW(`34DCnr7 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�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

    ZDD4am!`hHS_l@4+Y>}sZl`r;qQ8ti+Zc{VU& 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

    {Hw>3_OgAo`MZ<70*@q;NghUrY#+H#mH1 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%0Dy%#%5J4!x>LXLP9(})2hTpswEhVfA)^|%c!>O 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ð1x6< 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

    #)hqhzRrtPG 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 @6<>50U=&_oZ?2_4h6${;|>(pShdl z33C|ugd)$#mbPkW(}+MT`GzA$FNSGW`OBK^i6ae&PUm~7UI{7|1y^IxEEsg`DXdLR zgETeaZ3y0-b7Ei1=>KT?>aZx^=j#tjgG;ANFI^(Fw6sfimk5GlETM#ige)CPNlJG} zDc!BKfFQMWC@mof@4esO_5LfD3;R6xJ#*%qGc#$<9+cnb?#+wdhE#qWPlR$R5-;89 z%8+CdaXPA{usZXn1!v#qsi4uB6=m-E^Vq=)D4Pa)3@t3l5X0|V#W*9%F=TKc2i!Gj zqF&M_`!p7L8?Q*=P`2~QOJ5BiHN$7xDKmWcrM~27;Pr7jK2X4LkU*TCHK;I|ALXAd zh<|ImV|?j~4rs5R07u4H|5HI;FSogh|DSK}dt4RUJBTaN5wHcfq*P8-mnw034rSbP zwldGCVklN`=e?ODz5K3qCFzRk(4|gkU+Euhe zFItA|C0sRU(y!b*q}P$Dk|y&L)2B{z=WF*Mof7-a5r2NK6Zf1jZL{Q4=Mp8wN? z%Kmvdt791^olnkylnE*(I0pw3$hXNTvs8=FMFr6(_xid zK1cUYpAlil80gOK;BoDK5GN(DtdSJVL=X8bfo+FuxXrpq9C;xLE~tU0bov}@M$9W@ z+&Q7*cw?nyH0{A)Paf;ZvnYztV1+~F90txob7(aSa!!y5RMBw{bdL6oA7wCWQgpLP zJYNX?%`cK!A%60=-UKLHB%R{A_PkGM?=NSUOOae?XBIC~XFMZCJi%#71z@Sbr=vsYXkPcd3oft-ZC$^5rSSpS7o3HuweH%0jmyp* zo=z6jNl~6&dB$Pa(}kM9zwV2ckNR&o|q&r zpabuz-P!O?!qJ#8(|FAlK*2 z5C{78RbG&yo*jOgP(DNxj9^(3&9Lmk1o0Gd;-!0qQ_8%;Lw?tq1ERjc(-!}bqSrTu z76NeQ&h!@q%!hcUI9}zN5_2x^v2DehQQ33-E%J}yb$V{3!-%e|`XTD9PZL=-`9JN% z_1~XSIZdqI>qKVjB_ES&+jqKc?K(26{b-Q+s8YNp7Ai`TY|;Kn znMGEIS!;NcjvXVd^Yj(&=W#E>k4Qoq?nfQ9SulOwX=(!*QGDwRGB!3Z#3Lf`p@zoX zPMXA&3dt;>-$|K}Sszzi-}|*AJOl2j9HpMPrk7pgglWRH1#d2z_ESerXoXYg?f1+Z z-^>k=qaU=>d4KMf3FxX;MG~V4J`DKbzEHhu1n|^$CG4CY z@0!E+^CLL?dDIU^=ASUvTXnzFcb{YD29L-IM_;=txY^o1#7heWnV76@V@a3?k*8zmbH##w`3kBESq!-w**YSx|AiZ zkoZ+J4(eF1klUD31d82ZoHE%-93NYMN0oN?7n~rOc#$A8 z9La#M1dyC2<=z+qjc{`DO|7PYH8$MnXMzL6d*}V6aIw{vk&8H71#{`4eB-XOm6o%p z!oP<>+!66F9(Q#XD0S*qYCIvG8?jlZNdhqpKj&S7`j5jK+m=_IywwTAg%06<$@<~- zAH@>3uj5hV#7{_r{`h@k2vz=Gz+ZvxkGOy3!f_MnE?A+HzuQ?ouO5EyDpqB zH~BR0Rfw9NRJD4$?%fHh)jPr;z9a<=4ogG3KDY?hH#NK%U+dl3wHA`Y6IMRnV_6G_ zE}YTIYSYPJyTAZyuNF}8@ZJ?1ydzq9%mqCltb8nM_-~0{+Xfs4jZaT-U#jhZ`YcOJ zwA2|vjw({0_F}4}1qPtE&v_K%8VAhoRBLyf>)K(F+N2|GJ-4lWoEQKXnKRf%+E=(3q0Y$m5A2_YjE!NU}3 zTkqo`B7BRNPr#;@EgxHQ)|B(Rw_~0>*jYcw{hl6p74d7ms}WpekH@TG=Xb!>>rbe9 zRk;h}b-4n25?^Vy6hX->mNO*{thC_ylOdGo;+lz+7_8|$_sF=b=?@8H1efor1E>De z(SvXRZ^Mm**X4{`z+4F;f`FAq*ol8cX}qk}IPJD_c)iI=galZStsMQQCt;B7DEcM` zuu{^fTiT07(VKx1%VXuw)W>qE@z*wUc$zjDE47-wAbJ9FJHkb;7Qn`ey$=SWVU-pi zHMq7VTxH)!5HX*c4ZJh_R#nBtg1Warv+#cIX@US4sMMl~AaA^<#KQ%>vlT-U?uLRH zW$9$vRLN$8o0lsP&76ZHhsoaAMrOL?rsl0U1vl>4YEM`rkfX9~HyA<*46SiE!;taX6?5rwE_r2>!!pWhxl% zmzcL8d$S8UcUp4aRVO6~-b@IN!U_Mf>#nR@7R6fJ^cT>MgygxI=`Pv6|Ig1sr5O6xh zS@rEph0tzVqfF&BDL10-qKQz`G{zk5x%}+XV-aBg{8pChZ3`&UYPB^>z6Cr{&!zm)fG0ym7 zaWav#c)xEz{p-8zuy3yTLwIf!#HM10bgA@#xPU%kEGK&XooC>dw9Nz;bS0cCUQjW& zn_iY6I&JyzI^L<@p$P9$@S`_iwXZbObjpq{!uc!nU^UN~RDxL64Q{GlpCmm*998Kj zUzeXXYSVlQ;<|{MJy*@0QRF>UOl%K=_rrbN{<7YS=M)vVs*36w$wa8!XZt%_XtUN$ zrgMOZoMkCUC}l17z#=~nW(m`Tnq|u0=ITx$SIfVY{OflVQ`|{}iW~h99Z^&a_a5^m zHSxq^0LVB=O>Ru-Eh?S1`awOd&&7;IU9$mYP;7)sQ$pjJ7xpO+hA978FiR+d`5!Vg zVH4~}%7vg|PXT9Ab*i>iuRkUR1fqtsE>xAxo7mdg1(vkxRrCmM_L^4gmPWjhANx}6 z;fIYqpr-IxZMLvde{~(+z$tq7+$uk|`(Y(bv?}K#PAZ!WNj511A`fB2{Ba4B6h`l` z#XHL>*(!+OV=>`???wx}N-j3UAY>Xi>4(lis*ZnK*-Ah7b-dPSXQgEudA&+1IPmkB z*G(4FuwKuhf6zKWBDiug;lKFGCf}1yNMD+?({PTw3mI0?G;f)J+aSO3t=F4{O{d@k zo{9e7{5KZJ0k1S(dFgPc7dj26oC+210LZ}o688XMuqf=S5G{>);7UI|R-#Wy_p;*6 z(`o7k!0UO$eK`0?xS` zUdI|IruGW4fy&<=`K;8m+c^>9H38D5iWDCs-vInysw7p+=N0pj zU%KJpr{xAs@K?vC@3j~r-lvq4#Hh&%aSlHXpK(W~t@LlyANK+{&G)GYR}$xq-|B6G zyJVJ4ktWEae{9&@X}R}3xc^*Biwtp!LO)sBXFrexkIfL<3adwt?hqb51c%Q_f&IEv z*)8vb)dNu;+g>o8Nl1me)b6jmUqAgLxJSD2zPc2Q;?h>>12Dh8R7aoqJ^Q}?1im~M zW_X4)A7h_0zuP@T<_?aV7_$baVr7ixEYN-;aJY32QCs!+l5!c9wKiV?3ObyfJzMCL z!sZp8^NTd4c-+JvVKTN^ZE|#*zwfiI-h52k`v(^xP6A9zdPy&}zMy5~?XHWjWB@g2 zPbVIBur(wto8}P_XrBqF!|QmaCE}l+r?wwnC!x?=W7m{ky|ri@f+gxSU$63uB0fhD z_lUe8Nw6@?EjLmE)jget`-q4H-=qmpSH@{gW%e4!&_kL|k9%I{Yf@_a8L!xZ$uHcn z3%_ZvYZ2frU>>BGeS+9)zrDV1YT8%;JOqa$Qo{5c-PIuO_E-p7#G%O>_wSQ{-y`Du zqs%jas7R{&=v}b1y)>hc7W(4yTbCSm^i~uT-pd3lbR@>P-e1X+ES&qRXXrYj>HR>j zO1x0eyHBa&ySGs*I+N}*=o!Yk3-L@D({j+28{%tYu;}MPRpe*~KcRp9tmcDLsU$P8(ilQzlc~h5A-v ze5q?w@V{zd(43rcPc7zzh+tk{AR!UNG z30x=PBi2DpC9A3KT?(qP{KSK|%Ea}oab(|)B5Fb087vk!c*{&X7!q97`eP&5q1+z` zV?W7rdTcek3+gCEahU7RhzRU(zMX)_H}@3u7;N^9p@k+BSa{>WA76I={c~> zBs@BK zTcxIpn|9NWAt$lPoW$1``-SmhB?P~-ZZqT!8tx>d&d)0xLD|9aKQPQtUb~Hgwse1- z&FHxIm$oY-HcLbY-P4f{0Fr^~Pc;-Dacthvz)<5Kk2%#>me6mvX_lIJw!U!k5(_!q3U8n zga?e*G0A6rxFQK@r-HOL>D4{WJyOECF`52K;R`P2K=pTGsEhiaej?PdfK&eSwxASB z*(!sUo+KcB)umHPCL2q}JwIj2r|Giw7_UND%M2#VYP$R2>$)KHVq zr2PLb!E-pP2pyqQBX^S7+0lXLhZa%(RHEz^+GFUzCUTM=T0zdA1{54Saxw}&zk8G0 zlebaw*lmxAO1>ax=@sV$c;spVfB7&4vN7-BT$i{QY&pC6tPAHwc!Y$0{8~n#*zdYF z+cG})mrRf4<|fhHfumCcA;Ek`l~%@xih?RX?07sS4|9Vm$6unPsNz_i3(8145mB9S zle;N63ZO)7sKXWXl3)a|9K&F_TSYtT4oKMnbsS>VnA9^<&BI&WwMgYQ_iw zGb28iOjG>@kbcUz^db}#~fAI+-rP8dcHslYRi{lF=BB#;i&G`YOsGmW_D@6|Cl z{aI34^0hi>j;tduwYJ=cw7~WHLqh}U*!xwco9(rjk!#dLd$8KetEuU#oo>@GtTxDE zJ&$xcBsjM3&kr<=^jAt88JG^qc~nCYH6^l74@rIoEivN^bhTB&3Q&3z$Uqk90I&{T zzn(4Pd;Gj#fXR57|L{sntg+*P?;*3tuWz3y7$9(Wx%ax^>}$cXUNtQn-#~@OvyWFc zJ3uLeS+*96*o((==gNMM;Qdk+^9T#2;^WsUSU8d}Zn6MZ7FLlARmO`>SY&%hR= zwLo1N?FobhrJFYfWXX7_sNGVz;9^L>sO4`UpyPjG7e*Y(wsj&uWeQ=MD5PSFx2mDBepWfOFWS1UXUag)YHbw)U8?v z{rl*U`V)MgZfPxwuOSM#nlFXPmgB6PHZh1Ip)>wkX5J96HqI&%xp?^Ps*eCtx^Cer z7!PCVPOdHX?v(*G^~3xCTxRb)`JoVH(`(XtW)y7uPe0jM<&TzL@BP$=^5#LN{4dEv zm7@!nuTz`XqC*X`qfPl=-wfm_8VzkMaJ;LP)&cUWYFf3n0bp+2B0qgqw+FX>3wmB` ze|aO5BMcu&t<5e;gVi@=6`X)d5BE$rJhq32MFtbci#r7Oi?}b%X{A~on?lLu$1{%p z)oOL+-Ieo!a=0XeV&QE7|G4e;TVA>Y(S_-N7HM5Lwco~rSsN9SG>8<+F-8DX2F9%c z!Xn~&4z9`H$X685mf423A*cb33#!(>W>>??5KC@@VS+Fg7An@nX)C# zT{B#I$ZvSJd17(aKhsF95vNF)qDO`M1*lJzEi+pxb?orZwTRpohRB*hQTxMzizF-Z z$}Eck5`cxvcBc&Wfq$@i_f7+6AI1e1pHvfl%PR>z zMs{kpGMKmEEzWmhA4}~vuH)55=_5@tShWQufk|dNsb+H*_B39d7S-GMg)oRY;p|J% z+Btr=;%l1cTZM>~=y3<`%g3*W*L(@}XCF>TZG)_H!1KsT*hbTUp?@6_d6fYUHoSpz>gmiMbD z0!=;~cIAL2GO3Z`Sa(P`r_nc0rWtl~U3@)e7(+4tG1@?$3L<4}y=#7~&_Dx@HGu^Z ztzq>%QzXOwq#Lt33)__`sQ>=bdqQaB#XEYdKQ(qVnCMW9U51peJ|E%p`2Vqn`WNOz z#|q4ExuGp4^~+Hwls8=JRi%HM^0Asg#9%V8Q&ch_i#b`G)GxJ?sbhv-;ChM^CA@qb z5_F9>O8GqM9`uv0&d~M`&iZI(B2HSckbuvh(yJ{d{$5ikrlFE~!?_i)Qq^5_Yp`F- z19%}q;!=fO`5F1yyF2qjVt!`z6rEWTy1$Ic<14y)*^wR}_M(ezHh8E4Z;)me5Dphp ztojGnav8U{p2|RRC&CQrfw`tlPM=!w z6?^DKoB7wT?-LS|6@4AqSjqpRXh&uMua{aojc4nFegE z{>Nk=g|$OTd?-ZwEQHOZ(|X@?=HBLu33?y)Pb;u`DoF2XwOdhIhDJH*>rY((>Q3%rnmL5qz8+Jf@;*10lDC953!^7!?W1{8D|D{B{!P zVlY4UZoGosE0CbsvieTrV6OH5M-y1o?Z~x+Egf+|XN+HO?dc5uz5d@bIu+6_3sByA0plsahGzu7k4(1_hij zH%lF@3cxdl@FHHpxH@Cyj{uk(yX2VMY zz@_SO;+1k7-s_AGZs@a-iqt*T;6JDsursThm%rFx&uiiy^qcveIsbx(5xsufb|V#! zq0ER{*zh!c87YC&+t=FyXvu@Hja%l*KokdW^g1;KR!>i6N(G_SZC!xNA|r%u`3{&= zsXUMLctufnXQg@jTNMr!T}>-~}~PWVMhI)TwHW)oW3)4Gm7ot$J$gBW_gU-)ky}{FFUm4tYzcv2HX;`Ft>?sj!Bp? zgB}iU$MEYVmJaZ*J(Ew>kuKuNz^@_EmrFrjm#>ONR(Yx(29ya?Hw(*SJO`{>hUl*I zZH-#&yLO3$!Q=rur>7~r4Od|h`Usf;pgxz^DW&JPOO$A+vK*3bW=aF!C0k&2$H&MD zM3W>d>b1wwK*48QO?*n7&#K8=a66_D$qSe^>0EJU65N*@Ps_te`-dezFt#T3#ExBZ zEGU;_1%5%L_l>x(KdG;6gxtQSvprbmIZV15XV+?~C%pLFMzA^hIs_AEFxZr6XjHWk zFMhzjkfx%lu?LJM3?xL|fzQ1E=rz&J;;aSlzseLv>}%&z;{79Dp$=8-LhAKO8|lMh z)t2xFVSZxa25OXF?SYfwLD_(M^o{n)Tv^FA;-t*tFL0;8rH@)XN4#K}$cMyqg=j!T zPfeuCG^CSnw2+9(YL*FDVs!4S*Z( z%-L7_#W0Z=U(#hL$G4u)UA_rF_D^$gmoD3?iU@}MN|AfyIL?UXYA+2KR>S#Z0^_9A z@S#CRr?P&YXmVTGcZNapz-A)f6spD5iRW|cq{Vw zN&Ipr)Y6RHSDaX02d>x3=n;1Nn(5g(oSYI7o243*p_{D+s3D zmX|kC>e`0h&f@YNDKzceW#4mcfRuTNhqadS598c#>P!|-wa8=dG(tpNu1VD-Zs+&|&79e1oQ_vKY-Piye_8<1OvyRh z{^A2SnhZMfrnLA)N!PbeWNe42|1OVFb8VIpzo7RpNWG*FzI+HsvaOOl2vL_rOytm$ zJ~&XO9b{f+>#qprREYXecR{eJd|7R;#*T?WAr!NWZ0qsx8fUx0I+>h=_x7B1H5YDk zLr2Wy7=0}e&~cX3N;*&(S?sF+n%ZBb0fO$ssrPRZf50A9kf8=a%oc$o7s;rg7l2#r z>MtcrNaxw5XMBuUvcM*7FZ$0x?#wJ)^pKH>gm*4zl|M_M{JkU}rzXF;W>t9YyX-+{ z>%zlDOuAW|P$N(Wj}y<5Dzz0}lvFqJh*fZ-=QwSxX^TRv8txRVr$#u3tL0y- zitN5_9?Rw-gwgPqjM0)VJp8mf5Pi7F@3FwkleYRp#R2Y>sWp6Fs{-kxzIp8(3ux&6 zO>3)V9hnWmZnh@$e4ssS>h_pNfA?t8`s4VQ-O4g$QQ3TR2X?8*V$2E6<`VA*VOrBA z@+r4}SUJe*E_1;b|H|K~?}1Df&=h9P(dZ80+Vmn}1^K^nJSOz`a`xvjH$GIbM|qt? zZSd={sH`3MF1hl(tV@sI{upwAd($`TY0GhH?ts$6bx$cbLJ>Iu6_TTZ*kH`5qD2Q) z_0L0U&W(HRfZHyvJ>%RY0i#Ef6g8?tNpZHo{>__(JtAU`=yQMsD2NN_thG;SlzvOB zrk)HDw*xMR$YGs?&$SHp@sPZ5wX>NLzVUT)*xlc0VCvy6 zV{BOll}cai7pyzbFLL`_9HDqn6o<7`uoM@*>rlE29BiF;qmv(q=gt#N>qSdT-Z=-- zK^!$+a{OliI?Y~L>J)k?j{eB6yUR`FelsA{qpv-C@{)kmbC3vC?lUbf$=T%krs1AT zt-UYZcB_k3;S8~&tR^-tuO98aJwg>{bbX0a{QI2pE-pi+H}J1n=uf32b0!t~OAMks z4DCf7aj0Yod`Hr$APu%&V(YDFYMR1tkLM~$dck#al_s=zX@Jg#+^#Iy)@!&;lD4+} zrWL*)++)y5-6^vhW(MLNBg)^?1bw(`N#G7{%hsaOa+OF{C0EALDl9|PiRuT=$0+`t zBX^68x1(lvE0#NFqA$K8^>V!VM!3T(IX%bAyWK)9GtRQuguTyR#v(;(h)`~)RHJP= z293!R(W^_AHo)~bsW_Us4a5<>JR(#~QMmo%B$#47^-+H1+C-!~3tOUwaGU2hB>Dp~ zoBeAJ9t*5G|9_}4sQ)p-cM<9cI%0#-wXe+G)_fZ@g#aHGtC_`W{vS9C%6*158mfsi z?C&4Y_^((D1GWUW2%YcKiWP%@Oit$&O~AJQ%BNaRYDm?9G@M9!sIQGVW4baMp@&Eq z8AtJ~4&XXD%lz1E+4lCV2ii=-^v<;y}A2FgA|f z(Lxi-DU(s0z9Gh%eV{UAMelCXBuP>9u|_W2lx!A;d?Yj`y&0;1^>S;LRatjR0JCWi zxg2C=ud!%PBArO5v|>vt+O$h$`vlsH!Zf(J5x=wE^;ehw5|Hx)e}x!l2erU4u;HS% zlt!7faS(jT;ND!2D-rSI#a95|c~M05+Kge4!>zaZVCxbP7quTogtL>|#!9f{z3ybA z4JH`LL&&ycN4%>?hCE-?{J||_3I2#_@u|)~=(94XrrpSs`!U6oTvJ*!@RyWM}9gl|5@;ZsKM6dXY7X%Ux%=EP*^dY+ zTY>*(WUYSiBmqPlB&WSQy)du%ALK4p$o4V_P)WS@r(ZT|#MGqbg&1V+|IT>QaNI>p?9^Vo7K4@Qx&lj;^fFxg&wB8}4t$SXP)9xV-OeS~i zYY#E4ia+kz!^Qjzn8$g-*R&c6ADeDrJ5{KZ9QTq~Qz@&QNsB@n350}lA5g}gqQoVH z3|-w8-}d2EOkNJ{OgI~b-cD7`DkZ*209^0gkgj;#&Y-8iC`nOBYTKh!PT_XvO0KGU z3pr7s$V^+X;O=KU0u)iVqWGNsHacZ#^LPcEa;47|9ZS5}vci3rpiwbQr+oLaiI0VXMpoRsB{z}W?z!NO( zPEKw>`z>9>iXnzuAV~?q7sjr^WQ_U#C>69g8Rm|AB)|#JMK*w`6>-?sJE@tm!YeZ3 zHIXlLRn}k>qqm289SbGpisa2v{akY~H{< zbGFTU?Y1~$@>leq|Ll(UhDgTCXBm^Tnv4DcJ6=|K7?wi2$+s2~GT`toA7<~YsEq%G zYs*UESH5-tug-|Qdwszd`|6DNDrSAl(80rdQEy!3LkEgf&MuS2pHGoNi>KZ5$5g`= zS6ad`?p5dGr{E&S`H-0&>)Qeo z-qKbIuiCPr%|$VKxuu6J7f0o2^{s6KMfOA(gYB> zj`DNN-{wV)G&j3C05e+K-B&UNt=AtHe1%7T5`Q#+-Bw>#I+FUV1Lt`!;WGI{At*Sj zFvyvIU~>g*lGgSNOn3!Vc#lE;wNma1fW3!%F3m-{@6um&^Bfq^|JkL3PGGDn8WAfU z{zT!;3Bux(BT9h@T@6F&NS^6ODG4)ZJ8@Cs0958wh!F4wdyK_?|9KNIHW?J`TEIV9 zwpOoZ=p0-lWCh%U>695`(ru>cA08)R^t9xplODz;nsfx1znWg{0S_hnMc$HT-VfdD zQM{rw*P>l&1HMmGqg4A2gMP@c`VXkSEq>lGK7zCa&tWs zLvB1;Vl>XXk9p?nx_GxIVDBBC&?xBQAb4-0Q$;(YE*m8oKD&WahTm#-_hhZQ>;wqW`mJ@c0PS5aYPnJKol>1Bo6u>W>MKPV#`Pov`&h zs^d4`K`dBfr4V+(qrLKhjyKq_?n~Pv&^pq|(OA3BJjxcMdk^Z<|JdS9u02%)o3~`8 z+3G)zbV%Lw3P*2WfZ!8Sf_Zz3aBXvhT6h@#RoFPmS?n*S)#pAYZGQzF%D<7KI8K9g zOwi@FSiyn|*Ymz~2=PbYgZlPVhi0A)v42G*)TbQ~9S3d{k+eolY_G^X1BBtS?_;4x zgq+21n)Py9(2}sHRMRbJj?4`Q;Hk&xXAa+7*$w;u2s?p-v-e3eqM^47o>T#%NA(l- z$O`rNUT|OelhO0bc6S!mrua7q5XH=h1S~oUac=xn45W19SB(GO0Ze#yJQU=6tmrmx z`FMemR)koEPf)YXUOEm+FGJpFM4OWNh8nw0g-EgS;5w_Hi@7_;+cfI8yvEB4p6Hsh zm$Tss$89xf@{D@lGLRun+Rsvr-y-Rm92WY z9Z)A=-&b7)UV;9JGvHME$IJf2*T6ip>ovBWQvi(IXMl=}5JB7fq5+=PYr0gLAx8I? zX^A}E4SEecXiBN+codmi`E!>dO^T+sP~I{Xd~P@HBuF7Z8v7~ zTgZ%$TEFiLJLh@)4pQDCc%yBK&Q=vGDQCp-`KiwQ8^iOlV);aFE)jz~Vcd1~K)eS{ znpmT0fOjB&G?tPtMoqsj)zxgNc=Ku#YZsNJ9c!UYjJf&XMFoMMM!49>#4m*vthv1L z{v-fwRtH?f&<@nnK!~!Klc6{*;?P1poYU$%Xq#%eV{-K|{K&P%QnmbXM^4i!=|zv@ zUVvwaWrimc{1Wzx(v^OM3gXrBRqBKqmyRReDu2xRV}hsaOQr;5Np(=%Droq_#6ACw zUopaCzEmRpw&m9pKw)fju7j;yKs>|1Yuvm__0gF#e)q?})pTJgFE80$!o88Br8_z~ zqis&%yS5D=fDzKZro=WjqeSs%Tcn=ww6$QqB^HE7rl?YWLLo>Ni4yhm4e} z7!Ve`XNL_j*VABB51qa7bWk>t=rlN|5j?E~{526RHC!K%!;BlCS|_&n)FlHx5Y?Sg z@RP69IlG=+u*~N-xWVDfMIdFk=b1A=_?8*wlDOP{`hI`d3iRrR(e^5fWIC0X7v&8^-Vz*E!0h2bCA{=)~OathsL&<97rMJjTZeGAVpHd zBi$RSetEo6Fk3%Surs<71zmhGtsm;ri8Iqb*_funAla@q2m|w&Qd+V{ZtFe@4K6$F z_}ynTcs#}N+#cXctA`q&ip>GU4QEwVWx;$g|>F~dB$t3A>`p)pz=#2VOG=f8|}2(B$; zQah1Qy!`4E76MRGmMgAztW)(H;3!??qb&aM)IE3o+o~P$Zkw~~OX*v)fU7{^Vqr#)5R|6J$j8=zBH^PDc$o54UWW=&pBSuj zj$XsdDxJn{7s6URaYyB2i>8;@`tyt#AiV3{Os8?@(oV9E4fK<@{Xc`EB<-1jrcz9Q z?4$Fd7Bup?nDTm;kK7IBs~*i z2H@(j-i_R}t>FO!@5b_fPRb9s%_VvVT7XU?CE zm+-8WFQ~`gm>eVP;rm}75^GR%!J~4CP&Qw4CLguJR<{4w2@^!{8gX$xTYMX$-l>dR z$qt+a>ga83)-Lf$|McT1=ysY)Rtps@^w={J#AI0Em52V-i_X~DuSlMz&vVZct!ke^ zi@BNslMmR>1kU;i_4(tF+w1aD28z77+&HV%lF61G*w)0r@6y|Hpsll`(!<%LDAG^CbI52C`rHe1 z*Zc8a3z#&|xb7;FZW6MmBH_U=2g}%b6HCSAaLqE4(TKl#lt^z1lSykN&(NE}0CsmXWGl0S@e{|IMJH`jaXW_6(hHws8}=;GDDyADe;%Q#b{ zOd>`rtv?mI#R7*?#9~y#gR1<+zzoT|uoZ7T1CzMBp!-f*wo1HC4lnOdGqz}0k!5%Z z?CFHy4qjuPJ=HL<>%^$32jYB<`-s&yk|XR0m_5CzAeFmz(iVj1OPf4V=Dq1&EbLNA zuUPI?I|jm;l?$rGTGNeiqN5JuBW(c=!{&hIre9PPfT?e^N#xA*`(!^-SKj5tb~ZMX zXAXQdJ`WYga7-7=@bgV5sTR3gFpGnCuJqmxH#I~M8}0=(Qr<)`KQFGly)Yp3(;17s zeY2|lO&{JBjm5kha*IJt<{D|}f*xht(em-dHq$8gT2BJ#^QmjC^*C4~G2bf0>811s zFbah4xNK?oKPNR{5UG(n@y-qBsE#@)rVDj%YX_$H9>d(kvl+%VwnuP>Ix}tl@rPED z+bR_E^;z2BEki`g&h9S7sm z%n3WZu8uhmIvcvUXxIIU4R*Y4_HbUJ`qx5~U$Fhys1ATF+9p1}nPlF%j<1mW)MRxoxGz* zNHEHDL#ukb7?1W{K~M7ZMVSjYF+mHCt;Yt!XK7Ard;KLb>@>LY-ddOA_wMWb}!EasDfiL-ENTIV`^<8Q$Z$R!N&y;r*+ zBi>IssIJNT4ZGSP0$V<}GPe`ceo)t_M}_%#&TGjUFhIsnjC|xGVCpYmky{A~Tnh>{ zWaMsIBtbGJUqQRvK*1$rj1VtRn5EV?Ug2Foz_>e!5GxpAJt~j%_a)Qwoan(+--6BAwEQ;xT*K_;5^Cq+geYd2I7$7EB07H) zlhV$!&qS5mP1U%p1N*lC2IE%=&V?!YwmaNgUxeDIclI(Yaq7UmG(NCICaIju^IZUQ z(py+kO@|{4E4TUTs35xz8!Th#U!*Jy>uE(d zlJ*QXo<&WK)|s@s$GYu9;BlM9GS=}{;XTFMi%6+);2sG>D7JI|?UDoa9EwpqO}SFN z)8f<-1u6}f`$GvKo3XF%K}ng5ZoP?J!wm7h574v*z+S>6v-Yo?qg@7AddhY&JsQHF zW*4@cRw};tawg*uICXlAicdFciBNeNL)4!1`tyCJ!K5Q^gY7uvl%HLHHE@KVY)pFV zz1axZ{ZJLhDEmaO2^#oy0PqRQ(guC&)`*w;ZCKmVX4D9~I)C@^%MOg#LZJ`OV4moD zQNMC`6NNdTAwyUPww}ugtK5eCHnb1&Pgzsy;hSe(nPUCcc&3#-q!RRQQv|#bn&!To z627v<+Wr^V@2gH3P7Wx#;JnSA+CdE&9(A0+GKU4gLr{JcukwF;a`cM{=`0kYHs#AH zkCY(z+wAf+J>w^RP87@rxoiy5FZ?6Kbd;V`Xe9PsLodMmr=tf|Hv^|qm}T7=8&!IG`O|+UV*6c59YZPB2$um}U>5u}s0{T@K}lw) zo~bf36o9#N%fawtVvg2)5;UI&A0eF%gJ?{i$g>Z#9_9i|@G%UGJn}UFF0+G>P+s;Okm&m?RaFAwEA4 z)2=^!(s&{?a#`-`+-dIG(-)%5r>@&)hUht-F+RpRY9<7WV8XxYL33>cCB)Vz-fJwb z`N{X0`q?#KViC+j;8Zkxm59J9_wCmy&C>h;%4Y?>*6Coj6=CoF%`+PR1~o0X}B1nl9A<*1S(d04NW01dSB&;#^vSrd+M2o63U1UD9roau5` zNm1d$8dSBz5GM~-LPN2Aw)p zDdf^iK1G~cgS+ZzMM=nz1zc|5p^dpT!VQF8wBO7#fa@%X{?;oB(5@C7V=lg+qB_wI zm{Ds&e|kj(pp4Wh~GHc)N-{)xgbQptT+Hi~iozBjDjuoF|POjZ5 zt_$Si8Kc!x=Sa{5%^1nvjgfWpxbRR!i_%M`teMLHPz4JJCqAA(F6kXYWQ}E1GQl@1$lA`o&MWN>Q63wvN1E|BqC2Q0r8=yEBZGxQ=i)qTcvf|9 z5r@EXTc?W-5x(y9Yi7kt2`S`K(Wq?c`p_`{a+sKY0 z+%HMk7zS3$l%Pwm?f~53!-45`IEy>o=Gj|+E6H1&Tu}8=;_Crtf-v6$^xag!Nx&wM zLof6%&Xym@2*J3Z7Ou|arChvG5ex5rP9$A>00xiJaX$f8h=qmJ5fQx-$@w8)B;pdb zBEDj660)nsaf_adhl{e9G5f7jr$oh!0XM`-ioAI`L!FIHb?3GpuKwq~RNXZh45^x_x#&VB;p{F-qa zR%BZlETn6(bltxXeJ0h?J!N1}WX*x15NRBkDC5+nD|g zzrMBse<7VgO^{m`wq`m(0ZEPgMSb77SD49p5tda|nWe_fXgdD7%>%f<{D%y4o(Ul5L zK0_@^w}1@a0~6CfX~wJSw{wIG9X1rx(!nazPE0=un}~n~N*`N|z6leT@%g%kDOXpk1(s*OWe4v$rw z(vBi}jUSCVOZtKYmbfjg@D4oxv^;kPNaYugJ}Pa>@Vi-stKX%cfm|t9SH1Di1csaC zaT}so!m;tBevMdIYFF(=|8EY^$^A?2)|qF5Q?T!{b4E^y=N9Xsrk7flAn^V0kZNU+ zJ9S~S8sDTPpiRq!nZAKN434+ODK`tpSxHersDj&cVuOUbAaI}KUfmmz-o<|;1^`jKmVlMIi71I$tEQv5gsRgWnu zK0Os?`^(!i;a8R|JA5yk9#Rxr;PSET0imE`gY%Y4)V)o=2_9upD+`Q$S5C$sWMSq7 z%TBf6NIHb?a5fGs;F@^>;`^^9$zM_cWplR`o zO#n1Yi3!uNlm3Fu(W^HIYwKdG;fzSF}~Z8Cn8y?W*oVhdWE2L0Mn z@RYXt1>onoI!&=Wl%q6OqC6MUB#j`DCU?0kEs3iqZQ~Kt*+%v*y^f%S8<1wWi=O^s zZ{^Q%+e8?6UDoyp!=WY9A7TuT)DjwN@GTFplbr%W51T0tcz-o4XX_Y_%qPO4zjLUM z0XIcZdQG;@NWY?eCz}jvRn0j3;}q6|N)=>MBzfynfRv4tV6Kl$_CBJLqpj(Q+v5A> z8`|EJ7_pxukcE)x=g-kiKhqWuku;Whuj3b!inEb8bhy>N5!OQR5Q_|H*YG&6hjF&X zV#iltAVf;tRrm{vc{rIN7(X%AX!J9UPWDuO^^kURm~~LZFy~3&$2A_&VdPd5YDZVt z^~V)3!^GmV$*eCJLD$tm%r&W`egVtLQ((llE7grikz`?@B`kIOo*Z25mbceLq-72o*5z zQyJ`)$a|PUXVBMll++hb{-GBF^rajTue&0~Iw6-kYc8_q!R1uu6cg?W3?-7zD5zR`(Tp4F zCR@(On~5G<+>`?2;O|f>o$4c#$MW!?T45laqXb5SG?LOFEe4EMM7mMB^SSr= zJ^!*7u)TN3IoG*Dh2%fG2gA(nPZ{A|5qw#3tUHZ>P}oGPMMj(7(8>=r8vQiaRfO%e zwsgX^l;(6FGv=K8v_h7L!BIRo>c&xEfR!g!3i1UPQ~s!{9_`Luyo<4x+V1aB^@hFJrpd@Qt_WPRW2xM&n!Cv{q5yC)HD#jy-;KodLLT zWmg2%C9-#+dHt@FHHAz0mOEW%JHkgVI9kA)`sgLi<@Yx)oqy=+pzC+eEPz$CkY^3K z`gO`UV9E`S2?$fiX-gu-e^RDFU!^B^U}PBKKS>P(&!-N62K-;5*F!bnOCUL;7g1Dp z#0sfXt?#qf9B6yC2^3sE6TT?@8$~Zgcm@ya^Slq-(1e@P*DudPUYES$1Nq8AH}^B# zCsi{*R(7%N?@kAp;5Pk4m<<2heJa-t?Hmzv-_5`v&~?lT!)x?(QQK1=Rr({`4DTHW zCT2k!E};-UsOHU|jV34^hH0QeE{7E}Lh?WK4tjL7>#GL7_``h*vJ!AR?_1zgP<=qH z>`+=av=K8!OIzYllOfsHxQa0WLT4y{lQ@j~v!CP)ZK1XGZSyCre!4i2#Gx;^cy{4p zdo)go2>MxNdVZ!3lu3ev0c%il9HTmkBy`|`Ag-Gj^@nEiJ(hK|6i$1gN>(c>4=66fUH!DS!X6JIuCFL^f04~=}uD3=FgifE6f7Wt;xoQ& zPWB}E&TJE{ZjFd8Vvz>jCufW2gldIR?Gf>927*FabY?Xw{7CasYuG1f9G>>h`qF4r$I+AP$)aHGd!CZ{7(f(**=&x8hb;jkOyJ z0F6^07kC9T_IWn$JA=Om&PBOSCD3ZLJbxmCsbP)=u9h>khAj&`APjqhb!pN9!f!%L zY0_yWIdj)*r0_)*fFhez3D*|X75f)4FZZg0`(RjVb9?Vt48T=&W!HMO@#cEH_Fdh& z2*h+Wt_o|}^LD^`sd-()Xmq6Ij#eb)R|aav`|L5*n)I>;|0Cn@F#QfpC+`I7tYO?o z33C5_`$mtGgoHFT8>Otj`#psFETO@aHbN#usB^YvyGubAwvZzC*m=q)c*+&?If(Ph zBL?d85xX_}N=<_ofUH9K)e(%}4kL%`r%6pDH~w4+F&S_<%AtuX8CE8s8MZ+@WUp=m zI`kd<2CvfPTL)l6AQc*;Nn7}c;Juhs?i1st>0)td4>HrQh7Q*v~*kjc9EvMy1a3p zwwD(%0pSwJohlJ3aK4d()@w*#X35FBAdC9=!t~0Ps@E%;5IYY3TXgDCQDg;^%Ts$q zQD}YNj|HAni;NW-hu8Eyn`w`(Q7ZwFkw*jHGvccMO$plLyqq-2kYuCH^L*Rbmz^q$1ve*OZB9J~ zQV4-(RYop0arG?2^R5#AiQ(`n^qwp+%SU7()gP2Y@G3E_4*{&W$?~ekyX_a{<5FNQ z=9=`9RFWWmaxMC$S`%aDXH1?DCdfr8B!(a+5;OiuQw~M-RSWMJ>Jp`RqW%&DRNROB$Q(tW2nrnA z7x+1jWd=G%*}7}(+Az8Hsda)7!ipWWEE?f?LQg3dReguJ=d{|#ryWZ}-QIo5?bv-6XTwyh1+!>TlvXG~~;Ts~;V-xalG z(76oA;1S|K4W;{}|7YAZE?dr@3;G7B;5F?956RX&kUT%6^M~OIk)~~Z3+Lg&H^6KM9N@@bH{VLNX9V8&is~3%53jN8U zev!;fIM6K%OSu%qA{QfP{a=ekpGpe#xdg`>&q~yYZu0^1yc7mvVGT^(+H023f|W=E z!kW-k>r8_Mf77`e>|^73Z5!7AA% z1l}<$Hg>1sK*Mjd>2uiH5hF~^KrK+(rCG~PY_p)>i3WeuvV)=W(KlDHJoT3JYS?|^ z5G0DtfO9L_WpJ+0PQeNoxAs=1@~5dnLLN@5Df^mVS~WN|v0pbwcfONKrJ{@Ly&S{8 zoT$SI(GuG5(Dt!Xz|?P;z~jla4NiwCLpGl$03^10P;fn#*xIW!a5mOTm};B^#b@H; zu6Bo~40sh<1j6KxQ4+&ZZb$~|$`EvMdCpzZhS1o8aaWt14qE_a4kMks6_!iIK7UfEgh_cw-v( z@oH!2&b9fg%)9a@q9D&?_vhQq@fP0A!ysjK!$J4SQ<(0|wC4N0Y?avttw-3O;Pgyg zL(J&h)I8kA-6r?}UQ5721$tub5bqxZ3feKYESr^Rd>aM4*oPXvBZwnnCRZhs^&mrf zcv)gy&XC_>bA<wt>-3gZ%+pHr0AL@!(zKcM%taRiN~F3r|KE^3WLs@R^_ky0yh*@<)&AHISJ=J zYoO*Pt7JU9DG(|%WyTN1%Kiw;ozfbM1>DwSMtaVvn#`18D5E^b`VOhr&VS@25jJG{>Ndx%S=wm5d57veiBn)=bM}%B z>9R^!a%*;`q$FwXor-kO+uARt<9dB2$e+~&2GmM*&q8>zrDoQ?|8FaE!AQbXn+9Ui z)}Q*B`G1|rrrj4I2CJMy0wVn(u?f|0>KJ|n*&*}>9haj7v1ZB_%bukcd}m;2=bQ10 z__`^W80%CcKs1L4k7A#=}MMjqU)6Xh^k?Heh~}UI>ad z3~9y#3&-S~=d!SGp*_Tur#xl!F+k}<4{cRzQ#y8h2?Tw9c_ZEkcv$|`3-I z9z6Day>UwWt7x(~N8e|d&$CY44l&X`!U7&T3S+G>#mwh?118jKm zL(YGY(ZpUYFnP?z)OwaCCGg~?^4iDyt;GeOn!bh`jos!$3V$m=@!^KFPIGFKn~xQr z6A+&-%hr~(+j)Q}SpjF)PJ{_wQA@GMRh8UZ2gUZ!%lW@r75VC3!pVE@Lq=B~5dqr? zRKVvRy2P=|r|zb9ZLY(n?OZVY);?nUw>L-bS2UN$-9=ta^6N0hF8)L@jpzu6P znAeGo5twYxJjlH+QgnY;ng?t#2vhm>(m1+Ph1o|&`DzYu@`G17687Gs=ava|)oOlE zUJ?(O+8pX2iapc(Mr*b1n4b;)KXK%9U(e4Lm zbCjkP2F!g)7w@HcGzsKYda>wePmIobhhxoGVq^#c6%{+qoIT*_n9aCTh8e<;w5WKs zh?Z6OgZ@6q{1-X(G;sY^uKTp_SS--ctM3_TW;Zo=M&Cv8X|n>)2i?(+&@x7GK;Dq= zL{b^8ptD_hL>d7I)8$>m%N)jWOb=*(7zple-~MedmMo%K(Jv~QRmxKUG?Umu!KA-d z?Yp6rh=d1J7ouWe7jMSu%yBVA+2mE29Hgs}5_-iryPyEOAaVERo~io!bAp`=?YZFQ z<(tP{7)pf7L#Gvc;?O6K+w!4&e({Vk8>3}1$>ZX zI=0{i6Ak2?>Gf&5>xF* z!Uk7Ad6)(QhCEpgZ{j{(o(?#%XJ;(y_;RC@-K2gRnlmq2WjbWe=VG@vYwEK>9R$yM zb?;A@sw%|_O1D9)TX)FmE@N^1p7jb=OHLc{ej>g27s|RK!^!vhvZ5rp-={-zHeA^) zKr~c-btCGE{*~Dfu6S2Yy05N&9{UKvX`TlcjQgBSH+FEw$sd!4?#A=}9-F?09d)=mnxkamLO2f)=a z0=clI(5J|2P+wB}+SC_t57R!rlJAr>K;(v8(bpo&81js|1x2&fNRB*#M?nto>tKU* zWmED0lzw(!taG-4>5sRohSYP7YsQVKs0aYAk;(<0I5!<%9=2MdL+$qLVoY+(1o2(6 zoMWsh;Ij!N=o*MV5>O59bigO;z#sJ8Ts9=|2%iXUtIxb6C_4JReV=5&AG0w=ZK4}` zYTxp&K8?lSN{O9n2|McJw?gavyI<@DMn>o2fTZ=1H=%6zC5xGfJ!OdXPJyK#lS1FC z^9U~lCtjIpqBdnP{(!E)fw@lrC-&YwB2HdwrYlGEk=ZUSUf zal=fk-|sHHLMAETU2qXmD{vTH&}fVF`M-Gg37o#Pr->`4O*=Qhrf*-8{ApgZ@QYN} zZ+@gv8EB1>`0yW?4cXxRU%>c{&&?*HE9Hn8P#uws-u#X$la+b^*-PVmOAqJ}A$vWjj1i*VT#vLoM3t)eJc4Fk+zc zF2<)tL}AxdS02xi6(xsf;ym6h6+Mdj3>~!bW}#lrrgrN{%o}B3I=pLKoNOf}ds`My zJdDxkmKp(Km@E(X!Y6Piew(ZZQ#0dT_xqimG@FXIjn~~udHc ztysC?q!aS>G%)I=cv3_cRB`ny;MF&9hU}_&UU|97^y)HYG4H2bE9E0ZR^4&Y zA3=wjqvslc$10OGzv4vCXk+8ogWjstV~mLNWXM#&-ZysyoT<8xQ~^87)&)J$xxurs z#X}*AX)Anh#Ms=NH;CqlcJP) zbgcXfw_8Q^KJ^g7JO5flYjlQI&J~Al9jz3Ilxt4$wSpI%91A1Mv##5jyU;>U;&hA! z^;V`Aj?f!KIYwVGl43Lp9b38;U36AS35lMJw!k6+Db-y}R{XZwq7&UX>DJ)zmb84w z;6u6L%?ERHzR{#i46!Gslq7q+Thr8V^Aa+4tIfYvX8g;FJoaB!J=6z&XQ#7JuUO%X zI8kIDmex%`o(e`Uj2SuVBtvu~+Qe6E`-{#{j%98^M6lNV=W+Lktmvg`hJ08L>|qr% zh2|w=#XT2ohtFHU8(}ndaNd;55CdKn9Dh>(rWLB3@$Rn9`F^Kr%->cZmEQsvEsXqi zdAo+DlP{TsET`daL;9OGs`t4k0Ys^9m}==$Khx7hOyr!bOFVMfFtlko#ME_55qfY3 zJ16268T}Zz#9dsIH9y~~Xjtz#JS-Ke=|8KNsLOpjpZLQduOU#-5<8D9+@%#3Pmu3K zdYKMD(@yKSfxfx2fIgKRGl48cfzk1iC#$@(O3KxT;9Js;P0-)H+0JuplwyfSSFXON z0a7Y=&#HxruUX*aAJIc%JxWG@NCV|Y8W#i?cEW zz53R>V(3`FDS;C54*1v`;r@9x?}`1GOdl&*v{2$JiT~ z-m;>Ycqiek|3+4yh=4V*ONRCuuKhvYY?S~b zEN(dq&A-^^CN&R=0?(wmzI!F}=H$if7+gN?(nah^mMEu)7N6DfD_Y@xcj1ZA%qpEx zogN+Bv%dm$lH!btPQgjXiJ750=Wvl8+GB&bTTcpXG7jAvbu_y^q1K^0TOWVy5r z&I`Bvh-@`o`fklDD;tJLJaCMn?J_(4GIsgzag=HYTJyOqo{Jib_gD9-C)`hs!mD_R zmqdKfegk}qP>8_1{eX5GV$&N!Wx-o$%DJPbN~uor4caXQjei>#D0_INUFjJL$a6tm z`1g~U9}atwr$pR0D@ZDB!O;BBj2S?(y~^vj9Of6P>Yrvnr7@?30`s63AOI)U2st{T z@^p}WG@&h3*P3v{6(is)h;B#Q&$D~#x}T&_-anEF^+KG6^d3a*^Ly4{B85@hJ8zeZ zZ=rzoPO7;)b*ERS8kn=ACn6E2(iU9543e2Nq`w=pHS{`xDtFEY!pzarTWm*w%rEF1MCt#O+hn;SLK0piTJFnA5$c@(%xo z6oeKd-EL{dlF7Vu;Dhe3Wv7Xtp70MnrGv+pGQ4t`vJ0NO;8d8x# z;pI#)Dq?4^ycc50U_fRUOx{O9KScjgB3L=J$a}i%OZ;6bM=bUF50AJF-h0=PoBSDR zgeVJwv+Oh zd4*9Tveb;#N_hIT>Ws)oEyZx4QK9{M;49X!+DowDn)H^C ztt@JU9>&VaDo?GI7$D>y^cm|Dje);>kD;$eY|)GH)D zZbIi_Z<8SczV~*<77ypnSn2rfV`MfM_@NW}g{S#9ulnpSht}^|^6H-ozZpnFd+$=o zr3tORIWD4mW};sZv0FaiR-xF+wgs&NE=oEPd?j+Q42adoIg)Y<5UNR|K{~Q z*#mq`K0PX$Er!{|^`9}0#SemKn{B{=J+V2nxdu(B6fyWA(nnMvvsbgWE9Xc!A|>2} z+A^e5;D9h;fByO{pZ@8$SE%=U+`TCBmjZ7k-i;0lbY;h)02#8M80z_=C1 z)?ei&y07~yOKpTELO)%~nr(p=KtJG_Hf@b~5^HCX11@IU4Lfn1!79I|iw|ykYy122 z*X)9=H#D0+(;p#VHvL&d-on_c*QZDrCJjK6VSHffEixndhXN9~q0g4vqM=vQjnt-* zP3uCBu!_(43?q&YoBRpkP9MA3YAl)-DvnvfX-S+NxqbNUf4v}k0ePrVUNeOC=vL?i zwxQ9Xu=uX+9vei^u<2#kK%7ctmT9hUtG4#VS6I8!+z?&YQktwZCt~!qJhj`KK#g3p zy^1Yb>)#&O4J_h$E|;fD3Ap|7qC!T@di2?MWxa$oz%-2^2Pj@cRi z)C@#liQ$1}ln65v))*gsYo09Rud$@DD!*q58FgLcNy0avFp`HjOKD<+W(eBV{NlmW zUF?Te=0Ebud!=Nq;Bi3Kg1J3QShRv>(I5P6o_rH@SWBz^;8&Fdcr{{ig*o&K!qHeA z3Tn>{^S7xuczZzJw;HQa5$0tXE~7oOoxQ&VH(2r7jPy<_Vf-_<>|E2zZ-5%jqC6hB zsd)6I6bu#=G76{5^7PIm80g1MYLTy}9Q>M_EVyf9G{k@N6)iQU;}57WkOOujpGF_Z6=5%lfv3*kTo7 z+vZ?=)Q$`>%vRQisWN4@^MX4p$kCLv!(s0MoKiiVd1&_EAaR|2AFFa)crw@bV<_FO z2K@Na;zR^tqPBbnmu7P7N6usq zQ61+~>1K<5o8RKly|5C-+xc-Y5ydG$@D(Mk)q6|x!P$339GaTlA!`3x(|V6ka%$72 z(U zoGJs(cOej(6)piv$(KM7H<9vO-hulfkSl)o%|zDN@Tvkh+^k_l)OMpG4sg_gcFt0w zS<&-n?{`H*KA3JC!ZB*gVEWeT`LCLaK27@R*?G@Iz6Jks>phIPeyoi6)sOtp7qt!V z<_qbYNSRVywn$c6{lPlHRn)rZ&dRe-7F;?d_K{u>;eI;ik0&w|?8H922U=ySOZ z^8IW{Nd~e76+0fkuU?m%gfEwkwx(deX?cA~hz)(q2qBq!dD?b}Xhv+h2!xOM&|J)s zv;g6gmE876>_*-Iw7h*zq99EF?yhYpG2mS8(wNq0d$ z`w{A%iZ-&NI=^{ViG}qO?i*P?bAu(v5pLkD-w*985<<-!$@0l5z4Rq&R2rjjyhAWW`3(1D`W90)#GiUTF>Hwd-?|hm&z_3JF(&zNWCKF-snL z6;x=2q87#0c-TN|j8-?Gbf_pe#-2wP_JNVl`$zv+boI>&9%2gZ$g1uVFGSANN^gP7 z;_R2pJv-eUp3ATa{A+~-;r=ELGSQ!0f@Vrez>gg@kzrM9xU+UD(mT`q4SD;c^~|DQ zYOM$YT6{EgKQ>bR?sULJw+=C|{tw$$9MbV-k43x|>n!3bzLQgJwGdz!i>eno0Mb7C zdBHCN!912sn56%GHPNi5?Zxt@#fR8S)lpE(_nst(Q5D*Snb?R!29 zYMIciUT#mT5zr;So#Hdlv)cK7ECL!~;%$@I+V_M-IZwKVuXRKEUx*|Ozsm|{e9XFKY z!A{Xo@#C_W6=xN`k9eTYTN;_S=B{BY%%IR5$#*^E`hI#-s`JBCdGWF`UIqg>d$p* zQ{i>tgzYODO09|SlVJh%WN&8=TZCF_p7}q?$ADGoq$*FE^Vwv$SOLB*Rdaji9>sLV#&&AL*XcekKMgBM%IjM-UA zD0@^{a*gWA1D;8->hN#xq2o-n@@+V-x-p z9cq3o|Kv8nRHaiKwVO|+-~0q^*rjIn;tO}WpZ%F(q2BpeKryA&BxVefi?W*r1NPhU z-v+n_OWJ1-494R>gYU0hSp{|Sn1HY^SWBBzte*4s8PQ`ec+0g=56r(ph&|Q z)0PA*C5e&ebJK=de*}I>&f#idipgS2kn>TIu>Ql^1xUPW;h0W&ZL75%IqK6hw!#xv0Z0mYUHd_wj6q~6v* z1N#v_6f+C@8=l9A(QqZ-Jk~z?rqGklQu{sC2Hi+%^Q^gaHW#2Wk`rv7grI1Tl%r7% z0~AcHv_{-dzlG1nruIv#p6kxHCp1CpLv~ILpW^_9-e{|jDI)ijMtp{F+1^-$QMl`D zkVGr~$TpJmrXNk3a3y$`k|xF^k9=jb0LmMhKpT2vh8tH_mJ9|1){{Vv+?^i7&+AR( z;?1B3z*jlcJ0x`FXTO&Hn&L|Z3@3>0>6@w12KIpeRap58Z6daMJ8p1Tg{aF?hyZsA z{N`)^Kvv%sC^v&0p*C-1F_hvxdSywNdr>qjtd3j% zdZ09r{ajb^DkCQTs9poKdixP~%!TM5&i#^nNvM;n4)bn@Gf-!HJ^dO+-MY}+NlcgC zs1^h^mchl>YnL$^^<*K;O|^@pSm75^mxfZ0yWax8f{p!=d<)cz>MhXJ|Koq!Esav= zmN!*|pP9NBsWy_$6^Yko#ruI;XjYhS&E)|KGEt2K6!e8GlDEi*RdlpUv-YKYxTB<+ zy!-%~ku;}KLS0O*f3Z4rrXF_${JbN$KY1hcodk3B-;chr0R-8^Jnmfo zPFZ5#G3!?7*u=#2ue194=n8)VK?_B3FVPjET`>2BI1_!hSBNtl!*PiONIMzkl!eMC zVD_v*F%5kyTgo_`Zr^(-m7dwe0ZeUlsWx{05+AVWf*dHSdQX})>q8~}8sV>gccJgT zkV!=KEIma$css)#YL{F%k(AFGK0XDc30xEA?8K~7Kn0cHJu08U90L2WtOW>1rN&Qd zKNql=s)E_jc-{*~?EjdRlNGTFvK2t80O|NfwMj>@zcA$u2Myu>?yq$GSqc9|e@_xEj7|CHTe764?P@VeJ9 zyItcP{)X0QBO*^-ZSqYKWzlG zkljfx8WzfS{NF&K@a1=((gk_I=M!15jmE=RB8;^3vsYV$mkD3(`Zf2AEa-2%9i=)& zYkjVai0mF-?|c96Z&xx2L#MuHknNkiVYVIZQtmayhVi63q>Ti~Y9{L@s;UDG%-CcM z$Aa#_KZe&g&@*vc3%vp0?fd)PLl22(0g$ejFkn>t=}h^}062+}uk;MM(MGR9iqYs# zlkKzf5c-*j-Hj#vTt+d{i)T0eXBp4RqLr_k&EF(H-7)oAR&9(TefJgB$oi`i^aXzg zU;WLQU{->G@G*MbzBNqpP4I1Z(&@>#eXRLB==0%7xW6~nmcN1g(J06(n;n)Fk_u2G zbi!cR;?Gzc!x$IwMBt2`h!}~WhAxu=!SqDf zU4(AL;5#Vb_Pleb?p|_+8CIKmSmR>Coa+;&%Hn82(T6~f{zd~u{t}@88n{xqsp{Ck z^fM^e(6unf;vi>vij!!kRAmEukJCucSC{}07?}vDdSHE;?TE_3TBjd0(%7t1^&JM@ z)152^g*wav$2R~0p8`W6M}}!t^T;P7nSVm2u8;ko_Fp+b`m#f~&_z~a9?*y*?CiNi zzgMe&?Cm~&p9;;*a`?N#2rOdc)~+m;EYM#(j{;(5;84GEZOVn}G~VU14HyFesUH zPVtY+nKaLLLQ&jYGHntEQh=}cy(+ddfO({~LG&GB*qj+}(-DuGP>S)#IBCxxM6% z5m2ggFDPB#o%QN#-{zWWLi6)(AhW$mxeYj zc+8whv=X59^cdL;AziqU$uvDyPWl84gU`@i6*)9|1DG*+Z~tIj`*YA{M^HM_Hs;cf z)D!OZ&{`6qEZC|eV-bVb!MYa#Gx2m`fcWV@0C7Um8D}gn{$i~HUj`04sA>XvA3c&P zdB9*}Fg=cY+*8*h7XM!V1n)|X5vU5&>~?N{^)vxvgHH#5%jzxAb&mBxnb zAH{D`l0<}8*3HN6?Tprs5;6H(Ha!CfndgWP_QQ-#yChVvC8T=C$EC$DvRr9)US?ZB;f z#(4Yyk+xtwX8~kpBwctevTL?~t%CzM{$whoWB>Y2wggY%$2QV&zx`w9uFGG4deP+{ z7{)|no|d}+uyRE6%ffn9lxd7@eYe*`o`f~*bc8Q@Wd)>)H0pqq zfg589l1u?s*RK#(U9ktePn;D6+#qF*_IBMqVXt~U1PzM}S4}hoSSqpq3R3P=s!y_F zZq8KLeL&b38J3ZU%W;T}a6V}2zw_^Z`ogtxi8F`1flo&hmu(OE-%)2tiP=~%Jz^gg ztqIGfYtBD|K$Dn?q>)&s^FcWtDlO{wAG2~uM-WGTt41Z=0jwn}w{s9!>upE+d~`{@%+9C>t>|=Hb}& zoPnk;Onh3h)1in)F|lBXjPjnVi|9}jYyvB0AEciK=5a=A@mRQ3#tN2+rsS8(%v>|Y zy{OkwiEb}0Dc6HK11?|f8u@EHs+#j}Opq$6Av6njYM#Ikr!(nN(DsGEd^$YO{j8d1 z86+1YQr5bCQ0Xx-Ah_`^#kWs4s8J7z-PVMSg>iR0!COKkI$tARo>CXrL1gurSq}Gd zuhy30)hNdE0gE2e-m-w3VQ~`ZAq%n8mG_OnN-^$j+fXd7jthgcUOPW0ol9@dhU`A# z{g^?aY`7eo+%h__EI5lWm1Od%GT9>Mc*gdZ28yPb&=K3o*UpI0~*KLy_Npqj<*RCagpul^a}S=e%O*(+T5 zI3~O7qlq{;8&qa9`Y|r_xwTtBz3dj<$hB&wtga&UCh?a!?l)_nki{-X7zh104F|d^ z%VKCLb`NnOYWp3R#$|MWYx~hIrxP#AHo{SCAR zqehZboGsROLU1}^42=cBYqt~>H z9rRbes!%5{li(k>Gw+ss#IduQ@plh`89 z1G!>0K`vUMwhCl^qb_pW)3AJpjHtiY!EQ;ddP$sowR7MJqJHwGLIg@vAnW`^`q+B6 zyYtI=x}w0wEJMo6gexH~Mk87uG^?WU3;FWrzEQv|^yX-mi~iL+{;%3usLN7@YF=Sa z+>WO8)+dcqfOP`K_r>qS3iAyuc zY2}k!b3K%O4v6ZyNO^A-jMjg2yKmVuaeotMbhvW5ac2c?SxtmOp?iWHbK7ee@Qa?| z8&-|!XHLJDfnrTNcWX}^Q?5q1DQ7I)3)ys02MdziPJp|SqquK2CFW-aZoD@^IHrBs zq{7iWrrL`Kj<(n-xHt>@pa8yv_tBFMhbTx)v5FC&u71%}Nf%Jb5Fg)9ma2W$k-fxW z9?mnsSFCac^{v|+ED6CG=rg3{zvVB$5QAc^YUu@5{#-Ff1F%;^2a&M{3q7hwAlK&I zhX#~T&RfTdxmL6PNNNId3knoz${GAnxwWqkFi8t!wqN!4o-s86^)MG=Y2|`UPQi~6 zqj8k~e73BGDB}2c1`5Y`n z8|~FiBr$_Nm^{l?VbUlPDwA>C-!cP#mzzHw(l^lAo{H8e*k2RKf$v0y1C_?^h})=K|(TKn>j3+#uCUJgWQ_MRgQ#=GJD)pPAeU32z>!seor%&@D#r) zSwJt<{XYjO-{h_{Z!C=XoO=M&g%EuscHx%kp~%8iGLqjmAEm>LN(TDjcBU{eM0+mv zE;#sYa-a>cMHU&0zUC`tVjwhN=Ur_^BSV-f+XZGt`LoXgOJBvoLu&nyc{?{k_mrLH zjNAyC1*~bk+R0%Kl!4cRS<74JDMxNmuLESyx(Z(6tX!{cB5EvVDpLEfw=NI!L zPYVrMaW7*I7rXC~DMNJcRFTuD=T)tjJ_@P}r^X?^aU1c>AblY8!>9L{y)fquaVQ=$PL=#TPM+KzTszJ!Ya&Bwunb4C8~pX*mo>L7(Fj9H zViAr(<1?ES%e>R~H%87jNjR^YWT5T&vec?Iu{OK4_nB9LzMh2*`4C?j!VkUb&Mco( ziM9QEpN8I>#gR}uX#1o?kgJdXLW2WcP15ZfS@mBLNAP=Eaw`(1TbQb;hy2i2iowcN z>R}C>SWFLhRywojI$UPnX^U$55L@+o0LEfy34JkGqehc}&ozuBYOe z8>WI8$0H$maRUQ%Ua#AR$Y|6Hrj7f~Ko9ABfMJe_XZ-CMTumsT(<8lT<|%Vef$h#6 zpCPIkMbx`g_2i^(uWFRkD5>X^6 zusKBj6&CDcgSq~%cYn83kcDk0B}zkANS`jroxU$tR-I^~u+6q9kz)N4{y*G3kb1=XVJ>_}k zX2qPiT^rmu`u?dXfq>U|9B+BP13F^8?8Tq>%ml`=eYf~$BcM-gIQ21mD)z% zc&P3aP1nuDIyxbtwL-z1sfJ1zpilFEae_0; zC7*%vIv=X^r{EKqrB_-%MPURl-(OJ|E6EQcnck+UB#+o_eHHn2kb;Bd7sq1+Zt0fl z?P*nbK^)`gDq!*NiH7z^n=7}T%*u07lKd;|xK*sBuV2&a4|tu=_W0d&9!1x;vEf7^ zj<3y4r1%X6%?ma$M|LjtYJYN~{M-*aLelH7V)JbbxX5J}lPCnoXz6}i zIw+tppIv0sQhcq(z`IaUw2~v%3Q7hfS{;$DaO%vw?k!$DFt%9Cn#j_RMIgdo-bVzv z2?d_=X?A=}G!RTFNtxpL^DI~obKkUICkN&9=_4zba z^o8;Ea!P5Q)Y>6|sP(1bR>333J#bfccQFsbV{LyuDADFkiI(v}*TQUUZ4Nrp{uhX6!qtJDRI2P@t!E!T4t&ZKBeJRc ztF|)4z@ABCgUTQqP?Dm+9^wA0Mf9lVz4_I|;pGyc<2k^Uyb$;)eZfb%k?Lqf<8~?H zNqZ#n#dRFd3D1Xg!bub9<%_pHH;zT|yh_AgN%VOfkw$|{#BVY3H^z zj+p@CP^Jv8o?o}pfej=lowC9KWMk>4Cnd>9ja_7j98B7rGY$;wf48ihXvnQqU44XT z>E+CZA`>V-@QfOm?XM9UZz27;A3pwr8rOh3GqQk@rUZTrOPcE*{_j&9C)6@bcF;rs zay9ElienQNCpFTtoOF*sU&1ERNzHu$@~x1e7)d!F7&2>)FfadTtPQs%M(s3zzXsK@ z%(q)b4c(Pd%@pu(P6r$Z&bR@pgY{o&Kfl-@^b(hIp|Tni!t%s~QC+aP8_s}N5KC*In@=&}2 z+~1j1g@ZnQzfMJf{WH-$V3aR!b=<~w#!EWkT}ClN%6^mOG8ZsA0II=R+qXHu%jx6Z zKA2c&PYmHNTD<)4w{iq44JzyaK1VVV<++fqV^DDZ-)4%8K*eIDZ*Tf{dd=}=js3$m zZEmKp;0{xcrQ|(nnlf$zg?j28S79q77p;&Zherc;n*cr67@8s%8n;k-L)keB60 z7@vUbW2KVF95%2cutaj#m#1Rn6~+K_-*))NY5b)rNho@-mxQviXmcJ(7alf@Ji7l#0>_I|R+1 z{UwT??+;u*vjg{0=tmS_F}dw&-uqV!tA%qoRRF;88g93re)j<0OcAoJN4q@gy~98V<`L8f0~l(=O>8fy1&AXH)lb; zC3bbT=X}ZO6KAlaJp^p5?ZIe`2)6zsCm<`eslhbKNrJ$SsTZl;?mfL?4}P+?d@$;! zCAx(m+$%6YKJD7Ei>Ho!fRnygaloM{w*z5@`f8uwZ_#3{dlLgLsHWSt`l-$4F1|wx z)k=vdA;!V&rUD9(Kh0(TTJZ_v<>h(~aY!nq5R3s{*S}Z(K5<~ZGzItjdltoku+;IL z2QGm5iyraLQIFuL>`LJZFn$1NoTvU-o?~QRvyQTX(T})6%)2a@_?65dnqTlb;Tlw9 zOz4jR6X@mJ{mJ15wbifSPy8Ej)XW#_$^)K1 zOV+l$5y=zXY#q<}tfMae&tM06e`Am14nXHrBEb80-U2PFE(T-{vm8SmY zKCk4?H<~A8&0&Q1aV@z>u|}*a0sXFK3DERcKdF@(_cxE5%6JKT1}lHKu3(j(che4S zw8CrYaV36NG?b!W{nGlULzkZj;=vxQrd-p2Q-Ljf)mf4kczURH-IyQs2`-BwNCfRR zRDZqEj9gZ)B2c1p(tW0)&rG&EM{N)gb;W|0*u!Ssp!co9%czELNI%kPG5m+@FX+(r zW#)d9r>Ub2w#Jr1ZvZ@;m7fQJ>+@a`$gf86+cemOu);yz`#KMmfeMgYUuOq8aE-MS z>G9ib75LIA*cYobT0?+zlU6mUWo9Y`WH~9TsiqXuGkwc`a>01$UWP?AYRwfIL}VRy z0i*wrjla$ZxhPRS4)Gqs?H(l)J@eK6%{)=T#WgjLWmxa#_~iZmf9K?W?8y+T4y7n& zW~jk!tGd6iL_W^AQUC*x8Y?i5P~IqU@6fMZ)1jGfCn=dIQ7|je+i3n1 zoDqtHRAz0)^j-*me+{^r_o%b5KY261`IC`w`c#a zqYcV;vS9{H8Q`!`g!BzkG=6zTNFvo~U?bO$wG4PmA%WP`f`~jiFYMkqJr4)Ws=|gO z$=U6jznTeb^i~y&$*jVfw^Wun+Op&abXH2c!X$p&NCq#~A_pdUU(gJ0-5efZx*zr_ z*I_?l5|}~|^p!UzE&d-#R~^@M`?Vhhq-1mtkd*Ei2uP=l6ls)hM@fUy-6%1-k&q7Q z6qF7{1x7hQrICjB-tYZaJ`=Wm@B5r{ohw2!6IL$(oO$Fwm}vOABy^gQ+Z~uDMJxW` z>ZWI9hA0mrwz@j}FF4xU4o$XwkDP$BnQ8+U{&JmBj3CrY(Z?`%h%g1W65FU%={G%0rumV>RZXHrHiRry;3Vd%%iRT7=tmLpMfgUM|!fTMZP#2S+r z$geYCEMa`+w%@0jsr^w`0pOg_7L_ThZ#&&2c(?U$%_dW;OKJ^-9qKRJ-tGWEP*=Aw zl!UD)f%FATsgBsIs*5vV7PcN{zLx_yw<2?K8iY`uk$m8iIOEvt+C`A~hT%6Dmgd5&!$THU`T`1gfo4qw&QPI|}Sp$lGQ)Mka~UqGuY=g^t#J1rR%eA0+N z;`z%(s#!mdj$VcxgPHCt((K+`k;(wSZE1}KxLg6xIgD(psTVY+g7&-@yviQLNefX$ZzY}GKtw_GK$i{9 zi#zKV0sVa_fqrr^wb*}!?b(fAf5+Hh))i6Wz_u8(Nu3HjZPv9kdGo-5!zs6pGz&>A zA4qjhc0|tvBS_VlW7p{Sw<<&RW^}p((9;O|g3s5eNpV~Rs&Km7RH^AfdG~w8F^TNt z3g)mPeDIxc;?ck+FW$o1phmMFD}{=WN9+g~)LptO;#vpq#peD3xnGG^b20pVT!O~x z_7&*^*;%9Qqi+adgt2(0j7fLOC#Y}c>eUb98ww*gZ~lKZX)R-W)#XHL0o=wi41~Tj z6zR~JA-68d#W2u!xUgm?Td1vz1;{D(QaqZDHAxG)uq^f7#1s;ip+|WAHN$}Jv`8%t5moCPoe{$Hvc2YV8%Z*6+zn~N^o9axR3`E8^(y^JnEBx9&A^5yC7 z^YIr92$pj0%eqJOS>a6Gj9d{%;f?7 zI5dqInm#S&_@da#)PP?k-sZwS4%4gunlB%<#?HdyEZ+*?L zUmmU3AqxT4H=Uv;;M-GZm>H`kgb=lElxO8_pc*T-^o?3$G3=+x2TpCDz~kaj+m<9q zCf^MhLq77tv{#|g*@a0o5c%AR`PrDUln?+^Bn71v7wmshJ26L0G5#$QiLF-t>m`Tg zUv3#kfw>{u3!hG)ydFgh+3@ZN7FEYdSCu>jCV-zB#m7Sif$SZH*b25QXG4z@%Oh{U zi*4Q5%G))#NWrd3;;+jvL&ZkR`+jwBy! zkr4=`}y_r$cM4<`Hd&&a5AsKHfhCV2s zP%el8sxi(vg%JgX9eR`&0VP9wsM0GM5-;f(e>uMk%(~=BY;kmBvqQeT4kJE^o=E4+ zrZ3kQ26=jdVAEFqQ0>x@YB8Qot}zlqW>-F_+m9>>n}8kDKsfA_ z+sRW0z04}JJK`*=KxS2{PF(frYjwz-e8kSdRM$&GJ;Bo`z>U;A9POf<`^e}7QiURs zd^Z9yzvDFZ3;(rEbOA1rmAioBn_`Jn6Aox+OkaV}17HL~$;dAmj70d{jwzDGW(M^H z{|Yb0k6JJp36Ut`NN>~nsTQ&<3#57MCu*~ow}f-Nu!?1cr)6G!{?~xGBO%X8K0vS> z?6)omt+2)B{>|bC2@$>94%>T}Ukbsx>(hTo2e8jvHw%x7ySb54xih)*%}SU7ODih5 zH=l;oogA{N2BGXCRYs?6?lzi;hydMTTlI3O%Z~vB19Q96z$a?;P28@%>)^%rX4Xy7up|w4H^KibeN|yuTCw2`*uJ+JQE(p zXj0h&3D%B&{R~7Udwxd8+$%2eC7}!zItM_RA9XnV&KO%@tJ&if;8F5K#CHMpFGcB1 zAv+VlY9OdjI%qxC=o&51!?8hs%xJSZcEvx`E3r$OT>{?g@=$nY0ZA;-h!-kp6g)A< z-=)kCMz3{l`~D2;yXMErZSVN3Fm(?RSc+ zxJl}%Qexf$>)yAOo(6m}t>ERxo7)6ADrBmONlhCod%1wqQ|a~EEX-_#4Si_6oPgGC zwC{hDm}oS^h3^y;Ne^r>NHis!_gIA$);ORSe$cI5G4)m1nJoiCyZ=9V|5{Q>uImqI zAoIT!o2}SaV>$e6k01X0wgN<+O3s%KIEPI0zw1lH zem#&W1u%@t<7eik%V2E8?6Hg=i*gddVjQP_&K6}ppvstXM>R~$Vb)tG_3MIC`-PLt zCFXKB_;dK-oC(P{t>Iw-uBhkx*39^lFg~&DFOoaW&Y-(ejW2oz7Xgj{g=M>1j!|sF zsFBw|jxJW=cJ$GF@U)s760t*W;w8oYcCD4|$we}otcXT%PV5aPBf}q-N^QGXgnxVB z{nC@XhfKo(M3=^$x;7f}^xg5sgLe{_mt3gzu2UxzdSAf7RJZAFkN+n{S|xl{=P4n2 zyRky>KDSrZT%!tRE zX8)Cty)Amelyh8BmcF~<8;?7mOn5i$Dd=UBO`f&S#ASYx8xY~DQJ{|lcR`W`$|9j8 z0)Iqgk~%5TB3ZN_&avZ8y0^!)h@;MBEMQc{I_KD5sD~Fme9glp|BnLm1_u9NFUC1S zQ6S_&N^!YvV^u;b*F}&=5=1_RI?xvtJc_jgW*n-6XJxMMDnvBB@BiK51f~U{I&psT zk9rDYIG`@$GPY*7MGp`s+ik5452>~})bDR+=^S3R+o|;<5Zw814>{TGEg%lTW_QTJ z$1?cP8r%IqA8gDUVejEPP-cHZ?TYSN^n!ASW@v-mXekRQR49lilKtWVET|_6qvbwB zGkkwZ`55QC_f8Gm3vQN1VSmjWecPcp@WR7uT?(ULVsh;o;{#=_Yrwe^mz@(@2+3)8rDcwWfj_@xP)F!Nk;m@{Q}rviG+oa zZQM`P90IINvh4lyUtY_F|q(dcin;*=rHn+Yu|_2MzoUXi>C${W)MBo7X(>q9u5hn z`UOT&VDeVdPb!(@-40V%uRJ#_1AKP!V*Mwf_jwog??-*t7`R<$8z1d{7zv7Fpd6N7 zvbhM0`a|f<3s;GD^(&tBQEriUAz~QH>pzdR@IHLp3}PSdpQ%7)ai0=kQidSWDHKHz zY{Pq%h{Y5Txk{qJT~BH3pYRNF^0n$+BW%xkK1A;f2fv4R@04A|q9WnYFAo=#@8gzoW)7pdX~<&do^Vt+tATG}Fqp9tN8527bW(>Xy4^*2RQL|gwJs+R_bOZ;gY0c|*dC7Om=A&6z3qY&{Xn|(d)t>4& zhJR@3tgppBYW=>{MAD?jsu`>xvZ8UDg7ay`DQF>oOUNdVW&aU_aq^>8GsR``GAo6z z9StP?eSpnVwyrkL?y>KIX&65M_qI|TdjTH9NX6gtn{TTIrHbv46|gT-ju>us9*fD0 z_G?w3?~fi8``cLY-xg~H08~OVldXJT68ut$X~S1-+$y1Zb&~!qCV=S+X5mty_Idr} z{4}iho5+3DE+tFO^ApPp-#&DehjAkUzEae5@s3bkx2Rh*x)c0mx z1gaExV?ko1JedBb+wcT_?gO<9)vXa)B=ZMQZcH2&D(D()CJV6O^M?ZDuYr^h<%NHk zupog4*(zuM0o;1e=^taCBV@7F`3d~bw}6^jKW!ixKC9#xH>wLyHqWv1ko_W}oWihI zhnoFx(aY?!34hWa|MRm^R@Z$E*j2SW2kdtedVk4sg>c@*}%_==MhJ54hZU?ssqa1FIz zW?DZ#iCvvaOWf2kOl8@puyL2gE+iC}UroUr`IjdKEq>~FEXaUJg&$Iytp2|Th z-*qAw^jB|?K~c#*UN*~I$q)tylNB11Qa_yMlonn^ovco02(mo8d&?v3cz7(1!6Y+q zDldRYmli?r&OlYWyaeZD_BqHQd*I7oWX#<44T3y$!Grq3!+VYrMn}0#?6&^dJHsM z{LzX0go)YH&cLf&T13hZqN?$n>z?#xgK=LMhR@N2v~d~+;Co5h%-?3tAgqjg->dz* zaCs-t(KPZ=dhq@{1dRCQ)cX|WBK;NVcVA^Nt&Hy6JY0tmS#H-`I6d&dTZ$Y{fjLpq zOdZ%UkhAGbN1r-m!=OMkDk3&l)2z1K%azOS@8wheqDgJ9+~Uk2gL<$5W7MR)`o{i> zOFiy$ZOEF0H*n|SrdoRy zha)dd!YdQLhnO)zNt6mG_-e6aS9Np?&lh6ZR?ilzY{By{q%re8;hHBhEKY`6G=|;o z3e)rP<1Kydc_i*D1)5;Q+r}1)qCo{hZhh93-%~lrNz$0@>#3ZNz$vZjvw5KvS%zGp zoiP)!CQuIjwP>oJQugc7hkAo@Ed@~{TB3|OxB`mOz=`O+``OnlibEfC>{7pCnSo^Ly4#AW#PPQz3{fU7~OR(Tib4K{#ma)wJmqm8HZHB z^tJkSnF<)~NHw*O*9L)ri*8BYR<~iJ=oh*xr|VF^Vzy)EMVBjTY6t@0x2h-Kyb| zt)%jbT;-=U*8H}xRg?!&Iui@`T0U55bnHCBSmZ>6Xs1>mGlS;aHlylMlZ{heDU=Fq zwlsbKRgu`;0MJm)riU?>vI)d#1L=@H$tE`c*$GjozCb|8cf-aKqF==F=|6tw2mT@F z+k&l*I1VAAy_&Z@c#4iYWpDtQTXXPRHTJecu|;oqm<;&^F1v;V* zOwu~fe05~k#UZtbWu%y}rVM9-W}Hh`27 z&<#%G6|J6+2qLWs?c-El0)daT9<<|Hr^~|LY;c&!~MZj=cgidt;ztJF%c+QH?_jzuYmko zBQ+jn7eT7qw-|7fyrHwS@wQQK6Y;*D)~(wSjXNrvdD6SCioY8$GB6#kSf63xoT#5p zLoIXh^A)=m?~JQbXVJcwJlQ`ZVBG9&l%e@GRmbo>>F-$rZwx#14L5|aYBt^hi2Bw# z-$y};=!AJ8Cv)oSqjh!dFD8QAtOU=ydU1NL z;4mG*SQ!Nvw&Ggli_&&0z#fogfrV)3=m;HDKw!RcJcA2w**&eNmFN@NfyLjCmcs5; zsh-IvzgB=p6nu`g@F8DH81In7mu90ZU}#ary|z-fcHZ^^HaB%0lc*0|D=<>Bj}Ht8 zHD?5$-Y%i`B?B^QqBhEYeT@!e@K3jL!bzAprXdBEdlk?BkJ!+@U#~12(4K`F8%Pp)v=v0`qlGQh|{s zwv3#7XiZKiNLZoQ<*_$s%RY&E05Vete{EsgC;ZZ7K%5z1d#U0BzDItp&@;wwU?Eo6 z(|($VG@E$Q-*;-1l$0@jR2pB*3<_baMiAJ5g29)Om_}ri&?ArV@T4X=p zsP~+%s;#@b_v@y*n8`INc+lSZ&YFUk`4T9}A0D*GWdcX@lUzkuW`CD;+D6Kf-1f1^2$G1*&w8=rUhnc}NRWB> zT}sIh_jnOY=H;IH@pwaiaLf`c?vg`<-i7&ph?}rj@6!A?^Bxc*h)avfyfnoy8wzA| zxM4HZiJBtT{5^n*{R(_?f9NrOH7O`Tg-r%Y#gcs76=xI}pv_>;WaiVW5LDh^=*lt2;z2pT}5fR^LxI0o(2?&xt0IY+sXq$~%=_RHTkE|ZQk@Za- zd_DUk>$>Fp3`2ERvKQrUdf;IFlUfUQY~ZXB^)~&zYU^X3b;FZhK!GCJNo7D%c7DZJ z8%#_+Y3BCpdumbepDZ*&QUuh)@Ud@_z=(p*@(HZK+qROtnNxL7mjX=7tf|6oWv2rY zn67E7G{xD2t?!?5N@aV|$NyIbbBMro*z7@0eKC=x^AIuB8@ucOIk&>9x|yd~frdLw zWwQBK1^d@7u306s8ac2%#KZZ7f2dwV8!8Bem^$CD)#%V(Ynr+C$>a{k6kkg0bCnlt zFSKDgpLCne=kET-*gfIM*$uy zdH66h)Uv6ox2S#sIRH5F#1nYmrF}8-R%e5vX@k+H(z{uc5qs=FC>N^3{>CRtL@6)l z4z3najq}&kU~*WUmpuiB%MrYwbQEJ0GGF}`aN`X&#s)L3GNkd9%-*vK$SgfR)H(2~ z-@kFOQLXR9$K5%Y7h~VM9>DPXRp0Qd zPLgF!5o0dOIVXczH~Cn=o2~r8GG3KSAlU{r^svxlZ#2fLHW+V>sRlb#xp*8~KH~i( znK7b5%1bmRcccDZX{m?QtW_7Rj-Bkj7^P5X_)HQA&7PCHX=;`nRc2HcV_#o*%?lV3 z4%`Pe83h5ne2qBe+$B#dzsFT5EdBd{(Xg=P7UA#xTO7G#iNL%55cR4kH3(ylrIoDR zDzC1Z3P_}3+bzwrO%KMXnjAh>PZUrCil4HivAWLZGtV_X*oEKl!tA*|g`x)KmAl#5 z^cF|~GBgmQ!+C2Lss%I9cbP23e#7XeqKOf`aFe;=DAz`k0ypdH)rr{+4&gPvr{U&z zFs4c28Ww6Z*lQz>fHvsx9rjh(FD{1QiCs@sFyF+-2l)1uscwUEqU%xu)pv zV*MZBdOMhQK4M(?t)es@uGkRudv(7kdDOfZ!^PVgXg|fn>3)@mkPhPV<6={9t^t@M z_(j|o_eSZ?kzm?c#?g1ziQmu*t^M+)8R#lxSuT!J58djsL7Qk&s@SAD`sn+!+8dT7 zw!$e>`2+2d_Zh%bN~CS83D}W*O_*ls%5s2dFf#9TcpCxmZ>w_AfY5}lh`H}*D607- z6<~}gXZ*l!XJf6j?PqSLB4%<;5lv9EPI<3c3gVM1@nt{KthA2rcuS*5IMb#XWj^ye z{rfkG>3C=_p zVoCIutA_R?WS&}Fy*%Oi=2Hgu4*<;mP)asP9lcJzpB|-xOl9z zzz@E_L=6f%bs=kh6)5TG9b<=V^;0MM1D*!7&(KB6*eIfayLrpnFUIM* zmXV@|HNZuIXQ-!qq}_e}(dyjWM^sI-Y_G18Sg6B1wNsyQX*!*GHWNka6NTivHmBYn zE79u@o2=Q089i5X^L7yK+Ovc|vV$S(c|uzBi%fd-C9{rFo`*TBl62DAxqZQfRM0&g z@idrW+Efi4M+Mrr(=eo?aQxY{1))=V)g9a1qxXszPMAafy!O5Q#5$8npdEYp91h!B zj-8-*!-bz!@@ah1N(`9QSW)P7sZqUO-w(YL75O+`>O$QjF<41caC^N^EN0C~aw}_9 zF1LhblR=$A{ncERtzT~3(LrRy+rI&O_G#yS?!A5MJ-@9W>dNeYg*Ve{5r7?Gd9HH& z_9m%uulFs(NQ(JPsl@xf!lhfXduntsV@Rr<+{a}hS_Ud+vG*RlpxLYOusDan97s#F z91=ap?n(b#8TYdoCOrT1>*&bNsxv|W1`<&3m)?9aEvN$wPh?p_(TS#5a#kws>JW&aQ_#FgUvIj_%|?)ETiOqYyvGui|B3PhddMW&J9=)UVtoRKQJBZh zbTzmPsUD%n{qk9khxuqGYgj+p_31_l+-=?I^{eyqqWXzMzm9$lA(jZV>65QAa{o>N z7pIX_hX4M}9_XH@AWD}Wzgs`RZ-S5`l5|XCK;JPbI{)(p!nBBtB2k?F7O%2d?6MoW zu1;?7N*ys)FP%0kfo2Z>u4fu)DUxbJ1)X}(;E+lKkFnqD^13*57Dsa_sT8uY7TH0` z$l;ex6b7Zq^$w!v&scWvCyx6OO!v2)I>*pPeOFN?JGvVO`O(x zKAZ$faid`o{EYZU{S!($T+QC>d8b@b_6Z@x*ViUr0o5iJ%YCZeYMBV$6dTHJAljFa z%aIVWrTBG3B_&(z0<$o(nxr9Pc*-|>`9tt-<{ z5JLEq+4X|fjP79mZZ0Jn(aCn^NkRxSy=CCL3(K`tkd?+urW-&@&G+z~mYMc}4ls$?O>fxaFnD72}uYl^3* zx(ZeFP>#$jSvMd$gKMocoeIhOu)~J`{@RzIhB}?HJG`SCfZ{LfPCPYA^Y&!41_tZ% z@e`rNhTw$+20mT)KKrrzZ8W(|=;LJ@BR`y_%r>A3SWT*p+xx5NNkWs{dbV7_&m;-r zpTWfdbXZ6=d+@UgnQH35g)5{7JHA%UW3@`R`&kfiG7^ZATN(~{!tMDl1p|kdlh|Id z%HD>Y`4K|2l$olnGnfiJ-poa9WV5CnbvsDgBJotVPLM2E5O}Pe8Aa~u{MD2YEa{Fs z@%?f3-KD{+A5gXqn)5rQHU&;`1xR?Ft@mh=87e$@wlC2E(9hW+sujIHFpG-Vk~R1GF@ zcbL$R3G7BKyErE_C(M?x6cD|}0#A6wJ-__-vumpU=qp7QID={(CDzhm|8qFg9!i*h zm>9$n0r7f=uG@U1zQ<}6bbl=+OvY z7)6!jyo)AsH;wA6lfk>`4j3`>+cBufMQ9@LAHd(VmiMefDCAaTM(8uCYA*pbV|YhJ z!0w~7P{lc6io<6#E5DrMEWvl@)edX#_9vi4Brp0bdBr1tklHNp|A{*TH&1n>lt3;7 zy_afg-K`DdT%ix9(}isYFm;WJqlF$sW>@XydT%5YYeHr^aHuD(F)3R6{oIe_Co}r^GR58YWp$%cs}*boNl92ke$JF_rMfRm zyHa>(qEfeL`KaP8dJf)%rCW3`a-+{Mkw=WPPmAn7tC^WKf+us#jK`lG8M*DSOK-;h zv3KZ~v zQvm6VrOK=#(|}#>@KJc!Sofz?;qr-%Q_zYYea2?MD*khV7iWpsYL6@OKdpA+)%f<{ zRmm)PPztnBG!JOljUy--Nb(T!s|LOWpNGpl0hWAM#Y={WAikw#ObBcRL)UrXmLLC7$HJWQsFCKrk z?>nNPYO;Hl9bXZTp=)AL^V5cO#MHq++wL_*)=z|>%#RJH_2Zy92c=b)`O8_}3B~BI z2Jij^MSWdQ%0e915tzhv)4CsjhBQ|7RHmBnXF5BZhDkemQ5Eccxx{YnWP zby~+VRUB5PH1de`DS-R)N9-!Sh5op9fq8@9RWwCuZ;&w){N*25 zI_`gbSS)G&o#lp7Z+C(KEL`NK9F$JeQl_OKx4_~s?k`!5SYiM*b};QnTi!9nNX3DT zF7YJ?&bHOpEpkc9UT|YVFVpmA%x0>)EHdFnPA-$xk6Knqltk4Rd13O(vIV4e<6^*4 zGV=kM1SRcCLSehtL+EL8xJ3|QOd8JtyNyRMzHa=Ixkb+#gq&h@>TQsm z!ttGQ5!S?ijd7r}V-HTib@(+W*X%{gIxqYmrdufB8WkLmZ2gFuLXI(-zhsH!H*Jh>Cfukv%|KUfCN(oj@LYT57GACsm@G;wdD8 zu>x)57m<>LlA}_9*@LX?ePupjh1i9HVAR$G_KSVdr?)b9uGTvL+Hp=0^!d(RmAJaW z)T~P!eRr-;uNr~-a+p)vcOO&l^tNS$e~!DlXB zL!`uyeY((p-ZN^OY|6@b{=8OYRA?$^yLra!7KjA#XZUEPR-}a1PD{k?PID6Pgg!9m zMt+I3p@-;3*aV6ojb5wC;~jM1d;?9Y{av1T!z92*5^VUKi7;Ka;nEYodCI#5dgVYD zBNd!O_xcXhYd4c4c--JY_oVneYBV!81NqNfnv<3hG%)QtTjx_YWT2s*x)gU>5q$}| z8_FbGGpukS7IH|JK@fW(Hyu;{=x1WDPKFW&_^0?wc}v zfNSWKsFC3V!!KC@O&;hX^bSFTG!0E5k`NmogT~iFBXMI-;aV@bq#qSQ3%nE7a-yXyBHtUe>g@Xa?2fzR+^b8Z zwQ2-js{CG)j?g(KXZ`Fu(FhFVMx`fO$F@m|S#8ZnfJ-QdKAy|n2x=HU0ni@y8+2~T z>+uj;&=C>n!d#bSEJYH)N5dT6*x);1TSv_@W(|6*_CT(?S)SB_=*8Dz!nyrK^yTmO zzeZ!KAPa#_c>W{e6gP`IL1wqN4|cEIJiF#c@L$Td8e zleVOs>_r9E?4_d!v>EU{Z}d%OZ($s1$2tl)A=nR5&MtAlrNyC%T65Ll{LHXHE#I1j zt+*uJ2b{N)nCW4!>z5i-+mak@v!kcG&BZQzkzt>?^y;wt4!HKy<=(mU$Y36c-Be@) z6>FY-Um@y+wNgCN!*Z?(zJ5=JwMPK_wBymuHJz&pj1Q)?SY0LQ!I(eInbwy76PWYr z;}0zezDg5pX~vH-(%-@fg2JZ*k6COG!9VU|Ds*LeUQnyqh&SlJ)4ylW*s6NE0~5*Nw*Om=_B%XFMPdI|PL^S^DPXv}8hrSjK$_lj-tL@LKGog-?}Kf|%Y7=lxi;clsxM*OG}ckQup z0MJwfQ%p<*k$;dRX08yEJ*>UCHDsfQ;4t7HJF|?uJNsYR(4arJ`0(7O_$AE7tX1aM z1K2Y%3^*Y4%zeRKiZ0>5RGg>^>pzvY@c%}M8N!aBB!9oKQv7Yz6nO=nP-K9xo+RAt zZ!6{xz)xQvYx~VWe-$3KmwJ&i|Ap((Kky*PmZ?Q&A2<%z%!h_K@k@wK`HJzeov7%) z6Khc0^HeJSfgZdxW2lP*h=#tHXgyo`rv;I7Cr?HxPOm)Dn@u!7m^b2xSaAN*TK+N} z*^usz@4pu6@S%UMB+U;yexR?O=)I;)+4af_tp(tM=#o!3Zozw@VPh@tb@rJ)gi;m{ zZ2B)@fmw}=T4un5k(itiqOy@{VB57t>%{Y72!3}39Ca@_<5e=z)y zC_o9@=B!EM1>SY`j&@$eym95Q!|NCul_EY^MY2gzc*w*>kWCu+!Kd<<+>OTLk&0># zvCqOFKYH+hN{4w`Wf-b^Gc)RsD%~ zxx*z*DNlaM@iI*|gY%Tp&Zhr{C^Rg(`yM+^`O&a8JJXCJz8nAC=Ee0}Z(bBWE(or> zOUm#^23u4F^b%0v=yDf0f%-h;;@hWVb=*MWviq%^RY{>VB!}{o+VF!W7+5@ zKeoPYwyvK7hdD_bk zb(w3Y^jrYe#P6lm?b*TiIL#D;PCA_W=AXH?CN4^?PPs?Yq{OcqK#~o1R?HsmgEq&Z zX=cST(eA@+sG`K2Ym+~Gyv{!2J(%044Hy!1lZJ?x$suj80yqothZm}r%CRdKfxm_} zvo8$+{Bi05$fR*nSSOd@xL)~fjzLYD^cm?#0r>UVu3z3jE8QI%tDL+zXyNr z+rRnJXlEr^#Qt}Cfw;9!Ia6xB6Txr!cJ81G9Jd*pp|X#j~@KisVuh(4#L#V&8SS9@eYccv>jfM5j-4N{W5jPijZ$bYw_A z8^Qm9*s`8Jcm(O9M}LimMbbX6BQ0!2q%;n&4ti)L-#}ANsARR2y}saNCGXWaV%(gX zT&&!>J*(z|e`f;gQTHUPlOA-{^~b(x0-Z9nO(yl-g$Pt#yA-HRRyr3;b+o4dbY#@# z`x?4Yy=-??cQQpU{yS7LvE81QsGP=WZaRna_(mKQ5VCl@y`(9TA-ldl zov`&azH*wK|J}8P`y-$5GHKFm`kD3EDc;kg?S!1TxmTYhMS&MtP2*a7iGJ`@x`&kJ z-6_tIT=b{Nczs*D$nl*ch_laAsfTC!w}dRBg0I9(Y3=F9GecoDZT3(~KQTUV+sBtB zoE9NEz6OOr-IXnB_=t!fAf@98WzGQ|kVx3pn&6?rE#@A+7hYt>S1fY&0gDRSol@F?4o*1;reG7`i6zXt03j5jOywy-F zWr9*SueDC0yrp#j>O^~{`p*dNQBp(qP3O}UQ3kK%PVew3Gn^I~gQpm&l1GXw+X~wF zXY6!=Eg!~cjrU5v4=oBzTowuCe-gKw{YRv_@{InSbLwp>Pmg*MY2lgP>2lvILwi%i z@xzKjm1<;qpMBdJK*ngQ(#JkMX1x3q9_F^Zpwygk8=&(O{5#%dC-yA^i(mw}88;|8 z{HtYU|2IbAxk<#!{$u5H?VE;7IefP-rMWkX8JT2_556|N@N%GSy+a7$gE6J?RnLqi zaqf@%-H$FIR8&z7Bc<*^J-2dX&Y_cJPnhnB?Ki(%1SeeWFC**WBZdGd03_%3I}Mvm zjURQ+9&@!sw19yMJKJ?n{5NzSUzJen+1D-y%kLlvEU z!`EILz&{9Oyp8p@oCCK#o=IM0N;^yssIJrJiWaSK*83&a=*m+CFZazs_o68OBA&3A zHW&EvG)~o4EgN-tc6(={BS^0m>0wK6*D-D^!yDGWvpltr6r+QVjR!;2hL~tdDd(>` zfXA2lu~81H2}zLdexly+^mN5{tH7;c4?lhQi+~8~^+e}(H$~#JFkEC&U}={x*e6HJ zqm^P$tvDO+jfN@?F{ch`z<(G?V|&Ga9hwIpwoWGg`qC#Ykoa45&KtLjG~AvfT|`mxMM$u4PvzX>U7fDuR^HXJp&#w8q+F*;|RL zCZLr}m1&76s&@M8@jQZmDvwkw=LlJ~Q5-O=wR~pEf$SKnq)J`2c^*Uv!1Mbt9QRZ{ ztU*)oac4u5x2oM^=Y#Mu4<@adZ=Hk;aW>A#kZFL3j0D`zR@I{M=fWbWEP?(1PA=s| zq+@V!b-ila9(_;=_x-!e5CX0|X`g+BwO=S<3FRM3vb`U@7=&`vOZeZOpk&Z)Rc z`pSJF~9pH8Jc!^ z93S}u_)bsX84?msl;y*bfFkSK3BS%i4##l;kO9T6c&hG~7vb~#FdBWtH1_9hR|f>S z_pqhvH~?TAY%9%2FR?~5ZOI{}dQgHf>l2sLgIPb1z3Mm+{EKa!7=PM{gZtEVL{Sv6 zLx<^Hl7xh0g&B{JuX?c{3hH0Y#Hu4@9}i=o{fr&Go}S|EcEG=}S#^3(*_w9C=+P`W z`I5Y%n}l`p)kM=B+z!imF-iDg_@TTm?S^v)9CI$`Q%FBbT2N6#Iq!5x{-7%#nl4W) zihYOaoa?u)JHH+gJ54m+!A;`VCl{s~4!gpD?x3A5kXIqu{t5iZrqFza@B2-}=TLWC zJ3nZ5Df@Gi%C~_pr)kxBP@s>;+dr}BjWa!K!ays6Fprw1SXF;Nr=R|TDtf3 zukpOLyI%H6Z0oC|O1{?;OQUp5%l^bbjcWRWIq@xLm7L0Hwzb`C82Dgbl~zu=T*Cza ze4%F!r{kbQia@Patndt;ld`m-p1b34TrD88{U8Yq4zdD{t2eCWBvp23+LNhY>G=pm z6M=Pf#OkY=i>G6Mq{qhnRyMd26@|Fdl750iP$f+MgqZj1Jy%1qe$_-Ka7~tyXb&$- zRS)5p3yS{KL^OC<#j~|9{c@^kRo7;p8_t++aWxwjfDI;EBvj<4br8H=1m$oBY+O^;FBfG$|lvWzQks)f?Ca5m4{uk`Jy)OI7dc zvo8SL0-7v$suq89uUPa;XxOC5NFsUEdiZ1BCQN~79TvRHK6hn$58C8N>C-msSb79* zCPu7KNW&)EHj$5epL`jo=h%!#2R%%hFnuw|MFIda*MTFSup9M3Tu|*C$CN~(5Sff5 ziTe*0O#54HGc-5}<^vKq9+IW{@3kpN`_d*=-L#^S^tXfTybh}~DP#O-^{47sjpFgD z;m!?x(m_G&^S!>VV1qq#1Rhr*R!jii!^@qNWKgG>R3uL=8tug;j1axI-?(qW#$E}4RR3#M1R^u);MlgJSoM&B3<9sMdePP?u2ijyQx-1 z|LIs|1&#Us*8HF5kFZJ7!cL|E-zoab%Wy?P##007HrPSaOwq~9b973h_i^X}(D>&V^0q+*y+WVAA5?86H*^XAE#LpzM*4gzHn$!gBS0}no`rpX`)G;ZY*F@!OBM*_U2Kr(*K6-Zv?XGh9isLmV zcE%l@3A3O=>dEt|p)T-llz@l0uhYTn_aKIT1&O90)%|gbdxru2l>t!q27hXx!%bz1 zRV9D{cW7LEYxcnmaK5Z`Owf-cZ#s|nT1K|ES5@o@mX8i_z60Cr@J55_KbB4nt{B6e z`p}#>8wwpA07^Q<<=BqASasPy79a=`n_4UxiH3D(Sv4i+D%^vn&Nf7(!X#@Rhd-II zR#Twp?`ky{XWj7cW7fMgI^GjO%Z3&y*L;gy`xO{SUkGKz3h>PVs7$@Pre+bspHAAU zM*{thgqhY3<3rDUTBg{)g2oQMCS#c>=c!VCaKAXh9BFCS%RD+)_3|wLR(@nn8W%gk zeP}yPJp2iaLi)%|Xvnh+PwEp3w>uHo>Y=L&c}!InLnX(7+7H{+{=LE`+Yr8!Do1~C z!b(Y!HaSjl@=P1T0&&dF{XLgT2I%F4)tNqj)pIZO@l?76g2V_?j$ad%t_RlVkcpAj zdgP+iiX#=&ta=EYY~0Kj97umDW8S686G3Vzy30ldts1A618%Ru3 zU)RcdMDxFU&{&m#62BoXe+Hb3u7j%GHbBjh_spI@wL*#m40ug_`D1N$_z)Ug@SaN8 zwy{EafoK;7M1fv&N6fC|S3_;)xFaYj_pkAa$Ko9zYl@%#rHi~~dZSA>5N+lu9GB;h zU&c*mvXVn^sGsXfeu&-BY0J>RA;Ubf+zr{DpSi#avOGC;CfhnC5Hv1PBs}aUZt;VqJivp( z1`q&eECpDhx&Lf|i-8E;CJ|KhXFQ+;(6Ey;jJTNVw*!}*Z2J5X3D%84FV$HT47S9y z+8=PV))%(}tNt*|n>qNu!*x(Eiggu~eM=5nkO%zW$oivJxj6F6RvcXI9$JqbI_A1< zL-6OAydUw2d13-MAoG>1EG;hB-S>EWpt#?Spis5VFe6cc^n9tSVsmZU^--oWJ#0f+ z0V(M7f_DNWwP%36JJ7&N3@?jvxw3ol#221++zfu&6+ZBXN$wy6Jt8jEO}7%0;>1AaX@CScdSQl=Mun0lH6|zGaD7m^*@NBo-*pqjDr#m?_dl zB$+7vHB^e%8JMw0MGk_0jc6eATTRcwW*vcbu$kr zrHVl=We>f-ZZSZ$P&iyiCWWxDxpdkIAg8_4;uHf95+{Am03XE~e}>V1ARX_0xh{ZYA;o8@m=R)gNi zhmc(Zy#-Wj>s~}J`<55>&bFAlIxZiAFfvmM&`UOhB@(&9%^rP9cPN;50Vl~F4?#qv z29}3P4NAn3%l!f#WTwJ$9P%o;;V}}GFFuS(J~n;dL&^<_47W%w7J5f3bj~N`_8=ZZI2TGuK%-t19}TR z8W`q%R0l{d5_DM@epli~p{6L?80?a^FkjF==VEi(O4?x1e;g`pTLD;bkgTsIge+Oy z$Uc#q%y@}aPvA&x13Jd9HOd>pI70E@zKB`v8k=h*G_pSNcw0spmK=p1VN`QB-E8se zBGIhiaAyjcVuZ_(t*yjthW-U+E($yB6xrq5!S2o<*gc!uG69D#(yTu7EwI#c&5w{M z46f%0oSi_M{aSOsEwJkH8)!X+;P2k%2lXmK{>}0tr4NXAEr{6VU>w}8Xakn*^l!s{ zr@R|FLN=hSLaBpdru~|{lK>}9u1ulJy*H}pWLj0P$yn0NEn7;g_pVy+I26^ON4(Jh z!Z^_$hRpVRvt;?4#`}uWp$hruA8y&0_18cK=Z}d`$3uYyv(G@sXtK{UC=PSk_1O#g z`o3KP*%P$062sbs0F$$beJML_%+E<{8zD1Fw@9)}=v#O@T&WM?+8G>jnw&Kkz1`C- zzS!>saBE)ewX1tiwcq!nB4SvPr>iP=iyk()%n$$cK-;Iahgf7rhR@6auEvOjv(Ib|^dCy3`=^3f6kixTy(lbyNwvQKJu7>KrB%1>BD zN7%^(6e7g0itkfSkE%D2y-w>|^A^gHs+Vi;2=pOM@_j(>BMiEu!4Vt$q`!lVb~z!* zb`IqtF4tJL1DM3-_g2c`jF{{tkuSXts>DyOnbmXdPJcm!1N6#~2 z&c@eH4tNs{!e4${P43sH*9kSV;><7Pm>&JQ1i!qd9T$6+sFH{3uyu?>!|=ax=|zOxl* zP1Gi)q;g=(1po7RC$|4o+NCqkzAW)ioE8DqQ}VLdd6ENAGNQp1e-p)_N91M@?*_Y7 z=lr+EF28I_p?`MR1zCcuuPVVl`XCQ_mytgz zE^Au$AH41JHxJds!h83N>eX>c$2+mqH6C3b3BE?#X1K*){BINCZye-W8pQpzZsQ|Aj#G+9Evvt)wH5eMs4gRo0=CE-H}vy<~bgnj=%QOU6!^e z;3Spcv5Kw^xt(qZP}tafH;EWoZ#l>fl#fmzkif9)Vij&psYLBByPm$)*7E{@>Sl`&l>?Wf8{M}vGHWD!2C`eC;1|k1 za{n7715g@yzyYIxu1)rr)TuyH-d{+dimqiYHDinc2eT%8kcWVMAE$Rnrpvla}r2|gl@Kj~9KLzKNN@q(>_73gp7*jQD8gZo&G zW50Ls8%oO;CCQhg-dYmvPma=Irxu{eR@64u8T|{wZ96u7K61?{!&A;**Ur`HVll(T zbl&X~`?D=9vdBa3rHOZZOSV-dfK?CjZA?Wbu92`XtBjKKO3X#rU%*)K*Hzpnc*$NQ zJCPOHy1fsAue!Z$ulEI&h%X=-yWhzdqUk>F2Wh2PnD;)Uqu5G}WF#~Mvtl~>VdQPA zuIBx@8vE!5U?4$_`Q&taDnK?+OD#BrhO zwT2wlG{>_Rx%thTXz z{A_QAcxec6D|Mq{gk7Vnk!_L)+`G4_6LE{9CuGn88&onw^s=4lg}eQAu~$!;Hlruz z2Y#TCLyOr4*7McN2~Jd%H-0sFwt)tP_vg&Zz;|*gjHq!=&e8fWJF%ATz==h@60VfR zZ}%qXN6k}=2z$Bj4nyt0%D?p~*7c4OhLd#OQ;Y=oVB^=WN7PvIq&p<1CCzKS^ls~V z|A@0%Nhz9!M4FQ!sIHr)OJwnDnA6T5c`0)~ls&~rD9HypUQk$%#h|QmhSx zIaa=1)ii)uXs@J4v{qup(VHHOb5?I%3nKWK)^Sn@hR3u$E$vCmFp8q>J{#s25*k(rEo|}a=B=_-$%Mf|qUvf8!Eb-H@fCTt%lfeJ4|P!7!NYOPpsX2@#a@6JSd6ksvCeQq zELMq;g}Xqyg#s@|qIP0R#8o7`)%-CW+u3u`eFWx6&5VA!d_#dOZ;8f8A|4QcWgbGT z6P^Lhv?P=7^C?=7lU#(?qr+Z|m39=@^5WF0LAX{ewV#$t(5O*mo=MQ$SPZomg*HQ; ze*|5ka(|Uzo!G7P#s)yM;A82HO!-Xg2hMCx#f8BiSY!QG`Tj)pQe8=B3Lj?a6y%uZ z%iCI4@hr!Z9eP;xAB^?PK~m1Z_&>KBlOIypsJIegpY0FBYvOZ9lnm!9#j7DNmbtBD zd753FA=G|_7es>0kQba*l5%HT;cBDJ!+TjBlIEdPPtx4F@^EU!C)C#6l^-U*0lmUW z_R(}Ycg%BDl!6Lx9iNH=xG-X3>V$shgAFCU>WmTS=Y^c_rfvufQa(FSMmF@&IFoZ% z49()_%AQ8Bh5qh+tBNDeEU@Lm)xV8Q;o^NrSBeH&iqoNZrPtGz#7{Ov&<-YaU~Z(1 zpkTwTH;~H|5}pNZ-;0H562_g8xuN3FmBKS*TQ6^j1@^L61TYzOgi9rL#rnH_m#dMX zrJyLKxB1Hg^w(%pUz8S|MfK!tA)<*3I0cE&sj_tr=!{!rt3U!N%KUJ`&f=H~uX--S z?G>2zKu$g^eSI`f_G%l0iIp%&>U-N}14MQcR#ov58-3n~sY;x9rHuOgEJ1t)0sOsK)1`oL8 z5rweCW=>^NkQ5H`lL5`^9@{-KFCSe1#Y6PmE@`dfT5pgx)i0zN1o48F^e)A2JMu8o zYLa=~)*0Huo{YN1jYs`ZIL`t@e_!i=o}K3qDX}pHbYF|tEZ=_zyuR4K@91<_PN}Eb znb__B@B}PlDZ`Hmgx3AwWc&oBA{sK=M%yIsX&m$W(1vWpqJMGWdNf-cxQb^}nz4_w zv3Ct>3b9L_(v;CiGh@?jR1B-SK?r5}BHfEYmxjI1KqWGOhuSTgIJ=FF(&qyOogAYyj*?xS=<;an&+q(9-) zkm0u&Rul05FpoJ9gCP{2Gof0lO?DM*s*H>R8HLpHRiK~gb|N=uyFs|)DYQyc?$inC zXUhe!EZ7vuMQ=R%%GMz^OqAwz;?2n-_rla${agT}-y>6G;GZ_{qE#o0E^c$Bjt#_2 zh#$p1e^$o}6EUB22A+WhLv87OY(FDrOZZ+6?13|vY(MzNE*Ty=ZdVKYuT;mKWHgU_#s4BNJY(K@|UW}xhTMsZ5@UI zA`J-KCt!CL1yB%;lyc|bcn*LnJF%*2xq}INOF0F{PSVmF07ar9F4)`o>i5VzAv2`` zH$|*YCzh*kDs}^i*F=3}WFvzkNDPn9N+0^TMyXpoD+6%9=#!(bZ3IsqggbsgcSlH5 zlH6f6r1g|aEz^rBZ^79~Sol8K49nsTGiC7@>&z1+xV!Ao0O^`5@V&V3O;3c0=ncIZG(DshkEbA3w{x z?#@h_kmzy;*_h_=XE{U6H~;ASKjh{WO+28cGf z#!X+WJ$y?vadvqRmpjwx(A=x<`&b_v4-S8FwtW1mv`-H~Y(YMV+ z69=1uI!JNhBV*CF#j+fR+NT(qG2CG5}k|){`N8zv-eE9D2PaV;TU4wYfBvqq+;PV;X!>9_io=>@H?IA< zJ7pILTL)b1E_2X@xJH#D&uvg}Z0r28%9DKqI`f+M9o-TL#Y-6k`Hf7LW6uB+r}#OU z#9|JebZd`_;Il{j}xh;(uwq9%o*r-8u7>W`!7L&IU!Rx zC8ALoxgTlKNMym%s)W{mwU$LVlHSm%YNgi)n-{x%{`REo%O@0hS}seCLW`M2nU@`b z`K$jC_F2?m6Nd9o_yfBn6P{D$uhr_EYSWJ`IRM`pPXXUAx#B%K` z=ix4w;Luizt7z!(39pyZ%KA@#(DFh++mVhh*k*e&3(6v~pqpqR_~)7e31&wUN%5A~ z@NDmeh78n^Bw-h2t=8NO$@;S7DfaNL9bUy^VI=Y2oEEw&DT(vNa*syfy%6aQk;nWM zjL3?dwfmkxX!}=sU{x$krigkg>EBM|6UeGr^!Klo_wB+C?MSgm3@;mVBmlDu^7d<) zuvK}eDNuMr17?~E}dm?|On!kL1bgb$ap5OTPXsW+ew%;txDE>zbWV zl4fwhH(E`LlOliX#z~UoqKOUsk#e31S}USH@+5~&$y~G46Yi~F*#RKc_oC{|L%pEJ zeJ5AY7cAZ9!^R@=p{@d(d*h0)zY1>pIJWGn*!R?rPy@7^=1HWgSY7j1T`D#A+`dtK zFe$)}{rfg@#0Q2M$f5MY8yI`8Fax@{Qe**o z|3RVB~{c|-}9H(a~hZ|{~FE7onEy;FFUDsb}Ilr^XX+H_zkY(j$f|5Mq#P; z$by{gD6Q)@CBEevx-}})bLnL{7u*43?C~D8s}M!4`2`J=B}c$s&k&PcV_AFwF8>x= zEL~suoMK*`lvp$mU{QgHcp`h zJwmNoM>Tp%cs1=4-nv%gcL}~WSPtm-iCR%^2LGEua!1qfDhi8miC}jcuJl}x(dl)! z%Ry+Vzbw@RBs0Ly2|l?LiYLYAYFo^(gkI!#{Q6J@!YiQNr4$?b)a3yvsh9b0D74J> zaBy|W;Y?C4Y;nHsw;{$+P+^cK%1s%yFP0^8337v+FXrDHTsR#H#G&EMFaP^Cm&8wF z`-MSY7`9Blnh0@2t~Oosm7wq^BqiD%s6j_Z!jl#<1$hVba=~3!7JzatnD;5IAL~u- z?eIbnE1N^`f^aZFgqjY{@?P8Y)9HAMUpmK2<8bkunn zJKwh1-Svb9bqUt+X1Q5e!OjS%mMSbTUY%`Yifbwgwih0054ytk1|i5O(1Ih zCr}d5_Vm3T^sPD&jsxPM-MpE|Y~r1N#^^u0Ti%wv2T1X*&fWddn?9s8{N81mxlC^3CvT%3Q+MRIcuDGr$dHmcf+j*%99ao*Cw%38wk)7oi~9#luNEX83O zv~y#75^H#lsdeOogWT0ZntGUZ?Le^g7)?dtBvSm=ku=s;Xl>PqXDN?rjE#76q5|K* z0pNAo!H>w}QTSjYd}}oBq@oPW-b)AQ*-B5Nx58deoProGEW1A|9Q}0<$!Ab+w~%{F zV=QV41x=0_oQ!-JeiXH%b|dZzfQO~@6!u%aLlTkSH^WK0nER`_Aje;4^&01n*fTtH z`kRm^^6>&*sr64Cm& zPSDEQ{ap(o?qE`?+ce43+rgvMvuz&BHw|1B?SWw%g9a)R5IW5capqr5ET6EzTt+h(AgegF%H$D&x zFoaIT^#Eq#r*2V0sPAhnxwK-D>y?joB0+paAgeh-B`E$ah6w6puDc8lsj8@VKrK4= zhK^3jE@#kY0uhGfQwQ?z3zVNwFnnLTjaZos&Fo#66hsh2JdQSV__NJFLPEJahelzO zVpc^_ow-%o7q|hMK`$6~JhTFs0Modfm1xmnGdTfo`iaW^!3M{qmSRuiSzv!tI6!K1 z;e=jL{rx>l~0FYW(?JvzK5cgAgT~s2(lW@IL&xcpdq?;T@707JYHNM{i!4 ziG@)Mx3F(invJCk#3Zcx+YD+TB_F%bH%+~nK*gx)EI6V!Y)|6MA{Znaumm}Nj)lUp z@lnhFcMW=k%tx9$Yt@m}{;+jWY)3*hABUq#gaN;;x3yeKEO7fPg~PWxzqCL)3v&EH zMWQ<)3ZI>#-YA$``YXDLe99X9b%V1tViv;3d?L4|T&Tpm68EW4;>T(>x$1K7V z2d3mZgErkR7QMEmC3A~GfhCRL7P-_9CFJtgcaqsw!~y}&YP0i|EnU(77N;JT0qFgl zB`9HSE0&voZPl$zdoEh5ihV9Ddo|JswL zf)E6GBY{#JSZU)~T<9uKO#C3f+JcGwqJfg}HJZU3%o=M8oDeJv47J<>)}}hO&I2h| z9vh%s%4Z*lRQYOQpAFspE_%pu891ZyboQ%50??^Nl4z?(nPtUlWI^49RWyx@M-_(< z?xMfw(;~+jhj|~QsCck-c_`cRz*PyCc#&n2mATY!M9D%e{=i@ECy;a6#RtBZSoiI zIe<^sTvJlrz<`goj9&_u)rGb(y#E8HZ>yQW51j7m45*Tf^W**yVvNfMj-P-iz_or! zcx+|+_p2NUC5r@!IPr+@7ut;}LiDmW;?NE^uZ$ zMnf)nt5z!V&Ca+WRIR)9KYv7VoN9j-wyFQJzYX5&`X}B;sPbR?!cnbiHQrJcv2oTl z$i3`v2K6SMIrPG}PrT!&5bxd@((ljx&n`Tk+(LxL9O z4U=SB8h7f3xO3;k-@?cEGp^W%;>Se56A3MzK98Xr28c(YQzOJ4M_QE9|1&lX3-71{ z+lW>My9DA0`wgB%Uag9G2C??}q`_uf12z}_9da!7WJc@jac82_RU3|~GlP(qd$)d8 zM|{H_5+otaaA__<4w2y{Psslbr-+Up?@+m({9t*%~K zA)evU2h7a`=t$2GEQ`X@orcUq1X9=vOBl=j@Zi!9==HJ{sSfYL1DFO&ur-d<8$kTR z&nZaLLmh$X@UQL8B}a!BJ%Q1Fo9=iw9jtZv0z@&!LvoLsyU&0NQZoFuI2NUB$vqb# zdkiYUXSAZ;*iAk``jjA$tt#6zXb7hgzk|Bw&ozZ10Ru_vh^Y^LNSLNteEvObM?gzG zIfi-01gYntD^3@m11?uAl|Ns1wo;~P`J2#hX48YHknazR!w;93I}Szkma-M@xs^i1 zG!>EHc|k5zjw|CiP@hd?ev(K@r0d4^4i|9*SL(zM3{uFHoWsH8TU|&QPg|YldJ;`{ zcApKhLoOMu*=GonGP0l_!KfL6D(h9>3=$;PD};6q&kKLhlaskz=OoWQ#h61Y{N$~= zJws1?h)mDD48$fHQ3`NyXa3GQvchjoT>l4ss0Q{@px0@*xBNn}fXWoiZ=Ielok-Q9 z>Q`6Gp!r?>R(R)r7~(#A?$^`T(qI6^{Gvx|znKym;JupZj>VhG#-Zr0y6jFy3;-CL zeQd<|+9sOgva_EvEdJUo%-S87EDez0jJKJT-qj7)JbDH}bXUtF(++et+MeQbM$m8@ zP}I>F_uDe+MkE!vpe~+)3P#F-r>p%{FT41E%H@pjoPSCkB)I*A_ew%1cgVL^3y{%j zkD+Fm5!!SCQF}(X4|rbBXv3Y@$T|^j!kN(V>YrqM2GbAs)yUPt@>PeII=0VnBp8uq zo!I%n^>7{i7nF^84Hs8|wqXZ{0K{Y#_080ES5<#TeLWP2z10k~49(<6{OJLf$3(JE{k#=pUc5(IZUQxuiJ&P-`}RHy2U&D=V%+icrT$PX_wb&Vsi~*| zflShGme<#~{=^OAXZz_27t>$VwKz(jP9gyT>0y8)qC z{wGCY{g-9cGx}BU+_F)FcXF+#Z}^ZzNCmzy?Zowh3o%p>7g=S3dZ+%yCj+WkiLq*> zP`|ClnF0++9ZKwo1t;H$#r;4U(A%J%Gw~PM;K!j;d#RQudAUgdwXueUHa7_3rke?KL)>NSBBWBv>7sWWdq65j#)*c&Ui|upgwoXmH|tA} zi*Jq>2yl4$!B|JFRZ|?N-&VEvm3viZM#$w7)R)V?x^;lSEi=g(7I^6=k9QL+J=jU2 zsK5Fk?(GhwO^|LDakd_U(~r{Z8rsekYrm~+EHZLEc|h(RiYX>d7Fb0oD?vgDOKONM zrqrjh15@xa!O`|Vz^ptSi`vc*9{nOZJsG{oL1aB$er6ss9Dh&_H z1xb+o$Nrum;w;KJVIlgu`r)7P{qIV63;VC-iLGUmWpJs`s}iOk{+=e#0sTl_m(v=$ zM=<9h=(fUv^s50$bjkl-;yC1$7i3zuec_DMxracQZ<+xx?99(@eeI+(H zyElEPd|ICoJ)g+2n_%SYUc1kp>%kkiYDeNn^iQaw?d(Ka=?RgRT{g_Na!pC;X8~Q3 z4MZ{?*=}P8p%c2MFOfwDnaN)03DdXLcc_6@V!r$q(P+wEcqcb}$a0+XoCv&s$QfwD zMzBa()01B;@YB6RezDgnTDVS>dceC*$eM5~oM(Fg@n;bHx7}ju+l8v`x%g1PHKdvF z_Ed4RJNIAebe_B|)ySrJ*XpOYf#TSi*8sCF)hX}lL5U!_(9iN}|`)!@ruT_w2z z>PYQY$fDrR&F_OrpCoFf@hSY9dzFcUlK^H)e`nguSt<(!>XZ=R(-DcNjDI5U49IX8 zdog>mFLn8e1fs_&7ycnNapM7e^mU$Mm_VceEqG_SQ*b%|L8AH>@hfh?0l+U&y1rHR zCu;}2iic+QbpM-(M0BvSq*MaLE$&r;D7aNmb}c@|tzSvpR*p*Ozv2OZse9@+V1EyM z9+?C|tTpc~!R-IID-*`AHh!{!2!iK<+o#iMD|O0=B>5FjV9{?VA}!(^R5|O5MObgt zGCkau^VeM5YE5wD<_By%zOC-wuFGi(usfgPKLt`Y`e1egvC^)8@&3K&^1}m*!AH@X zI)!<6)bw+4-+_upnOhg~lv%Que8vNjydU#7K_!9G{~RDF4_8X#aM-6&y?J9q}Qgv*^${Tp>j3 z+4<(t{c$LkrTPXE*1zj3lfHFt0-vKyXqX!s7$BtlNbo#v)H(lXR}uOh|Dc?#)vfzp zeiY@Kw&l_N--UqEuMUuDrxT15KbJ>qqowE|_3Qa`(&G^A*@;5+$X&IC5dKKS`rF8V z28H*R6lpn+14${1b@;cY1^R?e|LZ)AFG3KxJ{91f@MWRGS_s?*f4OhR)#QvErUn9LSd{#mkJuc7oAHXliMv`5tira;wgYFZa&_ z3E4FvN>>3a$3n}uA{Biywt5`DdVLn(p5!PF+xS||P)?)BOY`cURzmJ!fxBd&U+Mbri@6&%GIw;*(r!iX8bg;B^qCIF>bRq zjTw`@3zwc8xn^Kz-V;$O_1QmM)+OCJG5hlZcuzfj^&Y5?2>1}!%xq4svqzT+y(9o*ct{Oc1Sw)ST0T%gAyfncmn%7~os)(v2>9tvfj%_1Oys$YCGlN;8S!&nr33I&7wz!KiJb`$3EpK6mard+FxDeG zpjryKzK%amnV;jbdhY}%!JmvG{im*NWxT7hd8G7(DW$wLlehI9Cj$K`@PE%0) z8!Ho$2Lc$}rerda-u4$C#lgf}`==;N?js5WPqe_)q?3Gh1X@u?I9&|ifMYCDyD6qq z6ZGr>*8&6JFKx-eN)TDD7wI-g8@OUN9>n(o%7|m2y7R2dXB|{b&-F%Y4>{!mKijR; z;vedcmv-*V(_Gun*YAWjq`#yjs3%YahB$*orT=b)_%6YmT`Cj(*jY?wskMozKkF?) z6h#v|=0uAEKpjt6&Pg&d-cgd3>sU}NW*!9I;*-c&T?ILTk-J!|eq#oPIhA!Ihe@BP z$LY(>Aen1_GV{+nUW>@=$0b(8FBYn4Y*pOPHAF}EipyU?(GZ7O$lvPgb1^mO)lHil z&s<`OvQt95bV=4%{q53JWIIw&`_XNH%q9`QcurvWPsMFj^PcTn_Ni8}CvDPd|nR&^sc|*G#BTRvjhCM8(>hZ=VlDIxtU#c8Qi4gq!;Xo$iKbp6? z-py5@vA|HZGi28&)``#U22$PAs3u< zDuaUX6*!#%Ag4ToT)Yz{eUsN6FX$m`(>bu0{|~{B2?~i3!9hdC7!niBw80X)y zXA<8D+NRh%_bs}x>R=Lo6|tcd9hf=LH%Hp0swcJrB&(kT-@qb-!(fiZFMv)!gAuE>2NTCw#Ai{S@<CR#Qr^Z#)!{u?&K6Kl*AcCPQ0cs>Jy{u(>VFn)m_c@VoZQ{)r7ZV zT}nwRj)U9A&a4y#=fgdj>Q_JXYZ>u*gBNd|Yhi>A>n}scFp4WwK!~hSjL8ELEOwsK zAxwY(NgrilY(9!6fDhw;>|<*pv?p8u2fBMW{YItm4}5ZH$9=cQ!OMPEU7_*YN+Wwv zBS;n3bJIt;RW4y+gqg~HHWxYeiH8?~>E3!JJ21Z$>ASBeAOn}?j?d2XCTYo)b_z=G z_1VQ^NyS$?tR_Q|M(D_5m+JP&@a-L!1)g^bp}c8LC6IJRq^@S5monug^2)-+|U{HEuYRA(O`SSo)Jg&NnSU-3<+1@mDI%Rj+Y zvH0Xq{nWyRd@YtddfT+oIqd{NP#8J~nEw;6bUZ`jZak;LZF+BL;I`LpogfB(^NCE0;OecP$Y*qnl`faYQid;~&x#=t zEgXM(2hsB=eI#=N(AM) zVl!H`J|r&!z_n^C(0fDt1V%y;!KoE;w@RA5^Na^24?8WFB+R5T)^=PEj>fSsrq(|6 z6Bw*aC^R9~S@Rz`&6nhHj^2Nth|d1mc5hvhV}puYe9JbaB+ghEVwyeDJNUR~kl$b7@19JdmIK zxjKYfuxqG?EMF?c)&Q9qD$|p%l3`zkj4@5x zHV6IbLDv;0RUH3DFq^ibA`M2^XhRD%F)1@4n)UG3vA_G`J!q_3L(%2ubrqkz+Wb3O z{5Sl&LL-Crr#Isfi921(&s}pVAT-0XyfR@ohv) z^ILq{qCZRhNKCZAe#c7ZpV{l2r?{iJ@53)$5-E?f^V@W}$0L$rIocH{TLWxLa7ta+`6r=XBsg1J-IHhqMp0sMPrh|BnM^}l$ zvTfBWBQef$!e|V5*CliR7G*8&ujC@Sqtaf5xhl4_#x+gu>MZZC`D2+U;x}aZoiBuj zc#No9peY_?d!ckkoHHuAA1%gP`-vTfN)P=#-)GB*J`Kx!JSK7ZW|U?t(L1TOfO(HB z2^V7{ri9a8v9Lm>`PHjNo0uf9ATrJ>AkCHXZy?i2O3xUWC!z(y7}l}2bMVOvz%-*m zYe`R&AfXH>kBt(1w1+Jtqn;+ooiy}xD7K)(eWe{0H?80P?leDc6)RqI2$r+Iux_c` zqqzo=%!;pss6nVtO8cf|81=<;cG$SBh_ z*LKN~>?nWwaFdvO-1j*HH{#2PES0&czM(*2a?m3?Qr4tUrKIPIs7n$+fi z8Uu}u;+Xai*p;yOVBK8LIE4slH!iYY0*R5adWN+TU|3Y*-Uj;2yCVu499+e`3;$dZ zTC5iVDkJNg!Q*AA9peX8ZG^ZxYhy;GDdh=Xy1&*fgVkfL6z^=jUaCR%ZNljeloH@4 z5J7Umrbb&3E*Tbg8LIS7tV0lS+nV2cqu7Gls7Xk7zWd?74(LWtfL>dNNcXS{g!3B= z9^U$n8p8cw{|QfJk^3@s^r4%$m@DxWcjt%In;~(!vBQ;BSMO=+k^1_9SRJ9&T({Q5 z$;vzF4_)j2XnC84S>{AUgNXlaVBl6{pTO9t@^27VYCGvVH7=+4E?zYsojojJ3K3d} zs0=p|2HNK&YVP~G?Lxx5Bcw4(Fg$_HYtqpMUo z7_87hsI8g&tV&bM@kmbFgffFJ9Okd_S3e~x{hcWL`HfaHT)1w zFg4hM9auL%M|JgZ7HDX79CNX^1M@?=Otv8t}d#8NYfU$31c- zWAnIMI;J~+lZw^vw=D{@*U=mp6xIHp``fnV-a)4D{7Ez}thuZeLfk$*y&BiVCfRn~ z0r1?p3qiRm7!9bf+gg4$78C*b%gDF-VW&x+T}^joGRd)U zgT8-t6IJT(M0<^}qt~Vi1TJe@y2VmrcK6+eg!u)Ya@Mm~&uUC$T)HGl4^!CWE;vqn z4~+{PWQcU0U2&oFF9VC>Kl?2Xwp|yyHV&87i7pSAggre4#StU*{{nIN);>g=xE5h0 z67;2;^Pg8#{k*5YonA#JsHMr7x!g&>Vnzs;A+i&Vio7U(u5Y5|PdERbe>kG~x|(}F z;lOX8i8^CtDdaoy1FY}W!zA>|e3NhQx-^XIh%xFFq80C=&5aAHX!G1uc^E8W-686< zQ)O$8^nZw3GgQRkw-mHRwGV;b)U%hN8x$@_Vl`l>p{mHbWJZo4pUA?8)mgs%=Kp0J zruBqMi>h>Il3rHrQfiD|Dmi#Q3>hZEem2rTI`18z4e+wI^*aT-&K9L_oZ#&vsMl7k z`lX(^WBPH1X;RqqW&qr}I!@;CWasEb ziqPtZki%&Yxv2QQPaY*Xkf`24v_?VBkE1`8yHp^d`KLZt!%A@i(ds>A&IW=pAnkan zh3>rS>yPL@QFy5=7q*kwqli|;a$@he3TBU*=QGJZ82Sk9A06?m71xj$PU$dSM-%1X z{TVXeS|bG$$nvPik8W995NZb>x_uZ8@3t5wR-98dX{{97Xnhgw@dPs~Iba;(s>3O- z;yRk3W@mNy_!EO|cc%_ya0WY?c5cSw)2POP0jJ_o)MH>Un8 zlG#m5W{MQ1_+b1!loLW#S)9uCXcDVA%@LO*UC%=h{T8vu9D}6pZ*1|{{GVO zL96tUAkM6b<$YVWKR7;Q@~D|@E+A}dYLM0VmQvU4Psv9?*M7*k*fXmFd$+{?J%K6^ zb^HiIZnr`DDA^H~zwaNve;D}w_QV_U`TBV2;AjVsG?VK}<*{|m)oqB)jp7BLF+cy5 zyC+2e|8toOZqA(~HvX-VP+n$r*}d4m;Cwp56wWPKEx2Mgf!Ul5W%)ZmM9MaZ*AWCuWSFJDLcYwh zlvTmNKm3D9$C%pN&QmWX7?TB zD7@<7PDd+&2oj(N-2fI zW8TYBaF5PKj_aIqMrOX+4wn`ge{b)-rx0D;M*R&${tBDSw~~(|sM`y>^VVJDcx@85 zPm^Mx8Z=n!m2~vODOu5*e^vhzk?hmDvr9ostVwV&Usimb^x)CH) zkd6gJ8gyxpT1qMD4k_sd6_hUNZt0ZJ_u23JH|%Hc-uv8{GiT16;lATU&vm?pHWU2@ zf&tp2iu$#WpoP2`lsA5tyaF~HHNW3A+m zGTHqjd_b1U5w`P;l@1LA=GtDHBkyykSoioMuFR0XBHh3`!P^C`s@+ZH&Kd|y!{0`Z ziK`l|tRl1^`UeJH?|Nr&TedG1>$O%Jg}+nK^d4TjCVY%dhjgSEG>+c_2_hx!u=wv! zOn#+a1Jj8}>F0n|IALDv9W(zXQpZjlL(Xv@O8vjEQ}W~@#(_?tJ_PKXqbxKMLEfgIg$q2 zob_f<53S~UY*piDD0+e|&GJs#R8<=U!Qs<-DVCzsk9@ph=AROpfTW-tU%p_Zn1s`z z5U%PWuJgDUm>m51o*G3P_9A<}5VF`g!NEvBLz0TBzBb&V+33A)pETyK4qLd0Ue21X z$DR>TF)ISC2OWDK(#PGv6QFw;qYfYS05cO5;(gT~N&#bf>^csLT{2qEk|SOH-<1(y ztJ6{(%_kT$no2Iv!|cF*LrsUb_vSlWSoltxRXYy#M$Qxpx%|GcJ9Mv%`j=8Y6OH@K z1q1cI-X{>HeDRwDN;o+C6^>ZTFF%ulV#5(4*aQ~Q`87Zg^|E$x9_o6e`l5CygkVmn zn;U9*!M6DG$qnwVzc9j6so?_`cdt0nB-MifQ%IUbYHQTNBZDch`pb}2rZjhniVtkB zI0~298aYqRXrt@^4k=x)QVu-H;Zs#ADx~bRt8b2oScWep`4^uX=S^D(slGh+tncpX z#jE`KYhN~m_x;o^*z?w#EUG}m-ryOf-BF<~fIJtHb!3XlWT@NL6j^4|5#haKN$Fe@iv7Z!&VobwuN7M;6m_zCR4BDNWKcZ-Jh;`iKL)tJ=i)6pinuQG zwrCRN&4Lq9{#JXV;P<(BwksbQe_efzn6>@2^|L@e@XHu)%{}@X;$gEx(YtUJhwa3_qYK#a}apgKocHrpRRJ^5A?YI;~lukiq9TLxAQMu z{)QmrRbNTFw!%K9^(yHpAEkWk?Oj#wYe|X!TSV}>#ilc>=g#SXx79ne6-UP0Eal31 z3`&%$xE4+6|MSONx$lhslLRL?ni5u2;!7*ccj!8E!k zbNdO9w%Ec3+XQQ*g%n1ut=gBws3lR)kozUceEZ-vLd?F+Uagk`9i4<f^t1A6EmwmyvY+inEzOoCg8rX-rZTK-ZH*oOP1-+ed-FhE+}wsyNP;y`+KeOZed? zYar=@<>`nO`wI?2;}ukgLLdvoDRcsWbctWyJc?btY~@)1l!g4t-@nl$AHH3^4Lq`L zhMN7xP`G!bE*em6b@k$QFw0pe#n%18qeI!)6eixGeuA`=s31N@?Fm?*nFm+uyeHT_ z+Hq(@?FTt4m^gXZmK($Bpe%V?a6{tDR+dm z{fHV{XfU>-*(m@s-JYdy;oEOSC4ThgEuRh>(Vt7)@!LL5JLuc@7ZUXhkO=5~0b-Jt zSH@WEi9CT`d1Xvt3u!@*4>~QF)xcxoctBTl1#h-Sp4RW}q@xhK;Uen&n0cFux4j@d zqQzCoQl(8=C?Uoh0{S(k@IxZcg`&Nj!z-mHrVi#QR zg4jX*ec?|TEIJ&xP4(bi*KnYY9ewyTg!!pdnQgpY>|b`=fmnCpa3Yc0pPFxpJkVex zlsx{p|45+#TXMHQ(33;R-y|Mbsp;KiDeD(UPL07H{Pw`15=gpwE0-N2zY-rvEV`@aFLwO=ub8-6t=h&%V>>g`C?uvNs95|wFeCt(*j5fEiA3ic&qNbx+yN>BMt3#Q$#Dmi3 z$JauatsPcyO@fbUmA@9FyN%M>ZtGFX43Mp~LV(6XQ-`RP8QW9htjkspIu^rui@WNH= zB5rYbDr#J6F}B>QM*Oh;dLMEDDrEdqqf|UToD~E;s_n-vwI8%V9`R){kGIwc~ntjwEwiLkte<3{J zCoh5Ly1uW58pUcG$8A*VXCd#56F6RtZcs}$f@4)9aO07*uLb&K+eVN{2)sz&nV~!k zn#@y)<+^cT)Gxk@h(S>qVQjFPw9Q`BHR7_vCiiPGv46KAd~7;xTe_3n;p+hfb;QUL^<$962bB^!i_=_Ck)AidJ2h>RpJlp6`O}{*u!XAf) zOerYZ@n6dZNQ3yewUQ-mO@APo!0sw#sLXUdp@y}0%Ino@Gq8@>?}=KzH|c_pqNb=5 z0_wR!CwL5F47b@NXL(49g~{2RDvLAYB~96gB{JW#sQU~=1l>V3FBd@>imOQj|2}*^ z2O1%ng%O+N5WXrA^L@d{*U8=5+z-#w|CjGA2;6hHcH2)kL-%)0g1-Gl8lqBcf`-`yWfFytWxfqm&lJxdBy?|`h}!r zZu7!)C&yZy7mhn0gzetPNd2zy9F?n(sZ+$79AvK_T8O(ci^@ zm{*l7J&MV%`pTOfnn28)Ua3MnmbF~=dc>A8*UeQ%qD7VHzSOxXa97EWw01M55WQdM z(fs2tIF7C|L&9$sjN8LnH z<-^TRp2c=FINz7>T^KA4@DaZ9et@d4i7C>aJO8%_^dk;WwCwMoo1+9Lw%^K0%q8YX z!A(b6Wc=>(M1Tcp04>j_Iy0D^f2bfLXnx~DYM_1SzrC}!vdjAtG!YPb7ulIxmcMhv z78ghLYouomNpJEQb$G+OSeL}J*}qDag04xbX;OqKF->?@pXR{o|6>QU&Gi|cclW12 zkWO#mo@cmx3AtnhL zV6dqyNrlA>LnBootVs%P=C&YZYk`SlP zr5dH`aUo<@v*FfYXgr@mUUn{{TEG!7&H40{&;5R{MSle-K7Hj6Lf&A0W%IKzK*Y8~ zXp(4qXog4Mx87MRx?wdT8_Uqa;KrO$I<|Mb(pMSN7$LsPCs8A6xbk1(Bq*oxEN}F2 z>tx1D#Dr&O_M7h;MkXL-TXe?Gzi7(|+($8~ANDEa62K~kGM>svM!HH59@y}kJy(1G zkq-6f>@#orQi8<9fqyG0`vcNon#fFhhe7@n6rcxCW)S42a`rbm%A__MQ1_X9HbQl7 z_=62a+pJW__f(UpWbV*J#Wfk(&q^OLl1rGja{Jo~GiM++y$lFb5%6&~nz`Vhdka<2>{pf9;E?!>OE7aP{;zHuS62M8Ncq^Nu;amV85z z4>is_6LmhXi#PvT5VE6%%J#P66E7xxprE=eH}E~gM(RJ$+Zep^t(`Ow7t^ncm>DSY zl$ZQ$JFBpiw)_eMi>Sf~IEp)ZIWGk;Rf3E$0u1}>^q>@`g^ghTLLN=507pUSl0$wv zLh_a~xz}U26nGvZz+~I&$V`NXpL^$0r!8M{4CV=<7?pcW`4#*|b;<+Y=mlHiO6ds= z1kA%~+#wu;2(N?2$M=%^M%=2Mx+@Bz^bG#C7-!_SA7ZDiA>jKyeR#63ya2bA4bV?R z5%&G^ywufESvKUl#Bu;vyxLbAsd0=8n<(YNNWJ0^CL-4(OO_pV@P2DX4Nj=sy4}<# zz7#uWv?Z*cJ%XrE-cabnbvf}p^lHy}cTwFT(^M@QDZpyP8o@i?^eJ;jx^wkO&n)5{ z{?JVdB}Bbsdr)_5zf-#@!|CbA8&==or?W{F?d@$pIxhk7P*7kwK?a*@q52a&_M^%; z%_LUbbNT8iiJvP0^dxV1y9>_lg;NmfQSwuOB@m!Ud>abE|IyX0zwLVAFk0KdRjf&W zP^JIE);cmlRW|N&0q<#N{SiKtiZMZPQa2&>6K4vCM3V=|NH&e7OudEdTxy5}-?dr0 z#O5(AqJo6#XLN($T|$4(#q}`T!`wxD@MWxJlcPI{5q>NxB6`4A;@!6aYlEslLr_VwIbiP_ z5Ojy4u&6ZCHK5TM4Acsk7a}&~jzZ3M`29h99Eul8H0yb39T+I8Eh%tnhgpAE@gW27 zRQ&TL`zY?2mIF$N6o&-Tgqy-bR=l`>hw3g0{yfMK7Kk1ml0#^nnHv8lYKn4Ns$L0D*G zCy};6*M>M3nAaj+@t|g(d!Wn)9r&dZm7M%qpXs*lh7!qB(ARk%zSZvqW`G2jY`r_=Pf z4Krgrt%Y8(m-dK>HZUbQ{MtwLnuR)cX3&pvjb+29QunC6yI_Whj& zP}(1a*0DUEF-4$al*mwh@A34rTr~=b)}q15^IDI8DMU(h-x~yKbumPLqo=03{NoY7f=3Xb6BV|DX&%q)b3*AqG<9*Q!a*h&^KzUFfAVFAIuId;kE;tOCY@z| zHxU-+s}!LxoJTc*+9rKx>Ld}4d@gL&_|E#lZ)~M>>3JPp#K0*9ULMfOoM{^JrkEcM# z_{&`Tus7(ckBB()biMNqgo@^g=_k0`@iPpv4_@hsf5-Uk$+rz60$RRT5Is7D{&s)l zW99RB+<&}{`z&5I<)HO|&@|ViRke#qPmqU_{%WCtQESAlNib1Wlx@gs zT1FyJ{;_09`Jic}6r&hsm$XRTrdiwrk84hP8h$LfenH>jXf^zhfsz;*${m77nnj~t zDKZ%B0wDr>NCdqqaV9t~sLxc^rKN=`X6@lmxb-EuEm2iC9YQ(F8+#-xHVmlx=C5Ed z%l78Hc>>#Xi|c1OP&;XVOGE(O@h)DM=N2M}$*DU52p{iIWu)CY2=L-I&C+}^-fv-n zUC)|bPICwVdbHZilN&k8Zp&3iP-&9O9%4SE?JI-E34YME!;;T_$esMv* zbC_6jHeO}_&s9q_hu#eCoV`+I3=x6(_YMyOzTtH9@{*ojrS2h%&APsnOFxlCR0>66 zt;Wb~M|=*x<^`4?dO$wAB%>2utJ(injuXK{P3_ei=&P*v+v1fZ&j3#wjlTVURi>s| z#1?3#YK+s-=j6tdX`aj>JY)(N@$jyFE8;*f2QJvlAN9yN6-;7#8Xj1y%r(4USl1WH zAb=(c*dewOwai~JOf!!7$!i%kq`LTu-L|=sLOtsJK)I`>EjNVSXz5qEyxq@vhr;;s zEFC5BbWqovx-N_3L6otH1VJxIIEWoQQ+D+_(C;zk_B3Wxiih2~Owc8jJ-$*hL*I+p z$j?;PxSm=>ZL;dL_#zpfJ`(deg>CZ8^iRZ=bTg-K?8C9ZA3g5LPIRr{r$zuBDPo0u(Zz&kg`D=4 zvQb95C3msYr!&RYN^hwn#%PRrn31pFmJ3%v97)+z@6jG)o-G^-O4?X-W|`C*xFiZ1 zkz1(T@yEsX6UN|)OoExx>S~C+xlMJ>>=so&VUvi<|IoCA&;@n3>RAyTXxs6KW)x5g z8T+^J@B&_Co<$KUYlMZ%gw{Jh_(UI%f4Y%c90!Y1oNm1A$b$PFy_h1f-ngG(LqTEcpO4urIARy8;~ov_iI-pqrG8)xHA5Bd@~S8$ z(Nr?{0U(sJA`iq3Iw3M*(4nK&XaN%p$4XjJQ@W|aJhmY}5cx*~@ujii90v$lASP{F znALI5JPrY;C@hDS`y7w+)*FXr90L6xi9`8umfv)Pp?NpnrAFX-BIHKUI+K!(9-YiN z8o;QWQ%uRs#Vhi4oBfc3-dU5*Jcqj^0L{+YB<>2!7*FaV)3m0qDlzzqi#xUa*AA%9 zliD${QMsf=938THf*lK9SjU_kb#kbx27|G%won=8xTq ziG54vj=@1Pj};BiqUt+?FO8)B<+;x< zuTskSn2gMNzPAmP)B3BG#fdDrzvqIzNM=j=wtn?bPHt|U9dLz?mM_E@`#;>%;3^L5 zD{I3J{ZtvR-qet3VbAr@$e%aQL?_RGzLh&wlDm>(#Jt8f(FZ2S zE|_fIIyR9@FKIz?X19)+IY}Zx`FQ@u-fd-8gipip3tIVgi&gR>nWkV-kzb6Z)llK6 zC~2_!3TRVT#h`Uz?|~wr-eEZZEW1iaLhQwgFA-WPib>*~%BciOY~W|sC})vzd-?)B zyLkz(mCWeHv*3WmC#J_*;Vqp36-iBTkC7(P`~lzC>noM?7G=BCq$+XS@HW8be}E;QO{l@oU92LP|WK#k$zdqO{Lq6(So z^oEIP(@GMC=o6!M`cl&zUKR!xQx}Fe@}1*^RwunNQ$VWtX}$9ewi^PbM-8N5`OO?M z)Jc0=V4ZP6*7%Efn9L_?ra4d^FBZaktAlpGO}$-d@P?<8au+d{ZZV@Vh{-WEoipBd zeL1cRE~%Vz7_d&xPqZdGXSId4?vBuQjlZOtnhqPXQ{3pzfWQn`GyS~t1tdW}TeOW4 zR~Xcud0#xyDdy|efw%E2)^jqcIm44@o2nhsW?b{y3p^Y*+DcTTvGuVKjh|40W~_N? zsp76tzd{wl{5FN$U&xmB{9kbJPnD@cDR3iKV{o>>dn6cbK~*~85B#G|^l&eZ^iS~1 zCI5u}G%m$f$fgars@>-s%{ZY{#d$SENM)XKb-B63{5~vQ^KM(Rd!Kyk@_SI1i}9GT z_PeC!n#cdn!9jEpgCR9_MkhhH#o)40Cld3^SII81g`@=wD_^#RuZvfXzXuMhZ;O>R zl=`!4h*UoP9MI%>?y}c3x!l*g(17kZRTo%9u~}JEa*g)`ENaQ;750Vh&d0gXSqy97@P^TBxnQs#8iKXT{ew_i_yo>4z?5 zd9;RXSmvq$RpZE;HEs#>Cg%=n1hsAU9V!0-wf9(Y=%HANa50zBT6;1R;2mX)t}&$( zo_t`Psh$?jM5ErjwH=g#7QsP-4^VJ*b51?G#4Dmb zj{9(x4)F0=bm=Pf5G0RqhHZ^Yt75md(4MpA{58J_G@&f{e2FmIG(IW|7A_5k zK)NjoB@&<>DwjiJEyQJ{{Y@>dZl~NREtRQPH!q(7{NygBhjO*f-O2 zYSOdQlUvJDbZ3f>g5BIQi9sG_Z!j41k7DDEA2v*@0k@}OePtS@E_w{w1A-G7g&w_J zan+$cQLmd$Q6#VWAXmP=(S9>nd&V?fGu0I5<{JuZ(#&jG#`RAbBCu@7aj#}w4*v*? zYboT+8E74g>*+;PaXxw$pfq;h?H>>u)f&ebN8kJR;t5vhguPm6S0Xu(g6xJc(GZ(?=sT&f>aU}Qxm{xFvcSLjoe*R69x z@@2Ko6F@bTZ>OMT9e1wyo@$6JSe$r&Y0S zc)d%Y4ivMHI#eXVM`PHU5tJSs8vrELc0XaY7ESsTS4tW;jUps2K`l$ zLR0`-$oDPGw!^7lN&@ArdM;{g-==r<8#@3Pe_KavN!f>P&GSD5>0E>RFGIF$XLL-KdpSG)H_DlgK%apjV~)T z#%9P)Ggps%S+U5bB;I8Keyl6f!G3MT|Hb5`_!p70LSX(8 zYG78+%ii1K{VWZ98D?uv)8N(RJGmx7JH>e<*ExpsrS}a>Q^4wE*i#vwyrudS6yoT` z0m?o5Oy%U{{kQA?V*E>F&R?nFMh~~ncP4I2omYmauWc4>G#ma~+Rk%^Bi##xiH`|9G^Q8BUAj+`ZCE;@uvQCnKL#eHw_P+5?+Y%)H>biEK!%!I=~++t5sPQ>V$| zp1d3sSf*gQt*k=vufLDo0jtzk@C$bIzz5Fn*3oZ^Jt+w(s&gEAA9?gI&nAV*w)`NT zzx@?#s)pJqhQ3)1=v6jP1FNL)lYxA}Ykl665+X#styKtHqdYJ;AID*l*>QpqgFUYHEN@Y5l>tc~@XGJgDnqQL?rad_K%@B`OLq z2*tUs=wHK(8xl*48iI+gy4jQD3@-77H51=K#TrX1rt%Wzq;AScHv!j7 zB7#R_ScAPid(~AwLYm@(r(857bTrRb%ke34qd9rU!DWv!r>yVRxmwr_?mZNtXYBZx z9);%sW>}BJ@1sCuJPD!cs`1c=X7N&B&DYdiL_GOP-c}>GydoCF9z0|Rhs@}f3s^@z zR#LP4KCZd)FAd-eK6W(yBz%0_xGTBz{AFoRx(r2ScqoTmi00jXY-@;N{Frv^+s=$r zJF|SGN;}+cxNqmgF|7iQuKW0W@WkW<aLS-cMNKB~KCW$g=Sur(;I zh|jr#iT~iKXnhno1DKDn!>4lu?LmRsy@KhG-ai>}_eoBvF>Q!C%hx6PI%iF8W}A|1 zY)}b(=A(6D%q>WU9^s8(|3}bMIant$!hCZz2fS)%*T?dF6HH%lg73@G`!UE~_OBn9 z3P)+9{!J}v2?_}j8B+fK_+C-%v0Z~8RzxLdTG%G(*&1Nc{;o4m(_9^+7ebm)aGhKE za9~$ZU>+|%7)+}mhU9%_TQxHOml;ft(X};e2DdY;OK250uEs)(0NTuVDk!Y%x*R{^ zY4ss56{`ejasT3MQB434>>}q|VsfrBOkRpkzLg}l@Kz%8k&d}>g4G8zxOeoiO`A2zZizS@KnS?rI?dV^=k5`SD+`0F|5V$x>P={OP~hp- z>rib2ow)VHDFF2DKM@MUYt7DjMuPZdQbc~v*;~AJDkTC?mwVs@x_vl{6N2zGVd&Sp zUJ2kk!ghUWoMqp!KfectZocVrl9ewa8r0>9qxD&1Yv~(xl@VuyuVd&B?&=Kz281YRQOFD~l zAgb=e1<^Dt`=O`|#4|uP6@}0kJ@N|U8v7@v#0J>ed^W0z{E&Z2?dxEJ5f}5cw;4vs z+Tf=PzzUnCflM7D7Xa{~ZA{%76BeKNe0%>;gI8HgTT5>E1hqp%K%7uDE+4MBT!+Q^ zn6hfc*ybs7J2t4EgJS3ej2b$xsTk>|Nv7sGz4{Pgv=5fcyu-X7rQ3$vM|^4Pl1@t{ zDQD>6@Jn`4F_lY25e{TE7$laWZUy{&mSzH3i^^2iJYNB{(U1Ghy|ua70;k0}$>X)M zZ0ygNJuk#~IOt3FX>)*AU5l<8a|VV9X*ZF4RLt1`4%t`T%*Augkvj-A#HQy*y)tBW zVYVUDHOniEO`k|Y4corlHaysWO)(^_lLZxx* zFJ>=;R>ox$%O*Oor6j^g+cm@89+;f}(TW#Wi5;u){If*6!MH$mXsnOE7-w{lTtXFB zFJ+m+2TPsDy3IuD0!G8{iB=vN9RHV8!)=Ix zc>$-8YWCn^tK2Co-}(9SDvo)^8%+DmOfpyy>e0WGos-*Lt7K5}603f_dV2w_%?f(co5g}fg!mEApGQ!nObA{8DA^e_@ec?)h9 zS0eaO2mQVWqT!cL4U30KqxSM_8*Vkr3r6X9rrPoQGeF9@9}w{6KD-xIQFjpTI$i&@uoElJD&ho6(|9#C1HXpT}xpvu@v72-{)@a{pmF-c|;EiqS4VR%}bX=DL-^i$A(( z3w1D_K5U|HIo7<5lmu-S!Dvp0CAYZuS3qmGE9KX1r5PUmwdKFhtOPDH^K5{+WTPmh z97l*TTquh(|CX>#PsaP9P>_wH-1&~ zYs56r(vrNaEOt&~d6^ajhbmyi`|qkG>wxD#-iQ_kzIje64B1~L3#ndF{x)U?xl&nn zji1;gb=v@dY_yb`;t%5^;=jbQ0U(%~X(vpdcT5NTe7nMlRtn?WOGv0$)By4!B6N!X z0Q$PUyc=vCVdjs@PR5ORnSW*=su_O_#F9ZlJ|UC6>E>GlKy`vk z^7+JcNc6vX0(JnpLQhs8ATBm_s__Hf{h-Ak z{zz3U`xFpIWIv5G-GzEb1?a*x);1(k(<*9HYHoOACgVYuT&uc4uU7-(L9K?;OMCvT zG(A2h?1%PI>95^>A_6YS`TLB=+0mj@T`xB*u7Pk>M!%QH+vzp@d1r@q;Z0FaZe|bn z^A#}rmmPH}H7E?3t(wd`|z#viGrOWjPgXX z7k~ut_N?s0Hgh}g6rjkhED*vQR7Glw9Sxske0}rpyZsX?_orlM5TGg0$P#if&_-p# z`NoT@{-BNs793h=6Np{?u*fh$K=MMxm$f1^96Rgg6D0ahctrDpsNmMKui6%_y-mwI zYaj}eXGz$|sQ5Cnjx0T?qnRF7$E1dytMncElcBDZ=5+(b$})d_p$BdC@7tx5!3BBU zbwyO;^};*P)4_vFFU=jS-f8k^UuquEyFYK4tx;JTHrmy&Z&pIBZ~3R$r|Y_#gy2(W z;$h=ww1+{XeW30O2J3hL$Fw_?p@;boSOJ)5M}CtwN2^=xS@ze=8blt$!v-#!ybl>j z|FttWu^Mc5@Pz+e@84zwIo?cx*I#50xx#TDRah{&AtTC3(QmZU=4gUe(~x4}D9xM* zqX%j@W_*dCvg9psHo?@21w|@-a{I7$&N3FW6NCY)^T^i z^)Nn6czwkgwgZ$=nYT8_84N~bmAS`G(+z)6wkdlcQ9mW}Ed82%_Ob3GxQ;XWrMaP6 z(PA^1$w$qIIw1;Y=Oh^O4I|KxZMRzNtid!4TxEZmZL01*Sh|h2(73U0#UqlYhc3T* zt$rvbAHulzyze?AWf-)dG8Gxx?mUwh2Qq!K7}l*WLF8$WVdruepfi4Q;dX>iI0It` zvY3!!n>fpNEye7T0Co>OB2v`4TYmMF9a_GEK!+QTFy81B+<>=JtC!?Bz4K$EDws^u zT@^V^p*k&5rTTICffDEuD5@w5ZSuvb*`du1dOh(fRgUxL`+&Gv?AV97+kTA&B**On zQ*mvJBtxg`t_D5>E=fyVNRB@+V$pkcTvQU7or3oe=W1zo?XwMHdw+AE?8@^lA|Y`3 z7KDdLZt}k7_(4soukzH-p`FYtf2Gt&KvTV6LU5a9VVV*1noB?enb}AShi@N)j*{M+ zPM3rW(!4ar0Y5vzX|&?VgM47oUS!@}-O7+{crbZq13N1cQA#PeD0mYLmi!dYZt6e5 zY^WYu*RvcMm&AkOFrDAL|Mp)Gp?bVf??u69yYPN3!Rh=O^De+<~7>^uZ34p0&G2N{YlPoSN(a2?hBrsxl)ZQ)E>S;?l-s$ zg*9~FkO9&f;$W;Lqm#Bro%I>3ty9B0#pAMn0NjoRZFETLHE{8hdaCu$8#`?OeFw=a zdc1BAD*I^;hhP>j3)e&CvG4q#P^4Qb-F4eANB@HBDwuy(a$iN&-;T^x<2{uTx{(#|5U|zkB8{ziajN z!oumgxJ5~+DKPmZ=dPIZA|6g|cw!^ZxS$l<0Z6_VbKHaH```P)uvzGDISIaiG)&#Z zc^FX1D;rEdeMegMssDC#%FA$LFpB8yXXSSnt1J?Vr{p+%130lz%GwL`x7J*ipI7Qw z>Yq08B|A~y4yiZLssb&?GUuUqTgj?quCF|5T%jYi-PGHmBTH0Y+pyG(>fk3mmqhMW z?7f(?&x=uRYM|ddX5B$93g1&V^8mal>&v_P?{DUXEUrLB;n5R+ZGdU;!UF^^Z`hsv zy$AokjV=et<&16I;bDKr1Qr?t*u^2IszY7=Y2da-@EtD3F*Ay6vO=`O7}&}Jp7d*# zianeFACW8aM~hl^Ii2s3M;r&jpRvMBbxOy!lGDuHOVGK#z>rEbm2@xXM*A5^&R{h^ zdhh#uX&GHCfLdZirbo(zg1TYV=s8w;`I=8gJ$wxCy3D_JGD8F~GqlvqDn=%B&`39F zMUGvCJF-Uo_hKPRqQz%=^#(dBho_h?2oX^&eHAXkmr8pBr*|Mdc!F$IaW)6eb;rw= z6@zp@6=7pBw6MYsRmqNcWEh`2x!kV`*Gy8!lI*;=r)8C28UINx={X2MTj{i=m#{Om zyo3X-)CmPUz|dhO137OlGv+U_A}xP&JD&m^M+z64xBlnkYTkd7=pjO*@t2(5%zs)y zyVd^5!FS4w!PyTVA>ZKHe*AbIXxIZ1kqSsP;|`c;$m;&g^xbyXC6y9lvrHGNl3e(R z#Ll{Y%Zed1)a}#9pyPs^_KjIE)WDn~5c2-4?g>P7i(8b3c4v8Z?VxuhfM_1BxT+i) zKW|djTabHPJIq$lRebC}zL{{0ms_}Eb+GxNQHNYc-=yL4@nA+x|%<9dw`TvDZHiJmy z!prrJ0%dq@3`VhvX*4I~Fi{}|g%d8OV48=BLcq)#D-#6cPj9*{dA1M!4P~D)ugRfl z3dw`k3;4kpUzv&V3T+OoJoKT{gCsXgmm^^1N+1`@xUd0k=Yub}&HS)n+idNL{Lk4( z*ho~BHFy5w<$KduoC0}sJABV{jNw6MQOSz8A}ArrxC9SPkGS6hnE=8#*XhhUKH)lh z;B;O}S3nd1vJ+OqJqB+7_M(sP^6J%*%oa5wTQ4li#*w|N2hrJFc>E8~hk*k?eaIxi zb}7a9pVRgRaMZqD9qfLOv?zlh@SL_6i^;vxy_}N(CV#oLO4*D$n_@trXf$sE`%Ve1 z@W-EVX;kN1xgJ>ram5iH`TG6izpb(6DlqSDn5g$Npd}XDl$j6wO1MnbR1S2}&pscb zCYk%vy45YZbmd;eIo%KMY8y6K{=Q>x+3r%AQ8@FIuQ$bWCn7RFDoj7OkJy9)D@f9^ zZn|q1X{2Kn=uwWv!qeK87X?|gSV6f~Xv{Xs=AJT*eYdF_f&YJU*g$JD3JJnoe-J*> zdKf}=s(AUEMQ1>QBro2j$Gf>|#FJVY8i-JND_IH)3D#+^>5qX1f(gRZ^g9)pKLL{r z4Fq7tX`|YB3MqVOd4c>8I8D6oBi4T{Q^p|FpM3I;uG8KUsv4?)acM%y@m5Lq+q{v7qOR(*_t=dD4 zR$13E%uxFy1K=6pPYO}&ex}bv=xle5YE9x2`b=&j2--8Z_j!VJ-fnAdx`XMVBUR!1COlI_tOV_0~h28I-Vn47M zy}0)1)=IJTm>S}P9d(aWcrkm>%)2jR)mY7#Ws<-B0o$BY3K4-)-kh&3=3aq0V2&G@ z#NgqNM{-)(pykFUN7k|O0sjC?+Nv1jx{tfQ4vnLSm_6uU&b#Czip0{|Dvnj?#!r$M zfYpL!3ydg)C|600fdGZjor?@t^fY+`Se)ey=%f_t4K`KvEYIS)=yhwtWx}Io3XM>o z5!_$k3Gzq9VFaN~F>#p(=qR$8#TraFo(-;N>e$ymB?+0R}*8dU_foJ?B#C z?9lUleaBHTl}=&vhWN;1A(*k=J&h(%BqC^(Y|E&6n^^8!*9Ru^JqH~hK{ILN#rVw% zMM_A2kV@iqMS!P`DR>eqHB1z|A^uZfa>TPH->Nh>ZTTwC-DNMCao`gYZC!&1_(2lt zyKWW5i&0{Y5&ydL*%#aVylohzvY>H)(i8;P`jcDJsmO`VkHoGGpC41xZ~`o#$_3?1 z|A<4dkaqrYZzv#Pm2C|(RPu?oyYdWAdJ$#TIAKZJOUeGqOs8rbuw0j6czn0O1!tN^j~v~=;Z$O4eZg;2s>0FZ~x12YJjG~P^Wy9 zq(h2FIy4t9yhIjJzFT#Mse${zCmw>TKOrk0*D=c190-L%^QCl1+=l~{$IQWqr%g;j z6w{}?0%8EX1qqEE4Myf3=~`;O;a>3sg^c#_QyC*75r5Utm9j}eGm&g2L9t=Zi5(#H zs=~=C{yJ7w;1JZPRY|HPB|P?TGw0FB zj~VK!r~W3Uj<`@+;*<(+ygygLV#PC#Wf%N^+&gBN7QY2JO4*#?`;nN0WM6n5pGJ8m z=Y#5Y=@AgvI%s`rmgRRDtGmd*Pd}6a#|L-N7&+!{4pu^b$(W+ktARyTn9T!C9Nw@n z^8Thf+`lu+c2+TTgyPN*I?ACwlL|^~qld=;`YGk$8QH$i(mWBt8uhEkLP%#hpu^5F zZ3Nreh-BM#ukKYI(~Ce|J9cWeX<)sF*HbpyQm&h7)CP|=mg+L@0r7ABYi&c-u_*a+ zPX0U&WzMfkE8zjbz zVthG!<)+Qivj7R-jZVpg{GeJ5ksDj;WUzp#PtX4a#w1o>XFQt67lswEGv0-kGe)k7 zuW`JjYe8R(NpJ8yUtF7T#SaTDap-blV(Y>CWQ54!r%cSjkDplWt{jOeUd14`>9Ldv z)6nzZIQ?_1{Y<-0hGln@ouF?ybhfWpQW#JSK*o3#(lueyKYG%TSQv_DZt zX&}kFUN3l+eEquYOQNi1Ou;8guo|L^6O4J*Bd4C-F*^G4DG4KX^2Sx8X)yIGR?|NA zSEGs5YWSyCKKl4aVx96wm?xY7i>^n-7wZ)d&U%LIRrew48vkyB#%7gV1d=T3u1 z0rDJb2+#e&qzbvC%~Z!m@q48fmabKk+Yl}bX zcR0I1RjCIO%$HoPeNuVy9u#a6(S#}(Sk@nBQJM`l0U$5jJwAPYoq-ZPJ}3D}>P zYPk)8oQAXhg1MZudZVS&u6_nN%)6NXQ<`fBn%(JFGt_WmiNC&MihGwiwpj0jnoFHa zURT?1Kkp(I2@{((C#9*b!2})I13isfwCWq@NhkVr2jeV0_x4qIU%pdrkX)E8&_Zh5xA zqn)$itk^S7)lL<|+P(4F_W+xxtCnoJH*Lm9CxDwuHqjh9@x-Ruvl#PLj2f&k+&7Ex zrwCe&Qm!Xb+P%9!hiRdP_rUF#>r*y(z`JG^dfj6C`&uzH(CHL)au;SV(O=T>5I7W! zOsVQ!IDr`$T*HHxF=npg&7a^j8&X1jI(35Y%&Yn0a6*l_{mbCmHv3mgc5zbZ#eb1( zCnYu=pG5l8<*F8KMxpuBs_7VGoQI5mvu1n3>WlDtC0j6~Xt_QTg&}pCV5h*{4e={N z@qVoWk*{|s+V?yz@Ce2xH0%^uIHQlZg-)??xD$eAi71NMdMnpF@PvO4Q%s}R!P4^) z|F2fnAt9KW!u6u}^Sg`CLi{Gznv7pn)iRJ(6Zp0Xa^WH&r_5Zu1fcv8k=pqEguO4$ zBKZ744Ix$h8&{pgj~3{rN>~jl5@B8f^qReH)lb0$I39mego}S_3bx`{CCvlQlr6)|8feyC9#9{sn#q76Ded!t~)+g%AXY)dMt% zo5LSzfBPZM`*#W-#9m71wS2to+Lc9B5?wugv>-QxC9ISB0_5K@3!}uemTs zH5D}%p@8u-P#G~924FHXLVA4409H2bwHpMgJUW$+KItq0<{mds8BmA=s_;e{WSqSc zbIaE?rRWYYz^-ka#}wr5Fpm>z!}lQ7j)HH0$95GkS~fY3Wb(AB{{Op+NMlYfWLwwO zNs1m(cu!-O@OX*))y-5OBze)!EK14zCunS ztL^=NM?TVNzERyL(a&!d@}AN{uY;v~zfr&@>Uu_Zz@JfjXjo%h;7zN~KB^y2$x**{ zrSX04=ot4cEVZ^sw6T0Xn!hgsSe&xcCr#%VdC`>@$_&?5u~^H4a4J1E!q|I&UPTy} z@J_5yrLnf*(Sck4gt{GfzWW!b?Tcz&7p`*|xt<@bp8^95n3z&aVcY&ZFg#3)Sj))| zV?A1Envep|LqY)WW~!6{ylC6j8*yq;DpX!)0PniWY<4_})pjdb=Rug1Pj!hDz=kE- zK&PsSiCKF^PG)s#j^4eagK-rxu}$&IQ||%C2kO;p)DgK1ekHsF1o2 z9it6}6XJIGmsp6P*Neb2}^P>xZ2N`)*RZrb_e}IYgbhjSy1K82F5o)rt zftbpz68amlzF-yucw$_f-eC`K_Vh4l$^@-C1*aGOH$iCp5-%Ank><%y-ldD&p@>OO zkZdwp zyaYp8dp?3#r<4J>@XJ)!Y4;S?!jo=24h(kQ&=tqZ`^^Cegz#&Uo@(kYyA9jESbk6| z4cgpj0$NI>XcGgl%6YK%8SlgQlAQR;yj8bSU?~Xb(bD#Diy!!&sN{5Fi47k~M)MX< zs5~g)u}PY~Ndxss^*GPNzekGO;^#rxn{#D`_Ea1^O-MA_G%=H=O5T8NQpBt+&kR%3=V zwiao-&`FLN5gxq5(U%Mgpv&w8>DZgE}w0}yA|n)+M0!wIz$nL@Ij!&5Dcet@P` zD0M*uteKiDHc+?$Z##!7Mf@n@1^DRpJ(MlihF-w7tvxA5y(}2Ad|3)OaXY7^4>B}) z_wSxWK1Pp@h7t6osZn(x^6y%>suLT7s*`(CoG4Ls7aWHNI{!&BJV(C9A%!=c8rh-1 zxRPo=CstJC5Cb)AU1w3ty3N*7@pgb~+}w4c_@iT*bvasS z-|-ik`oK*FWh}tv_GdQ9z-`JF2O?$V`1WnpQSp)ER4`_D=2v*00&!M$zCBx>$H$qj zJV3h6T`Rrpc(8>{dmbVA!(U6;9~2Hedim@hZ~t0YQd8^}Q2Wt-u;A|Vegk7e0VLPd6PTJvi z3V>koLrUOF>OMGe<~DNOS+H4x=KlXzE=o$KxHHp0d#W&nR$V(p3Kw|L8?zYwYz#gY z2&GJ@C&5(rrpC3K1H{a$i$ZpoMl;$p>(0ToC;)Rvw@SN{)yJoGdP++C#rFYka9$HH z?Pbk-;DNd2B5F|Cc!N#=m@1_%*53HuyF}*dN9YXOh!m-?f^SvIpBjQKg0K0?AB6IF z!ql@dCIGfujJE&0``F|X6z80-i>}$ft1Y`UYEVeW9pje};=gv3K(wT&a-fry$$9Qm z&Z{UBK5O>_?pFAVWmEAo5N*2xB3sv*MqsT0q>yO8yz3o@9hJTSg-)-+Suxmk#}f#B zj-zYDPagl)U-cgjNTFYJOw|v1v%2a5dO!Z0Li+8$?e>#BX!VDuZ_(R)^k%fbTk}v-0lfcjHu)3=nC| z9zDJO7h_Dbw+`~Q%@3aZR=&0GE}NuK!Pu9&L%bFbS@#~70Kg3w(L+*80oJyYeWHEeou?kH{)1>?Xjz97Ki1~D!u%ouLY7%j zwH!jM9Mn{8=+z2Hp8$d%V<_!Bo0zu)%#e%9Oi8~m`wCs1vghRJaAcp{N8_w?_p`rR zP>YuQRvp^A4YV&F0Jha!lm25Nd%3F9-GXE|w_w_dy#R}7vZuFG2`c&to8qv(ja2?5& zVF{NPMAdA(9*%orR0}L7wL)85KZq7)*1GQkSgvl90@RTzA#sX3vW@g>LWjc- zxQN`EZ{MrZI@=2ZY>sn}g3wnu!eU*p10s_mlc=X2|jHPTW$2+{(~MN&H); zU|DJhJjSe2&97_k5Mq|P*x#D}OY!%&I>L_WqiSKXzkJ;mq@d{Vb45(h3pbxJKj&vQ zr`GUEmfS!W@$#KZhlQX{dSQEU+!3nSXU9%WCvZUoPD;xjimUqb2MhQ&L2h9wjuH0I zFuCM5ZKJ^k;>zOCTMs_r&w+(&`oRv!$JMPkGZTuuMOOQRS5eQ7F;i7}@fwswm=nXN zIWc#xNH70439Dr3=kM`zFggtx{nJKcm|kZHyL@>QfA6X}sANuwQ|N#H$)%5~4H}r5 z;B@V9rY-y8MjLd=;cujOnl1e&pmS60p+Ev}5uz4w((cL?=-boe#6?X?F6rl3=sM8B zQf_v8Uk^X0c#C@ye(452vBCh3I}LlN_AhG3WH;I_bRiG--+AmdF2;iVJT~1M1#zfb z3vT8e)cd1~8^7xXJrVR%j;ktr=A7Bzl;{L9eK}kNKLlWsAZNF zoAY9a)+G5T7hk7GJR8ULykc0AanSwGXv!f{?9ictZ1_zix2Q<<(w~c6t2TJOV3JN0 zcY~v)GO29-`cx{am^Ccy7onvwX2`|uSkHiBf^AIC!uHWXhI3%5BVJ&`rvcrXR=7LQ`bQ)1}wU@q-+7?i z5f@uWGv|(DITk(muePTDTzQ0l0d~>B)IFw?R9fw8C&!KS4e;B}1_A^gUb^_5fjXdg zQE*BkJ7^TtwMne8-BV~(lc$TmXmMzC2Kp1;lhMI&?;O1|bEfp|B-mncLQ1U!I{_9j z0)yhNuk>s^;OP%z^OS~703!}J`q=L-#ck;up9HxWwd_Nu)R2y;0sh49qFUmX!v+-D zXTqQTuk0@6@5A?p^vi{dY_sxh>@VAyMc2%6D;^N5-3^ikUI5rks%U8?ua~WCc3~=q}Fhre4Uqoq4)H=q2I>)^B{${kDg09gm&J2{E+#`^ogDb zv`$Gr>ZP2h=A~ErMuME;#dbyg1Mq<$ zBIDCC&KOp6CtD}hw2Ey~Gei^GJS|z+Rx^|A#zc9y+T-ig9zjtWTov7C? zB%5q5YeDKFOB5&Ld?6q2sG8*#AV;+~5Ln(Bp7waJN#d7A3f&lBzEs5f7)7VkUZsUU z^_2@eCwGR#`1gOmgKf{e9&75~`NzK29X=bpn4)#h3D$q*!SPvdIc{X#P78)x`Q0vU z?HBW!Ii4a1Zyq1F0S3f?*O(3~gwJOERZ0W57$UWUTbs@TAQ`yk^s*~5zA5joh3HQD zk)vxF!nkn+XVUmG?eUV1h9K>FGa<^>=d(2CY9`&;syvfmli>%#xTaCEx(e6=7o3fI zJ?t^5TNxte4o?B;w3`DbqiNpidX;tP$+mn*GgE<|zZEUyjrL^Xll;6oc3{2oOSt-F z>S{9ZtW$07H}LjfZT2bTt=B^6Ut5^lcVyyLmyG=7;Bc$Tq>$b1x`qp4Q}J}o`>Xh$ z{NM%xO-cQblL_QAwFmfWYbXXjw=$8yL)eztv1Jl9S=hYjMG+Fu+qO7c-c>~^_)H}+ zIdp9s2&}Qe)K?s$n z3b!=HNK6l3drmlHB4U=XL$$}034Zu9!$dRPu#Z94lW}d`JPl;^`j|>q;l-#EU|N^u zRIi9oq~Jvdt>xJS3&jZ{G0!k-$$N5$Fn9v4*x{mfDUI${r?*QE#0K{chm`COPHb51 zA|Uz;RP{TekBA5td9G++ZbKLkx3Gj0#_3uivcj9|uzI)H3Mq)>mOkU4bZMSC2J6>I z-`M3VI^>p3&mI@Ru5S9TP)0mIUmw<8&M)5OVzhiJr*>@c&HRkfY|Y%_gi1_`HlB3D zrY}f=z$nUwlGf(8gZjhuELlAT5+Ru89$t4qAncMTF@;$D_&k^SqO)NzB5ROLuIvU7 zWP-gD?1zmxc63h#)dw4fNyKDt%F>=ZTLm1oKdA@#3Hr@>T5LS?Z*=}%u@|$(TNSnb zrfT*V==@j|rX>0cG85-xDG6$nrFBP|reE)TEIZK8a-q+)U?MTi5MFRTZMSp|TF@_#JEwj$2UKcGmV4Tlq%W7U*)wr07EoX-K8Cwl0y zc_%dw@|dyu=+TQ|^=DC}GD;iyc$ngA3HNQ<((VoqBQ;q&b78Iy1Pel=OT+F{_Qf@} z^Impy2Cb@pYYLozhQgmwOs(I^sbOTWfh=U&&_5~V{qI{iGq+e(4WIsN zp){UU1c)FwpAr;btbaHogPK>fY`@}&h6pZ9GLjbC#JQ!VsGbFg-Ulh5OJ~BarVHz4 z`#KqB1k(|h>n?>V^hz@7ONKeMz@(|8;#ptY40m*1P(fBT(ztOFg7(gZKCjqoN|*;z zi;W-EYd58N40T?}F1zRzbC*d8qjh#Zt-<-U^yOm^n(^zkE*g!RkqaCbKC!D`?=l|$ z8Ie~(%252_hgHcDEnB>0eB-40&x22rR_Y6)Btz4!c`6yd&8s==mvv$oOxb zvYnX*sZoKZS47G<j~bNfTg>e!YX_dm11>%os%zZVT0^FH+%3?nlBar&|w=z^WxrE551&c-hKF0xsL1!v5;Pow=!E`u{0Cn{&~`^?@#8BRV*_ zynJ_wfi<>$lE`qn9F=#eK~^xkERYBYKazZ=V353$jHXydpSW;vKov{+bEHP@B?h}C z-_v*cYiPA{J3RIp%JHO!@3C|ij#-lTnv&F_Dl@pl_J04E47Qy})6oI9*-$smPzA&= zxxxiilOfk8TWC+`w4VpH>T7R&#tp7Qgk)dq;}0J|v1YE;$AixPuQM}Cp!{u_++jv= zk3{p6qY#Z@cg1RVm`)4#86XSmY}tBlO2Ed-cS=vt<|;v5;Bqtc01Z7svZ;VF?5MGn z0bF51dHQn1e~XWbfOWco+Ritny@O)H8<13W_!H>jtu?Rj1N6DnGkV5Vjp{CYsO8r{ zkRcJHJZE69$73gGj%Bf+3KZgua<~O!62D3YB7Ry%+X~FS5M6uzWJw_yUJ&m%$B4R> z>tTQ*OXV}Q;NwL0+r&WWfG6ZB!lr`M{$^y6ZK<#oy5rZ_yn~xwXkL zEu`5<6}4^s4m*(sVcSqYelijWNJsMpKJ~v>Rf{bbQYK$#3z4t#bqKfsdw=~c;2|n- zBdJtK=M?W@TWVp;6Yw(GLhiz@aiGe_qJ2>m$Hn_n^~B|Ei;(o$O)n>bR~Ihjfj7Z8 z`sH}6sMry;44m`uVXIRU>@pGZCc3sbgEOL4D1|VX+W*;iEm1$*bsr7NKAVVx&ITex zqdY~BL^mh~fgVP~Kp;%b8JKdyo!F6Skbh=Flnv;mvS+(0YOveLMfPzCBRQI^aSxJ# z=Qb(mm&&=j@SzTUD*DC9_&I`#!Y9+?ETQ$#;c)j6Tj1}f->v-@ zBZwTmip!aEt+VGu9l|CJMp#Wscyt1%+NNkhK*dRV_s{Uovljpl>oZ=akshLcF2IfZ~WDzBO}|uHp>H2$ml>lKW)c-#Nu#2Z%*> z5QFFLmQV7BPS?LayhpaHXeRKB&4tV9Hz)J3yEP4c<}&q%Hgrj?zB>wOW2kSYF~z8R z1uqj(5L!WumVXat?nD>y=rs?qjnPaefpa7ylFsG^*f785AMXVOK2m8xm1&KWItsX5 zfO=xNP(K3lA@?>BD|mH;k2xvomYE&gUWBc~Z;x{|XV*da1WlyVC)4nMSFaZoE|FcE z5d)kA$5~RG0qB_f7UqRGFiGMB%W0FLB{0FGr?P1}MZ}mc0>wz@jD1nk-5OZ;NoFB4 zvCtIQxgo#R{50kw@;+I-p@q&#JP+~hdDLV9 zZY^QD>%`{LRc?*;a6sTl=~96?vWk|L%6sL_-ed6CJ(~z{K2muw+ymRGxWvDf#5UoB zq7%IRFZZf5`T{q5#sWGi*Uf^7 zH#il4%;Tk>&tSY0eC^wrRpO7^=4S(>QOA72h+&`h)f* z2KG272qUFwv1(8bsk-D<-n}yv!Z77672YWW-g@liO9ElKE37AI+o`4Yml`~G&K~35 zv1jtC5MF0f&FFHJd;Lj@DhfT?B*c-R@XWSzX(+2X>L|cwIB8fd7Sc!Df9mdT)uC$> z*}Pr!@(fSmEcNRJKRFk(p~E3MEOtrAF4dT->EHSG-hQvs=%N)8 zaWf59l1QK%#k#raymlysa*ub~nrR{6mhyYi<34(^wvLM*c9}=lWBAP1@$JSHyk$E0 zal8nB!O0`ASWGVMvT_2Vd>9|>U8&Z0^f?)|9dPe0ht%T;EZ~OC{*+~tKv>VR#_o$7 zC619WlAzd0gfYt6r<*_a3FX`13>)te5I^K2t#A$EkAde&J4?gz?KA@NUs|oxD%DR+ zOzTTVaJ4XnVWRIjyATUG?M-u9J9yD@GiANEZXM{U+86(CgQF`gsCO!_oQ|9p8=nmZ_&zFs)^#&Ns-t zSPWsl+NM!ZEu5MF!O6s2GSV$2ahK!K{ro0KV?AFeNE}KEdMlf}V?$HpT;%JVs+F*% zmpkZC&PMXrTF7E>Re0lLUJU#&cSOqOeEVi=Qk;%iqy zY`cLh3eh+X;-4|z59As zhY$Q&aaQh9I&Sv&B=*4yk$0UIb2vHD?L4^apzk1c?x&n;`qkic;_KH zBg*@NsyOFIkI=1DoFKcrtk*3Q$IQ<(da@}dt`x6Jq+**yrQcu`sAPCU^7C!whMt1H zx05m|zW518ETI|wM6g>LLt`{<&B)rsJbb=+I4gGs!ogUJGal^5M8SK^x_^*@2@8&- zccVTdrB`=2ncZ6OgZd>2m`jzvodgAH*IeEcgz4I>b{}1TkRjfSc4XGn76@+5Zs}=| zT!I&{C({k_=!EKAxp+El0L=wJQoP;2E#@Nr>J)>;!;%hTXuw49NnI zIu0D8lG)C%8(EWJKxQvo%9Ep(Q}>oB8>$1bG$!O{5-y?g^?^^vM`o$n!jlJfCry7& z9)hsfOJ;y8ckTtKFb`@Rhdx?ILjL;rFuWR`ejfNkcT{<)vhtdd9-bk;;rVHb-({IY z<@c5e;mcw7r}E=Sc8h4h3EO3OqfPWMCTQGr>+s%;K^KU$vZ=onj?Ox*pM>Kvrbt9p zEq`J^77?w`$|z zZfBfeRee_L@76A|F2bt+j+pe_-OlxZQB%Jqim}yZ^%(UqXmjb%<8=pXom_*@_JqEz zW@9a{p(aMFQBP?#Ury*`I`8F;Y@y8)3B0tbGRR@kNECe3NXLe-R`u_m07HNTKp}5( zFL%xF_h3C)q9_kLvW&>7J|3SxA8L?P9%V?hQYR63*(R54-cNfFbbIDV2qKXj@dVKw zmHc2}l`K)695tYJiEm|3ntzm?p*cKckaH?__~b8W$LZXat|io{Xhp(4p6V|HpakF{ z3-g{V{@R+4%K`iPr>?|0uUFn!0k3`Oul9aa`BB8|Mh^dh?;^G^8vaK;t%Vk5g1Xj4 zNF-swJTEyv3cEhme+kVQ9iM5kql$F@ZujL#hLzIBx!CBq6%TxS4J*uVVfiV|oWB(s zBM96psST#Lo&fjpSCjmMS2`Et{IpwW8geV*WtBE-9j430$CO zf&4Sran4|$0*0h2m>FG6?H0gP1Ll`zw#$nx3oSnQjH4M6)tzo?-yGhLaDswFXX4XR z-sTM0zM5pOB2^sgxR^n;(Bwg*>FaOxm7#RJj>!4Yn4O8Nc1_=25ScGM-!yEt%XSPx zsHewW@0%98%ST}Qb)giMi5Jp_p;RV8)?aH1)~IG#KvKtgr)*>|0DDWkK-)}z8CRug z(xb-L0^odX-2VKjz#!P778zbmz=s9pK8xoAAPa7W_LxoV`_W64kx_xic05y9!FEUzNN1*j97B(4gk7t)2j166Pr+^%j zU@ej$Y0H-xWYFr)8eiry0z517r#8cHo|cHf_RmXtoHyb1j}fN^$m#>LsP+aj)n^}w z887BuO<*)d1zA*D5trK7!q6nF17*9=)I8^8tRC8NUxHcHO8YY!Tnw1qNCZPs`Q4JA z|6U*45P=mzcWRU|a{%u?;&HoW3~Xa;4n0Z`4ArwNhV`HZ2Jh{pWkky{V*{=2X3Gq- zmg^awXoE_(^T|!GtcdL*!Srz?eCy3|@wpAKZ(d>$2ht6J)kg4GwHB z`eMmpkHr1M}j%cxeBDv~Sf{o3!B`Zd8-5x_w7sXSURlOXzH;<7CYj zH+qV%g$?OTeFf!{Sop>cN?(t1_&YPbG0i23LJsV}c@VH2>|YGwiC(fx5%3B7$lgE@l*e0?6zO;O7rQwh`d4juRN@EK8H zKlbnj4L*N!nEwl}&E1nh_-GQ*149AWvxoXF#!|y9uZGX^4&A%+%@ttA_aJ4(QKd?AwU$VbzB6`z@WOks>&@!|qH@+oD0n6l z!GBA3xX~}N?G{l3A-38|x~;gIvcP-nHH1};MvP5Ceew&}T(ZQXx}r*TFD~WAbE#B# zh|!~No%|~QksE7}bKry385vd^J|L`pcFhapY=8(wo4V(q(!s36Sx!UzhrOKpc8eEq z<%QL+{pD%!IqLxv7M#rC9>ejStroz=m6s+x8As~Z<|td8*LjA5G#wH(Lo6xvo0OTJ zEZ9CYtXVxh;&dAGDi>HL(OI*yBMacU(&-gNUQVcrlQQU?7JldlDK384ZlaEA6ytB> zsdt|lA_!CCLR)C=8X9+AvCoAVH``47+i@EPoi%UR4^$~P>?&;833%#Bf=_!2|k|QJxQ?rB!^v=0rutKi>IbQ~$U<|fLWTn3d}-|*&j?3xIM>tdmK z_WM#ROW9{{adg1_Z{m>(f;_`V>LC1-8Z@QjUJN@4R^5-as1nU0cZMuHYB#54ZF)fzSs-8_wl!Co_2 zN;5>fjlf@gm+AN_y6C9&$xqB-%Ywg&5_5!IB@h!$qr||JCQ6l0tAW38s`dWT;KhQd?AXA+ zy6`+ckWRUZ_D-cODI6EBn?u0UaA6iBmFr%T{f zX>Xqm1WK@dJ=&4}Z3>xtc1^5^SA5a1q{7U9-Fvb*kD|d2o39ap`;dENi`lI?`^D_Rz>DD(=k3c8u zlBhQ6=Z(Hn{}-gt6fVJ%1W~q(ma_q`p+!)NhKgaB-8(Dv&qa{M*4mU-!jFydYQF1i4HR4JG8?$GFeHFOefz ziq{cm{2(XeWd3kR;34W)z|0-a@tsXGl3sARx1pnCQYQSgsB z0=T`A6`Q+hBJ~3AYw7k+OOIf3Yrhqtus%HRWi!uk97@3vtsI@Ust`??>{Ww$Ee8k%tAFSHU1WQVGtRfwe|06(f5fz zv|&vy$}d25;qp(#SfvYpV9NKBB>kDcDM04!^eE9X4if#&V-@qvvotWL$$gzL_?fzW zL5*5J?#=<<;Dzi+e56le$0Cu#3u|n$HTkMl*1d2@?Jpe`8rdZ7L!AFT=>1E@t7wS{Vj4&UcMgCTtB1*IPPSx-*4iV;xo z1?eZUeo4VBg&W0nAJvb``7>n=99L3VL%o^(uSS+Z=pwq!0X(WAyNZ?x3<_*Z?r^)K zOM#2A@%Tn`SSiuYp8W=VO1^fG;} z?O;bUs9w;oj+oAW5BNT0+!xGSD+(@{RPMlD`1bPxZH|Ytm&L6U=J;d@blu^nVPFA| zWQoI%qfRg{GL(zin26;2tRQD5P^+ho1EZPwTZL{0xQrYlFOBa0u>B?ArU}}=nlL@C zBzULvSltTHsA`o9&~X`~d7!rCsi;NWWyVAP{(gyO8Fp9YCNQHIi@O2@s|+?v>TX=s z{*G+B&qOoFfaJ8-y|r%`VL`Dx0XB^VzgLouLm>5gvlGq81Z;+Yr->lDYpWL#6|EbP zJChxBIW(sgMBd^z+q#zNWpkG+{*nqoQ>eea)Zw`G@rnd!LM$pFBQ)0S|CCqVaC-?b z7~XZpz^#P1WPW@j!>6=QmUIkwjewW0U86wyDcT(OfGmMdu5jq!HJD3DMY?o{H9D6I z_yQ_aZF}|)JUPvjiG1s}2U8mP4*gkgv#Gq6sP-0NjS(S+^n1$f1D0P?fbF$zJ8uHV zh*2v34%!??PDC_+FMD!T5crmc|LNV*K+=hM4xvf^GDi1eD#Ubteb23{5N%LOpkOS8 zl5-GiQj6LaXNIGjUSU?A#aqf+kTR0RR9rdK4%2E+sQ^tP_!dQCH1{MeOm;|KSwCzCnvRM>Hq%)Wsv1rUB~{dLiksBNSLX}B!riwRi@_& zm}sBFR&XU;GRgY_u)E74DEiQ(gynDr=Me@F>2MDcEn`2Wwb7GZmaM)uKxS<3Fzujy znQZ&eZ>nXc{w=z{q9-$o;H*J~Zyb0Xfc0_%0nmwO=9j>Cq5>=)vE8C2=dzbqmNX#< zy}OMe9~I;f@R#s_PT)P7p92c(_<0IUq687fuN^5+C550eElhq@tArow5k%F39REBL z+Xn)KfXtQO*Ak3r^n+T&_JW$}*|jNq+)=aP=E%H9x^6Fq6ZmrFRjL;9gM@!ST3ljx zK@ahnsG=NLi0JX9h~_)o-dKaC)b-2vzsF~Zn@3=6AFi}sxq_jZ7wN1oGzk~+1CLo8 zK~{l*RLKOMc%a2Ny&jmv`C!Iyhax|m1FIasLKjYak4r-iFQZm#Yga)8xAzF84-MFu zJ%Ia1uedUgzqkrec91&cO!~Swf0UhIoQwtX&8}rUu*s~NvenKD(-KNe!BQN9p4}`Z zlHf0dAQO8ta@C{JylhNie#hw zOTS|+U$LjMLZ6%A_1&f|4#2+!*PQffKEtBrV$+kqVeeh?b!NzqQ%Afcy${knR3}8o z5*a@`1?BU!<^CZ5dis>5a}gAz zaEDV1@W@6r8k1ep1KWF&kg|wn&5PWS&>W^cW&(qQlwV^z;B`o=O)l zOY8lB#+x9Znl|8Xc&>anccQ$^W29ln> z)Y%p3&=9b5Q?0PpH*C%kY&w}BogJ=k!)ViXEbhzw-C&|>gNNK*$lIy}``Bu3`ooXh zBaFSv>J~$P3@`S~1O+Pi5l0txsvS?3dQ!Qy*l=ci^OjP+aUydg-wIObq%K@r;}Fnw zDPG1Z_X4dLs8=kz_cDY$g71nj+Dq9xHgdvd;>48p(Y`|(s`b_g*4SJ#ppx1g%|nZ^ z7aBc%ZtkWdVsnT#Uu}D(x7cE^eg#gR4i@c7R30SH`l08Ojr^vmRdcQ%rt7%BeZC6{ zqir41amBKD3)h-d#vTGZ#FL!iBROjjh-?}Uv4oQKkpGmzOvuuk7X}+h2$-v~?$z&( zqu^}{6gA!8! zj;0_tr~lf5kDCn( zUEd~l;jDr8!r+ee&PWPk@N%lUDcCJmLH83+yGR>wtqIl_5mQv6K3-g8|KgTRuV3sk zNvO9>Po|Pb7D?lFvByj4wu|8Au>G&dm;w=4McevSDD-`&x7vQG;`g1)s3+J47~lVNcOGw1In#)g<`Y)!hdn>;4SLb}+228%f;zcQ!c( z1kQm6-5c|j5S(2jPwF_qa7B}?JIB{ykCkgW(a`Eh_`( zu&ZgyR8LS!gd^&PJD4)CkmF06&s4BgTVcYtsFM;keNoSyjs2Jwqhd}e9eDNHMd*Dp z^wVxOT0S1Xyqer8!vDjNZ>GGNT@ub z`+`=IKX1V^Y=ix^cL82Le}0eMer3^S`}sgD`ek#`T8SWhXo}5tGLLNQ))3N?B z2s{=!&8hHN=`%1|4dG&j7>yybkosARg#})~i`Rf+eg)AI)_I%;FM2G${>K0!OPESU z8<1K=iD^WAmADE5>@jO(xRV+*Mw4>P{xPSvq4qeI#r}8@%D1R9ZwY2@Wt#eZ%jNEA_ zl0pJr-!BDvmjH8gLR^zo^~S3mOYGqLizdkE7BF@NyhB^pQomx`>wADWqZy2-i|mp) z#B8T5rQE9j=Xdr4%mV{k$*S3+^*L&Y{mWyA8zKpqeHLYv;xIJ)F~d*1pHvP0f$DCZ zGh{~U{5`J|t>KwiXg=p}S`z3sC-%Tv z?hlR>Sv47cX;#nBb{IsuA_@P{w-O|e7|)&yUnyG5B4YS)1>ZVnvEN{yVzCFX#S#q#A74Vz;&I+M7OKV2wh1R$q3~d2dnhBbVO&J(#+= zj#Z*40y#JIVApBB6aH}-0hNM#wGjrs?w)EmPS zuKeG*RAMCVO2iXwN;!e*o@r?*lT1)9Uu6J3os#SX4NOzE#svzR%*XQeTF2-D6M*iS%| zFI9*gUGSfJ-e+;&j;WUPVBzMj@ryHI$G5zaEHTj5xAYCt%q5p#!>Wu9b zG$*A@|M&sns~JmdmSLM|#W?+6SJJmT;rY)y;W|;i;C)^`mt+WB&GR`z`;rqRP-$3D zX!^VmBf;;te!GwkgQM(n-SYxUF^yC>B)xKSx$g1E@e7e9{YWw9AKV;js@myJjV>87 zKqk148X{AoJ7#MxUID(lqeK_@90%1=^35kdC%;Gl*?>y~S6R-(fU( zRlc09(Wr)y@+R)TVxdKIGP=q{iDf0?sfhe^Kl8aTiAC%zq=?Vjk418HbIwG7LM4{bmW!IJ&wIHqZbKm=_Clun9t5V^ z55UcPu=+WF_CfuL&Vk_srF9Y3V1r`k3e!?+YD`4aIU&BN4|&)%vfhsBjbut2t??H( z(w!Pz8#y`XbRZ2rqopnE#Sa?T()8@dE6^@fcwBkeQJn_`8XT8QlL>hFTNF<`K{;@v zIHLofl5T)y$s2JCFxN!=tFY?v?_YnkKB-iySn{3OYeXu5C6O72qnV#r?Toi|mt*y_ z7g%N%{0t@#Yz4MS0HS@GZ?7sY5t`)gZ;nER8z{Krq_MhZ_hf2AMg8(D1=7oq_#2J} z@BTS;p^Eh=qn%(cwWB`)kXC%cs;UxsJ7QquqoH3^pYWrq~gj)e>lx_7Ot{p@i<6I_| z!b?_HuJ}5#KtGG8J&X;6Mo$HU@h7DWzqPBeg0YPV#Oz6s4`#gKPcRt5yLj-$dO?6n zIX%(#<72)pzev3N2Bwj%>sSK{B@1o2J%{PDg@8^k1E$xSx=6Lg7v6D40tD`BhGr3C zi&twFK>AQ%UFg}Zr`}YOTGR``4heM>meYro&k9OIRU7t@GCqA$g)S!XX#zLUDck-g zK+;|^&;tjjmh~}3y(*Ph;dNw54169Z?Px9F9dx1~>}@+OjD{zjJ~KbI{!FDd`9X9j z>pD*q$2gkeZ|1%Z^&9@IG7arG^JOHMJkT`M;rK0M1QWZ4v%HV{t|rS}{WLDqQ&t`0 zH-?)J0sr^iSZ#qB@|O{8k6uXe+gwP$g+z9%zQ8k z=!Mt^TzIuVSjl84B#h=R3HIG<7eJgh$FLPix2Nn`rn)dHVUvAIbapow&v;u-(1ZEZ zk}$qN5GOnB$o`FdGE7`O&E=E`!?$`S=&DoclsJ*J+xn)h-F&yB6HVm~`Ay`ADLeiM z5v%?DgdyGi3;cY$jZ`$>>2~=78pTe(e!`-=c_5>ZHK|35)ay|lloa*^eL$Kfzhk1L zMrA~0^jbKJq}{GE&nBgi_hrc4Bv$!b2joHhsB53 zTmfo2#e{>417YLyW1xbsca&yiNYg#s_)fcn;gB%s&JdM^?(U|+p;4aq(#l!;4rg4s zFj@s^hxny8mbPG2*#C39hcXdb2DjYbJIqUtcb3q|Gn}xb{m{{#woY$WZLxg2VDI-3 zkZRg+xjg;Sfwd*P@EKti? z^y4+4ClJVQx@l1u%h=IqE+V7w!r5g3g zV!{c^aBR!J*TyR#QsLvcYx5PvOX*J$_6$t3vFGpgmf;M35F_+9q zu+nFRx1KqdbXt9Bbz3&%fTa_WUH?o@b>}Vcj4O)?NFlX&jKCj$VL!HNZb)G7!%0Ad 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

    ezD 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

    xJl_#^9s3qU=vz#6NmtsJrL$PN58 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 z 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

    02_m=P#4Ahrju+R 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%0AbshG-fpP@6SE5D8Lwx(y%Y#KGgTtu-yKm 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

    0^K6neM|QPw3Dok9NL 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 literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/examples/finetune_flickr_style/readme.md b/3rdparty/caffe/examples/finetune_flickr_style/readme.md new file mode 100644 index 00000000..dacfd01c --- /dev/null +++ b/3rdparty/caffe/examples/finetune_flickr_style/readme.md @@ -0,0 +1,169 @@ +--- +title: Fine-tuning for style recognition +description: Fine-tune the ImageNet-trained CaffeNet on the "Flickr Style" dataset. +category: example +include_in_docs: true +priority: 5 +--- + +# Fine-tuning CaffeNet for Style Recognition on "Flickr Style" Data + +Fine-tuning takes an already learned model, adapts the architecture, and resumes training from the already learned model weights. +Let's fine-tune the BAIR-distributed CaffeNet model on a different dataset, [Flickr Style](http://sergeykarayev.com/files/1311.3715v3.pdf), to predict image style instead of object category. + +## Explanation + +The Flickr-sourced images of the Style dataset are visually very similar to the ImageNet dataset, on which the `bvlc_reference_caffenet` was trained. +Since that model works well for object category classification, we'd like to use this architecture for our style classifier. +We also only have 80,000 images to train on, so we'd like to start with the parameters learned on the 1,000,000 ImageNet images, and fine-tune as needed. +If we provide the `weights` argument to the `caffe train` command, the pretrained weights will be loaded into our model, matching layers by name. + +Because we are predicting 20 classes instead of a 1,000, we do need to change the last layer in the model. +Therefore, we change the name of the last layer from `fc8` to `fc8_flickr` in our prototxt. +Since there is no layer named that in the `bvlc_reference_caffenet`, that layer will begin training with random weights. + +We will also decrease the overall learning rate `base_lr` in the solver prototxt, but boost the `lr_mult` on the newly introduced layer. +The idea is to have the rest of the model change very slowly with new data, but let the new layer learn fast. +Additionally, we set `stepsize` in the solver to a lower value than if we were training from scratch, since we're virtually far along in training and therefore want the learning rate to go down faster. +Note that we could also entirely prevent fine-tuning of all layers other than `fc8_flickr` by setting their `lr_mult` to 0. + +## Procedure + +All steps are to be done from the caffe root directory. + +The dataset is distributed as a list of URLs with corresponding labels. +Using a script, we will download a small subset of the data and split it into train and val sets. + + caffe % ./examples/finetune_flickr_style/assemble_data.py -h + usage: assemble_data.py [-h] [-s SEED] [-i IMAGES] [-w WORKERS] + + Download a subset of Flickr Style to a directory + + optional arguments: + -h, --help show this help message and exit + -s SEED, --seed SEED random seed + -i IMAGES, --images IMAGES + number of images to use (-1 for all) + -w WORKERS, --workers WORKERS + num workers used to download images. -x uses (all - x) + cores. + + caffe % python examples/finetune_flickr_style/assemble_data.py --workers=-1 --images=2000 --seed 831486 + Downloading 2000 images with 7 workers... + Writing train/val for 1939 successfully downloaded images. + +This script downloads images and writes train/val file lists into `data/flickr_style`. +The prototxts in this example assume this, and also assume the presence of the ImageNet mean file (run `get_ilsvrc_aux.sh` from `data/ilsvrc12` to obtain this if you haven't yet). + +We'll also need the ImageNet-trained model, which you can obtain by running `./scripts/download_model_binary.py models/bvlc_reference_caffenet`. + +Now we can train! The key to fine-tuning is the `-weights` argument in the +command below, which tells Caffe that we want to load weights from a pre-trained +Caffe model. + +(You can fine-tune in CPU mode by leaving out the `-gpu` flag.) + + caffe % ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0 + + [...] + + I0828 22:10:04.025378 9718 solver.cpp:46] Solver scaffolding done. + I0828 22:10:04.025388 9718 caffe.cpp:95] Use GPU with device ID 0 + I0828 22:10:04.192004 9718 caffe.cpp:107] Finetuning from models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel + + [...] + + I0828 22:17:48.338963 11510 solver.cpp:165] Solving FlickrStyleCaffeNet + I0828 22:17:48.339010 11510 solver.cpp:251] Iteration 0, Testing net (#0) + I0828 22:18:14.313817 11510 solver.cpp:302] Test net output #0: accuracy = 0.0308 + I0828 22:18:14.476822 11510 solver.cpp:195] Iteration 0, loss = 3.78589 + I0828 22:18:14.476878 11510 solver.cpp:397] Iteration 0, lr = 0.001 + I0828 22:18:19.700408 11510 solver.cpp:195] Iteration 20, loss = 3.25728 + I0828 22:18:19.700461 11510 solver.cpp:397] Iteration 20, lr = 0.001 + I0828 22:18:24.924685 11510 solver.cpp:195] Iteration 40, loss = 2.18531 + I0828 22:18:24.924741 11510 solver.cpp:397] Iteration 40, lr = 0.001 + I0828 22:18:30.114858 11510 solver.cpp:195] Iteration 60, loss = 2.4915 + I0828 22:18:30.114910 11510 solver.cpp:397] Iteration 60, lr = 0.001 + I0828 22:18:35.328071 11510 solver.cpp:195] Iteration 80, loss = 2.04539 + I0828 22:18:35.328127 11510 solver.cpp:397] Iteration 80, lr = 0.001 + I0828 22:18:40.588317 11510 solver.cpp:195] Iteration 100, loss = 2.1924 + I0828 22:18:40.588373 11510 solver.cpp:397] Iteration 100, lr = 0.001 + I0828 22:18:46.171576 11510 solver.cpp:195] Iteration 120, loss = 2.25107 + I0828 22:18:46.171669 11510 solver.cpp:397] Iteration 120, lr = 0.001 + I0828 22:18:51.757809 11510 solver.cpp:195] Iteration 140, loss = 1.355 + I0828 22:18:51.757863 11510 solver.cpp:397] Iteration 140, lr = 0.001 + I0828 22:18:57.345080 11510 solver.cpp:195] Iteration 160, loss = 1.40815 + I0828 22:18:57.345135 11510 solver.cpp:397] Iteration 160, lr = 0.001 + I0828 22:19:02.928794 11510 solver.cpp:195] Iteration 180, loss = 1.6558 + I0828 22:19:02.928850 11510 solver.cpp:397] Iteration 180, lr = 0.001 + I0828 22:19:08.514497 11510 solver.cpp:195] Iteration 200, loss = 0.88126 + I0828 22:19:08.514552 11510 solver.cpp:397] Iteration 200, lr = 0.001 + + [...] + + I0828 22:22:40.789010 11510 solver.cpp:195] Iteration 960, loss = 0.112586 + I0828 22:22:40.789175 11510 solver.cpp:397] Iteration 960, lr = 0.001 + I0828 22:22:46.376626 11510 solver.cpp:195] Iteration 980, loss = 0.0959077 + I0828 22:22:46.376682 11510 solver.cpp:397] Iteration 980, lr = 0.001 + I0828 22:22:51.687258 11510 solver.cpp:251] Iteration 1000, Testing net (#0) + I0828 22:23:17.438894 11510 solver.cpp:302] Test net output #0: accuracy = 0.2356 + +Note how rapidly the loss went down. Although the 23.5% accuracy is only modest, it was achieved in only 1000, and evidence that the model is starting to learn quickly and well. +Once the model is fully fine-tuned on the whole training set over 100,000 iterations the final validation accuracy is 39.16%. +This takes ~7 hours in Caffe on a K40 GPU. + +For comparison, here is how the loss goes down when we do not start with a pre-trained model: + + I0828 22:24:18.624004 12919 solver.cpp:165] Solving FlickrStyleCaffeNet + I0828 22:24:18.624099 12919 solver.cpp:251] Iteration 0, Testing net (#0) + I0828 22:24:44.520992 12919 solver.cpp:302] Test net output #0: accuracy = 0.0366 + I0828 22:24:44.676905 12919 solver.cpp:195] Iteration 0, loss = 3.47942 + I0828 22:24:44.677120 12919 solver.cpp:397] Iteration 0, lr = 0.001 + I0828 22:24:50.152454 12919 solver.cpp:195] Iteration 20, loss = 2.99694 + I0828 22:24:50.152509 12919 solver.cpp:397] Iteration 20, lr = 0.001 + I0828 22:24:55.736256 12919 solver.cpp:195] Iteration 40, loss = 3.0498 + I0828 22:24:55.736311 12919 solver.cpp:397] Iteration 40, lr = 0.001 + I0828 22:25:01.316514 12919 solver.cpp:195] Iteration 60, loss = 2.99549 + I0828 22:25:01.316567 12919 solver.cpp:397] Iteration 60, lr = 0.001 + I0828 22:25:06.899554 12919 solver.cpp:195] Iteration 80, loss = 3.00573 + I0828 22:25:06.899610 12919 solver.cpp:397] Iteration 80, lr = 0.001 + I0828 22:25:12.484624 12919 solver.cpp:195] Iteration 100, loss = 2.99094 + I0828 22:25:12.484678 12919 solver.cpp:397] Iteration 100, lr = 0.001 + I0828 22:25:18.069056 12919 solver.cpp:195] Iteration 120, loss = 3.01616 + I0828 22:25:18.069149 12919 solver.cpp:397] Iteration 120, lr = 0.001 + I0828 22:25:23.650928 12919 solver.cpp:195] Iteration 140, loss = 2.98786 + I0828 22:25:23.650984 12919 solver.cpp:397] Iteration 140, lr = 0.001 + I0828 22:25:29.235535 12919 solver.cpp:195] Iteration 160, loss = 3.00724 + I0828 22:25:29.235589 12919 solver.cpp:397] Iteration 160, lr = 0.001 + I0828 22:25:34.816898 12919 solver.cpp:195] Iteration 180, loss = 3.00099 + I0828 22:25:34.816953 12919 solver.cpp:397] Iteration 180, lr = 0.001 + I0828 22:25:40.396656 12919 solver.cpp:195] Iteration 200, loss = 2.99848 + I0828 22:25:40.396711 12919 solver.cpp:397] Iteration 200, lr = 0.001 + + [...] + + I0828 22:29:12.539094 12919 solver.cpp:195] Iteration 960, loss = 2.99203 + I0828 22:29:12.539258 12919 solver.cpp:397] Iteration 960, lr = 0.001 + I0828 22:29:18.123092 12919 solver.cpp:195] Iteration 980, loss = 2.99345 + I0828 22:29:18.123147 12919 solver.cpp:397] Iteration 980, lr = 0.001 + I0828 22:29:23.432059 12919 solver.cpp:251] Iteration 1000, Testing net (#0) + I0828 22:29:49.409044 12919 solver.cpp:302] Test net output #0: accuracy = 0.0572 + +This model is only beginning to learn. + +Fine-tuning can be feasible when training from scratch would not be for lack of time or data. +Even in CPU mode each pass through the training set takes ~100 s. GPU fine-tuning is of course faster still and can learn a useful model in minutes or hours instead of days or weeks. +Furthermore, note that the model has only trained on < 2,000 instances. Transfer learning a new task like style recognition from the ImageNet pretraining can require much less data than training from scratch. + +Now try fine-tuning to your own tasks and data! + +## Trained model + +We provide a model trained on all 80K images, with final accuracy of 39%. +Simply do `./scripts/download_model_binary.py models/finetune_flickr_style` to obtain it. + +## License + +The Flickr Style dataset as distributed here contains only URLs to images. +Some of the images may have copyright. +Training a category-recognition model for research/non-commercial use may constitute fair use of this data, but the result should not be used for commercial purposes. diff --git a/3rdparty/caffe/examples/finetune_flickr_style/style_names.txt b/3rdparty/caffe/examples/finetune_flickr_style/style_names.txt new file mode 100644 index 00000000..73090c97 --- /dev/null +++ b/3rdparty/caffe/examples/finetune_flickr_style/style_names.txt @@ -0,0 +1,20 @@ +Detailed +Pastel +Melancholy +Noir +HDR +Vintage +Long Exposure +Horror +Sunny +Bright +Hazy +Bokeh +Serene +Texture +Ethereal +Macro +Depth of Field +Geometric Composition +Minimal +Romantic diff --git a/3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_solver.prototxt b/3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_solver.prototxt new file mode 100644 index 00000000..829b2005 --- /dev/null +++ b/3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_solver.prototxt @@ -0,0 +1,13 @@ +net: "examples/finetune_pascal_detection/pascal_finetune_trainval_test.prototxt" +test_iter: 100 +test_interval: 1000 +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 20000 +display: 20 +max_iter: 100000 +momentum: 0.9 +weight_decay: 0.0005 +snapshot: 10000 +snapshot_prefix: "examples/finetune_pascal_detection/pascal_det_finetune" diff --git a/3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_trainval_test.prototxt b/3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_trainval_test.prototxt new file mode 100644 index 00000000..9dd2120a --- /dev/null +++ b/3rdparty/caffe/examples/finetune_pascal_detection/pascal_finetune_trainval_test.prototxt @@ -0,0 +1,391 @@ +name: "CaffeNet" +layer { + name: "data" + type: "WindowData" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 227 + mean_file: "data/ilsvrc12/imagenet_mean.binaryproto" + } + window_data_param { + source: "examples/finetune_pascal_detection/window_file_2007_trainval.txt" + batch_size: 128 + fg_threshold: 0.5 + bg_threshold: 0.5 + fg_fraction: 0.25 + context_pad: 16 + crop_mode: "warp" + } +} +layer { + name: "data" + type: "WindowData" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mirror: true + crop_size: 227 + mean_file: "data/ilsvrc12/imagenet_mean.binaryproto" + } + window_data_param { + source: "examples/finetune_pascal_detection/window_file_2007_test.txt" + batch_size: 128 + fg_threshold: 0.5 + bg_threshold: 0.5 + fg_fraction: 0.25 + context_pad: 16 + crop_mode: "warp" + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + convolution_param { + num_output: 96 + kernel_size: 11 + stride: 4 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "conv1" + top: "conv1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm1" + type: "LRN" + bottom: "pool1" + top: "norm1" + lrn_param { + local_size: 5 + alpha: 0.0001 + beta: 0.75 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "norm1" + top: "conv2" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + convolution_param { + num_output: 256 + pad: 2 + kernel_size: 5 + group: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 1 + } + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm2" + type: "LRN" + bottom: "pool2" + top: "norm2" + lrn_param { + local_size: 5 + alpha: 0.0001 + beta: 0.75 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "norm2" + top: "conv3" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + convolution_param { + num_output: 384 + pad: 1 + kernel_size: 3 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "conv4" + type: "Convolution" + bottom: "conv3" + top: "conv4" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + convolution_param { + num_output: 384 + pad: 1 + kernel_size: 3 + group: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 1 + } + } +} +layer { + name: "relu4" + type: "ReLU" + bottom: "conv4" + top: "conv4" +} +layer { + name: "conv5" + type: "Convolution" + bottom: "conv4" + top: "conv5" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + convolution_param { + num_output: 256 + pad: 1 + kernel_size: 3 + group: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 1 + } + } +} +layer { + name: "relu5" + type: "ReLU" + bottom: "conv5" + top: "conv5" +} +layer { + name: "pool5" + type: "Pooling" + bottom: "conv5" + top: "pool5" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "pool5" + top: "fc6" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "gaussian" + std: 0.005 + } + bias_filler { + type: "constant" + value: 1 + } + } +} +layer { + name: "relu6" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "drop6" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "gaussian" + std: 0.005 + } + bias_filler { + type: "constant" + value: 1 + } + } +} +layer { + name: "relu7" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "drop7" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc8_pascal" + type: "InnerProduct" + bottom: "fc7" + top: "fc8_pascal" + param { + lr_mult: 10 + decay_mult: 1 + } + param { + lr_mult: 20 + decay_mult: 0 + } + inner_product_param { + num_output: 21 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc8_pascal" + bottom: "label" +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "fc8_pascal" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} diff --git a/3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_test.prototxt b/3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_test.prototxt new file mode 100644 index 00000000..53eda6ee --- /dev/null +++ b/3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_test.prototxt @@ -0,0 +1,54 @@ +layer { + name: "data" + type: "HDF5Data" + top: "data" + top: "label" + hdf5_data_param { + source: "examples/hdf5_classification/data/test.txt" + batch_size: 10 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "data" + top: "ip1" + inner_product_param { + num_output: 40 + weight_filler { + type: "xavier" + } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "ip1" + top: "ip1" +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + inner_product_param { + num_output: 2 + weight_filler { + type: "xavier" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip2" + bottom: "label" + top: "accuracy" +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip2" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_train.prototxt b/3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_train.prototxt new file mode 100644 index 00000000..fc0688fa --- /dev/null +++ b/3rdparty/caffe/examples/hdf5_classification/nonlinear_auto_train.prototxt @@ -0,0 +1,54 @@ +layer { + name: "data" + type: "HDF5Data" + top: "data" + top: "label" + hdf5_data_param { + source: "examples/hdf5_classification/data/train.txt" + batch_size: 10 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "data" + top: "ip1" + inner_product_param { + num_output: 40 + weight_filler { + type: "xavier" + } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "ip1" + top: "ip1" +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + inner_product_param { + num_output: 2 + weight_filler { + type: "xavier" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip2" + bottom: "label" + top: "accuracy" +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip2" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/hdf5_classification/nonlinear_train_val.prototxt b/3rdparty/caffe/examples/hdf5_classification/nonlinear_train_val.prototxt new file mode 100644 index 00000000..8f7ef04f --- /dev/null +++ b/3rdparty/caffe/examples/hdf5_classification/nonlinear_train_val.prototxt @@ -0,0 +1,98 @@ +name: "LogisticRegressionNet" +layer { + name: "data" + type: "HDF5Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + hdf5_data_param { + source: "examples/hdf5_classification/data/train.txt" + batch_size: 10 + } +} +layer { + name: "data" + type: "HDF5Data" + top: "data" + top: "label" + include { + phase: TEST + } + hdf5_data_param { + source: "examples/hdf5_classification/data/test.txt" + batch_size: 10 + } +} +layer { + name: "fc1" + type: "InnerProduct" + bottom: "data" + top: "fc1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 40 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "fc1" + top: "fc1" +} +layer { + name: "fc2" + type: "InnerProduct" + bottom: "fc1" + top: "fc2" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc2" + bottom: "label" + top: "loss" +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "fc2" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} diff --git a/3rdparty/caffe/examples/hdf5_classification/train_val.prototxt b/3rdparty/caffe/examples/hdf5_classification/train_val.prototxt new file mode 100644 index 00000000..13ddf475 --- /dev/null +++ b/3rdparty/caffe/examples/hdf5_classification/train_val.prototxt @@ -0,0 +1,68 @@ +name: "LogisticRegressionNet" +layer { + name: "data" + type: "HDF5Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + hdf5_data_param { + source: "examples/hdf5_classification/data/train.txt" + batch_size: 10 + } +} +layer { + name: "data" + type: "HDF5Data" + top: "data" + top: "label" + include { + phase: TEST + } + hdf5_data_param { + source: "examples/hdf5_classification/data/test.txt" + batch_size: 10 + } +} +layer { + name: "fc1" + type: "InnerProduct" + bottom: "data" + top: "fc1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 0 + } + inner_product_param { + num_output: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc1" + bottom: "label" + top: "loss" +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "fc1" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} diff --git a/3rdparty/caffe/examples/imagenet/create_imagenet.sh b/3rdparty/caffe/examples/imagenet/create_imagenet.sh new file mode 100755 index 00000000..1bf08b1a --- /dev/null +++ b/3rdparty/caffe/examples/imagenet/create_imagenet.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env sh +# Create the imagenet lmdb inputs +# N.B. set the path to the imagenet train + val data dirs +set -e + +EXAMPLE=examples/imagenet +DATA=data/ilsvrc12 +TOOLS=build/tools + +TRAIN_DATA_ROOT=/path/to/imagenet/train/ +VAL_DATA_ROOT=/path/to/imagenet/val/ + +# Set RESIZE=true to resize the images to 256x256. Leave as false if images have +# already been resized using another tool. +RESIZE=false +if $RESIZE; then + RESIZE_HEIGHT=256 + RESIZE_WIDTH=256 +else + RESIZE_HEIGHT=0 + RESIZE_WIDTH=0 +fi + +if [ ! -d "$TRAIN_DATA_ROOT" ]; then + echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT" + echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \ + "where the ImageNet training data is stored." + exit 1 +fi + +if [ ! -d "$VAL_DATA_ROOT" ]; then + echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT" + echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \ + "where the ImageNet validation data is stored." + exit 1 +fi + +echo "Creating train lmdb..." + +GLOG_logtostderr=1 $TOOLS/convert_imageset \ + --resize_height=$RESIZE_HEIGHT \ + --resize_width=$RESIZE_WIDTH \ + --shuffle \ + $TRAIN_DATA_ROOT \ + $DATA/train.txt \ + $EXAMPLE/ilsvrc12_train_lmdb + +echo "Creating val lmdb..." + +GLOG_logtostderr=1 $TOOLS/convert_imageset \ + --resize_height=$RESIZE_HEIGHT \ + --resize_width=$RESIZE_WIDTH \ + --shuffle \ + $VAL_DATA_ROOT \ + $DATA/val.txt \ + $EXAMPLE/ilsvrc12_val_lmdb + +echo "Done." diff --git a/3rdparty/caffe/examples/imagenet/make_imagenet_mean.sh b/3rdparty/caffe/examples/imagenet/make_imagenet_mean.sh new file mode 100755 index 00000000..57f43766 --- /dev/null +++ b/3rdparty/caffe/examples/imagenet/make_imagenet_mean.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh +# Compute the mean image from the imagenet training lmdb +# N.B. this is available in data/ilsvrc12 + +EXAMPLE=examples/imagenet +DATA=data/ilsvrc12 +TOOLS=build/tools + +$TOOLS/compute_image_mean $EXAMPLE/ilsvrc12_train_lmdb \ + $DATA/imagenet_mean.binaryproto + +echo "Done." diff --git a/3rdparty/caffe/examples/imagenet/readme.md b/3rdparty/caffe/examples/imagenet/readme.md new file mode 100644 index 00000000..65174d60 --- /dev/null +++ b/3rdparty/caffe/examples/imagenet/readme.md @@ -0,0 +1,105 @@ +--- +title: ImageNet tutorial +description: Train and test "CaffeNet" on ImageNet data. +category: example +include_in_docs: true +priority: 1 +--- + +Brewing ImageNet +================ + +This guide is meant to get you ready to train your own model on your own data. +If you just want an ImageNet-trained network, then note that since training takes a lot of energy and we hate global warming, we provide the CaffeNet model trained as described below in the [model zoo](/model_zoo.html). + +Data Preparation +---------------- + +*The guide specifies all paths and assumes all commands are executed from the root caffe directory.* + +*By "ImageNet" we here mean the ILSVRC12 challenge, but you can easily train on the whole of ImageNet as well, just with more disk space, and a little longer training time.* + +We assume that you already have downloaded the ImageNet training data and validation data, and they are stored on your disk like: + + /path/to/imagenet/train/n01440764/n01440764_10026.JPEG + /path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG + +You will first need to prepare some auxiliary data for training. This data can be downloaded by: + + ./data/ilsvrc12/get_ilsvrc_aux.sh + +The training and validation input are described in `train.txt` and `val.txt` as text listing all the files and their labels. Note that we use a different indexing for labels than the ILSVRC devkit: we sort the synset names in their ASCII order, and then label them from 0 to 999. See `synset_words.txt` for the synset/name mapping. + +You may want to resize the images to 256x256 in advance. By default, we do not explicitly do this because in a cluster environment, one may benefit from resizing images in a parallel fashion, using mapreduce. For example, Yangqing used his lightweight [mincepie](https://github.com/Yangqing/mincepie) package. If you prefer things to be simpler, you can also use shell commands, something like: + + for name in /path/to/imagenet/val/*.JPEG; do + convert -resize 256x256\! $name $name + done + +Take a look at `examples/imagenet/create_imagenet.sh`. Set the paths to the train and val dirs as needed, and set "RESIZE=true" to resize all images to 256x256 if you haven't resized the images in advance. +Now simply create the leveldbs with `examples/imagenet/create_imagenet.sh`. Note that `examples/imagenet/ilsvrc12_train_leveldb` and `examples/imagenet/ilsvrc12_val_leveldb` should not exist before this execution. It will be created by the script. `GLOG_logtostderr=1` simply dumps more information for you to inspect, and you can safely ignore it. + +Compute Image Mean +------------------ + +The model requires us to subtract the image mean from each image, so we have to compute the mean. `tools/compute_image_mean.cpp` implements that - it is also a good example to familiarize yourself on how to manipulate the multiple components, such as protocol buffers, leveldbs, and logging, if you are not familiar with them. Anyway, the mean computation can be carried out as: + + ./examples/imagenet/make_imagenet_mean.sh + +which will make `data/ilsvrc12/imagenet_mean.binaryproto`. + +Model Definition +---------------- + +We are going to describe a reference implementation for the approach first proposed by Krizhevsky, Sutskever, and Hinton in their [NIPS 2012 paper](http://books.nips.cc/papers/files/nips25/NIPS2012_0534.pdf). + +The network definition (`models/bvlc_reference_caffenet/train_val.prototxt`) follows the one in Krizhevsky et al. +Note that if you deviated from file paths suggested in this guide, you'll need to adjust the relevant paths in the `.prototxt` files. + +If you look carefully at `models/bvlc_reference_caffenet/train_val.prototxt`, you will notice several `include` sections specifying either `phase: TRAIN` or `phase: TEST`. These sections allow us to define two closely related networks in one file: the network used for training and the network used for testing. These two networks are almost identical, sharing all layers except for those marked with `include { phase: TRAIN }` or `include { phase: TEST }`. In this case, only the input layers and one output layer are different. + +**Input layer differences:** The training network's `data` input layer draws its data from `examples/imagenet/ilsvrc12_train_leveldb` and randomly mirrors the input image. The testing network's `data` layer takes data from `examples/imagenet/ilsvrc12_val_leveldb` and does not perform random mirroring. + +**Output layer differences:** Both networks output the `softmax_loss` layer, which in training is used to compute the loss function and to initialize the backpropagation, while in validation this loss is simply reported. The testing network also has a second output layer, `accuracy`, which is used to report the accuracy on the test set. In the process of training, the test network will occasionally be instantiated and tested on the test set, producing lines like `Test score #0: xxx` and `Test score #1: xxx`. In this case score 0 is the accuracy (which will start around 1/1000 = 0.001 for an untrained network) and score 1 is the loss (which will start around 7 for an untrained network). + +We will also lay out a protocol buffer for running the solver. Let's make a few plans: + +* We will run in batches of 256, and run a total of 450,000 iterations (about 90 epochs). +* For every 1,000 iterations, we test the learned net on the validation data. +* We set the initial learning rate to 0.01, and decrease it every 100,000 iterations (about 20 epochs). +* Information will be displayed every 20 iterations. +* The network will be trained with momentum 0.9 and a weight decay of 0.0005. +* For every 10,000 iterations, we will take a snapshot of the current status. + +Sound good? This is implemented in `models/bvlc_reference_caffenet/solver.prototxt`. + +Training ImageNet +----------------- + +Ready? Let's train. + + ./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt + +Sit back and enjoy! + +On a K40 machine, every 20 iterations take about 26.5 seconds to run (while a on a K20 this takes 36 seconds), so effectively about 5.2 ms per image for the full forward-backward pass. About 2 ms of this is on forward, and the rest is backward. If you are interested in dissecting the computation time, you can run + + ./build/tools/caffe time --model=models/bvlc_reference_caffenet/train_val.prototxt + +Resume Training? +---------------- + +We all experience times when the power goes out, or we feel like rewarding ourself a little by playing Battlefield (does anyone still remember Quake?). Since we are snapshotting intermediate results during training, we will be able to resume from snapshots. This can be done as easy as: + + ./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --snapshot=models/bvlc_reference_caffenet/caffenet_train_iter_10000.solverstate + +where in the script `caffenet_train_iter_10000.solverstate` is the solver state snapshot that stores all necessary information to recover the exact solver state (including the parameters, momentum history, etc). + +Parting Words +------------- + +Hope you liked this recipe! +Many researchers have gone further since the ILSVRC 2012 challenge, changing the network architecture and/or fine-tuning the various parameters in the network to address new data and tasks. +**Caffe lets you explore different network choices more easily by simply writing different prototxt files** - isn't that exciting? + +And since now you have a trained network, check out how to use it with the Python interface for [classifying ImageNet](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb). diff --git a/3rdparty/caffe/examples/imagenet/resume_training.sh b/3rdparty/caffe/examples/imagenet/resume_training.sh new file mode 100755 index 00000000..4aef2043 --- /dev/null +++ b/3rdparty/caffe/examples/imagenet/resume_training.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh +set -e + +./build/tools/caffe train \ + --solver=models/bvlc_reference_caffenet/solver.prototxt \ + --snapshot=models/bvlc_reference_caffenet/caffenet_train_10000.solverstate.h5 \ + $@ diff --git a/3rdparty/caffe/examples/imagenet/train_caffenet.sh b/3rdparty/caffe/examples/imagenet/train_caffenet.sh new file mode 100755 index 00000000..a5094d44 --- /dev/null +++ b/3rdparty/caffe/examples/imagenet/train_caffenet.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh +set -e + +./build/tools/caffe train \ + --solver=models/bvlc_reference_caffenet/solver.prototxt $@ diff --git a/3rdparty/caffe/examples/images/cat gray.jpg b/3rdparty/caffe/examples/images/cat gray.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43c5ce377167a49624c3e9d61e83a04becb8df9e GIT binary patch literal 92726 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 bWv@?B+jK_~y&P~SxO literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/examples/images/cat.jpg b/3rdparty/caffe/examples/images/cat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b4efc6c98b7e7bed698b10f4b7f06031267d52dd GIT binary patch literal 140391 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�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 literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/examples/images/cat_gray.jpg b/3rdparty/caffe/examples/images/cat_gray.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43c5ce377167a49624c3e9d61e83a04becb8df9e GIT binary patch literal 92726 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 bWv@?B+jK_~y&P~SxO literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/examples/images/fish-bike.jpg b/3rdparty/caffe/examples/images/fish-bike.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39d9bd432e202c3b34d2585c946aa1192cee226d GIT binary patch literal 47638 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

    kq>Gym80CfKVbmw`SP`ca~?JRS34yS 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 +#include +#include + +#if defined(USE_LEVELDB) && defined(USE_LMDB) +#include +#include +#include +#endif + +#include +#include + +#include // NOLINT(readability/streams) +#include + +#include "boost/scoped_ptr.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" +#include "caffe/util/format.hpp" + +#if defined(USE_LEVELDB) && defined(USE_LMDB) + +using namespace caffe; // NOLINT(build/namespaces) +using boost::scoped_ptr; +using std::string; + +DEFINE_string(backend, "lmdb", "The backend for storing the result"); + +uint32_t swap_endian(uint32_t val) { + val = ((val << 8) & 0xFF00FF00) | ((val >> 8) & 0xFF00FF); + return (val << 16) | (val >> 16); +} + +void convert_dataset(const char* image_filename, const char* label_filename, + const char* db_path, const string& db_backend) { + // Open files + std::ifstream image_file(image_filename, std::ios::in | std::ios::binary); + std::ifstream label_file(label_filename, std::ios::in | std::ios::binary); + CHECK(image_file) << "Unable to open file " << image_filename; + CHECK(label_file) << "Unable to open file " << label_filename; + // Read the magic and the meta data + uint32_t magic; + uint32_t num_items; + uint32_t num_labels; + uint32_t rows; + uint32_t cols; + + image_file.read(reinterpret_cast(&magic), 4); + magic = swap_endian(magic); + CHECK_EQ(magic, 2051) << "Incorrect image file magic."; + label_file.read(reinterpret_cast(&magic), 4); + magic = swap_endian(magic); + CHECK_EQ(magic, 2049) << "Incorrect label file magic."; + image_file.read(reinterpret_cast(&num_items), 4); + num_items = swap_endian(num_items); + label_file.read(reinterpret_cast(&num_labels), 4); + num_labels = swap_endian(num_labels); + CHECK_EQ(num_items, num_labels); + image_file.read(reinterpret_cast(&rows), 4); + rows = swap_endian(rows); + image_file.read(reinterpret_cast(&cols), 4); + cols = swap_endian(cols); + + + scoped_ptr db(db::GetDB(db_backend)); + db->Open(db_path, db::NEW); + scoped_ptr txn(db->NewTransaction()); + + // Storing to db + char label; + char* pixels = new char[rows * cols]; + int count = 0; + string value; + + Datum datum; + datum.set_channels(1); + datum.set_height(rows); + datum.set_width(cols); + LOG(INFO) << "A total of " << num_items << " items."; + LOG(INFO) << "Rows: " << rows << " Cols: " << cols; + for (int item_id = 0; item_id < num_items; ++item_id) { + image_file.read(pixels, rows * cols); + label_file.read(&label, 1); + datum.set_data(pixels, rows*cols); + datum.set_label(label); + string key_str = caffe::format_int(item_id, 8); + datum.SerializeToString(&value); + + txn->Put(key_str, value); + + if (++count % 1000 == 0) { + txn->Commit(); + } + } + // write the last batch + if (count % 1000 != 0) { + txn->Commit(); + } + LOG(INFO) << "Processed " << count << " files."; + delete[] pixels; + db->Close(); +} + +int main(int argc, char** argv) { +#ifndef GFLAGS_GFLAGS_H_ + namespace gflags = google; +#endif + + FLAGS_alsologtostderr = 1; + + gflags::SetUsageMessage("This script converts the MNIST dataset to\n" + "the lmdb/leveldb format used by Caffe to load data.\n" + "Usage:\n" + " convert_mnist_data [FLAGS] input_image_file input_label_file " + "output_db_file\n" + "The MNIST dataset could be downloaded at\n" + " http://yann.lecun.com/exdb/mnist/\n" + "You should gunzip them after downloading," + "or directly use data/mnist/get_mnist.sh\n"); + gflags::ParseCommandLineFlags(&argc, &argv, true); + + const string& db_backend = FLAGS_backend; + + if (argc != 4) { + gflags::ShowUsageWithFlagsRestrict(argv[0], + "examples/mnist/convert_mnist_data"); + } else { + google::InitGoogleLogging(argv[0]); + convert_dataset(argv[1], argv[2], argv[3], db_backend); + } + return 0; +} +#else +int main(int argc, char** argv) { + LOG(FATAL) << "This example requires LevelDB and LMDB; " << + "compile with USE_LEVELDB and USE_LMDB."; +} +#endif // USE_LEVELDB and USE_LMDB diff --git a/3rdparty/caffe/examples/mnist/create_mnist.sh b/3rdparty/caffe/examples/mnist/create_mnist.sh new file mode 100755 index 00000000..f5e2e796 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/create_mnist.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env sh +# This script converts the mnist data into lmdb/leveldb format, +# depending on the value assigned to $BACKEND. +set -e + +EXAMPLE=examples/mnist +DATA=data/mnist +BUILD=build/examples/mnist + +BACKEND="lmdb" + +echo "Creating ${BACKEND}..." + +rm -rf $EXAMPLE/mnist_train_${BACKEND} +rm -rf $EXAMPLE/mnist_test_${BACKEND} + +$BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \ + $DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND} +$BUILD/convert_mnist_data.bin $DATA/t10k-images-idx3-ubyte \ + $DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND} + +echo "Done." diff --git a/3rdparty/caffe/examples/mnist/lenet.prototxt b/3rdparty/caffe/examples/mnist/lenet.prototxt new file mode 100644 index 00000000..8cf78e62 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet.prototxt @@ -0,0 +1,129 @@ +name: "LeNet" +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 64 dim: 1 dim: 28 dim: 28 } } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 20 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "pool1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 50 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool2" + top: "ip1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 500 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "ip1" + top: "ip1" +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "prob" + type: "Softmax" + bottom: "ip2" + top: "prob" +} diff --git a/3rdparty/caffe/examples/mnist/lenet_adadelta_solver.prototxt b/3rdparty/caffe/examples/mnist/lenet_adadelta_solver.prototxt new file mode 100644 index 00000000..16176c0f --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_adadelta_solver.prototxt @@ -0,0 +1,24 @@ +# The train/test net protocol buffer definition +net: "examples/mnist/lenet_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 1.0 +lr_policy: "fixed" +momentum: 0.95 +weight_decay: 0.0005 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 10000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "examples/mnist/lenet_adadelta" +# solver mode: CPU or GPU +solver_mode: GPU +type: "AdaDelta" +delta: 1e-6 diff --git a/3rdparty/caffe/examples/mnist/lenet_auto_solver.prototxt b/3rdparty/caffe/examples/mnist/lenet_auto_solver.prototxt new file mode 100644 index 00000000..481c8449 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_auto_solver.prototxt @@ -0,0 +1,24 @@ +# The train/test net protocol buffer definition +train_net: "mnist/lenet_auto_train.prototxt" +test_net: "mnist/lenet_auto_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.01 +momentum: 0.9 +weight_decay: 0.0005 +# The learning rate policy +lr_policy: "inv" +gamma: 0.0001 +power: 0.75 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 10000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "mnist/lenet" diff --git a/3rdparty/caffe/examples/mnist/lenet_consolidated_solver.prototxt b/3rdparty/caffe/examples/mnist/lenet_consolidated_solver.prototxt new file mode 100644 index 00000000..b81f30f2 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_consolidated_solver.prototxt @@ -0,0 +1,263 @@ +# lenet_consolidated_solver.prototxt consolidates the lenet_solver, lenet_train, +# and lenet_test prototxts into a single file. It also adds an additional test +# net which runs on the training set, e.g., for the purpose of comparing +# train/test accuracy (accuracy is computed only on the test set in the included +# LeNet example). This is mainly included as an example of using these features +# (specify NetParameters directly in the solver, specify multiple test nets) +# if desired. +# +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.01 +momentum: 0.9 +weight_decay: 0.0005 +# The learning rate policy +lr_policy: "inv" +gamma: 0.0001 +power: 0.75 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 10000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "examples/mnist/lenet" +# Set a random_seed for repeatable results. +# (For results that vary due to random initialization, comment out the below +# line, or set to a negative integer -- e.g. "random_seed: -1") +random_seed: 1701 +# solver mode: CPU or GPU +solver_mode: GPU + +# We test on both the test and train set using "stages". The TEST DATA layers +# each have a stage, either 'test-on-train-set' or 'test-on-test-set'. +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +test_state: { stage: "test-on-test-set" } +# The train set has 60K images, so we run 600 test iters (600 * 100 = 60K). +test_iter: 600 +test_state: { stage: "test-on-train-set" } + +# The net protocol buffer definition +net_param { + name: "LeNet" + layers { + name: "mnist" + type: DATA + top: "data" + top: "label" + data_param { + source: "examples/mnist/mnist_train_lmdb" + backend: LMDB + batch_size: 64 + } + transform_param { + scale: 0.00390625 + } + include: { phase: TRAIN } + } + layers { + name: "mnist" + type: DATA + top: "data" + top: "label" + data_param { + source: "examples/mnist/mnist_test_lmdb" + backend: LMDB + batch_size: 100 + } + transform_param { + scale: 0.00390625 + } + include: { + phase: TEST + stage: "test-on-test-set" + } + } + layers { + name: "mnist" + type: DATA + top: "data" + top: "label" + data_param { + source: "examples/mnist/mnist_train_lmdb" + backend: LMDB + batch_size: 100 + } + transform_param { + scale: 0.00390625 + } + include: { + phase: TEST + stage: "test-on-train-set" + } + } + layers { + name: "conv1" + type: CONVOLUTION + bottom: "data" + top: "conv1" + blobs_lr: 1 + blobs_lr: 2 + convolution_param { + num_output: 20 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } + } + layers { + name: "pool1" + type: POOLING + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } + } + layers { + name: "conv2" + type: CONVOLUTION + bottom: "pool1" + top: "conv2" + blobs_lr: 1 + blobs_lr: 2 + convolution_param { + num_output: 50 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } + } + layers { + name: "pool2" + type: POOLING + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } + } + layers { + name: "ip1" + type: INNER_PRODUCT + bottom: "pool2" + top: "ip1" + blobs_lr: 1 + blobs_lr: 2 + inner_product_param { + num_output: 500 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } + } + layers { + name: "relu1" + type: RELU + bottom: "ip1" + top: "ip1" + } + layers { + name: "ip2" + type: INNER_PRODUCT + bottom: "ip1" + top: "ip2" + blobs_lr: 1 + blobs_lr: 2 + inner_product_param { + num_output: 10 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } + } + layers { + name: "accuracy" + type: ACCURACY + bottom: "ip2" + bottom: "label" + top: "accuracy" + } + layers { + name: "loss" + type: SOFTMAX_LOSS + bottom: "ip2" + bottom: "label" + top: "loss" + } +} + +# Expected results for first and last 500 iterations: +# (with portions of log omitted for brevity) +# +# Iteration 0, Testing net (#0) +# Test score #0: 0.067 +# Test score #1: 2.30256 +# Iteration 0, Testing net (#1) +# Test score #0: 0.0670334 +# Test score #1: 2.30258 +# Iteration 100, lr = 0.00992565 +# Iteration 100, loss = 0.280585 +# Iteration 200, lr = 0.00985258 +# Iteration 200, loss = 0.345601 +# Iteration 300, lr = 0.00978075 +# Iteration 300, loss = 0.172217 +# Iteration 400, lr = 0.00971013 +# Iteration 400, loss = 0.261836 +# Iteration 500, lr = 0.00964069 +# Iteration 500, loss = 0.157803 +# Iteration 500, Testing net (#0) +# Test score #0: 0.968 +# Test score #1: 0.0993772 +# Iteration 500, Testing net (#1) +# Test score #0: 0.965883 +# Test score #1: 0.109374 +# +# [...] +# +# Iteration 9500, Testing net (#0) +# Test score #0: 0.9899 +# Test score #1: 0.0308299 +# Iteration 9500, Testing net (#1) +# Test score #0: 0.996816 +# Test score #1: 0.0118238 +# Iteration 9600, lr = 0.00603682 +# Iteration 9600, loss = 0.0126215 +# Iteration 9700, lr = 0.00601382 +# Iteration 9700, loss = 0.00579304 +# Iteration 9800, lr = 0.00599102 +# Iteration 9800, loss = 0.00500633 +# Iteration 9900, lr = 0.00596843 +# Iteration 9900, loss = 0.00796607 +# Iteration 10000, lr = 0.00594604 +# Iteration 10000, loss = 0.00271736 +# Iteration 10000, Testing net (#0) +# Test score #0: 0.9914 +# Test score #1: 0.0276671 +# Iteration 10000, Testing net (#1) +# Test score #0: 0.997782 +# Test score #1: 0.00908085 diff --git a/3rdparty/caffe/examples/mnist/lenet_multistep_solver.prototxt b/3rdparty/caffe/examples/mnist/lenet_multistep_solver.prototxt new file mode 100644 index 00000000..9b22b45b --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_multistep_solver.prototxt @@ -0,0 +1,29 @@ +# The train/test net protocol buffer definition +net: "examples/mnist/lenet_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.01 +momentum: 0.9 +weight_decay: 0.0005 +# The learning rate policy +lr_policy: "multistep" +gamma: 0.9 +stepvalue: 5000 +stepvalue: 7000 +stepvalue: 8000 +stepvalue: 9000 +stepvalue: 9500 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 10000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "examples/mnist/lenet_multistep" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/mnist/lenet_solver.prototxt b/3rdparty/caffe/examples/mnist/lenet_solver.prototxt new file mode 100644 index 00000000..2dfbc834 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_solver.prototxt @@ -0,0 +1,25 @@ +# The train/test net protocol buffer definition +net: "examples/mnist/lenet_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.01 +momentum: 0.9 +weight_decay: 0.0005 +# The learning rate policy +lr_policy: "inv" +gamma: 0.0001 +power: 0.75 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 10000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "examples/mnist/lenet" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/mnist/lenet_solver_adam.prototxt b/3rdparty/caffe/examples/mnist/lenet_solver_adam.prototxt new file mode 100644 index 00000000..4b5336b1 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_solver_adam.prototxt @@ -0,0 +1,26 @@ +# The train/test net protocol buffer definition +# this follows "ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION" +net: "examples/mnist/lenet_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# All parameters are from the cited paper above +base_lr: 0.001 +momentum: 0.9 +momentum2: 0.999 +# since Adam dynamically changes the learning rate, we set the base learning +# rate to a fixed value +lr_policy: "fixed" +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 10000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "examples/mnist/lenet" +# solver mode: CPU or GPU +type: "Adam" +solver_mode: GPU diff --git a/3rdparty/caffe/examples/mnist/lenet_solver_rmsprop.prototxt b/3rdparty/caffe/examples/mnist/lenet_solver_rmsprop.prototxt new file mode 100644 index 00000000..924b72d3 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_solver_rmsprop.prototxt @@ -0,0 +1,27 @@ +# The train/test net protocol buffer definition +net: "examples/mnist/lenet_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.01 +momentum: 0.0 +weight_decay: 0.0005 +# The learning rate policy +lr_policy: "inv" +gamma: 0.0001 +power: 0.75 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 10000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "examples/mnist/lenet_rmsprop" +# solver mode: CPU or GPU +solver_mode: GPU +type: "RMSProp" +rms_decay: 0.98 diff --git a/3rdparty/caffe/examples/mnist/lenet_train_test.prototxt b/3rdparty/caffe/examples/mnist/lenet_train_test.prototxt new file mode 100644 index 00000000..b18fc26c --- /dev/null +++ b/3rdparty/caffe/examples/mnist/lenet_train_test.prototxt @@ -0,0 +1,168 @@ +name: "LeNet" +layer { + name: "mnist" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + scale: 0.00390625 + } + data_param { + source: "examples/mnist/mnist_train_lmdb" + batch_size: 64 + backend: LMDB + } +} +layer { + name: "mnist" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + scale: 0.00390625 + } + data_param { + source: "examples/mnist/mnist_test_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 20 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "pool1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 50 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool2" + top: "ip1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 500 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "ip1" + top: "ip1" +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip2" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip2" + bottom: "label" + top: "loss" +} diff --git a/3rdparty/caffe/examples/mnist/mnist_autoencoder.prototxt b/3rdparty/caffe/examples/mnist/mnist_autoencoder.prototxt new file mode 100644 index 00000000..563c7c91 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/mnist_autoencoder.prototxt @@ -0,0 +1,323 @@ +name: "MNISTAutoencoder" +layer { + name: "data" + type: "Data" + top: "data" + include { + phase: TRAIN + } + transform_param { + scale: 0.0039215684 + } + data_param { + source: "examples/mnist/mnist_train_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "data" + type: "Data" + top: "data" + include { + phase: TEST + stage: "test-on-train" + } + transform_param { + scale: 0.0039215684 + } + data_param { + source: "examples/mnist/mnist_train_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "data" + type: "Data" + top: "data" + include { + phase: TEST + stage: "test-on-test" + } + transform_param { + scale: 0.0039215684 + } + data_param { + source: "examples/mnist/mnist_test_lmdb" + batch_size: 100 + backend: LMDB + } +} +layer { + name: "flatdata" + type: "Flatten" + bottom: "data" + top: "flatdata" +} +layer { + name: "encode1" + type: "InnerProduct" + bottom: "data" + top: "encode1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 1000 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "encode1neuron" + type: "Sigmoid" + bottom: "encode1" + top: "encode1neuron" +} +layer { + name: "encode2" + type: "InnerProduct" + bottom: "encode1neuron" + top: "encode2" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 500 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "encode2neuron" + type: "Sigmoid" + bottom: "encode2" + top: "encode2neuron" +} +layer { + name: "encode3" + type: "InnerProduct" + bottom: "encode2neuron" + top: "encode3" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 250 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "encode3neuron" + type: "Sigmoid" + bottom: "encode3" + top: "encode3neuron" +} +layer { + name: "encode4" + type: "InnerProduct" + bottom: "encode3neuron" + top: "encode4" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 30 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "decode4" + type: "InnerProduct" + bottom: "encode4" + top: "decode4" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 250 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "decode4neuron" + type: "Sigmoid" + bottom: "decode4" + top: "decode4neuron" +} +layer { + name: "decode3" + type: "InnerProduct" + bottom: "decode4neuron" + top: "decode3" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 500 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "decode3neuron" + type: "Sigmoid" + bottom: "decode3" + top: "decode3neuron" +} +layer { + name: "decode2" + type: "InnerProduct" + bottom: "decode3neuron" + top: "decode2" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 1000 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "decode2neuron" + type: "Sigmoid" + bottom: "decode2" + top: "decode2neuron" +} +layer { + name: "decode1" + type: "InnerProduct" + bottom: "decode2neuron" + top: "decode1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 1 + decay_mult: 0 + } + inner_product_param { + num_output: 784 + weight_filler { + type: "gaussian" + std: 1 + sparse: 15 + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "loss" + type: "SigmoidCrossEntropyLoss" + bottom: "decode1" + bottom: "flatdata" + top: "cross_entropy_loss" + loss_weight: 1 +} +layer { + name: "decode1neuron" + type: "Sigmoid" + bottom: "decode1" + top: "decode1neuron" +} +layer { + name: "loss" + type: "EuclideanLoss" + bottom: "decode1neuron" + bottom: "flatdata" + top: "l2_error" + loss_weight: 0 +} diff --git a/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver.prototxt b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver.prototxt new file mode 100644 index 00000000..6e35cb6a --- /dev/null +++ b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver.prototxt @@ -0,0 +1,19 @@ +net: "examples/mnist/mnist_autoencoder.prototxt" +test_state: { stage: 'test-on-train' } +test_iter: 500 +test_state: { stage: 'test-on-test' } +test_iter: 100 +test_interval: 500 +test_compute_loss: true +base_lr: 0.01 +lr_policy: "step" +gamma: 0.1 +stepsize: 10000 +display: 100 +max_iter: 65000 +weight_decay: 0.0005 +snapshot: 10000 +snapshot_prefix: "examples/mnist/mnist_autoencoder" +momentum: 0.9 +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt new file mode 100644 index 00000000..26c4084a --- /dev/null +++ b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt @@ -0,0 +1,19 @@ +net: "examples/mnist/mnist_autoencoder.prototxt" +test_state: { stage: 'test-on-train' } +test_iter: 500 +test_state: { stage: 'test-on-test' } +test_iter: 100 +test_interval: 500 +test_compute_loss: true +base_lr: 1.0 +lr_policy: "fixed" +momentum: 0.95 +delta: 1e-8 +display: 100 +max_iter: 65000 +weight_decay: 0.0005 +snapshot: 10000 +snapshot_prefix: "examples/mnist/mnist_autoencoder_adadelta_train" +# solver mode: CPU or GPU +solver_mode: GPU +type: "AdaDelta" diff --git a/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt new file mode 100644 index 00000000..065cdb20 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt @@ -0,0 +1,17 @@ +net: "examples/mnist/mnist_autoencoder.prototxt" +test_state: { stage: 'test-on-train' } +test_iter: 500 +test_state: { stage: 'test-on-test' } +test_iter: 100 +test_interval: 500 +test_compute_loss: true +base_lr: 0.01 +lr_policy: "fixed" +display: 100 +max_iter: 65000 +weight_decay: 0.0005 +snapshot: 10000 +snapshot_prefix: "examples/mnist/mnist_autoencoder_adagrad_train" +# solver mode: CPU or GPU +solver_mode: GPU +type: "AdaGrad" diff --git a/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt new file mode 100644 index 00000000..c95e3fe7 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt @@ -0,0 +1,20 @@ +net: "examples/mnist/mnist_autoencoder.prototxt" +test_state: { stage: 'test-on-train' } +test_iter: 500 +test_state: { stage: 'test-on-test' } +test_iter: 100 +test_interval: 500 +test_compute_loss: true +base_lr: 0.01 +lr_policy: "step" +gamma: 0.1 +stepsize: 10000 +display: 100 +max_iter: 65000 +weight_decay: 0.0005 +snapshot: 10000 +snapshot_prefix: "examples/mnist/mnist_autoencoder_nesterov_train" +momentum: 0.95 +# solver mode: CPU or GPU +solver_mode: GPU +type: "Nesterov" diff --git a/3rdparty/caffe/examples/mnist/readme.md b/3rdparty/caffe/examples/mnist/readme.md new file mode 100644 index 00000000..35952155 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/readme.md @@ -0,0 +1,289 @@ +--- +title: LeNet MNIST Tutorial +description: Train and test "LeNet" on the MNIST handwritten digit data. +category: example +include_in_docs: true +priority: 1 +--- + +# Training LeNet on MNIST with Caffe + +We will assume that you have Caffe successfully compiled. If not, please refer to the [Installation page](/installation.html). In this tutorial, we will assume that your Caffe installation is located at `CAFFE_ROOT`. + +## Prepare Datasets + +You will first need to download and convert the data format from the MNIST website. To do this, simply run the following commands: + + cd $CAFFE_ROOT + ./data/mnist/get_mnist.sh + ./examples/mnist/create_mnist.sh + +If it complains that `wget` or `gunzip` are not installed, you need to install them respectively. After running the script there should be two datasets, `mnist_train_lmdb`, and `mnist_test_lmdb`. + +## LeNet: the MNIST Classification Model + +Before we actually run the training program, let's explain what will happen. We will use the [LeNet](http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf) network, which is known to work well on digit classification tasks. We will use a slightly different version from the original LeNet implementation, replacing the sigmoid activations with Rectified Linear Unit (ReLU) activations for the neurons. + +The design of LeNet contains the essence of CNNs that are still used in larger models such as the ones in ImageNet. In general, it consists of a convolutional layer followed by a pooling layer, another convolution layer followed by a pooling layer, and then two fully connected layers similar to the conventional multilayer perceptrons. We have defined the layers in `$CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt`. + +## Define the MNIST Network + +This section explains the `lenet_train_test.prototxt` model definition that specifies the LeNet model for MNIST handwritten digit classification. We assume that you are familiar with [Google Protobuf](https://developers.google.com/protocol-buffers/docs/overview), and assume that you have read the protobuf definitions used by Caffe, which can be found at `$CAFFE_ROOT/src/caffe/proto/caffe.proto`. + +Specifically, we will write a `caffe::NetParameter` (or in python, `caffe.proto.caffe_pb2.NetParameter`) protobuf. We will start by giving the network a name: + + name: "LeNet" + +### Writing the Data Layer + +Currently, we will read the MNIST data from the lmdb we created earlier in the demo. This is defined by a data layer: + + layer { + name: "mnist" + type: "Data" + transform_param { + scale: 0.00390625 + } + data_param { + source: "mnist_train_lmdb" + backend: LMDB + batch_size: 64 + } + top: "data" + top: "label" + } + +Specifically, this layer has name `mnist`, type `data`, and it reads the data from the given lmdb source. We will use a batch size of 64, and scale the incoming pixels so that they are in the range \[0,1\). Why 0.00390625? It is 1 divided by 256. And finally, this layer produces two blobs, one is the `data` blob, and one is the `label` blob. + +### Writing the Convolution Layer + +Let's define the first convolution layer: + + layer { + name: "conv1" + type: "Convolution" + param { lr_mult: 1 } + param { lr_mult: 2 } + convolution_param { + num_output: 20 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } + bottom: "data" + top: "conv1" + } + +This layer takes the `data` blob (it is provided by the data layer), and produces the `conv1` layer. It produces outputs of 20 channels, with the convolutional kernel size 5 and carried out with stride 1. + +The fillers allow us to randomly initialize the value of the weights and bias. For the weight filler, we will use the `xavier` algorithm that automatically determines the scale of initialization based on the number of input and output neurons. For the bias filler, we will simply initialize it as constant, with the default filling value 0. + +`lr_mult`s are the learning rate adjustments for the layer's learnable parameters. In this case, we will set the weight learning rate to be the same as the learning rate given by the solver during runtime, and the bias learning rate to be twice as large as that - this usually leads to better convergence rates. + +### Writing the Pooling Layer + +Phew. Pooling layers are actually much easier to define: + + layer { + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 2 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" + } + +This says we will perform max pooling with a pool kernel size 2 and a stride of 2 (so no overlapping between neighboring pooling regions). + +Similarly, you can write up the second convolution and pooling layers. Check `$CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt` for details. + +### Writing the Fully Connected Layer + +Writing a fully connected layer is also simple: + + layer { + name: "ip1" + type: "InnerProduct" + param { lr_mult: 1 } + param { lr_mult: 2 } + inner_product_param { + num_output: 500 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } + bottom: "pool2" + top: "ip1" + } + +This defines a fully connected layer (known in Caffe as an `InnerProduct` layer) with 500 outputs. All other lines look familiar, right? + +### Writing the ReLU Layer + +A ReLU Layer is also simple: + + layer { + name: "relu1" + type: "ReLU" + bottom: "ip1" + top: "ip1" + } + +Since ReLU is an element-wise operation, we can do *in-place* operations to save some memory. This is achieved by simply giving the same name to the bottom and top blobs. Of course, do NOT use duplicated blob names for other layer types! + +After the ReLU layer, we will write another innerproduct layer: + + layer { + name: "ip2" + type: "InnerProduct" + param { lr_mult: 1 } + param { lr_mult: 2 } + inner_product_param { + num_output: 10 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } + bottom: "ip1" + top: "ip2" + } + +### Writing the Loss Layer + +Finally, we will write the loss! + + layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip2" + bottom: "label" + } + +The `softmax_loss` layer implements both the softmax and the multinomial logistic loss (that saves time and improves numerical stability). It takes two blobs, the first one being the prediction and the second one being the `label` provided by the data layer (remember it?). It does not produce any outputs - all it does is to compute the loss function value, report it when backpropagation starts, and initiates the gradient with respect to `ip2`. This is where all magic starts. + + +### Additional Notes: Writing Layer Rules + +Layer definitions can include rules for whether and when they are included in the network definition, like the one below: + + layer { + // ...layer definition... + include: { phase: TRAIN } + } + +This is a rule, which controls layer inclusion in the network, based on current network's state. +You can refer to `$CAFFE_ROOT/src/caffe/proto/caffe.proto` for more information about layer rules and model schema. + +In the above example, this layer will be included only in `TRAIN` phase. +If we change `TRAIN` with `TEST`, then this layer will be used only in test phase. +By default, that is without layer rules, a layer is always included in the network. +Thus, `lenet_train_test.prototxt` has two `DATA` layers defined (with different `batch_size`), one for the training phase and one for the testing phase. +Also, there is an `Accuracy` layer which is included only in `TEST` phase for reporting the model accuracy every 100 iteration, as defined in `lenet_solver.prototxt`. + +## Define the MNIST Solver + +Check out the comments explaining each line in the prototxt `$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt`: + + # The train/test net protocol buffer definition + net: "examples/mnist/lenet_train_test.prototxt" + # test_iter specifies how many forward passes the test should carry out. + # In the case of MNIST, we have test batch size 100 and 100 test iterations, + # covering the full 10,000 testing images. + test_iter: 100 + # Carry out testing every 500 training iterations. + test_interval: 500 + # The base learning rate, momentum and the weight decay of the network. + base_lr: 0.01 + momentum: 0.9 + weight_decay: 0.0005 + # The learning rate policy + lr_policy: "inv" + gamma: 0.0001 + power: 0.75 + # Display every 100 iterations + display: 100 + # The maximum number of iterations + max_iter: 10000 + # snapshot intermediate results + snapshot: 5000 + snapshot_prefix: "examples/mnist/lenet" + # solver mode: CPU or GPU + solver_mode: GPU + + +## Training and Testing the Model + +Training the model is simple after you have written the network definition protobuf and solver protobuf files. Simply run `train_lenet.sh`, or the following command directly: + + cd $CAFFE_ROOT + ./examples/mnist/train_lenet.sh + +`train_lenet.sh` is a simple script, but here is a quick explanation: the main tool for training is `caffe` with action `train` and the solver protobuf text file as its argument. + +When you run the code, you will see a lot of messages flying by like this: + + I1203 net.cpp:66] Creating Layer conv1 + I1203 net.cpp:76] conv1 <- data + I1203 net.cpp:101] conv1 -> conv1 + I1203 net.cpp:116] Top shape: 20 24 24 + I1203 net.cpp:127] conv1 needs backward computation. + +These messages tell you the details about each layer, its connections and its output shape, which may be helpful in debugging. After the initialization, the training will start: + + I1203 net.cpp:142] Network initialization done. + I1203 solver.cpp:36] Solver scaffolding done. + I1203 solver.cpp:44] Solving LeNet + +Based on the solver setting, we will print the training loss function every 100 iterations, and test the network every 500 iterations. You will see messages like this: + + I1203 solver.cpp:204] Iteration 100, lr = 0.00992565 + I1203 solver.cpp:66] Iteration 100, loss = 0.26044 + ... + I1203 solver.cpp:84] Testing net + I1203 solver.cpp:111] Test score #0: 0.9785 + I1203 solver.cpp:111] Test score #1: 0.0606671 + +For each training iteration, `lr` is the learning rate of that iteration, and `loss` is the training function. For the output of the testing phase, score 0 is the accuracy, and score 1 is the testing loss function. + +And after a few minutes, you are done! + + I1203 solver.cpp:84] Testing net + I1203 solver.cpp:111] Test score #0: 0.9897 + I1203 solver.cpp:111] Test score #1: 0.0324599 + I1203 solver.cpp:126] Snapshotting to lenet_iter_10000 + I1203 solver.cpp:133] Snapshotting solver state to lenet_iter_10000.solverstate + I1203 solver.cpp:78] Optimization Done. + +The final model, stored as a binary protobuf file, is stored at + + lenet_iter_10000 + +which you can deploy as a trained model in your application, if you are training on a real-world application dataset. + +### Um... How about GPU training? + +You just did! All the training was carried out on the GPU. In fact, if you would like to do training on CPU, you can simply change one line in `lenet_solver.prototxt`: + + # solver mode: CPU or GPU + solver_mode: CPU + +and you will be using CPU for training. Isn't that easy? + +MNIST is a small dataset, so training with GPU does not really introduce too much benefit due to communication overheads. On larger datasets with more complex models, such as ImageNet, the computation speed difference will be more significant. + +### How to reduce the learning rate at fixed steps? +Look at lenet_multistep_solver.prototxt diff --git a/3rdparty/caffe/examples/mnist/train_lenet.sh b/3rdparty/caffe/examples/mnist/train_lenet.sh new file mode 100755 index 00000000..f7f9b861 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_lenet.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +set -e + +./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt $@ diff --git a/3rdparty/caffe/examples/mnist/train_lenet_adam.sh b/3rdparty/caffe/examples/mnist/train_lenet_adam.sh new file mode 100755 index 00000000..7b4e9056 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_lenet_adam.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +set -e + +./build/tools/caffe train --solver=examples/mnist/lenet_solver_adam.prototxt $@ diff --git a/3rdparty/caffe/examples/mnist/train_lenet_consolidated.sh b/3rdparty/caffe/examples/mnist/train_lenet_consolidated.sh new file mode 100755 index 00000000..c5f02666 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_lenet_consolidated.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh +set -e + +./build/tools/caffe train \ + --solver=examples/mnist/lenet_consolidated_solver.prototxt $@ diff --git a/3rdparty/caffe/examples/mnist/train_lenet_docker.sh b/3rdparty/caffe/examples/mnist/train_lenet_docker.sh new file mode 100755 index 00000000..e946ba0f --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_lenet_docker.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env sh +set -e +# The following example allows for the MNIST example (using LeNet) to be +# trained using the caffe docker image instead of building from source. +# +# The GPU-enabled version of Caffe can be used, assuming that nvidia-docker +# is installed, and the GPU-enabled Caffe image has been built. +# Setting the GPU environment variable to 1 will enable the use of nvidia-docker. +# e.g. +# GPU=1 ./examples/mnist/train_lenet_docker.sh [ADDITIONAL_CAFFE_ARGS] +# +# With any arguments following the script being passed directly to caffe +# when training the network. +# +# The steps that are performed by the script are as follows: +# 1. The MNIST data set is downloaded +# (see data/mnist/get_mnist.sh) +# 2. An LMDB database is created from the downloaded data +# (see examples/mnist/create_mnist.sh. +# 3. A caffe network based on the LeNet solver is trained. +# (see examples/mnist/lenet_solver.prototxt) +# +# For each of these, a step is executed to ensure that certain prerequisites +# are available, after which a command that actually performs the work is +# executed. +# +# In order to provide additional flexibility, the following shell (environment) +# variables can be used to control the execution of each of the phases: +# +# DOWNLOAD_DATA: Enable (1) or disable (0) the downloading of the MNIST dataset +# CREATE_LMDB: Enable (1) or disable (0) the creation of the LMDB database +# TRAIN: Enable (1) or disable (0) the training of the LeNet networkd. +# +# As an example, assuming that the data set has been downloaded, and an LMDB +# database created, the following command can be used to train the LeNet +# network with GPU computing enabled. +# +# DOWNLOAD_DATA=0 CREATE_LMDB=0 GPU=1 ./examples/mnist/train_lenet_docker.sh +# + + +if [ x"$(uname -s)" != x"Linux" ] +then +echo "" +echo "This script is designed to run on Linux." +echo "There may be problems with the way Docker mounts host volumes on other" +echo "systems which will cause the docker commands to fail." +echo "" +read -p "Press [ENTER] to continue..." key +echo "" +fi + + +# Check if GPU mode has been enabled and set the docker executable accordingly +if [ ${GPU:-0} -eq 1 ] +then +DOCKER_CMD=nvidia-docker +IMAGE=caffe:gpu +else +DOCKER_CMD=docker +IMAGE=caffe:cpu +fi +echo "Using $DOCKER_CMD to launch $IMAGE" + +# On non-Linux systems, the Docker host is typically a virtual machine. +# This means that the user and group id's may be different. +# On OS X, for example, the user and group are 1000 and 50, respectively. +if [ x"$(uname -s)" != x"Linux" ] +then +CUID=1000 +CGID=50 +else +CUID=$(id -u) +CGID=$(id -g) +fi + +# Define some helper variables to make the running of the actual docker +# commands less verbose. +# Note: +# -u $CUID:$CGID runs the docker image as the current user to ensure +# that the file permissions are compatible with the +# host system. The variables CUID and CGID have been +# set above depending on the host operating system. +# --volume $(pwd):/workspace mounts the current directory as the docker volume +# /workspace +# --workdir /workspace Ensures that the docker container starts in the right +# working directory +DOCKER_OPTIONS="--rm -ti -u $CUID:$CGID --volume=$(pwd):/workspace --workdir=/workspace" +DOCKER_RUN="$DOCKER_CMD run $DOCKER_OPTIONS $IMAGE" + +# Download the data +if [ ${DOWNLOAD_DATA:-1} -eq 1 ] +then +$DOCKER_RUN bash -c "mkdir -p ./data/mnist; + cp -ru \$CAFFE_ROOT/data/mnist/get_mnist.sh ./data/mnist/" +$DOCKER_RUN ./data/mnist/get_mnist.sh +fi + +# Create the LMDB database +if [ ${CREATE_LMDB:-1} -eq 1 ] +then +$DOCKER_RUN bash -c "mkdir -p ./examples/mnist; + cp -ru \$CAFFE_ROOT/examples/mnist/create_mnist.sh ./examples/mnist/; + sed -i s#BUILD=build#BUILD=\$CAFFE_ROOT/build## ./examples/mnist/create_mnist.sh" +$DOCKER_RUN ./examples/mnist/create_mnist.sh +fi + +# Train the network +if [ ${TRAIN:-1} -eq 1 ] +then +$DOCKER_RUN bash -c "cp \$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt ./examples/mnist/; + cp \$CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt ./examples/mnist/" + # Ensure that the solver_mode is compatible with the desired GPU mode. + if [ ${GPU:-0} -eq 0 ] + then + $DOCKER_RUN sed -i 's#solver_mode: GPU#solver_mode: CPU##' ./examples/mnist/lenet_solver.prototxt + fi +$DOCKER_RUN caffe train --solver=examples/mnist/lenet_solver.prototxt $* +fi diff --git a/3rdparty/caffe/examples/mnist/train_lenet_rmsprop.sh b/3rdparty/caffe/examples/mnist/train_lenet_rmsprop.sh new file mode 100755 index 00000000..adfa7ab0 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_lenet_rmsprop.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh +set -e + +./build/tools/caffe train \ + --solver=examples/mnist/lenet_solver_rmsprop.prototxt $@ diff --git a/3rdparty/caffe/examples/mnist/train_mnist_autoencoder.sh b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder.sh new file mode 100755 index 00000000..724a0f14 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh +set -e + +./build/tools/caffe train \ + --solver=examples/mnist/mnist_autoencoder_solver.prototxt $@ diff --git a/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adadelta.sh b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adadelta.sh new file mode 100755 index 00000000..a660dbb9 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adadelta.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +./build/tools/caffe train \ + --solver=examples/mnist/mnist_autoencoder_solver_adadelta.prototxt $@ diff --git a/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adagrad.sh b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adagrad.sh new file mode 100755 index 00000000..4c11dfa6 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_adagrad.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +./build/tools/caffe train \ + --solver=examples/mnist/mnist_autoencoder_solver_adagrad.prototxt $@ diff --git a/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_nesterov.sh b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_nesterov.sh new file mode 100755 index 00000000..fd0559d2 --- /dev/null +++ b/3rdparty/caffe/examples/mnist/train_mnist_autoencoder_nesterov.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +./build/tools/caffe train \ + --solver=examples/mnist/mnist_autoencoder_solver_nesterov.prototxt $@ diff --git a/3rdparty/caffe/examples/net_surgery.ipynb b/3rdparty/caffe/examples/net_surgery.ipynb new file mode 100644 index 00000000..217c2d1a --- /dev/null +++ b/3rdparty/caffe/examples/net_surgery.ipynb @@ -0,0 +1,6901 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Net Surgery\n", + "\n", + "Caffe networks can be transformed to your particular needs by editing the model parameters. The data, diffs, and parameters of a net are all exposed in pycaffe.\n", + "\n", + "Roll up your sleeves for net surgery with pycaffe!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "# Make sure that caffe is on the python path:\n", + "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", + "import sys\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "\n", + "import caffe\n", + "\n", + "# configure plotting\n", + "plt.rcParams['figure.figsize'] = (10, 10)\n", + "plt.rcParams['image.interpolation'] = 'nearest'\n", + "plt.rcParams['image.cmap'] = 'gray'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Designer Filters\n", + "\n", + "To show how to load, manipulate, and save parameters we'll design our own filters into a simple network that's only a single convolution layer. This net has two blobs, `data` for the input and `conv` for the convolution output and one parameter `conv` for the convolution filter weights and biases." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "blobs ['data', 'conv']\n", + "params ['conv']\n" + ] + }, + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAlIAAAHNCAYAAADVB5V4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvWuMZdl13/c/tx733np393T3PPkYDUccPsQZiaRkCYpE\n", + "CYklOwYhfwjCIAEiJDLswAkQf3AQIEoC64OcIEDiIHESBAiCCAkkJ4GtJHCM+KHQjmGZtmxKJBVC\n", + "wxkOZyac4Uz3dHe97q1bt+7Jh+r/rt/517499ER008xZQKGq7j1nn73XXns9/mvtfZq2bdVTTz31\n", + "1FNPPfXU0z86DR52B3rqqaeeeuqpp57+SaXekeqpp5566qmnnnp6j9Q7Uj311FNPPfXUU0/vkXpH\n", + "qqeeeuqpp5566uk9Uu9I9dRTTz311FNPPb1H6h2pnnrqqaeeeuqpp/dIvSPVU089/b5T0zT/RdM0\n", + "/87v97Xv0s4HmqZZNE1T1WtN03y5aZp/6v/rc3rqqaeeSE1/jlRPPfX0vUBN03xA0suSVtu2XTzc\n", + "3vTUU0//f6Eekeqpp55+X2kZItRTTz319L1IvcLrqaee3pWapnmuaZr/s2maO/dTZH8E3/2399Nz\n", + "f7lpmkNJn7n/2S/hmj/dNM03m6Z5vWmaf/V+Cu5p3P9L9//+yfvX/Kmmab51/55/Ge384aZp/mHT\n", + "NPeapnm1aZp/7x9hDK80TfNT9//+95um+R+bpvmVpmn2m6b5naZpPtQ0zb99/7nfaJrmn8a9P980\n", + "ze/ev/alpmn+WLT9oPENm6b5j+63+eZ9Xo3+Ueegp556+u6k3pHqqaeeHkhN06xJ+l8l/RVJ1yX9\n", + "65L++6ZpnsVln5P0S23bbkn6vyS193/UNM3PSPo3Jf20pA9J+sl4RLn2Pt2UtCPpcUn/iqT/vGma\n", + "3fvfHUr6F9u23ZX0hyX9iaZpPvttDiXrGP5ZSf+dpCuS/qGkv3r/88cl/ZKk/wrXfkvSH27bdkfS\n", + "z0v6j5umeeHbHN+flfSMpE/c//2EpH/32+xzTz319F1OvSPVU089vRv9iKTNtm3/bNu287Ztf0PS\n", + "/6Zz58n0l9q2/TuS1LbtSdz/z0n6b9q2/b/btp1IqqFIDf4+lfRn2rY9a9v2f9e58/T999v+fNu2\n", + "X7n/95ck/aqkn3iP4/qbbdv+1bZtzyT9T5KuSfqz9///NUkfaJpm5/6z/nLbtl+///fflPR/SPrx\n", + "dxtf0zSNpF+Q9Kfatr3btu2hpF+W9M+/xz731FNP32W0+rA70FNPPX3X0+OSXovPvnH/c+kc6Xn9\n", + "Afc/JukL+P9B10rS7SgWP5a0JUlN0/ywzhGej0palzSU9Bfepb1l9Bb+nki61V7svpnc/70lab9p\n", + "mp/VuYP0IZ0HoBuSfuf+NQ8a3/X71/7WuU8l6dxp7IPYnnr6HqF+MffUU0/vRt+U9FQDT0DS+yX9\n", + "P9/m/W9Iegr/P1W55tvdPvw/SPpLkp5s23ZP0n+p77Aea5pmKOl/lvQfSrrRtu0VSX9ZFyjag8Z3\n", + "S+dO2Ufatr1y/2fvfoqwp556+h6g3pHqqaee3o1+U+eo0J9ummataZqf1Hl90a/e/76p3NPg878g\n", + "6eebpvlw0zQbkn7xAde+G21JutO27axpmk9L+hf07Tth75XW7//ckrS4j079M/h+6fjuI2v/taT/\n", + "pGma65LUNM0TTdPw/p566umfYOodqZ566umB1LbtqaQ/IulnJb0t6T+T9C+1bft7vkSXnZnyWdu2\n", + "f0XSfyrpNyT9nqS/c/+akyX3P8gx+tck/ZmmafZ17rD8WuW53w4t6/Ol/9u2PZD0b+jcYXpH57Vh\n", + "v14uevfx/VuSvibpN5umuafzonYW6vfUU0//BFN/IGdPPfX0j5WapnlO0pckrX8vHpz5vT6+nnrq\n", + "qUs9ItVTTz19x6lpmp+7f57SFUn/gaT/5XvJyfheH19PPfW0nHpHqqeeevrHQX9M52cxfU3nxxv8\n", + "iYfbnd93+l4fX0899bSE+tReTz311FNPPfXU03ukh3KO1BNPPNE2TaPFYiHvqB4MBhoMBlosFuV/\n", + "O3n+3TSN2rYVnb/FYqGVlZXqc05PT7VYLDQcDstnvLdpms5z3Jemacqz+FzT2dlZ55n+brFYlHH4\n", + "Jx1VjpfP8/0cvz9L8rPdL/PS95DIV//tdufzebl/MBjo7OxMknRycqL5fK7FYqGzs7NOv9xX3ucx\n", + "um3zb2VlpVzvfq+urmplZUVra2vl89XV1dI3f+/71tbWNBgMtLKyUr73vb7O/fAzJWk+n+vs7Eyn\n", + "p6c6OTnR6empjo+PJUmz2Uyz2UxnZ2c6OzvTdDot43Pbq6urha85d23b6uzsrDM2X+f+sR32lfeb\n", + "b6enp6W/Jycnl9bBYrFQ27YdnrkdEvtLWXAfSOvr6+U6yvLKykpZU+6Tn3N2dtaRi9PT0yIz5oHX\n", + "p+cq57Bt2zLffObZ2dklHZAyzb7kGC2P8/m8fMd1nOs++8223EZtTS1bl9RVlo1cp+4jn+371tbW\n", + "tLKyUtaI52gwGGg8Hms4HGo0GpU2LZ8ep/uc7fr5ptXV1fIzGo3KnGU/Z7OZjo6OdHJyXi9/fHys\n", + "k5MTHR8fa39/X7PZrHOv1+dgMNBsNtPp6WlHH3D+qE/5v+eLvLWs+Huubz8v9bWfSX3n+9q2LfJt\n", + "vtV4Zdvk/1dXV8sapL7ydysrK1pfX+/MI+ns7KzMK9e9pKKL5vO5ZrNZGZ919Gw203w+78ilx8Hx\n", + "5/z7/tXV1aodSVk+OzvT2tqatra2tL6+rvX1dY1G528yGo/HGo1GHVvHZ7m/bdtqZWVFk8mkyM3R\n", + "0VFn/LQltD2eY/LIY1wsFh09NhqNihxT1wwGA62trZX7PW+cX//YP+AYTk5OOuvTbQ4GA62vr+tv\n", + "/+2/Xd1d/FAP5OTkp3GpkYW7ptxSWbr9FOhUvlRwXNxcvOwrhY6LM9uuKWE6HxQMGxLyo+YUuR90\n", + "xmqGM9twX7y4OEb/b8UkXRhezwevYz+TJzlGj82fe6HZQNvBPT09VdM0Rei9+Gu8oMHwuOikeBFQ\n", + "yfNzf0cn0f3zdTZSVLocHwOAmhOZPHe/05Fi36yI3A5/WxH6s1zo6USQas6Vx2eniW36ev+4Xx6D\n", + "nU+PwfflWkonM+Uz1yWNDOfE8lbTC/zMz2a77puNPOc428hgin9TFvkcyg+NOR0o3pPt+38avGXO\n", + "oQ0Ency1tbXyXDvGkooTs76+Xox/ytNoNCpGkkZrNpsVZ97P9H1ux/JKPnrsdrBozNx2zQiTGBT6\n", + "mXTO2VeOJYljTVmkITWPvG7szDMoonw/SD/bAbY+SpmhLPh5/JyBrXShE8kH/+9167mogQm5HpYF\n", + "IPx7fX298MUOYwZZvp5OiHnlZ9jx87gsjx57ggnU2an/amtQurAD7hPXBfuba926NGWQPPZaok7k\n", + "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\n", + "2NUCh0RoMmD1/+4j59BE5I9tZPCYRLTOlGtpsVh0shj+3g4nA2/OE/tDx9C6r3aauH8c0PCQ3lyH\n", + "tJF2qDLYdXBOu2eZoZ3MdWE7yzSybQk3G5GPtTdYkPrjD3rqqaeeeuqpp57eIz201F7CqvSsCd2Z\n", + "GCHYm5S61faZ1mPqypHgsr64DT+LxXgZRRAurD3PkQCjRLaRkYuvZWozoWEjUtx95H44leI0nr+z\n", + "p15DJ/w8w+xE/Lg7LfvOMTGSky5OsDaqwkjJJzS7qDhrpIjesG0fYkqkg2NwxJoIEcl9ycithjqY\n", + "h0RNWL/A1FvC6cy953icsmKtBIua3Uby4vT0VFevXi01KbPZrPqeMm9ZJ2LjPhPql87lb2dnR2+8\n", + "8Yb29vY0Go107949Sec1Ui7Y9An95Nd4PNbNmzf11ltvaWdnp5yy/gM/8AP6sR/7MX3+85/XeDzu\n", + "FPUmypepW6ZmiEwxhZG7fKXL6VDWybi/5u90Oi0v2t7b29Pu7m4H4eb6NkpDxMdk1LUmb0ZULW+W\n", + "7zz0j+05Emb9D9tj1E2+pZxTJ/r7rKeULlAAIgxc5y7Mns1m2tvb69Tj+aDd4+Pjcp3bPTg4KDK6\n", + "v7+v9fX1zsu1XWDutczdfp73GoJOBJ96kbKSfOManc/PDzM9OjqSpLLJwvqA2QevedbPEL1x/410\n", + "mizT7Lfvs462vuUYuLa4a9FjYEkB7yM66bXBZ/vafB6/8/wbneH8N01T3syRqS+uE/aV9Vsso7H9\n", + "mc/n5a0BlEmm39Lm8busS+Q9HANLZJj29HfWI7QdHvsyf6TmWyQ9tGLzXBiZWuNvKjoyzERG5nOY\n", + "6qNSNLxdWxg0hMvqO7i4KVy+Lx0iO2W11JH7wUllLQPz2ePxuJO+Y/7d4yJ5gVqxG25PA0VF8CAj\n", + "zDGyv5LKrq2VlZVSP1WD6W1obPRy9555JV0cjZBC7fGzHfad8uScPw1rKqZ0lphL59j5N6Fo85Dp\n", + "nZp8u26KTgqdQ9eJcDv+wcGBHn30UV27dq3jTHj+bAzdrr8zP1dWVjppVs+Nzxh75JFHdPfu3fI8\n", + "pxn39vY0GAyKETo7O9OLL76oGzduaHNzUy+99JK+//u/X9J5uuynfuqn9Fu/9VulH56X7FMqb64z\n", + "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\n", + "GP3kJ+dgWSrIay1T1myHae1MvdLp9ny4loY8cPDkMTBtMJvNykn0kkr9mNtyP3k2mbe/MwWeqS2m\n", + "wi3nW1tbJf24urqqra0tPf/885KkH/zBH9T6+rr29/dLoOW5dyrQKRwaVAYJJpYf1D73b+vIzc3N\n", + "kh65fv26pHMZtm7i7i7LFNdJzhsLgvk9U4TWK2kvfG06Jf5tOedYUr9mfQ31BuWCuiJrNX29HQ46\n", + "GQw8Ux8nr/J0dbfB8fhvp9n4mZ/DoJ3OkqQim4PBQEdHRx1nQlJZE7zPMkTeeR0zRWqnjvPCE8S5\n", + "HmtUq/NiDRo/J/8pw94tzlRr8i+DNa/1lE3SQ0OkpMuM4UKgAGW0mYZ12QBr9VNs320lYsXiRgs3\n", + "PXMvIhtTCrgXiwududi9WOxMcXw03ByPc73Og9cKQL04lu1CqDlDHov7yMXEZyS//DcRuf39/fKd\n", + "x8KdGKamacpWaBohOjFZm5BzmMTIJZ9nZyqjFCqCZYuGTnWNd7PZrER+fB5rRei4Ek00OkgZtDGY\n", + "TqflBa+SdO3aNY3H44IicZ7sxI7H44IG8fUNX/7yl/XpT39aP/qjP6ovfOELnV1z0+m07LjiqyLW\n", + "1ta0t7enjY0N7e3taTgclgMbrbRu3rxZNjP4u+l0quvXr+vu3bu6ffu2nnrqqeLwra2taWtrS5/+\n", + "9Kf1xS9+Uffu3SvPu3btmkajkW7fvl0KvRPFowOURa+pI/Je8pjyRmQv5d9zMB6POzUtNEBZQ2LZ\n", + "nc/npX7M49/a2tJ4PO44UkSBiJwx8nX/WQNnx9UbE2ycXnjhBX3qU58q/Day0DRNeRWOx+pNA96B\n", + "6bE70KOxJZ2dnRV01I4TdYwPap1MJjo8PCx9HY1GOjo6KhtTuHvZ+rOWOSCvuZPS47dRtA6nk+Qx\n", + "eI3TcfNYjPARkTF5rhhYEY16kD0iscYs2yBSaR3vdliDSTTHcph94jwOBoOy25Q2iJS6h2M2r9fX\n", + "1zsv6SaaSN3pAMvPotzQGfT8kXfc6ETUyXNG5yrXdr4OymNIZ4rO6bIA2faoZpf8Wa0+s4xj6Tff\n", + "QaoNJCk9bE52DZ1IzzvbMtGY0nEjskO0ytcQzqfDlTvWfD/bYB8o8Bnp+p6Eov3MLJz3c3xCLXcv\n", + "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\n", + "n59+FodZjgAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Load the net, list its data and params, and filter an example image.\n", + "caffe.set_mode_cpu()\n", + "net = caffe.Net('net_surgery/conv.prototxt', caffe.TEST)\n", + "print(\"blobs {}\\nparams {}\".format(net.blobs.keys(), net.params.keys()))\n", + "\n", + "# load image and prepare as a single input batch for Caffe\n", + "im = np.array(caffe.io.load_image('images/cat_gray.jpg', color=False)).squeeze()\n", + "plt.title(\"original image\")\n", + "plt.imshow(im)\n", + "plt.axis('off')\n", + "\n", + "im_input = im[np.newaxis, np.newaxis, :, :]\n", + "net.blobs['data'].reshape(*im_input.shape)\n", + "net.blobs['data'].data[...] = im_input" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The convolution weights are initialized from Gaussian noise while the biases are initialized to zero. These random filters give output somewhat like edge detections." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAicAAACbCAYAAAC5xzv6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvVuMbVl2pvWvfb/FjkueW568VN5dXSUbl4sHbBBYbYRK\n", + "jRqEJW7qfkD90MItN4gGgQC3QHYJiwdejJFfcNvgRtBuaBAPyA9gt5FBcrnc1bbLVemqPFmZlZdz\n", + "TuaJc+KybxH7sniI8839rxFrx4lMU7mjKveQQhGx97rMNeeYY/zjH2POleV5ro1sZCMb2chGNrKR\n", + "qyKVdTdgIxvZyEY2spGNbMRlA042spGNbGQjG9nIlZINONnIRjaykY1sZCNXSjbgZCMb2chGNrKR\n", + "jVwp2YCTjWxkIxvZyEY2cqVkA042spGNbGQjG9nIlZJPDTjJsuyHsiz7x1mWHWVZ9jezLPuVLMt+\n", + "7vF3P5ll2TvrbuNGNvJxZKPbG/lBlY1uf3rlUwNOJP2Hkv6vPM/7eZ7/13me/0ye518uOzDLsrey\n", + "LPuL36uGZFn2lSzLXsmy7KUsy/4wfLeXZdn/mmXZ4HE7/s3vURv+8yzLfuOqXm8jH0m+X3T7Z7Ms\n", + "+2qWZZMsy37te9iGjW7/4MiV1+0syxpZlv3q4/sfZVn2tSzLvvQ9asOnRrc/TeDkM5K+ccljc0nZ\n", + "x7lJ9lgu+L4u6fk8z9+Q9EVJfxgO+W8kTSTdkPRXJP1KlmWf+zht2cinRr5fdPs9Sb8g6e98nPtv\n", + "5FMp3w+6XZP0XUn/bJ7nfUk/J+k3syz7zMdpy0YeS57nP/A/kn5b0kzSWNKRpFcl/bqkX3j8/U9K\n", + "eufx378haS5pJOlY0n/w+PN/StL/K+mRpH8s6Z+z6/9DSV+W9P88Pu+lC9ryBUm//fjv/1LSz9h3\n", + "XUknkl6xz/47Sb+44lqZzibCW5LuPz62H5/Jjn9L0k9J+tLj+5w+fsav2XP8oqTfl3Qo6X+TtPtx\n", + "r7f52ej2iuN+QdKvPeG5Nrr9Kf/5ftRtO/6PJP0rG93+c4z/uhvwCSr670j6a/b/r0n6+bIBlPQd\n", + "SX/R/n9G0gNJX3r8/z//+P+nTDnekvQXdMZG1Uru/289niDDxxPhkaTp40n3UGcRwhckDcN5f0vS\n", + "/77imf6apG9LekFnwOZ/kfTfX6CU6bkk/Wcca9//Q0nvSvqcpI6k/1nSb3zc621+NrqNbofjv6wn\n", + "g5ONbm9+vu90+/E5N3UGqF5b8Uwb3b7Ez6cprSOdp/wuSwH+VUn/R57nvyVJeZ7/n5K+KulffPx9\n", + "LunX8zz/Zp7nizzPZ/ECeZ7/ep7nuzqjA39c0j8h6ev5WS51L8/ztyX1dKb0LseStla0669I+q/y\n", + "PH8rz/OhpP9Y0r+RZdllxjXT+efPdaao38jzfCTpb0v61y6iO59wvY18cnLVdbtwyiXatdHtjSDf\n", + "N7r9OP3zPzy+7rdWtGuj25eQTxs4uYxRLJPPSPpXsyx7xI+kf1rSLTtmZdX44yLXgyzLDiT9hM6Q\n", + "7uuSfujx9f7dx4cOJPXD6ds6Ayhl8rQknxzf1Vn+8+blHqtU/Dm+K6ku6dqf43ob+WTkqut24bRL\n", + "tGuj2xtBvi90+zG4+A2d1Qz+7AXt2uj2JaS27gasWVYpffz8uzqjyf76x7iW8jx/KGkny7J/XdJP\n", + "5nn+M1mW/QNJv5zn+W/bod+SVMuy7JX8rPBKeozUV1z6fZ1Rg8jzOsvR3pf0rM4oPklSlmVVSdcv\n", + "0d7nw99TnVGhw495vY2sR66abl/qeiYb3d7IKrlyuv2YpfhVnenNX8rzfH7BPTe6fQn5tDEnWfh7\n", + "VQR3X9LL9v/flfSXsyz7F7Isq2ZZ1nq8xv6ZFddeJf+kpH/0+O8vKKxmeEzx/QNJP59lWSfLsn9G\n", + "0l/WGRovk/9R0r+XZdkLWZb1JP0Xkv6nPM8XOgM6rSzL/tJjqvHnJDXt3HuSXgjUXybpr2ZZ9hey\n", + "LOtI+nlJfz8/S05+nOtt5JOTK63b0plhzLKspbOgqJplWfOxsSyTjW5vBLnyui3pVyR9VtK/lOf5\n", + "yROut9HtS8inDZzk4e/4P/KLkn7uMXX3t/I8f1fSvyzpP5H0gc4Q+b+vomJfBoH+mKR/lGXZU5Jm\n", + "eZ4flhzzNyS1H9/n70r6t/M8/+aK6/0dnQGX/1vSmzor2PqbkvT42n9D0n+rs2KpgYrU399//Hs/\n", + "y7Kv2jP8hs4q4u9Kakj6d/4c19vIJyffD7r9t3Wmo/+RzuoBxpL+0xXX2+j2RpArrduPlwz/dZ2x\n", + "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\n", + "FLNDKhgqnuXwEMfS+Dx06A8//FCOgHNyiPlmDh4fH/Pdd98VT4BTRskWyPB3DC1z6hg13/Emd0Ip\n", + "NQr+rBTyv7Ixz05GTRoQ7JguSof8KR/DZHwOESUN64IHBFMC24hS9f6pQ172dmAnqQ/B+mPweZeP\n", + "hLKPzF45yZCGbAHCkHufdKvDr8zXcrksoA2vEqAH43lwcFBAlStR8j3+wN5gbCaTSdlnzLlP+5HM\n", + "BwgnTOky5svlMrPZrCTX393dZTAYZDqdlpu5fS0GLOJ6vS61fyaTSVkrG3fndlgudtW8fpeXl2X9\n", + "fcqF36PHAQUYNWQQZhemD6AL6+cCk+RNwMSyXrwHMIcXTz/ZYzCEDnOik5ElwvROCH16esrV1VXZ\n", + "G5YT7wdYOGSfvtEIj3D6hfkARMPS+fQN7DQ6HrtBCM3MInIOuwxYBGytVqtSa4s9CghbLpf5/vvv\n", + "W3k6zMn19XU6nU7r9ul+v5+PHz+W00Aw5AbzgCaYxufn59ze3ubgYHsIBSLBl9f+Ues4Fr5v+7Zv\n", + "+7Zv+7Zv+7brtvuqVfu2b/u2b/u2b/u2b2p7cLJv+7Zv+7Zv+7Zv31Tbg5N927d927d927d9+6ba\n", + "Hpzs277t277t277t2zfV9uBk3/Zt3/Zt3/Zt376ptgcn+7Zv+7Zv+7Zv+/ZNtT042bd927d927d9\n", + "27dvqu3Byb7t277t277t2759U20PTvZt3/Zt3/Zt3/btm2p7cLJv+7Zv+7Zv+7Zv31Tbg5N927d9\n", + "27d927d9+6baHpzs277t277t277t2zfV9uBk3/Zt3/Zt3/Zt376ptgcn+7Zv+7Zv+7Zv+/ZNtT04\n", + "2bd927d927d927dvqu3Byb7t277t277t2759U20PTvZt3/Zt3/Zt3/btm2p7cLJv+7Zv+7Zv+7Zv\n", + "31Tbg5N927d927d927d9+6baHpzs277t277t277t2zfV/i+IAQDEy/wsagAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# helper show filter outputs\n", + "def show_filters(net):\n", + " net.forward()\n", + " plt.figure()\n", + " filt_min, filt_max = net.blobs['conv'].data.min(), net.blobs['conv'].data.max()\n", + " for i in range(3):\n", + " plt.subplot(1,4,i+2)\n", + " plt.title(\"filter #{} output\".format(i))\n", + " plt.imshow(net.blobs['conv'].data[0, i], vmin=filt_min, vmax=filt_max)\n", + " plt.tight_layout()\n", + " plt.axis('off')\n", + "\n", + "# filter the image with initial \n", + "show_filters(net)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Raising the bias of a filter will correspondingly raise its output:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pre-surgery output mean -0.02\n", + "post-surgery output mean 0.98\n" + ] + } + ], + "source": [ + "# pick first filter output\n", + "conv0 = net.blobs['conv'].data[0, 0]\n", + "print(\"pre-surgery output mean {:.2f}\".format(conv0.mean()))\n", + "# set first filter bias to 1\n", + "net.params['conv'][1].data[0] = 1.\n", + "net.forward()\n", + "print(\"post-surgery output mean {:.2f}\".format(conv0.mean()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Altering the filter weights is more exciting since we can assign any kernel like Gaussian blur, the Sobel operator for edges, and so on. The following surgery turns the 0th filter into a Gaussian blur and the 1st and 2nd filters into the horizontal and vertical gradient parts of the Sobel operator.\n", + "\n", + "See how the 0th output is blurred, the 1st picks up horizontal edges, and the 2nd picks up vertical edges." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAicAAACbCAYAAAC5xzv6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvWuMbNl13/c/9eh6V7/uvT1zHzNDzgw5HNIWNInpMCEi\n", + "2wkCwYElBFASBTLg2DCM2LATSAkSJ5GlWDJi5EMAA0ngL/EjkQPFcuIQgREEcCIbAkJD9JhDgdJ4\n", + "yOFjHnfuq2/fflV1VXc9Tj7U/e3+1+pTfe+MqOkmWQtodHfVOfvsvfbaa/3XY++T5XmuJS1pSUta\n", + "0pKWtKTLQqWL7sCSlrSkJS1pSUtaktMSnCxpSUta0pKWtKRLRUtwsqQlLWlJS1rSki4VLcHJkpa0\n", + "pCUtaUlLulS0BCdLWtKSlrSkJS3pUtESnCxpSUta0pKWtKRLRT804CTLsk9nWfa1LMsOsiz7C1mW\n", + "/fUsy37+8Xd/KMuy9y+6j0ta0kehpWwv6QeVlrL9w0s/NOBE0n8q6f/N87yb5/l/l+f5n83z/K8U\n", + "XZhl2TtZlv2R36uOZFn2lSzLXsqy7JNZlv2z8N1GlmX/R5Zlvcf9+Pd+j/rwX2VZ9iuXtb0lfSj6\n", + "fpHtP59l2etZlg2zLPtbv4d9WMr2Dw5detnOsmwly7K/8fj5B1mWvZFl2Y//HvXhh0a2f5jAyfOS\n", + "3nzKa3NJ2Ud5SPaYzvm+Kum5PM+/JelfkPTPwiX/g6ShpGuSfkbSX8+y7NWP0pcl/dDQ94tsfyDp\n", + "lyX9zY/y/CX9UNL3g2xXJL0n6V/N87wr6ecl/VqWZc9/lL4s6THlef4D/yPp1yWNJQ0kHUh6WdLf\n", + "lvTLj7//Q5Lef/z3r0iaSDqSdCjpP3n8+b8k6cuSdiV9TdKPWfv/WNJfkfT/Pb7vk+f05Ucl/frj\n", + "v/8bSX/WvmtJOpb0kn32P0n6qwvayjRbCO9Iuv/42m4ck13/jqR/TdKPP37OyeMxvmHj+KuSflPS\n", + "vqQvSVr/qO0tf5ayveC6X5b0t54wrqVs/5D/fD/Ktl3/W5L+raVs/y7m/6I78DEK+j+S9Kfs/78l\n", + "6ZeKJlDSdyX9Efv/hqSHkn788f//+uP/N0043pH0Gc2iUZWC5//7jxdI//FC2JU0erzoHmnmIfyo\n", + "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\n", + "AmRZhjAMbT4IJ1YyK8Dab1EU9j5YvgG+Z9qz7MFOhUE4/2+slXMZJScsukuD2aE3Gg30+31kWWaT\n", + "dFmmKYoCcRyj3W7bKO3u7s5q54vFAo3Gn8PMtra2EEURgO8SJ1dAMbOSZRmSJMFyucTR0RHKskQc\n", + "xzZ/jW0FU+gsD7y/v2OxWNiW5aPRCFEU4devPycEJ0mCwWCAy8tLALBSQL1eR7vdxnQ6xWq1Qq/X\n", + "w+npqa3E6ff7uL6+xnA4tH0mmPpvtVq4vb3FZDJBu90GANuwi/uZcE5LrVazn+H15qFvP4VbnvOz\n", + "cGUR2wTOdeA2/rwX+Bn5DLME4GYBWBbic+IGLNyXZz6f22ohzm1ie8jyEjtkZlYY1PF7LK8wU8Hs\n", + "DOdBuFkaljFZVuPnYhmZmbMgCGxSLU8qZtnIDeA4x6LX61l5lgNR7jDLVUYciLJcyu9z1Q8DRban\n", + "HARwPhcACwhZvmIWpt/v2yq0x8dHHBwc4P7+Hru7u7ZUmXufrNdrdDodO/n46enJBjd85jnp+PPz\n", + "E+Px2PaKeX193TgLrNFoWNvIoNTdb+m//PO3DlJERETkJ/z8YSQiIiIiDgUnIiIi4hUFJyIiIuIV\n", + "BSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUnIiIi4hUF\n", + "JyIiIuIVBSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUn\n", + "IiIi4pXfPRZNtgyLF3IAAAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ksize = net.params['conv'][0].data.shape[2:]\n", + "# make Gaussian blur\n", + "sigma = 1.\n", + "y, x = np.mgrid[-ksize[0]//2 + 1:ksize[0]//2 + 1, -ksize[1]//2 + 1:ksize[1]//2 + 1]\n", + "g = np.exp(-((x**2 + y**2)/(2.0*sigma**2)))\n", + "gaussian = (g / g.sum()).astype(np.float32)\n", + "net.params['conv'][0].data[0] = gaussian\n", + "# make Sobel operator for edge detection\n", + "net.params['conv'][0].data[1:] = 0.\n", + "sobel = np.array((-1, -2, -1, 0, 0, 0, 1, 2, 1), dtype=np.float32).reshape((3,3))\n", + "net.params['conv'][0].data[1, 0, 1:-1, 1:-1] = sobel # horizontal\n", + "net.params['conv'][0].data[2, 0, 1:-1, 1:-1] = sobel.T # vertical\n", + "show_filters(net)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With net surgery, parameters can be transplanted across nets, regularized by custom per-parameter operations, and transformed according to your schemes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Casting a Classifier into a Fully Convolutional Network\n", + "\n", + "Let's take the standard Caffe Reference ImageNet model \"CaffeNet\" and transform it into a fully convolutional net for efficient, dense inference on large inputs. This model generates a classification map that covers a given input size instead of a single classification. In particular a 8 $\\times$ 8 classification map on a 451 $\\times$ 451 input gives 64x the output in only 3x the time. The computation exploits a natural efficiency of convolutional network (convnet) structure by amortizing the computation of overlapping receptive fields.\n", + "\n", + "To do so we translate the `InnerProduct` matrix multiplication layers of CaffeNet into `Convolutional` layers. This is the only change: the other layer types are agnostic to spatial size. Convolution is translation-invariant, activations are elementwise operations, and so on. The `fc6` inner product when carried out as convolution by `fc6-conv` turns into a 6 $\\times$ 6 filter with stride 1 on `pool5`. Back in image space this gives a classification for each 227 $\\times$ 227 box with stride 32 in pixels. Remember the equation for output map / receptive field size, output = (input - kernel_size) / stride + 1, and work out the indexing details for a clear understanding." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1,2c1\r\n", + "< # Fully convolutional network version of CaffeNet.\r\n", + "< name: \"CaffeNetConv\"\r\n", + "---\r\n", + "> name: \"CaffeNet\"\r\n", + "7,11c6\r\n", + "< input_param {\r\n", + "< # initial shape for a fully convolutional network:\r\n", + "< # the shape can be set for each input by reshape.\r\n", + "< shape: { dim: 1 dim: 3 dim: 451 dim: 451 }\r\n", + "< }\r\n", + "---\r\n", + "> input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }\r\n", + "157,158c152,153\r\n", + "< name: \"fc6-conv\"\r\n", + "< type: \"Convolution\"\r\n", + "---\r\n", + "> name: \"fc6\"\r\n", + "> type: \"InnerProduct\"\r\n", + "160,161c155,156\r\n", + "< top: \"fc6-conv\"\r\n", + "< convolution_param {\r\n", + "---\r\n", + "> top: \"fc6\"\r\n", + "> inner_product_param {\r\n", + "163d157\r\n", + "< kernel_size: 6\r\n", + "169,170c163,164\r\n", + "< bottom: \"fc6-conv\"\r\n", + "< top: \"fc6-conv\"\r\n", + "---\r\n", + "> bottom: \"fc6\"\r\n", + "> top: \"fc6\"\r\n", + "175,176c169,170\r\n", + "< bottom: \"fc6-conv\"\r\n", + "< top: \"fc6-conv\"\r\n", + "---\r\n", + "> bottom: \"fc6\"\r\n", + "> top: \"fc6\"\r\n", + "182,186c176,180\r\n", + "< name: \"fc7-conv\"\r\n", + "< type: \"Convolution\"\r\n", + "< bottom: \"fc6-conv\"\r\n", + "< top: \"fc7-conv\"\r\n", + "< convolution_param {\r\n", + "---\r\n", + "> name: \"fc7\"\r\n", + "> type: \"InnerProduct\"\r\n", + "> bottom: \"fc6\"\r\n", + "> top: \"fc7\"\r\n", + "> inner_product_param {\r\n", + "188d181\r\n", + "< kernel_size: 1\r\n", + "194,195c187,188\r\n", + "< bottom: \"fc7-conv\"\r\n", + "< top: \"fc7-conv\"\r\n", + "---\r\n", + "> bottom: \"fc7\"\r\n", + "> top: \"fc7\"\r\n", + "200,201c193,194\r\n", + "< bottom: \"fc7-conv\"\r\n", + "< top: \"fc7-conv\"\r\n", + "---\r\n", + "> bottom: \"fc7\"\r\n", + "> top: \"fc7\"\r\n", + "207,211c200,204\r\n", + "< name: \"fc8-conv\"\r\n", + "< type: \"Convolution\"\r\n", + "< bottom: \"fc7-conv\"\r\n", + "< top: \"fc8-conv\"\r\n", + "< convolution_param {\r\n", + "---\r\n", + "> name: \"fc8\"\r\n", + "> type: \"InnerProduct\"\r\n", + "> bottom: \"fc7\"\r\n", + "> top: \"fc8\"\r\n", + "> inner_product_param {\r\n", + "213d205\r\n", + "< kernel_size: 1\r\n", + "219c211\r\n", + "< bottom: \"fc8-conv\"\r\n", + "---\r\n", + "> bottom: \"fc8\"\r\n" + ] + } + ], + "source": [ + "!diff net_surgery/bvlc_caffenet_full_conv.prototxt ../models/bvlc_reference_caffenet/deploy.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The only differences needed in the architecture are to change the fully connected classifier inner product layers into convolutional layers with the right filter size -- 6 x 6, since the reference model classifiers take the 36 elements of `pool5` as input -- and stride 1 for dense classification. Note that the layers are renamed so that Caffe does not try to blindly load the old parameters when it maps layer names to the pretrained model." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fc6 weights are (4096, 9216) dimensional and biases are (4096,) dimensional\n", + "fc7 weights are (4096, 4096) dimensional and biases are (4096,) dimensional\n", + "fc8 weights are (1000, 4096) dimensional and biases are (1000,) dimensional\n" + ] + } + ], + "source": [ + "# Load the original network and extract the fully connected layers' parameters.\n", + "net = caffe.Net('../models/bvlc_reference_caffenet/deploy.prototxt', \n", + " '../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel', \n", + " caffe.TEST)\n", + "params = ['fc6', 'fc7', 'fc8']\n", + "# fc_params = {name: (weights, biases)}\n", + "fc_params = {pr: (net.params[pr][0].data, net.params[pr][1].data) for pr in params}\n", + "\n", + "for fc in params:\n", + " print '{} weights are {} dimensional and biases are {} dimensional'.format(fc, fc_params[fc][0].shape, fc_params[fc][1].shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider the shapes of the inner product parameters. The weight dimensions are the output and input sizes while the bias dimension is the output size." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fc6-conv weights are (4096, 256, 6, 6) dimensional and biases are (4096,) dimensional\n", + "fc7-conv weights are (4096, 4096, 1, 1) dimensional and biases are (4096,) dimensional\n", + "fc8-conv weights are (1000, 4096, 1, 1) dimensional and biases are (1000,) dimensional\n" + ] + } + ], + "source": [ + "# Load the fully convolutional network to transplant the parameters.\n", + "net_full_conv = caffe.Net('net_surgery/bvlc_caffenet_full_conv.prototxt', \n", + " '../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel',\n", + " caffe.TEST)\n", + "params_full_conv = ['fc6-conv', 'fc7-conv', 'fc8-conv']\n", + "# conv_params = {name: (weights, biases)}\n", + "conv_params = {pr: (net_full_conv.params[pr][0].data, net_full_conv.params[pr][1].data) for pr in params_full_conv}\n", + "\n", + "for conv in params_full_conv:\n", + " print '{} weights are {} dimensional and biases are {} dimensional'.format(conv, conv_params[conv][0].shape, conv_params[conv][1].shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The convolution weights are arranged in output $\\times$ input $\\times$ height $\\times$ width dimensions. To map the inner product weights to convolution filters, we could roll the flat inner product vectors into channel $\\times$ height $\\times$ width filter matrices, but actually these are identical in memory (as row major arrays) so we can assign them directly.\n", + "\n", + "The biases are identical to those of the inner product.\n", + "\n", + "Let's transplant!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "for pr, pr_conv in zip(params, params_full_conv):\n", + " conv_params[pr_conv][0].flat = fc_params[pr][0].flat # flat unrolls the arrays\n", + " conv_params[pr_conv][1][...] = fc_params[pr][1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, save the new model weights." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "net_full_conv.save('net_surgery/bvlc_caffenet_full_conv.caffemodel')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To conclude, let's make a classification map from the example cat image and visualize the confidence of \"tiger cat\" as a probability heatmap. This gives an 8-by-8 prediction on overlapping regions of the 451 $\\times$ 451 input." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[282 282 281 281 281 281 277 282]\n", + " [281 283 283 281 281 281 281 282]\n", + " [283 283 283 283 283 283 287 282]\n", + " [283 283 283 281 283 283 283 259]\n", + " [283 283 283 283 283 283 283 259]\n", + " [283 283 283 283 283 283 259 259]\n", + " [283 283 283 283 259 259 259 277]\n", + " [335 335 283 259 263 263 263 277]]\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "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\n", + "A43ph1xlbAoPAAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "# load input and configure preprocessing\n", + "im = caffe.io.load_image('images/cat.jpg')\n", + "transformer = caffe.io.Transformer({'data': net_full_conv.blobs['data'].data.shape})\n", + "transformer.set_mean('data', np.load('../python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1))\n", + "transformer.set_transpose('data', (2,0,1))\n", + "transformer.set_channel_swap('data', (2,1,0))\n", + "transformer.set_raw_scale('data', 255.0)\n", + "# make classification map by forward and print prediction indices at each location\n", + "out = net_full_conv.forward_all(data=np.asarray([transformer.preprocess('data', im)]))\n", + "print out['prob'][0].argmax(axis=0)\n", + "# show net input and confidence map (probability of the top prediction at each location)\n", + "plt.subplot(1, 2, 1)\n", + "plt.imshow(transformer.deprocess('data', net_full_conv.blobs['data'].data[0]))\n", + "plt.subplot(1, 2, 2)\n", + "plt.imshow(out['prob'][0,281])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The classifications include various cats -- 282 = tiger cat, 281 = tabby, 283 = persian -- and foxes and other mammals.\n", + "\n", + "In this way the fully connected layers can be extracted as dense features across an image (see `net_full_conv.blobs['fc6'].data` for instance), which is perhaps more useful than the classification map itself.\n", + "\n", + "Note that this model isn't totally appropriate for sliding-window detection since it was trained for whole-image classification. Nevertheless it can work just fine. Sliding-window training and finetuning can be done by defining a sliding-window ground truth and loss such that a loss map is made for every location and solving as usual. (This is an exercise for the reader.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*A thank you to Rowland Depp for first suggesting this trick.*" + ] + } + ], + "metadata": { + "description": "How to do net surgery and manually change model parameters for custom use.", + "example_name": "Editing model parameters", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + }, + "priority": 5 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/net_surgery/bvlc_caffenet_full_conv.prototxt b/3rdparty/caffe/examples/net_surgery/bvlc_caffenet_full_conv.prototxt new file mode 100644 index 00000000..f8f5c3c3 --- /dev/null +++ b/3rdparty/caffe/examples/net_surgery/bvlc_caffenet_full_conv.prototxt @@ -0,0 +1,221 @@ +# Fully convolutional network version of CaffeNet. +name: "CaffeNetConv" +layer { + name: "data" + type: "Input" + top: "data" + input_param { + # initial shape for a fully convolutional network: + # the shape can be set for each input by reshape. + shape: { dim: 1 dim: 3 dim: 451 dim: 451 } + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + convolution_param { + num_output: 96 + kernel_size: 11 + stride: 4 + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "conv1" + top: "conv1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm1" + type: "LRN" + bottom: "pool1" + top: "norm1" + lrn_param { + local_size: 5 + alpha: 0.0001 + beta: 0.75 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "norm1" + top: "conv2" + convolution_param { + num_output: 256 + pad: 2 + kernel_size: 5 + group: 2 + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "norm2" + type: "LRN" + bottom: "pool2" + top: "norm2" + lrn_param { + local_size: 5 + alpha: 0.0001 + beta: 0.75 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "norm2" + top: "conv3" + convolution_param { + num_output: 384 + pad: 1 + kernel_size: 3 + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "conv4" + type: "Convolution" + bottom: "conv3" + top: "conv4" + convolution_param { + num_output: 384 + pad: 1 + kernel_size: 3 + group: 2 + } +} +layer { + name: "relu4" + type: "ReLU" + bottom: "conv4" + top: "conv4" +} +layer { + name: "conv5" + type: "Convolution" + bottom: "conv4" + top: "conv5" + convolution_param { + num_output: 256 + pad: 1 + kernel_size: 3 + group: 2 + } +} +layer { + name: "relu5" + type: "ReLU" + bottom: "conv5" + top: "conv5" +} +layer { + name: "pool5" + type: "Pooling" + bottom: "conv5" + top: "pool5" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "fc6-conv" + type: "Convolution" + bottom: "pool5" + top: "fc6-conv" + convolution_param { + num_output: 4096 + kernel_size: 6 + } +} +layer { + name: "relu6" + type: "ReLU" + bottom: "fc6-conv" + top: "fc6-conv" +} +layer { + name: "drop6" + type: "Dropout" + bottom: "fc6-conv" + top: "fc6-conv" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7-conv" + type: "Convolution" + bottom: "fc6-conv" + top: "fc7-conv" + convolution_param { + num_output: 4096 + kernel_size: 1 + } +} +layer { + name: "relu7" + type: "ReLU" + bottom: "fc7-conv" + top: "fc7-conv" +} +layer { + name: "drop7" + type: "Dropout" + bottom: "fc7-conv" + top: "fc7-conv" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc8-conv" + type: "Convolution" + bottom: "fc7-conv" + top: "fc8-conv" + convolution_param { + num_output: 1000 + kernel_size: 1 + } +} +layer { + name: "prob" + type: "Softmax" + bottom: "fc8-conv" + top: "prob" +} diff --git a/3rdparty/caffe/examples/net_surgery/conv.prototxt b/3rdparty/caffe/examples/net_surgery/conv.prototxt new file mode 100644 index 00000000..8671bb5b --- /dev/null +++ b/3rdparty/caffe/examples/net_surgery/conv.prototxt @@ -0,0 +1,27 @@ +# Simple single-layer network to showcase editing model parameters. +name: "convolution" +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 1 dim: 1 dim: 100 dim: 100 } } +} +layer { + name: "conv" + type: "Convolution" + bottom: "data" + top: "conv" + convolution_param { + num_output: 3 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } +} diff --git a/3rdparty/caffe/examples/pascal-multilabel-with-datalayer.ipynb b/3rdparty/caffe/examples/pascal-multilabel-with-datalayer.ipynb new file mode 100644 index 00000000..94b9b4fe --- /dev/null +++ b/3rdparty/caffe/examples/pascal-multilabel-with-datalayer.ipynb @@ -0,0 +1,479 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Multilabel classification on PASCAL using python data-layers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial we will do multilabel classification on PASCAL VOC 2012.\n", + "\n", + "Multilabel classification is a generalization of multiclass classification, where each instance (image) can belong to many classes. For example, an image may both belong to a \"beach\" category and a \"vacation pictures\" category. In multiclass classification, on the other hand, each image belongs to a single class.\n", + "\n", + "Caffe supports multilabel classification through the SigmoidCrossEntropyLoss layer, and we will load data using a Python data layer. Data could also be provided through HDF5 or LMDB data layers, but the python data layer provides endless flexibility, so that's what we will use." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Preliminaries\n", + "\n", + "* First, make sure you compile caffe using\n", + "WITH_PYTHON_LAYER := 1\n", + "\n", + "* Second, download PASCAL VOC 2012. It's available here: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html\n", + "\n", + "* Third, import modules:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import sys \n", + "import os\n", + "\n", + "import numpy as np\n", + "import os.path as osp\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from copy import copy\n", + "\n", + "% matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (6, 6)\n", + "\n", + "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", + "sys.path.append(caffe_root + 'python')\n", + "import caffe # If you get \"No module named _caffe\", either you have not built pycaffe or you have the wrong path.\n", + "\n", + "from caffe import layers as L, params as P # Shortcuts to define the net prototxt.\n", + "\n", + "sys.path.append(\"pycaffe/layers\") # the datalayers we will use are in this directory.\n", + "sys.path.append(\"pycaffe\") # the tools file is in this folder\n", + "\n", + "import tools #this contains some tools that we need" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Fourth, set data directories and initialize caffe" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set data root directory, e.g:\n", + "pascal_root = osp.join(caffe_root, 'data/pascal/VOC2012')\n", + "\n", + "# these are the PASCAL classes, we'll need them later.\n", + "classes = np.asarray(['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'])\n", + "\n", + "# make sure we have the caffenet weight downloaded.\n", + "if not os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):\n", + " print(\"Downloading pre-trained CaffeNet model...\")\n", + " !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet\n", + "\n", + "# initialize caffe for gpu mode\n", + "caffe.set_mode_gpu()\n", + "caffe.set_device(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Define network prototxts\n", + "\n", + "* Let's start by defining the nets using caffe.NetSpec. Note how we used the SigmoidCrossEntropyLoss layer. This is the right loss for multilabel classification. Also note how the data layer is defined." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# helper function for common structures\n", + "def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1):\n", + " conv = L.Convolution(bottom, kernel_size=ks, stride=stride,\n", + " num_output=nout, pad=pad, group=group)\n", + " return conv, L.ReLU(conv, in_place=True)\n", + "\n", + "# another helper function\n", + "def fc_relu(bottom, nout):\n", + " fc = L.InnerProduct(bottom, num_output=nout)\n", + " return fc, L.ReLU(fc, in_place=True)\n", + "\n", + "# yet another helper function\n", + "def max_pool(bottom, ks, stride=1):\n", + " return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride)\n", + "\n", + "# main netspec wrapper\n", + "def caffenet_multilabel(data_layer_params, datalayer):\n", + " # setup the python data layer \n", + " n = caffe.NetSpec()\n", + " n.data, n.label = L.Python(module = 'pascal_multilabel_datalayers', layer = datalayer, \n", + " ntop = 2, param_str=str(data_layer_params))\n", + "\n", + " # the net itself\n", + " n.conv1, n.relu1 = conv_relu(n.data, 11, 96, stride=4)\n", + " n.pool1 = max_pool(n.relu1, 3, stride=2)\n", + " n.norm1 = L.LRN(n.pool1, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv2, n.relu2 = conv_relu(n.norm1, 5, 256, pad=2, group=2)\n", + " n.pool2 = max_pool(n.relu2, 3, stride=2)\n", + " n.norm2 = L.LRN(n.pool2, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv3, n.relu3 = conv_relu(n.norm2, 3, 384, pad=1)\n", + " n.conv4, n.relu4 = conv_relu(n.relu3, 3, 384, pad=1, group=2)\n", + " n.conv5, n.relu5 = conv_relu(n.relu4, 3, 256, pad=1, group=2)\n", + " n.pool5 = max_pool(n.relu5, 3, stride=2)\n", + " n.fc6, n.relu6 = fc_relu(n.pool5, 4096)\n", + " n.drop6 = L.Dropout(n.relu6, in_place=True)\n", + " n.fc7, n.relu7 = fc_relu(n.drop6, 4096)\n", + " n.drop7 = L.Dropout(n.relu7, in_place=True)\n", + " n.score = L.InnerProduct(n.drop7, num_output=20)\n", + " n.loss = L.SigmoidCrossEntropyLoss(n.score, n.label)\n", + " \n", + " return str(n.to_proto())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Write nets and solver files\n", + "\n", + "* Now we can crete net and solver prototxts. For the solver, we use the CaffeSolver class from the \"tools\" module" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "workdir = './pascal_multilabel_with_datalayer'\n", + "if not os.path.isdir(workdir):\n", + " os.makedirs(workdir)\n", + "\n", + "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet.prototxt\"))\n", + "solverprototxt.sp['display'] = \"1\"\n", + "solverprototxt.sp['base_lr'] = \"0.0001\"\n", + "solverprototxt.write(osp.join(workdir, 'solver.prototxt'))\n", + "\n", + "# write train net.\n", + "with open(osp.join(workdir, 'trainnet.prototxt'), 'w') as f:\n", + " # provide parameters to the data layer as a python dictionary. Easy as pie!\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'train', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))\n", + "\n", + "# write validation net.\n", + "with open(osp.join(workdir, 'valnet.prototxt'), 'w') as f:\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'val', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* This net uses a python datalayer: 'PascalMultilabelDataLayerSync', which is defined in './pycaffe/layers/pascal_multilabel_datalayers.py'. \n", + "\n", + "* Take a look at the code. It's quite straight-forward, and gives you full control over data and labels.\n", + "\n", + "* Now we can load the caffe solver as usual." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BatchLoader initialized with 5717 images\n", + "PascalMultilabelDataLayerSync initialized for split: train, with bs: 128, im_shape: [227, 227].\n", + "BatchLoader initialized with 5823 images\n", + "PascalMultilabelDataLayerSync initialized for split: val, with bs: 128, im_shape: [227, 227].\n" + ] + } + ], + "source": [ + "solver = caffe.SGDSolver(osp.join(workdir, 'solver.prototxt'))\n", + "solver.net.copy_from(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", + "solver.test_nets[0].share_with(solver.net)\n", + "solver.step(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Let's check the data we have loaded." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nx67imaaZ79+/8/r2qp7touzpTz3vHw+K8by8/Mpjmpi3AMctS/qoRReSJIdSpal5n3lItNnefTdi\nsXmoaHZNv3iPyKnSOxlWd07kbdaIWqTkhC2ZVm9/KWUdNjoMYji1xUzImaBS3BDECKrozWFeAnOX\nGPrEqbNcxw5rWzUDM7Te45t8zFQMYvhmjSzH3aeJIP4Uh5rFmEzjRZrXNA3bGiCvmJA4W8fZOVwR\nz6OYxOQNJ/Ob/WQMHHMsw956yvpyM3obkpqekB629eIljzW63q+e9EUHnMVIazDp4NQYknSDxGLD\nON02LTozKseSWMhR5OlGNo/3Fufecv0sS9bBFllzYMmaUuU8XdernNdRise7XtuTjfyP0o3v7x/c\nHguLGo6J4m6Pdksafu3URiAQU9ZCbnbNx7/X1M+LFZVKpVJ5Pv7YE7FSqVQqT0Mt5JVKpfLk1EJe\nqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk\n1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVK\npfLk1EJeqVQqT04t5JVKpfLk/AsNeRHC6zkzzAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "transformer = tools.SimpleTransformer() # This is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", + "image_index = 0 # First image in the batch.\n", + "plt.figure()\n", + "plt.imshow(transformer.deprocess(copy(solver.net.blobs['data'].data[image_index, ...])))\n", + "gtlist = solver.net.blobs['label'].data[image_index, ...].astype(np.int)\n", + "plt.title('GT: {}'.format(classes[np.where(gtlist)]))\n", + "plt.axis('off');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* NOTE: we are readin the image from the data layer, so the resolution is lower than the original PASCAL image." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Train a net.\n", + "\n", + "* Let's train the net. First, though, we need some way to measure the accuracy. Hamming distance is commonly used in multilabel problems. We also need a simple test loop. Let's write that down. " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def hamming_distance(gt, est):\n", + " return sum([1 for (g, e) in zip(gt, est) if g == e]) / float(len(gt))\n", + "\n", + "def check_accuracy(net, num_batches, batch_size = 128):\n", + " acc = 0.0\n", + " for t in range(num_batches):\n", + " net.forward()\n", + " gts = net.blobs['label'].data\n", + " ests = net.blobs['score'].data > 0\n", + " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", + " acc += hamming_distance(gt, est)\n", + " return acc / (num_batches * batch_size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Alright, now let's train for a while" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "itt:100 accuracy:0.9526\n", + "itt:200 accuracy:0.9563\n", + "itt:300 accuracy:0.9582\n", + "itt:400 accuracy:0.9586\n", + "itt:500 accuracy:0.9597\n", + "itt:600 accuracy:0.9591\n" + ] + } + ], + "source": [ + "for itt in range(6):\n", + " solver.step(100)\n", + " print 'itt:{:3d}'.format((itt + 1) * 100), 'accuracy:{0:.4f}'.format(check_accuracy(solver.test_nets[0], 50))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Great, the accuracy is increasing, and it seems to converge rather quickly. It may seem strange that it starts off so high but it is because the ground truth is sparse. There are 20 classes in PASCAL, and usually only one or two is present. So predicting all zeros yields rather high accuracy. Let's check to make sure." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Baseline accuracy:0.9238\n" + ] + } + ], + "source": [ + "def check_baseline_accuracy(net, num_batches, batch_size = 128):\n", + " acc = 0.0\n", + " for t in range(num_batches):\n", + " net.forward()\n", + " gts = net.blobs['label'].data\n", + " ests = np.zeros((batch_size, len(gts)))\n", + " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", + " acc += hamming_distance(gt, est)\n", + " return acc / (num_batches * batch_size)\n", + "\n", + "print 'Baseline accuracy:{0:.4f}'.format(check_baseline_accuracy(solver.test_nets[0], 5823/128))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### 6. Look at some prediction results" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAGJCAYAAACXcbjTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXusfUty1/epXmvtfc7ved93Zjwvhgz4gQciRgnCQIhM\nLCvEECk45iWEnKBABETExDwE2CYJFkEhIUoiokRgGCNsHJwIIuQACiQIcBIr2AlMGOzYHo/v3LnP\n3/09zzl7r+7KH9WP6rXX+f3uzHh85o53X93f2XvtXt3V1d3fqq6urhZV5ZiO6ZiO6ZjeuSlcNQHH\ndEzHdEzH9PmlI5Af0zEd0zG9w9MRyI/pmI7pmN7h6Qjkx3RMx3RM7/B0BPJjOqZjOqZ3eDoC+TEd\n0zEd0zs8HYH8mK40icivFpEkIvdE5Os+y3e/S0T+w8+x3j8kIv/t5/LuOz2JyC8QkQciMovIv3XV\n9BzT55+OQH5MbzuJyG8Ukf89g8ArIvKDIvK7ROT9+dn9/H9afP+aJxT9kqreUtW/mev57SLy598G\nSZr//6yTqn6nqv6Oy34XkQ+KyE885vf0udR7VUlEvl1Evg1AVf+Zqt4A/h6fI/+O6YsrHYH8mN5W\nEpFvAf5z4E8CL6rqi8DvBL4GeFlVb6jqTVW9mV/5SPmuqn//isj+nJKIjFdUr4iIfIGKPwL2l3A6\nAvkxPTGJyG3gO4Dfparfr6oPAVT1h1X1t6rq/me4yk7TFpFfISL/QETuiMhPichvc3mfEZH/KZtm\nflBEPuTe+zM5/10R+SER+RXut28XkY/lzx/Mq4hvFpFPAn97ScMlNJay/q6IfGderdwVkf9RRJ52\nv/8yR/8Pi8i/tHj3PxKRvw88BD6UVyT/X27Tj4vIb855RUT+iIj8ZF4R/QURubVow28TkU+KyGsi\n8ocvo/mYvsSSqh7/P/7/2P+Brwf2QHib+RPwIff9rwPfekneXw186jFlfQC4B3wTMADPAL84//Zd\nwOvAR/Nv3w38ZffubwGexhSWfx94Gdjk374N+Fj+/MFM83cBp8D2s+TP3wV+GvhK4Brw37uyvyzT\n+PX5+6/J35917/4k8BWZztvAXeDD+fcXga/Mn78Z+NFM73XgrwJ/cdGG/wbYAh8BzoEvfwzdfwf4\n5qseX8f/P///jxr5Mb2d9BzwuqpWu7DTMB+JyK983Muq+g2q+p98jnX/ZuBvqer3qmpU1TdV9UdK\n0cD3q+oPqWoE/hLwS1y9f0lV76hqUtU/jQHcLyxNWKnr21X1TFUvPksaFQPUj6vqI+CPAv+miATg\ntwJ/Q1V/INP0t4EfAn6te/e7VPX/zfydMUD+ahE5VdVXVPXjOe9vAf5TVf1JtVXRHwJ+Y66npO9Q\n1QtV/b+BHwF+8WfZlmN6B6YjkB/T20lvAM95wFDVX66qT+ffvlB2XYD3Aj/+mN9fcZ/PgBvli4j8\nfhH5uIi8JSJ3MG33uceU9anPg07/7k8BU67rA8A3ZqF3J9PxNcC71t7NAP1N2P7Dp7PZqAifdwOf\nXNQzYlp7SZ9xnx9hmvsxfYmnI5Af09tJ/xC4AP71K6j7U8DP/2xfyquE/wD4RlV9Kguduzxe6Hw+\nNuT3Lz7vgdcwsP2Yqj7t/r+5WKF09arq31TVr8PA/p8CxU3y05gJxdcz0wuzY/o5mI5AfkxPTKr6\nFrbZ+V+LyL8hIjdFJIjIL+ELr/H9JeDXiMg3isgoIs+KSDEXPA6Ub2Ig97qIbETkjwG3vkA0CvBb\nReQrROQa8MeB71NVxez23yAiXycig4iciPnOf9niffsg8oKI/HoRuY4Jg4dAzD//ZeD35Y3NG8Cf\nAL7Hm7wuoe2YvsTTEciP6W0lVf1T2Ibht2LL988AfzZ//4fL7P6LiPwNEfmDn2O9nwL+VeBbMDPO\nP8I28ko9Sy26fP+B/P8/wzYTzzDt2OfTlfc+JzKBj2GbpS8DG+D3Zvp/Gvj1wB8GXs00fAs9wPq6\nA/D7gJew9v5K4Hfl3/5crud/w8xNj4Df84Q2PK5dR5D/EkliSsMxHdPVpGwC+Z8xD4tvUtW/dcUk\nfdZJRP4OZj75c1dNy9tJIvJh4P/E7Ov/rqr+xSsm6Zg+z3QlBx+O6ZhKUtW/h7nsvdPTO0a7VdUf\nBZ66ajqO6WcuHU0rx3RMPzPpuLQ9pitLR9PKMR3TMR3TOzwdNfJjOqZjOqZ3eDoC+TF9ySf5PELl\nfrEmEfmOHGEyLU52HtPPwXQcAMf0s57kMMztfRH5/fm3p0Tkz4nIyxl4PyEif0BE3idXEyr3iybl\nYFnvB1DVbwO+6opJOqYvknT0Wjmmq0ofUdW1o/f/GRa46stV9W4+nv6Lsj+5P36fHlPGlSURGVV1\n/gIVv9zQesd4yhzTFzYdNfJj+mJLH8UiGN4FUNVPqOpf/QLUUw8EuRCwv0NEXhKRT4vFXyf/LiLy\nB0Xkx0TkdRH53hKmVlZC4IrIVkS+O+e9IyL/h4i8kPO/R0T+moi8ISI/KiL/tqvn20Xkr+TwtPdE\n5B+LyC/9ArT9mL7E0hHIj+mq0mXa5A8C/3E2fXz4bRcm8tdF5Fvfbn5V/Quq+s2Lx78a+OeArwP+\ngIh8bX7+e4FfB/wqLHDVHeC/Wrz7q4Avx0L+/nYsHMB7sbC7/w52shTge7DTne8GfgPwJ0TkX3bl\nfAN2FP828NeA/9LR/PNU1Z9OPaZjAo5AfkxXl/4vHxFQRP6V/Pz3YPFVfjfwT7LW+vVPKuzzDJVb\n0nfkMLb/GPjzwG/Kz38n8EdU9dNql2h8B/AbFpuMJQTuObADnsViiquq/iNVvS8i7wN+OfAHVHWX\nw/H+d4C/KOPvqeoPuDgtxzC0x/TEdATyY7qq9M8vIgL+LQBVPVe7T/OjGBj+FeD7xN248wVMy1C0\n78mfPwD8Dy4M7cexgFwvXvLux7CwA9+TTTV/Uuz6uPcAb+ZQtb4eH0DLRzJ8BJwcvVKO6UnpOECO\n6Ys2qep94DuxCIsf/FmochmK9qX8+aewG3684Lmmqi97cusH1VlV/7iqfhWmgf9rmNb9EnY13Q33\n3vux24WO6Zg+53QE8mO6qrRqIxeRPyoiH82hZ0+Afw+zSX/iZ4GmPyIipyLyVZid+3vz8z+L2bLf\nn2l8XkR+3WWFZL/1rxaRAbiPhaONORLiPwC+M2+IfgS7vu27v3BNOqafC+kI5Md0VelHFn7kfzo/\nT5h9+jVMg/1a4NfmK9R8+hkLlevS/wr8GHb58p/K17IB/Bls4/Fvisg9LGzvv3AZLdiFEN+HXWTx\ncexezo/l334Ttrr4NPD9wB9T1f/FlXNZWN5jOqZL0zHWyjF9yacnhcoVkQ9i8b3HJ1zS8EWTROTb\nsLjlG+C6Hifyz+l0BPJj+jmf3olAfkzH5NPRtHJMx2TpqNEc0zs2HTXyYzqmYzqmd3g6auTHdEzH\ndEzv8HQlQbO+9nd/twq0xWxxRBNBkPqDXysI6h4Ikt/R8lBqId1b5ZuWf+Qw11qSdq85tepCtKMD\npD3vyrVPbcWj+Yk4InJbOyL7+v2CqaNZAJXla1a6LFdZoXLUc7ajR9vz9Qr9d7ncEFHb0hrVPmnu\n4y7jZZU8OR20c5HUl6WIiONnGTc2SrT0o2ruktYv6qrSVfqWA3nxW0fG49vX8ao8WKn7spubn8g9\nXRlkl2brSxbx47kvQ1zetSyVQ6qtTeLmAitlOxLbiM2TeG28dhUe/taP/ZW2q/Yl+vFe52OpX9v8\ndeUe0LYyHzj4tJ46mCkPVPnb/8VvPCD+iqIfZmZI+ywiB2Bs86oxSCr/erBen0jSddZluQo9PUgu\nchRS8z+6eGcJ4X1RstIjHLT1gMiarcziRT4WX0UWP/WtlUyx/2afvGSTyu/C41qKEyw2/xwRblC3\npmonOEsbVieQyygcvuZed9k9o/o3Ku1emIj/e1i6dZO0fLW+piiIGvBoAaNl81Zorpyv9WY+1WIL\nn90YVA9+7UvttQUmyMqzS5M8jsN9tkajf344Rnw7l4AvstLjFcTfBqmV1oUQW2C1qua6Wl6t3pxl\nbD2hThHEg/kKnbKsGMn1iMuh9blUWhoVXqE5mG8LAVSG8JO4dSVAXogWIU8OmiC7LO/KoGI5SFZH\nTPlYhAVOSVqH9tIVh7+6rtCG7pcxuQ50cR29RMYDii8TN4c9upxgtQIRpxQswFPLIFqb+bKYnEth\n1VNahZQIKkUw9EuIRtai7ArE/q8TRquK30LLqenQQtjjdQPopYbk9SMbj3gUNV4JSFIQLTC8qKh8\nbEC2Qg1oeTeX2Wl0LV9lqweIpcQ4UGi0Z4VTHnrwV5Yj9lDk16YftmHZMjfufMktqkABKlaAUTrg\nCiG072uDwFGxpLXRYmNbpaOm/blsRVQAfE3wFFLKsOjGMQQPXl0b13l5uTB0aJLlUeu29fwlXY1G\nvgrA3qjiHruGHc6PMkEcSPbC+5L6F4DTvSCLgX0I5K2MxUS6ZODL4r0DYsqfqtn2v3egdGlRrf66\nQsjAtErWZaPVY9QyjydP+gfrPHL6SPeiLv6W4jPyq66xoRP6rZ3lZelKOqRfWE7ABbVu1uSXfZ7u\n1UVrnzTePAkHlRkfZDHAl1zVKpQd7dL/dtjZfU3tJV39veZzE0A5yN4JoGb6KOoPeT62Qto09eoR\n/bAopXj6fGM72ekF5trIUyeLPVNXFKqSJWvjtYRuHqwjU1FGKnYv8Kdx5FAhqmtj34e9Yt8z/8Ak\n2acrvVjioAvKWO5UCDfQu5fc77nRviM7TQto9rgy2Hw5y5lxAC/Y8Gm9JQ7I/VJ7vWWL9lX6xAa9\n5MG5GC+5pgVp5c3F0LhsAjvtshYvK/lKadKPd59HfZuXYLnQcC9bdq/USOkDx91qUtJlEQelOv4s\nJHDPobU6fbFLLXsBmq7V4sfJYuLpkshFi3VJRv512b99g51ZcVlg91XobevinkNZUcACqLpPeQD0\nxXTd5/leHgiFPvvSzDK9sF9YJQ7oESlrkYWwqfylY2YBWc1oanWoh4WDhooWGh1DM5jngmp/H+BQ\nWy5ZGaXsNd1kZfD6Obg0NNY1TQHBBfMv08bhioA8VPCiMUP8ZBTqGrH8rh0kYo8WQ9DPqir9Hbu8\nkbUCeyu1gZB/GhbAXmh1w8R/7MpdvOTyy9oSUvqB52Vwm8ihtS0PxmoZVONJBXBXtVaRnzMuqdTC\nqcajNuCWE8jo6GiVntuH5gfJQkIcr5YakJhSKW4yaWmnPWliNeW/zbosS2GdeVt7VwtQOZ7nOiHk\nOay1XJ+q5bNOroWe1dloIanjcdcVDSQ7oVBLFJrZSTrG1zHn6dfWbi1A0yqzbHX8OlDwLZOFXXhB\nuBh7HJnufUeLrztIoD9btWhD177lCsyN1fyO5tVq6AJBtvkbgnurTJja4kxf2aMpwyQdyP4GQnUs\n9eafOgiCdtkrT0UpNvCuKz3HXb+U30QW/Sp+HnmT1TqYX6mNnP5P/dLkYel812UFk3FAoE2j8Rpi\n4VMFmBXbVf99BUarLdwv12Bts80Lk17Lk/6VPBjWPCCW/SSlZLH2Ni1CqBqCr6P+0wNpzn3Q4v5B\nz4diVy401PcraNOBhF/qei4AVZvvgU26CddPXmq/Vu4KXQsaLJUXVtrX2bsXbXWSuylSS756FrWZ\nWfTG2kOyoGk5thcftBuzrS5thftu7niFf94x9LK2rqS+I6izpa/U5c8t9sPKl7Eyhfp5rq0dtZ2l\nT/v6emu7vfNEe71nj5bqpMvdusCP7/aLDTk9eMMZjWjoJG0eyLIU+5RW7O3eG+pyHHJPpDf1Xrbi\nuyIbef2Hfi3iJmWW+up42nVtPw/bu64gcWB+OfP6MvqdellkSI6Z0jXhwF4ni6lQXsl/i4dE0dta\nM3Wx7BU/NhZA4SvxDDrs7CoM18eBo3mZoYFvqduDXm8CkcWbB6XUh31+PezfMlHqOHCTUv20ogPx\nbjR1GuwhfR4/+rGTO0rXMkvXj337euBwBC8fHIBIK8X5QJQJcDiwHUnLelf6Q7AVQ19xTS3vks4V\nuunBqzSmCYI2JpsZydNb2rlCS10NNYHh9w7UV+zt8G5+1Acirgv9CmKp4EilqY7xzpbenncdI7ry\nvNXlFQxjv/dc0sO2u/aUfJqFX5/ziwjI26T2Qy9rzAufpwIUzWtF1l1ypF8CHWpw0Mu2VnP5LLna\nZrJxMt1h5nI3PO+TUztIWj7nPekVkv5NSV25nuaDSVZxfSHoWo21pNo6NcC19vlldD+gqmVSltq7\nW924pXHvK6INLCrNbgLVVYjjkyNeqinCMcjVtWYDr+/6ceSW89JX3gDGvxs8DYvmVFD0HHBj1NFi\n5Lnxd4jmudyA31/o3nFVVG020G2EiVzChAoQ/lenRXtJnnFoWVIFtYJhHd1WfqW5mvAWwr+CrTOX\n6NLmXea2n++LfskCobNWd5N5IUmdwCsrybaYbi3VCqZtTGkmwwNvo9tRXGnUxWAJi+95djobfJC+\nf7WS3zrMai7j12sYGSd0qVy0dOUa+RLUD5a0vrH0wHWYd2HPkgJCTUtZDv+1guXgg9MUDn46kBbt\n47Kzcg827a3nQQdlThi4xtTPTSnrAR4NGeCVaxq5LTPPj3s2khg0EVJk2Gu2RQvDEEDMpptSIqZE\nVAUJEALIgCDMIbATYVZFo3ChA6+HkXMZmCWwXDIu8aa0OeG++4kcONA+JE9GcnsqLtC2nX2vWLv7\nyb34uuwiVxd0B4Yc7jX/8vKb7y/6rnFtWM45yUBS7MRe0Pv2LVcvjcCMOs47RbravDZOnfzdvk1u\nVLVVL2VSaVttk/aaaJH9FWBaaoqKN2po/Vdd+fYxdTkPDBFSSlhMxTomDvuyqTG+kNSEp+8s3/ZO\n+PgVAd0H8SaCOvcOkUW9IKvvlQofd6Dejy3tnhxYCVy6Uq+Vkg42aGrqOJ3BYeE5sFJW3bXuDOql\nyGUn02tYtAnX0eM6dm3HvthZu2bIYiAUtUKpk6u6jnl1sWtaHuh1sLgJWX1L+zpLus3MzwsXfMXp\nnu0Eo0bY7ZB5B3OEQTgNWyQIc4rMcc+cZlJKSBgRmexvGNmLcAHMKDPCvSj8k/3Iw+mUNG5JmmjD\nz6On/96AvCNU29GNCoSuMUpRbg6PeKyZghoNmnndcil0/V3ml7SuaXkKYHbjZwHQFdSdZl050ejv\nAc/KLrhcTlHKos0tv2uZ9DxoKxU9aM8BVw5xsvNI6WSFb0P9koWIa7dnUX1A3QvsKqssdPXVehHG\nFJlQRmdiaYqutVoyHU1stfGvVcLYKjcBSUMdszOLvqu16MEvvWl0waQ1MF9r68FPb+c9qeOhE0lL\nPFqkK/Mjtz9eczvcdfen3zrt9pLGSCftPdiK/3OYRwRNXqsrn6jPKi6UpZefXdXLQlhbdpPz9/4c\njqay2XYo2FtFVbssg8AjXv5fAUkZJIQX0p4v38z8i7eE4dYWDTDfH3h48YDz+SExCM9unmYMA7t5\nxy6eQZoJooxMDCExTDBOQopKjDOMwl4ir8x73rq3I117mu31p9inmVQAWYQkbSgmlKSQCCTEJpwE\nA/UM9Cq2qNROzWrAb6tKrWVLeQ9BQ2GJGzvuqyZjT8r5Gxg33hYaKvhjl3Kq1MVCJ2yWM0tpLnAl\nz4HZSxTUtEPjR3leQNF5PNSGeGDX2s2aB2rdcBVPWxlI7ryogDpPH78Y6vQSB2CqBRzz82zj8d5G\nkk1kykKYLV0YcYUWwJViNxJGVa4x82zac5uIDoFBYVBlSGq0iyJJMo+F5FcmkmkVIYiwQ9kBexXu\n68h9Ru7rRCJlWkIV9t5cVTahc1d2/Sx1DPb9evhtRaGp/Ovf6A/ylf6S+m/vSL0cUy1drdcKnrBD\nT4F2ArSgKE6SX9KiRfneDtctq1zSg3cOiKuahnSZWrm9C1w/qDuaCiB3dCwPhOjib5dr8W6utwzL\nuiOvnKBcV+Uk2aRICQYVZoV9gItRkZSYIsicGHYKOjCMI0MYkTAg2GRCFB0GwmbinAvGdI/xtU/x\n7ucu+OB1Ie7PSTEaxaHZIotLZAJUAhoCYbDykypJEykmGANIyJMxN0t60C0DOdWNLKmgUIBEQqj8\nSUmrdqPJJpKikEy4lMmq0Z5raAJRVZnVJn0QQSQ0QeAETRVAtS9MUBUAVC2eRgIhELP5RoEUQKL2\n+6olbx6zmkBDLjO3MWkiJUUkVFDT8p+2YirvxISFBuz/Igg101LeqcBhtKcOlqSCWO2PshGdK1RV\n0iWbqmvfLJ8yEDhR5en9A94zKs9uA2kIEBNhHxlizALO5pEUIRCEpAlNiaSJMA6EYSDIwL35IRca\n0WHg/j7wE3qdfzw8xXkYidL7oTRRjVv5UrFmsWB/zP6HP3PCAZ6191ee12elUj+m9ICfy3R1phUn\niMCDdn5cn7us9XDB4xvV2tyD62PpcF8rA8VlkXwMfYmxNU+vTntp6p+ug7W4v46KWvaaq6IcfpJm\n+xSFDcoJMBIIe6MxzTANE9vTU+K1gXAuyD4x7BMSBRkGwniCDKGSp6qEEAghMEwbJM5onAkP3uTZ\n2zf4UHiGxDmqMyWokPfdJQgaQp58A0MYmcJIUogaibojMCFhsBVPBnFvGisTWSWXlRwXlQokMg71\nvRhTfm6/JxSGATk5sdXDPCNnF6S4R1NW2xV0GEibiShASsgcCTEZqIq0ASYGfgXIrd5gAkHMsVlT\nIqUIIaBhZL/Z2G+AaiKkPTJHt9LLMJnRXpPCYAJQRUgp2V7GPBPGkbqyQbOgKn0m9bsEMQFHFjpl\nuJWVSBGKipnIpGiTzehQBJOtrtw8yKtZ1QQpEWN+cxiK6M3KZttnKH1capiGgS1wY3eP58eJp8ct\nSSClGZXIQKxjPWThZYAeSBqNJxoZdCQwIoy8NT9kp3uEiYcXiT3Kj25usAtj9T1rw2th6++ncpOr\nUuZiGXSLOViVu6VDZSmnVzD9sftl3lZooZFa7lq6Io28aApNgi3NBt2yRlpDKBJ5mbwgXUjMx8Up\nKFpZmUS1QzxQFyFTXxKaTVz9D+6lvjtFtWmprtsK7K0KJy/c3Og6LMHoDmVCYprFNigngzBtJnSX\n0BiRvbI9vc50coubt08ZX76LXjwCVYYQCNMG2W6N53NEo9nSCYEwDcg4kARi3rQdQ2AaB+bNaGCj\nptlqnCFGtLw7mKavISAhICKMEmw3f7blsAQTJGZ5KeDTYmAggowDOgyQFE2mjRENRBRBpkAYAoIw\nzwk0IcmgLoURbt0gvP/dxre7D9BPfhp9NMOsiCbTKrcT8YXbcP0U2e3h9bcY7j9Edns0Fa1f6lAo\nKWgB+YAw5KeJxGyAOWyZb56gpycEIDw8Y5h3hP0FiljMDgzgi2BCIehg5YWAkohpJqY9k2whDG5/\nQiE1WEo0PobBDuiYCVHzYZjM0xAowlfTnMswnqcy1kLW6lMizXPTqSUY4MYIMZH2EZFAmEZQ05RV\nbWxWZXcYzNFDDOCn7cQwDJzpBWEYYQyMF3vmlLL5xFZEItLisRRFT4VAQCQwyEBgAAls40CIEZLA\nReRUZoZhj4w2tqX2VZlWHrkXKlVViB0O9LLMa5tuQ/Qx0RS1ALjb0F8im3/u2ruWrs79sNiVPYMK\n4a71NRBO5exyWeS4uArkvay7VDsv/ar0zKy1SVsC555sJC2ERece4cC8jICu9DWnw0KQp7u92sn7\nKnSKu5X9F3RmG4TtGAjjaBuYqE3spISLxPBwhjlBghBBhhGZRmQzELYT6XxHfBht8iuIBHQQZk3s\ndjbhQ0yEmBjHkTSoaWdkMB8GUkqEcSRME+Nmk/2wAgHT5AIwnJ4wbDdIENP29nt0VhgHZLJ3ZRoN\n6IYA42AmjTCg04Rev5YFqxJGIZzt4NEF49kFerqF61t0M9n7N64zfuDLkDSjn36V+JnX0Hk2oFJB\nU0Seusnw4Q8SXnwWvf+A9PEfy8MsILdvINPGBul+B/fuI2cXSFL02ilcv4ZcOzGBNCc42xHu3yNt\nJvSpWwzvexfh2aeQcSC+8gb82E+ir91BT7bojWvIZjJXzLsPkLMLNCb0xg043SLTCDEic0TmGYaR\nsJ8JZxekkw26GY1nClzMjGcXSJqRYYBpQ9pMyBjMvDInwtkFcrFjGMRWG1FhzmYGxWxxEtDB+l0E\nSEoaTZCKAiGQUkBn21LMMpMhmL0ZhrpKKDO105GCMAJBE0GUoEqIisyaN0wFGRqQexfXdjparP/K\nCiJFpjAQzxOP3rrDPiqcbNkGIQRt87KHjUaXSieglyt8VPMKqs3rBupeS1/Vy+sfvxYv2n5h1qVu\nl+u6+9W5HxabsAHU4uRUaZ14Ji9cwPriFijsu0YOOurgXcpyU5wIXtBaaVvvmKXnTXMh600N/Zuy\nfHBpWsiELqtIPwACygBsQ2AzmpabkZiQbbQyJ+RsxkwBZv8N0wbG0cB+O9lE288VxAmmZc4xsYvR\nlrfFBJLt6ZmbpBRJc0R3ZhoI40AYTVuyfhd0NnNGGEb7LYhpz9HARIIYgG9MwAQZcum5LTevo889\niz59C00RYiRcP0UenSN37sOde/DcU+gzt9FB0EcXsN0QXngWmffowzN0M0GMENVAK85w+wa8+DzD\ne19A77zF/NMvw2YD16/B809D1LyqgPTqG/DmXQPz974Lbl6HaYT9Hhkm6/7XXkf2e/TaNeTF5xje\n8wIyWp/oq6+jj87R2zfQ2zfgxjU4OUVefR196z56sSe87z3IzetonNGzPQyB4doWOd8j9x7C3QeE\ndz2Lbicz44wjYR+RB+dw547RfusmcnpCMuXbNOa7D5E378K9+7CbM88DzLaK0azN6xhsD4MMpONo\nXk9KFoCBVEwsxbSSVyaI7TGU0S4KMUWry7uHSi4LkLzA8GtvySsCUbEVmLr8NHt+CUM7SCAkZX9+\nzpwEHWdbWFLMMks8aG6Sl9rA24SjbTKXFffilYrS4l+zmhbYdlhPK6BZLxqda+mKgNz5tmaEKsqq\n1O9eLfcvLzXs9eflxQMG1/cc7Kh2+S5zhzyIZXFZKioIvhPX3+sPEB4eufdlNhm11OqpjBBsGTsq\nbMbAZqIHyZpxAAAgAElEQVQuiTUlRLK2FBViQqYRjRt0jsh2Y7bNmDf+TiYknhhgDMHAJyVinJk1\nMU4Tw8kG3W6I+71p29NAGgfm83PmOaKaOJWADAMxJfMVCBkYhryJFxPEGTTYhD3ZANnUMk1mUlC1\n8vcRPb8gKcjzzxPe/27SzVP0/kO4uCC8711IjOide/DSq4T3vhuef4b04AH605+B/d5MRdH4MkxT\nWxMNg23Y3riOnmxtJTMMyGYyMH3+WeSpm8yvvka4dsr04vOk1++QPvky6Y27DB/9atiOpLv3mF9+\nlfDuFxheeA5eegU++RI8PDNtdhhMwyUSNhPcvMH8/G10u0GfukV4/3vQ26foa28S7z9i80u/gnD7\nJvvPvEa6c5/h9g02H/4A6eXXSZ9+nfTmXcZf8gvNU+jVNxievolMG+R8R/x/fhS5cY3w/ndZ+RcX\nprG+50X0zn3Sj7+E/vAnSBd7W9FMI7KPsI/INGR7vxPYhLyhKU4zDQbQc0JCQuopxjb2QzbfCIru\nY+enLYL1yWBnFyRI3YsQsolPnYko7c38NA62EkpqAiaZyjQEsf2NPGZ1F/P412qK6W2xi7laQX0R\n6aTLJt17/aEow7WyMVyETXe2wnv++E/aikjiiutW44fpSk92NkwyKr2/cRsJSl1qdNq2K+1Agq41\ntnczktWyWgmrYuFSEM+y3JWp7l97d2Eyqpr8opjLaJKWRS+h0Iu/IAUrbSNKYjJNZxxhjJhv1wD7\nGSWhYjZnGczeKOc7K1GEVCZh9pSYk5pGPo3IyRaubwgxf95MZpfemEmEiz3hxjUDxbML26jMNmZR\ncwKLYmYYCXawqGzMCWKmhJg3Iqc8uaYBUSWdPSS99GnTOGOEaTIBlfKiKhg4SIAwz6S8ugATZJoS\nUYLtCYRAEEUfzAY0krW7OaJnF8yfeR0ePkJuXTegm7ZoGOHkBL1xjXSxZzjdmjnibAcPL2AfzQy0\nnWz18eCctNsTNCFJCA/OzCSx3SDPPE146iacnpiv/90H6NkObt6Ek2zXPT8nPHyU9zCGPCgSut8x\nv/a6ge7ZOfL0zdwXG+T2DbNV37tPGgIpJZgm2yC9toVb15AhEDQL9zTbyB2D22zOYBnyuFOFYmuH\n7Jlj80OmwWgdQtbaswaS3Wg0a9p1CKeIZlea6k1YBEd+JygGxKLMRNjvzCZPIuT9FoLzFJGAEBiH\nidOTayT2MNjmem4QLUiVn6c9dhSUciqfs5r2rqwN38v8LxijPYAvVfEqS3LdISuWiIkbr+9qp+B3\n6cq8VtYkS9XGPaB1TOg/Lu1HyzL7JUkvTPt6D1C2Me6AZg/RTiD1Ruw6dvudai+1GxmluYeeKZ5c\nOaTfDcw2IkyjCALjKIRJTNvJk6NpOmKa4fkOndsmmKpCirDDQLAIWk2mOQdhP8/s5tkANxRZbKYQ\npoEgI2P2dOFky3CytYk5J2QMpnkptpxXDMA3m4xLMU9GG8HdGYIg2SVSswkmog8foftsBx4GeHSG\nXuzgrXvIw3O4/xA9mZD93jQ9BT07s3y7PWwm9MY12E6mjStma5ZEevQI7j+AR+cGSmB1jCMSE3p2\njj54aOA5z+ijM+OBCGGzMXvyg4fo3fswz2g2H+k8w8UM9x4aQJ1uCbdvwrUT680Hj5DznQnOcTLx\nPM/IxQ652MNuRudo/RRndLdDH56Zhpr7UpJp1ez3tucQMDNSCOYddH4BZ/n/lHJATQfQwUClqMxF\nAwcqwHaukuW3YgIJThkrq+/qh16AS5utXfrxXYG81pnQWUlqJjRRkBgt82B2dJuvpf7AOE1sT07Z\nJTPfWcVuqq5MtypzChZ1E86paUJ1gT3Qv1xbpGVcaGP5eSnR62YOS6TKPCf8VtKV+ZGvR5dbobOa\nDLR+X4O7tlFAFaxymGNRmXvhwAZzUMCK8GndXAPteO+SS9pZ00JILUOadnV0trZ2erWTNlL1BEZV\nhikQTgS2o03qpGiKBshF4ueJTox5TkbSPhFC2avIoImARNOKLnbsLnakFInznv3ZGXq2I2Q3PU43\nDMAwjoSTEQSz3W5t85Ihe7eUnbEQkO1krd4VlzmzyUsRcCJwukGy7ZN9JMgIYSRd28IwIkMgvfEm\n8tY95PW78OiMJIruLwibibQZTWC98Sby6AzOHiGnW/Rdz8CN67DboeOAbkZUZ3j9dXj1NXj0iDDc\ngmlCblxDwmCa5GuvE1/6DPLaWwwXM7z0MvrULeRkg7zwDEoivfQy+hM/bZvKz9xATib0/By9/5Bw\n94H13bUtcn1D3F2gD8+QR7tshx8Z5oicnaNDgF2EOaL7PfHRI7jYoRc75PzChkAYQBSNkXTvvnnl\nfOa1PDhu20aqmH82b91DX30L/eRnGM/3bS64YadZ02WQNuay2aRzrVVqf9rM0RYyRPJGZcmcvWUk\nmzNFbd+GEKo+bDLbxntUSCGPwXkmne8Im9E20MuBIrX83YGkIRBkYhRl2s3mIZWFTG+Y73Uwj7eK\n8aDMvaJhNzhv87s5qjizUiVHasOaH36rv309VBt9Vq88LtMVHghagtzjyMz5D8qpr7WB0vfRQTnr\nwkIP3HqKNt9pIkUbl9aVQFsudoRc1o4maWtdRVgVSe2zrzbHbOnqGl9ipwTMajIBU4BxDDBNMEWY\nEyElzKQYSTNoTIgKwzjZBMeWqrrfw2xufOwTMgoSzGq4m/e8eXaPT7z2Eq9f3OWfvvIp87XO3iUE\ns9MHEYZQ/NHNhjlkP29VZYhqecYRGUdTAlNiBCYJjDISxpBdEwNhM9mSXYQQ1cBtHNEpHwQJAzoN\n5umxn9H9DD9lNnwdQjYvqfnKp4jsZvT8Av1J8wgJMcHF3kDl4x9H9hE5uzDvjtdeR17eIj9+Sths\nzZYczDwSLvYmXB68BScbEwZzQmIk7PbIwzPT5E+3yBtvgARkt0fu3DO3ybfeIt69QxrMXCIK8ui8\nmmZ4eNfmyt2H8OAMXnkVfeM1whyRB4/g7gNSnE3QIMjLn0FiRB6dm7AIAX10hr7yRuVfBOTRBfLo\ngpRMQNs5jbwyE6mfSUrCDuUUMLcVXNaaxU5eJrXVlPVXVcApK70aE1+0epkMkPsxGI+Kolank42R\nVmcW8tNo+atvYHkvCx23jh2HiVFGCub04XUXzr+Z/91qX8qeQFHwtJbtZ2i9Xq5M86USVwLXrdpH\nChU+nEQpyJtt11XyqzOtNM458FtoBav5lz8sQO5xGnB75cDs0vFIFiyT9azrVT2+/iJKOrxfil7I\nA7KYO3ylniapJkhxNAYRNiJsQmAUO4gj40iYEmmOraxiLsmF6D5avdNgoC5qoFa0KhFIyjzveXD2\nkE/deY2X7r7Oj72yNQ2r5FWtE7poVpKFXdWKkhKCMEhgGMy33CybylaE68PIjbAhZG0wZLMKIdix\necW8JFKqk1dESENgH4Q9Fhem9GEKNoHMLu/CFmmqh3FCxgTbEJPqTx2CEybZlbI8G2KyY+SIbcRl\nDRaFELN7ZsI8P6bBTECKmTBiqrTN40Acs/tgCLCfISbDjnEAxIB7Z66SerIxGmIyU8towCbZHBZi\ntFOReTwU4LQ+AeaIxOz+KcFMPDGDdOkw8mlQbLwklIgdCFLN2mqZBHMk7WdEAkMQwiDVbdWKq6he\n46UAjEkJpxumayfcDltuTRNT6YeCm06LDYPxMOQ9leWxywLpqkDClAcJhLy6K3mKq67N47wJ6+ce\n2k036jt+jnZVU8woZW4vDxaVeXe5surq8r+46i6Dtys7EFSWKYWRpQvQohUs33kyQD+53lbGQWmd\ny6HvrnUJ2PWPrD1de7eVuy58tCkYS+1dG/1LH9flrnoANgG2YWCUYP7aw4BOI2m/r1qPiNSohwp2\nJHoI5omikkFpsAMXGWA0ReI8c3ZxzpsPH/Dw4two1US2pDY6fYvVdB9ZjOTyTg2yJMr1ceL5zQnv\n3lzDRSTJAJI1uxCIyQSTBZ6yY+uzwMMUeZAiD1xkDS3RoAp9fiVnnKfEIDFNsZkDlAz+WTANmBtb\nkMAowiTCBAzZH0Lyikkk2AGV1LTdICEDogHhrJjQkXxqsnBNCsi0oVn8PkQaiJYj64XXQUpeo22Q\nwACMKBsVNghT0UxzewPFbJLHhOneBDXPiWQyjQtNXGhin3slOd6A0RmkCP4ivK0NVUgWIZy1owFb\nkd2+cZOPvu/DfOj0lOtcdyAubR9GhLCZbOWXTTEtQF7WTeoKwL6YsMqCuKwWnJZmvCyW7v7Upndm\n8Vpym7/9/NbFo85kUwK3Cb3QWIF1Wfl2aK7p0xXHWskQpI2Fl6aFJFtbnXRg3xWnVWsD6uEd/55T\nxi8Xe77Eg+O1BZIOKvd2mkP6yiDMeczN2kZAKRdPUwbhFoBnMSoFBhFOQ2C7DYxTQGbT/jRm98Zq\n6xTz344jJR6IHa3GAlGVOqfBvC+GgM7CLiXOk8J0HRlvEaaskVM0ulw+xQ5qJGo9zK511Jfltpl7\n7J0Xn3qGj77nffyy93+Q1DyEsx02T7WTibSPpIs9MWXdW2AeBj7z1h0+8crL/MOXfoJH8y5PcNc7\nVTkscU7sQeseO+VZw0b4//PsFITNMPILX3g3773xFM9sT/KKIu8TStbqI8TdjhQjSRNzgH20zeJ9\nTPzEgzu8fHafBzrnqm2a1/gt4vWadlDE9Trm4VAA3vIFDCRRYQjCzWnDVz77Lp7enLCRkE9c2klW\nSdmUEgJDsENcZaUTBgtBsNvtefnOK3z60X3OitjIvCvCAy3j0VaTPlhrSIWBJiDKYR8VYbvZ8mVR\nSe8p/ZxblVcuCnZYbRgpG5ktZpFUkBfyJivF40PqidQWo6WspqXjX6G7CzB7oHH5Rw3aa6GZjqqA\n1X9KLd20X5Tqk8+l9d3HpS8qrxVLXqTVf1ru0sldzjUN3j9esE0Oj+1/1hq/LG15a2Qsd7R7u7YH\nd6NXuoIEzafjDmWLl9C+KMlAfiLCNA12am/e2zIzZ6w+qcFOSUrMx9yD+XsbmDu+jEN1K2MK7IEL\nRjZPv59w+wWmW89RfP5MY87gq5o9D6joWQJXSQHxclKvfFbluRvXeN+7nuMXvO9ddtIzqdmSixdD\nELNFz8mAfM4+7MNAGgI3X7/Dg+kW18dbxBgx73UnPMhlasoHSDJsqhOQXth3dEJZJUzjyAc/8F6+\n4umnefHkWr48QLMJOANdTKRH56T9TNJEHAL7uGcf98xR2b32Cq/dfZM785zrzaQVOrNQLJS3o9rU\n1YaQQZtyIjH7cmNlnQThmevX+fkf+DDvvn6DjQhpnut6RWaFMZvfhgGdLX4JeWURY+L87IKXY2I3\nw/3cxuqtkrXMYjIpQNfMV+TwMi5vbtccI08lAQmMw8hQNkb9nFWp3jClPBvQLVRCWU1IVmYkH3Qz\nk2DqzGn1hOjBJCq2cDpsLtR4Qd//LXkWCqF7o0EyLC0OJT5RzSkOKTp3lst1zCvzI5cVtjTU8yB7\nqOVWJtWZ1YNx1bilMHcN6NdlYjNtHKZONjrSsqLhOsh3oK6/b0Q0EKvaQtswqbR0NC3a4nbJi1kg\niLIZlDEfq07znmEw75Gi0QjZ3rgZ84anmi/1OJrr3H5vNuIg5jY3ZJo2IzsJXIQtJy++l/FDH+H0\nvR8ixewzrBZ4STxDtbW+auw0MNDCJ7XNzqf1ITe2OzZbg1g7IWqHQEQwj4RhQoOiYSDtbMXAZgIC\n128N3JTbPP3iR5hkskNHih0iyWFkSRafhSx4yHFIDPBTFUBaNNfilqeKaCSocnsIfPj9t/nK26e8\nuNkYWGXbt2aw0H1EH12g+xynZRxt41BnJAXeuvUin37zPvfnVM0B5X8l0+U3CVuoRVpY2jIVCtNT\npVVVuTkI7751nY/8ol/MB27dZJvU+Cn5QE9UO/Q0jWbnzzF2NJvd9ruZ8/tn/Hga+anNM1zU+MOa\nQwSnzBccjw71zIqXRDPpxRm9eMi1TeDZ67c4nSbGEKqapsEJ4KJwpdx/IjUqZBlm5dQmYgfaZAjV\nzzyLuQaXue2AHcnPTC1hiy/TM+vs6wT7AohravQd4NfCKlDMO06Xz3TmcvDIeJiuBshb1EgO5ViP\npKbYCJ12mwd2D/Su/M7G3dfgyy1i133sQNwfiFiro6u5ZtWFIDjQL/pvWYMwOhw9BslW5oKmLq6x\nR/GcBoQTsc4VQIeheiEIIJsx/50Yoh2q0Kjm0TCVeB15ciIW+ArQqKR9ZJ4jUWHYnNihn6wJtXs1\n19rsW6+1bOinQQCmODPKDPNFDhlgdEmyyHzVRznlQGCAZJfERCKpEDenjNdfZBqmPOBSZWTRb+sq\noX5fo7aAaukje2dUuIlycnLGKLOtakpDSuTIhK1wTjekAHqxR9Pe6lQhJSU8916uPX+Np6cTkgrF\ntNLGnOIJ64Zi01ccb0El1XGkCLc0cnuITDdPEGKOi0JdlURVQrSQA3Hn+kU1Hy8MsNlw8sGPcPvL\nBuZxU/llCvniejJ1nx1r215OtHEVZ3ZvvMIz91/iaX3ARkY7mIQpA6nwfh8NnIt5hAzWc7RzBWIr\nkRKdtGysSzYXlY1ps7r0ZpbSZ72SLB0M9Zp5+cH6yqF5NWu1nij09mPL7yGVypueVp5Kj0Vg+1as\np6sPY1s+1iNTnqsNqHtsXMDiAWK4B9WEcgkZSzou+Vb6ffW3rrw1wdLe6iai3yuoMsy1N2uSLlur\nwxXU2XLFTktu08ywF9tFq9qomk/wmCPzhUDYbkyrnSMyhLpxmBGhhW0VARJxjuz3swUiGrfIMNXf\n8yv0Iq4NzC75pa1SJ1lAGZMwZL/hchJUZIBkYFOAXJPmoF/J8VNIIqRhQranhHFDYW4ZZ02H6FdL\nHZNrHyzJzoetFLYpMjATJLa+zXGy67uiZrYIBgJ6savYnEiwvcZw8hzb0+vE7CJSBIsWwdFpdY7+\nFa23rQzz2k6ETdyz0XNCOLNQCLGZkmqkw5RIs8IczcMjhLxiyetnCQw3n2IabnKyOanKhMF+qtT1\nbF3yN4Mf0XzA48w4bLkVdtw+SwzZ2G43OjmznBhfJWT+ulZXs4RQaSIq9a5TMbNMECnn4urYLuO1\n0/hzWV7JWKBwp0CZzJLKc0o7Fy13r3fldALOvbuCIksrS5eu/GKJMhTyL7SLERqIgyysFoeuQSJS\nsa1q22Uwu/cupan8u6LxePtGq2MhrjvOrz6krSL8zw5kcD21qMdH3az3MNYxnN/O69mgic1+h+wS\nusmXNZSQzjmeRd1EKqf9MpBqMo2t0FAmA9ltbp4jF7uZ3azIaLFZqrztJkDjQdM2fN87myfqJhgM\nKRLmaCEZR0N5GQQNFiIgBCHO0Y7ZF7OQKARzgUwCMZ9M7K1z0rG4C2i01l0Z7PwmWZvwipBs5eKW\n6caE0H1UUULYAJB2OWZ7Dp1g3h9S+aSLMVLYL4i3wDmiXXtotNVrzwIWmiGphTGY88GwULosM6TE\nLJkjOmZBGbMQUczs5OOhrIzxzhtoqZXXvAHFhN0QYNhuubE54ca8zQK6eA5ZGaqQhhzIbQjVZGXM\nNGGX0LxH4Lya1O6htSrNtXV046zMutLv5Vg8ro8b1c30UuHe5UlZoh7Mdl3M98onutlRhJF4jFpZ\nERyW1NIV2cjLh14SVem0aHyzWRXJ52zLDiUqgEsezJrBzde7KPsA2g9mdM/Gxuw8q0Lp6JJrUX4H\nyMsBkv8pWqL3dyoDQ2umWn7VyN2grFNSbKpc04iMA/ut0ThEIcwKu2RLUlVEczTBEpNETLtKpi5a\nmYNU/+eEsteZXZrZq8I45ciKh6kuXTMCGrj4DNKa5nhuK4rFxlTudsnIrGBH1BW7XCGp2ciLi2RI\npOglHyhhfZ9hAYYdiJY5lYG0btI50JAYQaN5+YRg46365tskjfsd5di6bCYL6hUjaRYiQpLg4mp4\ngdCPpyBtHBTCu30yqOaHNiYCMJuwy7HKRSzMgYGc2lH/wiqFcvF2CDY2yrgy0eU2GDE3R6+b19ja\nAv7C4UJPpTWbPU7HkRvTxPVxgjCQhsE2KS2aOjKMeX/GUF2S8VVE2glh10fdqsXkRj4kZ1fGSe7j\nMre0kuX6vcOMctCnjRMTMm08h8wbO7Ha+sLfFYvvu25uN+40CdPm9kFacc2GKzWt9CDeS7SVT6Xl\n3cRbAVz3qGnmBz+t6RNtsJU8S1BfahmLcbnsHLdiO6BBfG/K8ldXn4jL4obbYlKXfhfsVOdpUGSO\npBSQmxt0D3oWkTO1YFfYpGdoFz3UOxkHuxTADhLZxALQlJjnmX2MzIBMEyGYx3USoRtiC3AuS9lV\nZvjval43Q75VqAZBKtK8DPTsvSJhsucl1KraRMyW84OVky767/BzQ8bDDXHxRZluWdz3EkjIGnwy\nd8piT7cveQU05tOIMeZ7O413RVWs7pCy5NdixObxb8NjOQ76SWDPiqki+8No8XVfDGstwy7zPAjk\nyyEKnUHsggs/LkvnNSjt/ulYXBQfATZD4GQc2AzmnW99nHOKbXzKEFCNrd9dNxVB30JWZAqK9MnF\nBbXI6B1PpeamJ7zxzv9UaBf3bmNdodn1l0r/SFo5tXy1NvjeVTe3l7C9MouAK7x8WZZATlViumeW\n2gaijxtehJMueKiu7LW5WnUq7btn2ckHJazw8NB9sTn7HzLd+wG7BuTvpg3p8pU8UL3QaPwqA6pM\n4IAyiXA6QrjYozth2J4akFwkO1GZ45qkGM1zRQQZBuZ5NgvFJCh2VD1MY/bxThnII3NMzALTtDHf\nXhb9doDomuk85EdukOOnCaJBAppttXVZ7T0FxJ6ZaWfIwbgw33IxTVfzLJblpFiLqwNu9Zanprbf\nuiTmlTGIhUMosUWk2Jtto8HoVTtinvJ1aN7n2twMs57vx/WCJ+s6mG/Bgka3CSfeVAFGV41xk09o\ntrCAFt6gaoTmvleQyzTfsiLM47fbtO4FUGda8KaLKnBgHAamYWAMA3U1HgSVUPujmGxUc/1F2JU9\nn/Kel3G5n9AcKkLErHR0Pd7vV8phGwq9y722Lv5dxR8vFaWyqMyPshlazDiln+2MgxPHld9aWEfd\noL0kfRHYyMuzbuxSmOG16jIdS74Q/LJnHbwXtXQa2ZN8yD1Atb3FpRDy+d3AYNkeT1kDOw/KkifP\natmrPBOnSYMdtrDj+dfHgY3uCecz6a0dYQZ2mqPv2dI+ztEuGJjMlS8wZr/tfIdktolqaku9Oe7Z\np0hCkHzCTnNj64TuZTCX6xE9gBeNbhBlkBw9MQ+MYgZv+UMVQISBEoaXZB41cwaEw3q8y9QTINLP\n8PrIOrh4QQwku1JMFWSqMdYNzGOO+xKJoswowzwTktEREVKQasOtK8BLxlfWPtpKrWub1q8F6ArA\nCcVclQVMjG0IqlqM9yLuZruyjXxHaQVroUU29FAY6rqDxXGaDrbb9JH2o+SQAeY4SIzZrz0MyKi2\nMVtunAII+ao3yPbxcsUftu+DzYmQN8PNF942h4JI9uKS+q92tBgPV1S6A1t3L2gXW5XliLL69cli\n/op/qw1sb4l3JDUXSzpNt0tX6rWyBOD6Q2384S8d48QPEu3ysHjasX0VYJda2sGYe+y0Xy7hH3fA\nSNw/ndZBK6K3fYojUftynGBDhEBiEuU0CONgd2xqjp1S/Gg1RdJ+b0Gl9BRBTWOMMd+Wk/2rkTxB\nygEemGO0uxQJ5rFSNjuX3HRrxWWfHPLO960yYjccaZGK4vhfViHlgmORuomidmsdESFKaB43biJ2\ny+D1nrmcTtceEWjGAPcwa7Gq7XZogbwXq+Zlg2lhCYgSSDl+zGXpYOwdDNfFmBBqYCbN8mwIQg4r\nX32lNeYTnClfLF2E+LzPlxoIkiTf/JM3nqXVsVhPHnLNE+4nkxYim0Awn3Vzy5R6OXUWzur5W+hW\nKGEhQm/WE6cVarGpYyY7w3iHPLKcUYd9358YdxPTldMiQGREcnDQrcIdx5a1tpJ7jPMmh8sw6Oo0\nctev0JYP/VP3Tn2hj1LgG9+/+RggXQXZx88kKUS6Z48t85LiSjuCA37Jg0skH2L0gL2Q5G3Gq3tf\n6gQLKKMk8yOfRttcm0Zkv7ciNE/YHCGwXpuFwjxXrwarqrgfZi0wJfbzTFQlhQHGqQax8kfgC9m6\nmMRdjuWGjtrvgcCgZntGhHIKFC+wVdsSv2jsgEpAEaIIM0Ot0WyQReS7sg5OzTrp0yVlqaUZrzM4\n5CvRRMpVdn7VpjAIQ1Q7N5OktithJqDolAsvbmpzPUWFsXVjXP2LzgTQwEakuN5JlX31+HvUBpgl\nJv2+hDzIl1dkbxY2bkzmjUxFHYBlrfGyaeKxXNqwK+admE/vipJBPfdXPphWSDGDfT7nMA75WL6r\nMLTCTaCGrJErwQ+6hvfNbOfY3+RNEzZVOOViDMTVac2+vc2EUkSd1P8aU3oR6HDBPWrQsw7lV3Zn\nJzQAK2D0pNvu68tl3HeNPYTwbgIsSVgwvs93+FTr17Y3XgHKz6eFuUZxWkx92wumoi3l7zFPJqTD\n7Go9Ce2ZJ9HYKATNIWwHGLYWpU/vnSMXSoh2mjOhMEQIQiqa+may0LUpb3ymbJtOiXR+QfGU2c97\nZgWGDWHcGHhVIdybuQ42Cx3YLA85FZ7YppSZzcplAeYulzIQZr/xqHayUzDXRMkn/caRNJjXSgH6\nfppkseBtYJU215FPSBZF0QDSNL1s4y228ewLjWTPGmYLbVti2aREUrsrtZ0mbKOkUtGT2fGrixmU\nSa8bZ9LMBybnlRZGley6aX9jtuOHcuGHArNdZN0OvhkvJTSCqimlTkatfD2026f60W92FhA2BUZJ\n0Q55laicKlSTjvEt7+uMo+1357ZW80s2w1UBgZpJBhglNaUJmqsz4uaw1CBd4mit3eNAvAKwLFvr\nsEjad7+XUMWGtl96E1T9sf7ayjtMV2ojb0TJ4vlyoErXgMVrGV8PW3gZiD85z6Xw3y/LFq/IQQfW\nH7nw7pUAACAASURBVHxX5N9b9wzZp7ZYCZIKJQJoU0C0yJFVGkt5I8IkMEmOhBch7PJFuZo102CX\nIacxgwruTsUMiJLd6cgC1saVcjHv2SMwbgjjmONbFyLCKuf6WBI0kFGtPCiTxGy5imgy00osszLk\nCap1dVs09BqHIy8uZuwcFFIUhTbhOueGTuQv+XqZUmGVDwITmiMXlPGaoLA6H6+vYzNrw9lIRc5K\nlKzcZrA92PFZI7GycUFbNx/sn6oRZi22hpZVzSaTZJc6007mmpO5rW7MFVFr8ClffufX/rjJlvtB\niwoujTLbazD3yxJTpyBxdWWkhc6VIEiOUa/RqXfedz8/S9nUVdZgQ5kTlazLT0p2PvH9Px2vVwvw\n/ZAHqluvNJBWOulQnTdW6VlW3KcrC2PbP8BpdT5fFZPtJW/v1CW4fS7E5L+u/mV0xEbLSp7aaXKQ\nF/rj+v0JTKnAbXH1DcyjmLXDXNPUQL1sOvUVHqwbBGHMID4Kdfkc9uS4FJhmlCdDBeG8gdYds5dg\nN88LlPV4As7n2YB82iLjWO2Th2YxrX8NSw/XR4dAZGqUaMo3wljMDFTMPcQQwdxFlgyQ0hS7AmG/\n+Lnc4NRw/bJJ6fuxI4464cS08TEDQ8gA5ZfedeWgdjtS0QyL257mzc8Ej7WPH1TveOfH6aHXVBbR\nkiMjFnNavoC4CRTNm7GBFCxEbw2BIJKv5dMq1Ot+gJJXHZfxsaF8GR9SjtCXfsy+/pLBXPIlyuVA\nTylFk51tEBHCmC8XQaCcVoZ8nqOQYfWK2sEjkvXRSN3S7fq4klvaUM1SONt330Z/IG+JBQddt4Cx\nA61bTdB44VF08W7/44vtiL6UW6y9aO8AD/e9imX3Y/nYDyJh8c5KquFanVa4fEUuqaPzeFk4l4j/\n1w2EZS6BGhO5jBm7SUcYBwhBGbJiss93OxTg9wBUB7vDzwRMSdmijGBL5XHIbswmHVIyu2Jx45Lq\noWB80SG0/YqMemHI5+YSXOz2RB0I04kBeQV+pcYJcRxrfFx+X+mjDHCSzAceTSZMkp1ElSHYDUTj\nYL7Mc7RgXXPKE9YYFxHmrE16+bIS06xP1bYK1JvWC91FQ7detJVDalEHy/uZZxJzwC9V5OzCjrwP\n+URkdvczIM+be3lMPn7Xk0vAu3zOVlg3pMvheVGFfcoeM2YimYOQBuvzFMRugZLAOI2EcUAGIYzB\nbMCB+r/nXzNPFz70c3kpvjsjhNSFIio5vnm211fOqxJjsj2IHJmzmMukCBmaYKs3GIWQL8XILqCa\nmFBb7WWXTC2Ajxf2ZZ4X84trS4+rrh3i/6yn7LKqkK+la+2r9XWCsPG011bXofwKbeSuS8MlHHAN\n8P9C3xxZDB6vvCybvzxh+TjvkkNyfIct3yuD4hDED3zmC15kJE8oUQVN5s2QFen6uWya9FqZ+OKA\nDOQC2yCEKQ/8MCAh2xzSjMyz5c/AWBE6teiF9RSgFFptWRtj5Gy3IyKEzdbeDxm4gBagf0HjGi+d\nRtmtYNQiILKfifNsN+uEAMOInkj1ErHLJQQJI1LulMyAq5p9c6sG2bTDOkFXBbinsB9hTaXKQC52\nwKRcNtF3seQwCKA1NgIVwOvvQ76urIZjlZ4e9++hHtPztmhwB0OzmOzEhK0dzc+3CE0DKSjFKV6H\nbNLb2N2qQfJJ2RwJsUyzzu4rjr6Fm95aqgtrccpC+Z8MbGr7NhYXfbYj+OPWInMOg9VW4tLjwDXT\nWMRuDTkwKyIDw9hW8M3dtxSSx1XHvjaa/bRrXdB6SN1vJQSyLvL1zoWuz6oAqQVYDnUMqyxf5+/V\nxiOX+oV1SdPPsjqBcfwX/62X+MsO8X6Yl1ZJGZzqTKttkC1XAZRyBNbG8Jp2X0OcYnpfVPLN5zay\nFBtoqSzrahGZ/rqYMQJDIUZhI7AZsAtqywXK2VYoZXms2PdpNLDPy1qjIR8IidqOvOdDInOMnO/2\nzAgybbPdtPH/cTbHNX54Fkr+rdzbKfNM0h2a7Ho3GRSmIXs1JKstHxQqyxvr5YRqgfvcKQcnxnDA\nv0LIshHdOBXsKjjblB2y6aKX3wbUUo7EjyMVYUpRIT8PQz1WvxQdSxIMLB4jHHG0Oy2xyQmtD0LR\nDgcoXuSKEjUxhsns0OX4fbang9bxJN7mIG4+amXxoh1968oZCKPRbapmjdr4lbJ2Xswqg+3l5Gea\nJ4myHFeZmpTs3tOoEJLdTX3AMGq/+hOyZY71PHeNWyK8639vStEn9VeVbI0Gv7pyHLu0HLiyMLZe\n13AiMX8tA7I7oemv6YL2Zn1NumWWz1Pm0MHpKPexSUvqaFyOjaDNnuKD7JideOUd5AC4yru5UmIG\nlc7lsNIkl/KoARc18FoQ2ARlE8Q8JbJfsAyCBVwZLOzsYLfAyH5v12YNQy5wBp1hnilxTRiC3dqu\nypxmLuY9s0zIZlsnnyj1GH/f/Co+C8kLD87WOqNQs/ukgaTGREw5VMCQCNsRjWYGqOFzM54YaIcW\nzU8GOltKd5qo/Altukj/Y/e1A3cboEE0b3a2DdtqL4MSrsSqDdkckBJ67jR0pJoVhOKl5E79lV53\nivzSA3b18FUZECId70UzqBfhl0BmZRxG9g8fEs/PQcRuricgU35Ti0afBaYU7XGhvzo+eaFSci1X\nFQX0yiXd9VKJ7PVj0b60xRkHKKuDpIRkHjeU1V0R0EOwVSZZOZFg0RZr5cajRpNkv3k3y3Ibe/FT\nBpvzKKsdpXkM569S+kLyz/6Ua3tPLmFYxaGFqe0yQL+6oFn97HG/LQB9HXcPCjzYbPT88UzKXOwE\nIU1QrNZVCnHqRt2IFXte+/WJS8v139c12X6iPKFgACaF7SCEkw3NZFLv2TINEDV74JBdDNHs7pU1\noJgvNK7LAtOOUkyc7yNRtoTNtm6AEQoYrtHqwPqSplTeqRJItlErXuPKm3KPLuz+0RM7+RPyZcMF\nsDSlfLvNZD7lHljzB/UVshw3dONGV3KV/gvABmXQZKATpJ1yVHOPNETM2m49IZltuZj9vAXKagv7\ng1Wlp1ecIlAoW/K1CoZWlrTcNX88v2B/dk5QQaIyjiMyjoz5cmmUHIegbHQuqCu2iaqESLf4WWrl\nXjhWEM8eUgdjQzAADmp7MQq6j/kkbOZ1slqamayBbClfymZ5pT8/d3xpQTGtD9yIdfR0InEVvg6b\n4F0XG+BUeFp0nQntiuKr6HhZunrTimbpjj4WBJerm/651C+1E7qj+2WnXg8ERDdh6yR2HF7xtmjE\nyKXgtN6GzyLzJakGOyrAtKBvI8rJKMi1rR3w2ZNd+PKAVs02z+ynO8/UyZjyxmdMdpGDYoIAso08\nsZtn4hAI06bGQdEcKZHyZ9lH7p8uIlx5nAWjACOJcRDGcUDSYDbOlA+snO9siZ8MJGUzoZup3lrP\nbPeSJsUmPOLGRFsZ2LdlXyz1Rjrp0/ypjY2DKBtNdnhJbHOteHjojEVnzEf3lZQ9hpqUKKdQc+GP\nmbwd0ZWWYiZcrMwdODjhU35wUkwlj4PdHiUwhGAXjWw2DNNIyHaI4jVU7Nlt38ERVPm54OrqF60f\ni2m8mlmqWcV+lJDdEofR9hvm2W6rcocpavTD3M7Kj7I6CXmHVoqrI62uSpa6d91vjvSy7irCfrkn\nLa7i5fjuvucHa1CwMnXcw8djx9X6kXcDItsJvRAseXBaiNABYtUAFlHX6yAu/SKlo3uG1MntJeGi\nfA9Evg2PO8C0bOvj0tpu+GWukB5QaskFcFTZCmzHwHCyQfYCwdwPzS2gxadgnkkxonuLtyKnW2wp\nakA+nIz55qC5lp3mmV1M6BQI48ZuJ8fmSTWF1W44gGt6ch0CZW0nqDCqsJ0mNpwSNgPp7Azdz6QE\nYTY3Prs5xny07fYg86wo9n07+k7BcaNNqYApB2p5g3gvxIspoRKqVS1oGnmx048DTCNpjsz7Gb3Y\nmWfLEMz1023EZbXdTi96gKga3GJz23V403KLeCqfy1hsrDfAt1+DkkPAYlanYWC6fmp3dO6sj2UY\n7GxAPq1bomIW7b4gb9sEL6y7ZIyro6k+k9oXRf8trrj1TlaUYRxJ2XRiMjCvziIWM7+0O8dn0SEw\nFIRNmDKSNF9rODAQGKXVJdLuNSrjsV6W4bRGyfsEXpEsC5HWTG3l1H5qmZbcEehWLl05ZeVQVm4Z\nl1q/rvP6iyBoll+q9U2XS99ZAcgCwuW7Piavf1b9UJ1LUJHQteBDwNYnlLtuKml5DmBO1rvIm4la\n5ib/ysC0oaNMKTLNifTogpBi3hgyY62ixBTh4RlEi1dOBm6Z8xVgWYssdn+NOTYIZgrYp2Txs6d2\nM1ChyH3ksDXrA1DqqDaNaRRl3JjWFXdKnLLNdj9DCAwFjEMOv5tPeeTbzex/MeAJecapZJOGHyPd\nur+fVXXO+gmrLa9gNvyx9E/IB2gkkAZFx0CaxFYNwUDTXDznKkztftBQ2138yaUypdGi/osflUsT\nS+mpxftGYxlHRVQA2415gYS9ZRxsz0FyaGNKsLTid35grmq0ejaVT20zkyxMcw8lCwGQ0kxMZ+x0\nx3n27jnTyHmyC7NFCqiqnc4UMSUkm1YoAbRQwhCa8MtAbeMjuCiW2ikRnrdaCP3/mXvvJ9uR7M7v\nczITwDXlnmszPdOc5dItSYlSxAYlhf7/CIkhsxuiluSO62n7+vky18BkHv2QBolbVd3U/vKImX51\nLy6QSKT5Hn/OQ95M1XUPctI1lmSUP8mwmedLUhvznk94UenQ5bTd3LWTEa6Pj5c0qzqWi6CafKof\nqsG6Z/A8aed+AyfPWwyQLChhYZsWm/pkVufOPt7uw5cswf/042PonxurwP5UNyoJFprgscOA3zmy\nvyzGEDQwDSPj4Yg99lHMbGKYMyHmXVHv58i6uPLQEDN7EzSWeQuBYCKQFy8YZlH20RcvLzlvluWG\nkhK0YQioeiY/EZwQPPghEhhjItdoG4dpbMmnHosqU/yR602y5KzvDT310C842kfuEKKnioXkOht3\nWeYCZ5ejxMVni2YiiDmhjqfmdPNmPQGB9HUJJFKkg0UPC9CfsPGZyJrcduqXtdBZmJInUKXHz4m/\nchwDkoHcVNN8f4/NwyfVt4D6Hj/sGYcDOu5R9ZgwYQ93/Hh8Rxf2OBFuRuHtbuRMG846S9eZlEbC\nYtXSepi8MnoYxOC9R1Rw1tFaR2saWnFYiWBvTATyEo+RBxp9OJKyxoGT93tcxlxMwCPrRk+kpdNb\nM7V76Px8z6nWJx//BjjyyumnlllOEFrmm++3V665/1uRRvJE1lx1GhUjVXhyvRRP1TCPBWPc68z8\n8UGThVReLvmd9MFXO2k4BzLke/OSixKEEbBhRPoDwz6kKuIOrGOaBg77PYfrWzZtx6pbY7qOqR8J\n4xRxJoN4EukEjVkTNXLmfhwZfUyYJa5JYms1X1J9ngdt8XsBhVMORGJ2wCYEZH8kHPeEqY+6fmti\ndOQw4pzDrhpk1aSApKiXzhs1JHDULPXk1V/5uOvJHM8Jk5b9L8RV6rnJQrMW4lmMxeOInQIyTAy3\nQwTOzqCa1FPlfeMMjsQEXzmfyMkiqQdx7t/pIqnUKPFDpa4hSSFGyZWsADSEWOTYpFqiooR+jFJa\n4yD7W2tAjC1vGx8fQT7LPzHgZt5gJXla+pw5cL//gd27r7l98zXT4R2iI1aEG698EMvvGsvZusHf\nvcTejHz6vOEv/+SSz5+v6e96dOdo+pZLs+LmMPH+2PO+HzhMAbBs7IbnqwtebC74bHPB1tqoSlFF\n1ES1HaSEuTOY/9xRGyyXrObpvelspTaq+f3i5SYkP/OHW8kL7hSnyjp9BCM+KkdecxfxU9XL+wTx\nQVDMl1aE7/Sm5d/F8+tn3+vYw9eXix8B8keO+/7TFXT8/HpacFun6pZM/hxK5wNtzvGhgvpAmAZC\nmDAI3WqFFRMNhI1FWgfjFI2JKfcKk6KNifrypGIJwTNOnlFBrYsc+YLuPgDiqeNZBT3n8liCeCZO\nBqUFrAZs1ofeHWGasEEw2KiVT2HlBZqtLAiQItGPu6idqk3BTEyo/3KyvqqJyeNdO/NFNVB8F4WY\nU9wISEyt2p5tySqBnOBDQuTkNSlIY/ravGlPMq0olYtbPrvs3ywEVe9Qq7pI+mCS6ilLWkXVkgDG\nRre/oCQpy5R3yv7aZVxP133dN1n8goYJq29Y8w3PPnnHXXPLD8Fg3DOaztF1DY1ztM2KVdfy5GLi\n+tUNh/e3nH3as/33lrPPhItgYRRkDDT+yLgfmfYDsh/4w7d3/OGPe77+amRjG666DZ9sL/hy+4Qv\nN5d8ubnkiWlBXLSfFBHjdERnVnkh4SfQrZf1Q0T/5CbqQ5nVjpnEArMq7cGjZhrz38ev/nheK3L6\n+X4nTznOBZF7pK1ZNDqlBQ8JgvW9p+Hl5fTJl0wxH+7LQwTlQV36A7f+3JE3TtE0VYvHEEP7W4HO\nGlzTYlWiATB4jFcaY3HrDdIPiE8cZddGQJmmqHtMlXiwNqkpotjt/RTLvCmosTFFbslAtCBLD1j0\nT1+kBoNZlWVI1YHI2Cf4IXKKRlNypUA0zhXNhSAuoZrGZFSRezSJCZakMsh51e/3c0mg64+S/1/O\nZkNpDNGHLEqJjc8kSSliJBqTfQxeyQCa71fJQL4MaFpwXz85iEtGpO5+/VeE0tfsvVIiKrMKKPcN\nU0Lg54aSTv9Ed7zYYzJ/y31SDQy7N2zsH7g8/z2//MRytzWoOWNyHefnK84vOoZJCcFhraO7GmhD\nYNQR3w4Mqwm9slxdNtGO4KOXlR4n3HFie/R8E/a8+fYt//fLDxiBVdNw1q74cv2Ev7z8lL/75Av+\n+/NP8G0T14HcfwdYosOp/azs+gqnMjKV+3ObjzGSJzs+MwX3Lr+nBeBfdfwbUK0sz9eeIEt98n14\nvtfKiY5qibVJzMqDdw9s5FFgnvHytD9J13ii916oc0Tu9/O/9ajfL4v8VSCC00DbOlarNavtGWac\nIrctBrxGQ+Gqwe96GAe0bbCbDmkcfn9MRYFnDlODJwTF+IAfJ4ZpxKsg1mGdi8anRFhMrSw6feFH\n9IKFKJJC3RNXG0tzWYwJGGPnSjUiMHn8/ohdtVF94gSZMjBFrlNTvc8aIJedmscxemTGDX4yjct/\nTzZ/fPVQ8mQj6ZmEklY3csIaVVcupjMI5AQ6hkD0aIkgOg/SfUN+zY7UUoIuO5ffKRNHjS8oSIlA\nLepLAVL+HU19j7lVXBmTWkaofbUlEaTknl1UK6UyEoHge25e/iOri9/z7Fd7zp/9Cc3lGUdnePkB\nNlcNnz03/P4P17x9e6A/jrzZWsJhz3h3w4cf3qG0rNbnPL18hm0E6zzaKusm0Kzju2++CkgzcRwG\ncMJeB14fb/nq5Wv+y+p7/un9S1Z/8fd8/mQDblVWwpLZmA3gQsqamAczQA72yV5APMb0saATCyZ9\nmba5mrp7dz906COf5+PjBQRBRb5OKDqnm0oyZi7ArOih7pE1zc3dZ6hn4foesjzkcfLY5q4B61GR\np8a0PHs/cdScTf3ER68n68wiEDgUZ6KPs/FTTE+ash2a9SqG3HcOGSf0OBCGEbNZxVD9tiFcH2Og\nzaqLJeBQ1FowwhQ8/TgyETlyY92sWsnsSs20la4/OAnzZ9VyqxCTGxkNSY+YakbGWHhs46LhVpiL\nHYwWtVGXqwqjD0wGgjW1BuFkQvI8zyHnpxLbUkWRX2UGzlh1h+Q9k7a1ajQca0gAHdUUODcT+JL0\nyRBCTpY19yl+rDxr0m96b6+c9K1aOkUHnOdHtOyJzCDFvWQwhATKgto8FqDZOS9oKv2W7wdJ7Uki\nFLmPQhyPaX9L//Yr3v3hP+M33/BsDVfbnpubhj/+88CP7zybv7xidX7JxeEDu5sj++uJ61fZKDlh\nGFlvzri8OMNaAfUEnQgaC1AM48Sx3/Pdtzd8/90d/TAiHlQUP3pkEF6PN0zB8/tP/pTV5jnOnVc1\nO6XMyalacN6GMjMQeezqaXmAo66PfC1lny5nrdYY6Ml9QKUTzwRkqWOoj49Y6m3e9XPHT4BT5vP1\n93Jj1YCU3VrRysItLM4uAFmXJxddy9zcPNiZ57wP5qc9e3CCqx9qtVF8txOA+5mjbP7MTWrUkTvR\n6E87TdFAmD0PmhbJuSpWLd579NBDCLGAsjVoKkMmVf3DWBPTMAXlOE4xq6CJovBCzVyc4atJrMGc\nBQldcOkZvGyARkLO8JE2mykZ96SJfTEhg0g0MkquUp82eSBxmGWa6o1Qr6PIWRl5eLxPZala5WFQ\nHKGAoqKVp0oaAxOlF2OjjUF9mEvjqRDULozsS6GwWlsyA08t7i8W2kwN6xaYMV0rcK8ASm0cvywZ\nLHzeoxSruVpPVvdULOWiCwhWAjq9g9t/xh6+wbp3MKwYbt9w/VJ5+bsj7248784P3Hwy4O9uCbue\n4Xri2Mdo3aY1WBe4vvF8/7KnP4445zHW4xpQHRmHI7vdLT98d8vrH3f4aSSXywy9ol6ZmBjDyA/7\na74YD3TM718TT4XZjlPOxjEqQF/etSKy6XiM8TuZifLpIXzIMtl85QKE0tQ/jgsfSbWyROxTFxs4\nZV4zp35CD2U5QIX7qyYpc/Nx7+R7Z4v+3EKYwbW+v56Zqk8Peb8s3vHemUrPv7juERB5jMt/sP24\nwazGPCW5NmTQQAgeM8Ziu4aABjsHPoQQudqs15VY7T0Ejx3HqLYxBozFa6CfPEFMLK9l51K2pUen\nXdaZE8yIsjTy1lweOAMriSl9s/pdJCptvAYm7zE+EaZVG0E+gXp+TNDkfmjMcuPdG8+KHOcOMM/l\nvQCtvNWS90u0SaToWNUcx5JUXUkAtyapWYCjwugJJhXz8LG2aG0Im9fjcqvf0+WX8ZsXgpYpqMR+\nTcQ47wGRlABfCEaLB4cIYCNBNM5GVVC+Pm3V7NIZ250jK2Nel5xnR2lMj+VHNPwTv3y248VnHb/6\n1SV4y931xN2NoR8tr97AP/9uRHvD+6PldvD0h4A1HjcGcMp//sf3/O6rG842sD0Tzi8MT55a1usR\nI0fG/Z7XP96xuzkiwWOtRTW6G4b0P4tyHQ7cak87GwsWaxEoScRO/b+p1s4po7kA/eqOPAOKVGv8\ngf38k7/N5+u4k8dUOh8pje0DIEne0EtQrwdPZH6dGtRrDitzIOV7xTbMaojT5yrUNScXPz9GOOpE\nWT8NunWbDwG3VoD2EAlYclnxZSJDpKV/RiI3a6PmNVrobRq/0SNdun5ItTuNxdhYcxOlFFzGT2jf\no20bvVhsrIk4BuUwTQRrwbkI5pmzUVLQTR6vJZeWe5p1qzOAQlEjGMF5aAlV3YiopgCwxqKjj7nI\nmya5jMax06AEowQNqTK9LYmqZF4mj06MPDDxiymtDI+ZPFiUhsyU6BzhKHXofTxnrCnBK0VylOx6\nmAicLiD4PuFZgPyCV7l/TdJZF2mnPlIqASMUIhQg6vqNxKAgLxhPCSLSkjkzq4JquaHKr6LKefuB\n7dO3tO2R5q8+5cXnZ3zxJ1exUlW448PbD3z3amTce777+hZRZRgC3utc9i2A8Yb+Thl2I9fii4aq\n6wzGTUDP6I988xLW5y1/8yVMe8/1tfLjGwiT0BhL2xn+39ff06ye87fbXzEGjbns52Gq5ioTrwXH\ndm8u6rGfWcPclsy3USnsChGk7IX5EVVHagnrdG4ld/r+8fG9VqoXnH+bX2wW2+vLpdxyyt1XrSzb\nT18WoeH5fpZN3O/SCeGom11s+AdEpsWEPzwJi4msF9eDr5H7qwsthlHoRGkkVkuPxWvnfB9Z64H3\nkZu2NurBkxoFTYmyRKIBLAQQl4p/CpMGeu8LkGPMnEde8lycdLtKEVfUBguiStJAxFVqUZowRdVK\nBvIkjUkCQuNiruyswig50VP7ExBK6sF50z22B+5z3tV8pXmpiVI2LlvAaaXiIeXzyQWEA6iEUp9C\nk2ERyc+c/d1P5JRqltPc1v0+XR/59APrV6r/lieqRaUUo2VRB8EMZhnIilqmelbal5mAWyYuVm/4\n/OmOp786Z312zvnVGWcXa/r9yJNngU8/O3AclbvDxGHXM3llSkE+fopzakzMhqgh5iTPRlkBjDFM\nfmQKA5Mo+7uG1cry/BPDcNszTSPh1RhnywjGWr69fs/59jXPf3HLFAJGJGZNTGNQxktOh3ZWwcwS\nT438M2GWahIWeWfmwSpDNmPPKWmuuJzqKPF5J/NcHx+v1Fua/HtA/dBmq1iL5YLPqpQEkw9KHVrf\nWLZMfGS4tygXzy335w09e9LOv6VO37tf5/fLXZWq1eyfKlI+I/P1p1btmlvLwmyRYDRO5FqgawTj\nJG6AYUC8R8SWG1WzDlzQFBlJVkCYmOpWXARvTSAeXRIDUwggqVhFLrdV51hdcBUzii6ZngTSZVPE\nMTCSKu6ECZK7W+1HLTblj0k51MO+j6DjYn+zsD+pEIjc42ngWSE4nBxaXyMn52p96py6IXoJaQqW\nSrrUXHpMs241Zj300xQjZ9UTQipEQYyULH7mGeTLSFVzX6unHpEuFlkHdR7ruD20jE+8OENNHGOz\nYCtJtT0DopETNzkUPoH97PmlZF27wdOYnifbH/nl5wNffPonGNfhFY7DyM1xYJSJ7aVwtRfsDez2\nnn707HrlcFSGMdp0YvR9nFMjEdgbG//DBPrDxNArAYdTR9cIXi3S9IjdMQzHVI3J4YPj9njk9d0N\nL3cfYlrnohGYp/qBpBnpHSuYPQVtzZ46SpEsy0pK9pSKw86EIsDJldVzHzYI/ozP+cesEJQJ/D3W\nHOA0DH+p96tBX4GiFjkhBpr+WYou971Wakq8HL8TnjwbTiuiUESonNWvohtGoElecBpgUi1FlRec\nTen73BGpgC6ezv2eJQIp10UOsbNCIzGvc2w8RT2msGolprXVEItFhHFEQhcNXKbiFvzsdmY0lohF\n9AAAIABJREFUPjFABHIT9eMmJVYqxW2zeqH0N42tFmXQgpBV22MONlHFhimVcAuEEKK+P3g0CJIy\nHYYpFUmTlKEv5LS7gk/gaVKSvCyILJ67EA1YHgUrpbpY0rrJ6gpJHHmIpfLSu2v9NCGWoBs9WlIJ\nx/ZisQQhWEcuWJ2ZlYVBeNGv3P8HuRWkfh8zMzVCIpIp30wE9tKV+E9KLCVI9MMXSS45+aLZuycy\nD7M/vqYBa8zEWXPH+WpECLz7oPz46i1ff3PDN19fM02e/jhy2A8cD4Hh6DkcPXe30cg5TrHYc9bj\nK4EJSbECAWuVxgmr1iCtoRHwo+JH2N8qx35ERDgeVzy5uuIw9lFLLoHt2rFqLSb59Nf7p4xDGT5Z\nSG61XeveUjkF2zxPFRjnkorVwjvBGLn36XSG/zWq249afLkIlIlF1+qFH9hfy895w/2E/uoh53wp\n27oKrEGoc4qXQdf6vmqDU4GozAxVPJ/Lf8XqMa2NT/KiECSnqF5w1zPhqfSPJ5xXLQ2X56sCHvU9\n07TndrjhG9kxSUxNyuRpVNi4lq07p20cRgNMECZPGEfaECLwq8bEYblauo3VgSQFqMTCEgFsLLcl\nKeqPei4jRavmT5a/18CpM0nKso5RaIrrYZ7bEMElVYVhCmg/kqND5xwVcQMFwDihbQzBwKSxWn2a\n4hPW5tQfOPe63szZyJkIN9GYbInunpK5cjLHlVUTEvuac9jkPNqR8sTyfikgqLi1Sd2DmQOsd/6D\ne7riQvKemIdZyhpd3GzMXOXbkuZaoufSqQwvkShGqQmCmZ8ZGRwwOiDjO27ef6C/fs/ubuC3v3vP\nH373nm++uU7gr4UIqIdpDByPgXEUgppZXWcN1tlUqtCkXEExaZtHER+loBA0EusAw0HxXvHe0HUd\nKoEpTIhVWiesneFMLIfElCwklLKpavZi+Vs97PXWlGrc52mQ+cLq5pOvi3NzX6TywFvspIJ5Dx0f\nPSAoe0ucou9Dknr8WQpLXN+22I6PzYRo2fjLWAqtqGbVmlTtpVEs+szEmSBEI36IlNcIOImFlBsr\nMWxbFSRyjSYB+ZQMTfFpWl59XgO1VJIpe4I+k6IydUI4EMI7jrs3/PH9S279jk0YCcHQiuHctTzr\ntnwRPuHp5ox1a5nGHj+M6OBZDy0r62gHn3yJDUGkpDPFT1E9oIExeDAdhd1NGevyNMSIypPVtsDN\nOcSknnNN2fUM0Col4ZGojZw3GkG6H6L+fpiwzhG9R5KuOXuPGINrLF1rmIJk9WqMUC3kO41pPcnM\nRLqsAs3vVv0rGoFcFZc0C3kAJOfJVmaduKfKvidVmoJUbDgzMWl95h4Vr5G5N5xKqvMv84BLpeYr\nT83TInldmRigFPxcUckKEiQSyVT8OAf9ACVQK3v4zKMXx9UPR3b7H/nNy5fcvP2O77694Xe/+cCb\n13cc9seZSSXpwEWwArkKawobiME4ztJ1De2qpV21NF0HavAejr1n8jGC1xhh3UHbCjYY7q5Hht4j\nAq1paSxgBpzAxjietyt+FMOYx+n+Ul0Sel2ukOw9kpmbB4/MYKR5mdnDGXOWnnBVDxI3/1A8y6Ij\nDxwflSOHeTuV8wklsxEze2dkrWN2e6gYpupDxcnlr3lF1teeJACf8XJBZx/ot5SJKE2jlORAeY8K\nBBUGL5igSW1aUW2Jy3fOhzwTGyOl4XIENOorBSyezvRcrj7wdPuGq+0rhuMNL7/9wH/63Wt+NJGb\nAYv1BjMJMgTOv/uOZ5dP+cVnn3N7+MDt9Xvurt9zdrbhTy4u+Q9XT3mxPUdUOB6VZmfYjB1rBTd5\nBh/og8aCE8UXOnU7cXBl+ZUNUi3IBCbzCFcUWCT5ZSsdSmMtVh1BU6rdtLj1OJTGpImeMyTpgRAI\nAkcRejWMwcQKPJkjrWKoizRWLZ24iZf8uRGppnUJXiWFSnmpxN3rfG8QUm6PTLDiC2dPkalM9TyY\nWvWxdK78MB+LpGNySp5qcKg/zoxDsdFkbxSb8qr4SNAxUhKpacrdUwN5ISwIBM/u7Qfe/8tvuX39\nR24/vOLm9sjNzZHQT1hJAU2JOMXI3fhf7l4QUp55RcfAcZo4HnqMNdjG0rQtTdfgWocYB1j8pOyC\nchDFYQjG4NqUlVKVyQvjAFYazun4dLPhnTWze7EshidN48nez3t+Hvg5YyWZ6NbSfMUYnEpG1fnc\n1hIME5F8wJ05z9tjWP5xk2Y99mXxbkvu+XHPj3st1qSUGR3lgXb03q3LZmagPZE45xM1IacEws1B\npgU5sqGoBoble9Tdro2enR3Ytrc8P/+R5+dveXb+gcvtHdd3ytA7Lj+9YFqtka6NzhKhIQzKtO+5\nmRyct6yeC8MovG+U744D+7c/8t2ho3ef8pdPn2Ma4cOxZ3zbsjId59LQTfD18TU3esS7C6zNiyoT\n13kM5uE8AfH8u96fQUkSkVNoEaw1GLWRa9WQihiDTtEIamwy0tZ6XI069RFhwDBqlBhmL4FMvKsN\nyP1pP1kpNb0q85l1zkaiaF+AOsxgmfUZWWtVIUHSBGlUUZysm5mXSDclRiZ35FTQPP2ahrjcHt+h\nlim0YnCkkq7ibxp8tIPU6oHMtaOzG3bVZ+NH9LCjf/OO6x9uuL3ZM44eMymtCCbFIYTUqZkjj3sg\n5HfM46ekwK4pAqCBqRmZ2gjkxrXJ88rFtAc52lezSpMoBXmLhoYvzp7y5dkTrtoVrgp2q5JKzMD8\nc1bFn9BXLzhpfQB0K8JbQPwh42bmzKtbZ4L/8PGRgDx7AuiDi3im9acDXXt5VPhct1E9I/6pwlzv\niaun9z1CJOor00Nrp7FTAS1DXHZLi31dtBI3Q2mr3rRxF0YjVQ7NjuL8RXfL55ff8qe/+CeenN+x\nXYNxZxzlCZvnW/7s7yy62WJXDUZHvHSxZGffc+wNjYOzC9isLJt3LXdrxzf/6SW3uzdwuIX2PY0E\n3tzsePuqx/iG83bNKrRcjz236wmzvcK6HtFjGgsHmvop84zNo1ONrmZxs0xNAoXZpa+TVJneRkul\neh/HSEFNiPV4hchBmtiIJqOjBs+kMGrUjUeGWpOLH1X/Tud1PjGrU2riM18vCFZjFK2NiTgKTJZ3\ny0tPJKpbUtSppL6UdZLzuc9cCrNReF5X91QnJ/3X6rukdTcT1ySRFAZmvqkECOVGQtQ950GWJEEI\npMCrrNKbpQdRxYxHmnHPWgc6DUzG0LWG1gq99/Q+0KfsiyH3w8QkaHORZAp4zUMu0QF1Ckw+ptrt\niakaXNfRrNY0qxYRwQcllppVsNFIHwIYLH/z/Bf89bPP2DoXU9tm5kOz9Djv6Xl/z8OyWCdpDJcu\ngfdBWE9w5jEIlpM1eXq+Ig38FJR/RB35qWdK7U0S/5H5R2br00mgQ7UyH/aAqcTOxXjXMHNP2H6g\nz1SzejpJUghr1EPeJyi6uG0Wcpf9LQ55pV0rSmNHrrobPn/yBz5/8hUXmw84MzKOjmmcuD0qNyN8\nmDx3r3eMk0f0gNeY+IrpQL8fmQ4ToQ9sLy0TE+9vd4hRJhW+f9sz/T9veXpuuDwz/OnfnnF52bBZ\nG8bjwN3NxIvbwF7fMLh/ZLC3DPyKUZ8zcl4BxzwfJ6M/v5nU7z5fboiV6REhiBAsKaRdk3teJHLl\nBg2oJ4aEAiImejqIKeA4E8zMDZ08thJja8Npnc1OUDBhvj5EoHA+9SFVqxGRWFPURzUPqVBHqcSU\nQ/gzsTeWkDyG5hVwQgDvifonw5zvqRi73EIBTSo1kCUF/hALSvjYr0CMOfDBI5gScCWeOB4keJPK\nqBsCdjzi33zF9ONv8TevsGGidQ0qFj8csZrUWili2OuUpDKHSQFrMZo4St4hkcOQcDakdRLS/m4k\n1nW100A4eIYxFowWY/HJVdIHw3gckUlZmY5fP3nBLy6fEmqVhVaeOMiML2ndzLVx55Vab/+aoazn\nIwP7Q0jyWD2Dn2QudKlQeQj04d9CQFD+Xn2umYSfur4GzMde8LTt2NZ9ruZnQfynL0mLOx8/RRR+\n4rws+yMSWLs7Ltdv+fzqe55ffsv59hVWBrz3eB/1fcMBbt5c8/W/7NjdBUbvUTOgNtoaRDzTbmC8\nGRluAm5jkJWgXQAdUFFuDyP9twPvOuHqzHF9O/Dik4bnnziunsDFubIalOOw527/NbvDB47+R47h\nM9DPGc3nqFkj9ZJaED3lnjNsGbTI6VkUm9j0QDKlRoY23ZoMmykvyIJEJHDxEo21S+L/APo9MH91\nl2ujtiaVgjPQCJxZZYUlyIrBaKrsbiLo+5T2YJqQKeZikZxAi2jwVg2oSAxcyhV3FpR+uZqL6awC\n6Xl7545X95Z3mSU7g5Tw9CL6RxSdVT8a5uCg3JpEL4+wAK3o2SLHHXx4yfjyt0zvv8P4kcYI3jk8\nBuuaWElJQpRiNL5nDvgRsQuGJuruk+2oSBJpDRSinCTYVARFiETVGMUTi26PxiDDxFnT8ouLDU/P\nNqy7ll2Vo17zoplf6mQ91JL/bOQ81YHXqhGBpb68OrS6/hSrTrHspCMny+FhpPtI2Q9PFyrzhk4d\nL+qQdC6L4QtRphqUOmhoYQl+iKup72Fe2Mvz+hOjqwv1Vs08LYxQ1ebUBxuTe59zwigkYKXnfPWK\nzy5+zy+ff0XX3WFkZPIB1EcDYTMw3d7w4Y8H/vAPL/FDQBywEdzG4TqHcw49eHQXsHtl2E3IRuie\nNqwbD06QQel3A/u3nh96pfcTT543/Om/3/Af/37Ls2cO04LVEcMNMnyPGX6LnZ5j9E/x7f+EtL/A\nuAtqt8TlmJ3yHhHBlJQChJi5EeJmnlIgi0kbfFZBSEnylOMCskw1GUlAXhuN7ou6i1moQFDS8wRK\nyLiI0Imwccq2gQsjnG9bRn/B3koxUFuicduOE7IfMGYf125rI8B7TxBBCYQAPj3JIBVInK67gvLM\napx4vib6emLAr0aYNBylDiuqSIrelRz8Y6NePNe+rD1WlEhUsyyBKtYHONwSXn/D9PYbwu49nbW0\n1uHVoypYa3EIXgJtiMZS1ZjywWbuWdMri0/ceHo3qfT6tTcPibMVMGJK3IRFCNPIGAITUa1z0Tm+\nfLrFucCIT+/IvXYLk8Ep83gP3RfXSHWuZhl+Kq/K6fWn1xRHiqojUtl2HrGDfhwgfzDbXHHslAcH\npRaVq4YWOZlKC3nGgcWuKIbTmq9ZMo6LqRKqdiWJmDOVzpdGCh/PmxxPnVibmdrO6pTyfhEtMg2r\nCBpY0/Ns80c+OfsdT8++pm2OGJ1iZBoTRixiHD5Yfvj2PX/87XvG3YG2EZ6cOT77vOPy+Yazy47V\nuqE1qShDD0FCFOcdHP1E308cd56bt5abdz3X7wa+e+/54duR63c9jR341a8d2zO4fj9y967ncDMw\njQE/vWHQt+y6wPkv/1fOnl8s52L5ZflR84YyWHz0zdYQC0uoYAIxM99MrePacTnSJ/5Wu96PRI68\ngH6+uXLJq3kiY2b5L8OkAZzAtlUuWrjqlIu143xl2LSKDZ42CIM2DAkArAibVYcTYQqB6TDE7JL9\nhENgf0RuDzS7I6JKGDJHntQ45r7vfb0UZ44vXmOY11whksnNsdYSZCJnMIVJioYTLW6GpERoxqbq\nS6oF3EkEgGSPEFWMCjIeI6d++Rluf007eobhK1bORYfRACPKGCZEA401ONuAEayx5AJyEzAYGL1G\nV828J6v8wyUNQmaMJHLzzjZ0TUfnXPR0GoR+mpiCsnEW40fevXnNP3dfoaz49IunhclYGjvjmBfB\nhOrZiTOfSf18Lv+eOXFN8/SgCuVEF17aLExfBJLMtGoNBmkmH0uYBR9VtXJK7R76WOuS74N/DcD1\nFUIlVZ/cl4ekpowP0IIIvHWDeZvV+ZfzYGdAWhANWdADhQW43OtV3qVJ9BbtkekbGr6jNR8wSKzQ\nM0VuZxwDw6Ac+8Dr1xPDAVZtwy+/2PLnf37BX//1OWcXLatNQ9taGpfSPfmog1RiHotJoR8C/X5i\nfzdye93z7s2e33xzy29+e8urV0fevRk4v4hFFI6HiXH0DKNnfzPy4f2Rm73naP+ZX7Z/xvry32E7\nV8ZjXpT1rFLGIJ815BJvMZozg2ne1MZEUqhCSQUrRI8GEILGzCw+VXqvN0l82jJmsv49V88xEjnu\ny87wZGO4WAnnLZy1sO0sXSO0FoKPucRDcLHQhiQ3vq5FTcwg6TctYVzH6E6Sf/a+Z9r1mHc3jLcj\nFodx0Z9aq56WHublVK/l6vOCX6kXWrlN5nWX3f+Cpj5piWIzLubdMdYgQWOMQQgllUMUgKQ80fhY\nZo92jTxpWYUR60fYvcP7gA89E0JD9kiJxb9DcvnprEtZOj3DJBxH6EcYTajeN4GrBvzks00UMQZn\nHI1zNK5h3bZ0TYMzFlCswDRObKxjJQYTPEYDSmAIvkpoNnO/9/bpydpZDHEFzLL8YQH+j6lQ6uvv\n3f/APC5+exzHP56xU047noewkkBm1ztZ3AswG41yE/NGzeug/FY1LSwnIzVWQHTu0D1oJjMEJy8z\n/1rew5y8V6b697becggSiIMSfM/h7iXj+j0aBoYedseJu0Ng9B03Hyaurz27Hbx9a3Bmw/m24de/\nfs7f/Q/P+Y9//xzXRN1h8YRJHnvZj9iHgDEtGsCPnqDQHwY+fLjjl795i3OG3d3E2MPuTunWRJG5\ndbgVTNfKmw8j3788MukPXPziHS9+3eO6Zpag8jxJTQTzO0shukZiWljnYwBQ9OozqaKOYJo5Fk9t\nBpgIoDkLog+xMHSu9F6NLIu4AWZOyorQGOis0hl4vhE+v7B8+bRhs7K0LrsaJk5JA95ACDG/R1CZ\nq7VbmwhPwLYNOBcFh9SfEJRhmJCrDf7dgc2d4YwYoDIpJeq3LEk5WX+SmYBZBMln5lWoZVzzKo4R\nlSl/jdeku0++5EYwrYtAbmKOHslpbANRcpMUwJ/UVdZPeOOQVYe1hsYa7Lhnevs1fjwy+Yl+glYc\nRiyti5kpp8RTrp2lNdGjZPJCZ+AgEqOfhUS0DQEYvafXIQlUBmMs1rlU67Nh1Xa0ziEiBG0Q9Yze\ns7KWTdNwuW759PyCi9Uq2o7QChfz+quxY0ny/zWFj8vKKuqgxH5W4r7UVypL/Ku8gO6hw6lO/pHj\no/qRQ+5cBtE6qEIeHbgCetT7Vepxgmoxz0zyHFu88Fop96Y7qptqaJ/bqX9Zfjy549H+lz6KUKqQ\n580bIAzK7W1Pf+kZNfDymxt+fBN4/c7x/kbYX3uGXUxspCOE0dK0ytu3B/7lv77Dtp7zC0fTCiEl\nCjo7a3jxYo011UKzkcP3GqLvrnhca1lv12zPNnRuz8210A+B77+faJqRxiVgazvExk0KElPjllqZ\nzCiUFrgpw6yLxQtzyLtTXVSUV2XOAyMxKtFYW2ikhAAhZsoDCMaR86urzCvBVKJ0VBEInRUuGvj8\n3PB8K1yuhItNw7ozNE5xxd85B3WlpE4m6metRN100AiKk58KwRYxYALBp1DxLDZbQ7ja4DYtfzbA\n5VF4c/S828O7Xth5IeicFC0kkSa+vlQc66wiimORIN3MTMhizWWUCCG6dKaC1VGqmTk+MbEgd/b0\nkSTJCSS3ywhuwaUUDiFWZzJNh1ttaNcbvJ/wOmGDMklMTzFpYNSAR6NqhyhYWSM0q4azdfQRHyZP\nCHB+tubQD9zeHblJkVPGGIzYqHtvHG3b0TUN1sTgL5FIDAcf2AJnmw2/evGcp2dXbNyKXrP9Q4tR\n957Qw7w2YcbRErVb7eH6mFUl843mxPtp0WjNkNZgXV2ycLIp5x/GlY8bEHSPM86c6/yt1lyVvwtR\nI3PCQuXeMONxyc18/1m5D5rarHuxGPf6b7nolHY+dMcD7/zQFeX1Zr2ZsZZ21fHuw8jtzQfe/Hjk\n9Vvh3fuJ3c6jg2DU0LWO7VbYbi2uEdwK3t8e+S//4mlXFmPBJ/F+s7U8e9ZFsTbln+66NqpeWqFr\nDC6tiIuLjmdPOy4vG+52ym4HPniMAyOxWsuqc4weVusWz5Z2tca17cm7yYLwyWIe59fPhRqM+liy\nS0Os/hPl+rL4F9KcKohJOtxo5PTWomKLFLJMtZr5V8PGwbO18OWV4cWZ4Wpt2LZC28a6oUFTwE+e\nmyLbZxtPYjyUqPMOyXVOY6SvyXneVQk+lPtEBE3cb2c9L1rlbCO82Ajf38KPe+VtL1VfTxiG+qvM\nbq9Lzm95i0m2BSMUT5WYhz4xDwnIcxWgmAUz9luSQTS7YRqil46k+qoFoJqO9vwZxveJaNzCOMV7\ni7HO0VjhvLGct5Z1I6h6fIiZNb0oPunCrTFM/YgNwtq1Uc6VVNfVRq68bRw2GTDVBxCDs471as2q\naznv1jxfX7Ft1rQm6u6zP/08XjWUx8/3sfIE6os+5qfumZ+xUDPMP1SfterLQ/Obo2oe1638m1Ct\n5E9LS+3JSxfSVt9b8eTCDOLpurn9h4F1YYjIclDFQeZnzNi9VLQ8Pqz1vdVOy4tHs8g2vwWJAhvi\nhnNNFA3f/NDz47cfuH3vuL2zHA+K+onGNaxWLWICbmVZXUK3MkyT8v6u5+XbXQyS8DBNgaBC08B6\nI1iNOmfnDOtNw9mZ4+K84fKi4/zMsdnaWJF8Zbh6YukHpT+CH2AcDIejZxgmViuPAbquQZsrus0Z\nrm1RQhmrgnnzkBRiNYN78ljREGuNpvFR1VT2MiJxDrcvxiZJIJ2SLfkM5KZSi0mt2omqlM4KL1bK\nLy/hz184NiuhdRKNkinzHpqIiEr0x05FkyMHmzh+heStHZ8TNJZFy6sjATkaz3uJUauS1phXz7oz\nXGwEc27ZNB4nymES+qClclwZpPLhPsd4eszWpWjktCZ7gmhyOawD9pNKJmgERNWkrgpYT0yuldey\nkBKqxTkxEgmB6dY0V5/Riqcl4MKIHI6YaaQPcb6ME1zX8unlGc/PVlx0limM9OPEfhi4OR5AokSy\nuzvgB494ZW1d9Msn5tqXlFTLpeImuY4nIjRNy6pp2K46zrsNT7szNq6jM5aAJCPrqe/PMpCrLNWi\nApnXal1Hczkx9ydi4WlVMZxxa0g1+pVSuALBfNlsBl8aUuvjoybNKmOky/Pzj0l0rF78lCPJx+kl\nWZKs2eiZYJxQvtN2a4ieFfWzGoglptfn5x/vdXfJs9congFe0gkJqB/Y799z+/7IzeuGu5uGMURx\n1jSWYIVjim4cjp63fWCaRg53E8fdyHAcYyrYKeC9R6wkl+UQ9aQhpTa14KyhaRyrlWW1cWzPGi6v\nOqwR2pXls18I1nR0rdCuHT++uuWbb655/erA4W5EbOCTXz+h3WwxzhAmH19Kak5lHrDFeKfhbYLS\nhIAJvqQrNIaYojYI4iIBlBCBKOfJNhJ15AEikKeMgoUYp/ZFY1/OG+XLS+HzC+HZVmidxjEJxMpC\nIUVohpQjT5IOPOd0T3MXMToUEPTqGcYRIbrd1fxV3IzpSjXlM2LxKlgMXeP49FIQ8fTe88NeuB0N\nBlNSJAuGObT1/hHXtS5+r2GoEJhaJZPWroa4VsIU1UfonI8l74gY+GQjZy7RuIwxWLdCtlcInrYJ\nGDNyIQfOVjEX+M3hyPWhx6jlou14sXJ8ul1xsVkxhJH9NND1Dkzg+nbP3V3P0McapzYVhM46+ky4\n49zHyE/vPeM4kguMeAKbdsWz7TmfXF5wtdrgbMsocb2YChzvbdJ67B6hkvdo672jwrfqnpm5kMW5\nMk95XZ1y5rkNfbxPH7WwRKGL9/o2v+j8dQ6FZvnrAsRrsKjhtX7EaVRW/F1Ovtedvf/L4nQe4AeJ\npTzwad5EFY4XXXmYJob9gfff3XHzVjn2HbsD9METZKT4nRjF3ChoIEwT0zgxHiam3uOnmHskAmFI\nHFTa7Mmlb47Xi+HSxoFzlqa1rDYNXWdoG4MYy3rtODtvuXiyRpxwdtlyOMY6i8MkIDYWA0heI9kn\nRcunepyTioIkLgOdUVoBKwZJHgWSEvSRaouGcUxVX0x0lavmNxADV3KVesnPqpbLWSN8emb4d88M\nF2tYNykvx3xJ/FeJOtFEiAQtATF5muMwpgRYIRC853jYY62jW60wYtNvHu99sSOEJG1M3sfK70aY\nJsPkJqyxnK3hy6vIkU8+0AdJ3Gj9ttU6eowlJ66nJI+QZyQLCpK8KkTj+lGVuaBElhq8Ft26EjMT\nanILzIE9ChgruLbFcsY2nGPHM/ywYbNuuAwbej+w73tEDKum5UnXcdG0bJxD+ol+9Eg/0IyBJsSg\nKy+KM+Bt9uo3BcitNcWLqR9HDv3A8XhEnMVZS2ctL9bnfL694qpZs7ENIibm8SGD5smuzJvwoT1c\nMcpLA/SJEbPMkpR/IXPxiQhVV0tiEue9MXPtD871ozP9EQtL1EEzuYOhHswCbPmYN1JmtWtjT/5U\nBqUAa/WARybpX3Hqsdc47d7PHNVF+f2rf7KBw/vA4TDy5qXncC3se8vt/kDvR7yOMZe4xnDqEAJh\nmCIn5X2pvSlELlU0FYeoB7peu5k5TIvqmH2RgRx4aJxltW7ZXnRcPdvQrixBlG4dA44mdVjnkqEz\nq77mh0jqR3ztedSMpAINIrSitAaccyBJXWFANEYe6pgkCzWRMEFJAZv7G0SK2G8KhMWXFIHLFXx2\nbvj0wmFtzhuynEetAoxKtj9mbleT+k7TuUwsNSh+8qBSqs5riH0OforeKOlB3gfGcYpcJIFRlD3C\nqlthjOOim7hqlf3R4tUw1jaBahWdgnjeGzVzgM7EaE6aL0WizJ4s+BDdElWhTWM4hNRlX/ZcqIlk\nGgtrFOeEhpb1Zo3p14y7FQbHRQPNOhpMCQKTIONEk3zWwzDiDz3hMNCqcNY0GGI+lxBCJNA5dbVI\nKmIV15kPgWEYOBwPHPoe4x2brmPVrvh0e8Fnmws2pqVL9Vsb5qRfp3A8G8bjmMUrtHBoQx94AAAg\nAElEQVSdeW/mX+aApTgv5W7JdgMhG/XvEY3cet4b+dfHiEj+7SeA6eMEBNVFCKuEzsvgnplU1RlI\nFrRqvnUG/3R+OWRLUIEHOJnq62mK0Pp8ufwnOKGfPerXX+j748Ix1uLcCjFP2N295u3r99x+iIVq\nc+pPDRHIJ+9jngofuUaT2oy6ZIqRq4yCPNiNsiBLX5JnBx4keIbxyLjref/jHWpjUWbTONQL27M1\n50+f067XiMwVc6Re2HkKinXfFFvklKQEA7GOqE1coigGl6QKxa26+E55Y6W+ion5VbwQixJYgxNJ\n6YSjTNCI8mxjeHGW9KyagLxUU4peEcGHNC/MY1HmSWZpTmfdshLn7Pz8vCzOaRijJwVgkjoi1+cc\nvGcKgaZZodOeaew5DBN9PzAF5W6/R6aWC7vBq+UuWAYVpKhYHl5QNZ3W6oQhRsxKCHnRUdhSERgm\nwnFEhwlpG4yz4FL1pZQX3ho/G5U1pSPIY0hM6yvWIpstcjxDXcvt7Y4uGNbnF1xenuEah58Ch9s7\njnd77vZ79sORnoDZtDy7uGAaR+7udhi5A+0xOjH6QInmdAZMVJ+MXhl9wKuAsTjjOGvXfH7+lGeb\nc7bdOvqbG0dIKpXKbh4Zgczs3R/OeyOdh62C/ByDVZjOuKbvM2z1WpqxShb7bnHfKVcuiz/3jo+W\n/fAhpcc9XTOnSzTrj6QMZp6LxXgtPj9m6nzgcpFHQfyh7/UzTh/7rz1OnoAQMMYSmhVNe4HQYMeJ\nKydYsSCOPoDxHmFEvKZgi5QPo1ogwqy6oMZo0ZMhyhROEkBpGTfJsmTydggEJvUx8KaZsMbg7C3X\nb/7Am+8/xXYt24tnWOuiPrUyQMc+zdLC3CUpQUCZydakdoq7xyBWY9WYdI+xdvYekKQjV5gwyfw4\nJ1ezAmsLZ52yaRXRbLhMunCTAXoeo7p0n5b/FCW6FGZjbNAwMw5VTHvuuwCqgWmaokGOyJGHoCAT\nmlUow8i47zn0Ize7PWJacBOXXcswrhiDo7CFVGvxFINO16JEkLUQ0wTk3CpJwpBJCaNHfIgSFQI+\nlqLLjoeaVV1E/261JqpdCEhKFYEIo+04yBbbXuDXF/RHxYeedj+wPVNWm5bNtuH87AzfjwyHI3f7\nHTf7Ow5DjzGCHydCEEKQxNQkI7QmFDYGT65YFfO6qwExhnXbctWted5tMAHGMUZ5ZtfEmO4hRXlk\nXDhlbKo9XqPOYowrnr6+WBLrvDCgPnAsYaQsnoozn1lXPdmrj6HMR3Q/TOYgYSZrpZN68m3+UjvZ\nl5YymOdr846Uk8kp50++V+f+f3PahSI/8vMjHH39BpLGwuBpxx0OZTQTd23DWduiXcP52tG1HR7H\n693AfhjpB0ujMMnIFDxBzKKwa4msPiVIzNxFBv6oNqDkda4vTj4aiMRNZQIMIUSDlBGOcsOHH/6F\npm1QP/DiV/+BzeUz2vUWZ5qF4PTQ8Kpk90MtnFKpniT5nmjgygYtMSmjYLouoEwKE9nLBPKqsAKb\nRlk3SmOT6qmoTELipqqAI1WCj+JCaUljbvSggRB8xkFAlyrAxO5ln3kfFD8GhmFknKZoSJQIJ1OY\nCH5inJRxnLjbHdkdjuyOA8aMuE7pbINRi+AqlcnJ88pynxmhev/MEfYa67H6kPRuaU36yDyYlG8l\nhMQdGoMawRvBd2BbR9s6vI05ZYx6TAg0CohlFEvvBdNdwuYpY79i7G+R4y3ruwnXTLRtx3rTYddC\nOPM0dytoLOH6mt1ux/7Qsz9GT5ZM+KzJBEXwSJznBNBIXN9iDa1r2LiWc9vgx4l9f+SwWnFmA060\nEO/M6BQOWGf72wJzFvJPYR3rrbGE6wLmCcEe8DCpl//Mymr1PUnTOoP4zLw+jk0fKWlW+iuGU7ol\nC5COf2NeiaVIE1+sWrSZgzt9CFDuNJndOxlCObm8aqv23jzl7WuZQk7Oca9P9/M1ZA5VFax61v6O\nT27+wJkMBJ2AHXbj2D9/youN49nlBSqOf/zjD7y62XMngUlahknpPYx+LiEnRC4spy/NuaWzz0PC\nw7JQAjGqL3Lfp2MZjaG5jkPGEe995EyngbB7xfUf/neGt1/x4Yff84u/+p/55Mu/ot04aifM3F4m\nXnn8nMaAIGNMTFkaJHmO5EELhGNMCSudK1JD3sgJo6rIzpmrcUbZtkprdU5KpplI1NxmcmXzU/wv\n6cijr3L0khBjy/eibkkcbsb22IZPBtIQ0ymM0bMi+AmX0q6GaWKYPH0/MowTx35gGEesieqDvj/y\n4e57+vMV0nWRG5Z5/c9cd7X2kgomw5IJORlZwnwf0CFF2OSFoFH3H/BgYqUd3zjUGnxrORjL7szS\nPdnw9LxFU0VxQ8Bqi0weH+CIoOMKH46Mt8/Qywum4yXX/R3hw2t2h/dc3dzRJskqeM/heOD2bsfN\n7Y673YH94cju2NP3Q/RaQaMqRaMz0xBgpKrDKkSCI0KvyuADJiQPruHI7XHPWbNiZdsFXhhkrtAl\nUmwYC9tatUMWjGPaMzUfKlVby8SzNd84E4NFizrfW76nGIYSSZCZikcYzY+ba0Xml3oo5WjNZRdj\nGRUk1gBcPuvMXd97aD6X/ZDTdqjaqcG5/L5ookqYE1+kXFukpOUj5ztleS5rkkSE9njD5v3v6f/r\nP2DNyOpswy/lyOqyY7d+wvOzLc8vzmmc42zT8Zuvf+APP7zmx75PdiphDIExpOrzJMOQiYllY66M\nnBM2Rma2JiVfgiiqSuQggxB9ost4xnY6Y3DGxKyEEtU5gwpit2wuv+Bs09F1DWb/lttv/wWHZfXv\n/xbTtJURdB6DmmZbjdGdZf7ShtLsSRFisibFlgLRkjaTIniByUAwptJwZElH6YxiUtbBgIlJqnIS\ntFg6npidVaNXjGmiqsHEgCMphCFFeTJ7spQVmfVCIpHwTNE7ZZgmhmnC+5ACWgyNc6zXHcPgOTqX\n1oLinKEffXTDO3qOvsGuPdJF+Lkn5p+qWKo1lsfXoEXeCAKjESYBugZtW3COsFqh2zXhfMO0XeO7\nFm0cU2sZreUglm235rOmLV40qU4y+BDXDxLdXXct4+cb+t2B492e4W5HeLvl+sOPfHj1Fu13MA0E\nPzKNI/0wJGI20Cfilm0/XmN6Wk9MUeyRShqa39T7wE5HXpsDXx/3eOOwTYMberbDkSCOsckMQJqr\n4so572GpNnEp4bgY77KbK8Iw441IXpP3MXfGmBNO/aELK7zLAFXz7afHRw7RT92U+917CIRNHiAo\n3M8CDYCfVY1I/THPihR3rIfaKQSi9PchKi1lM0KtnZinT+aPpY3sedGNd2yvv2X4/ndIK7TmBett\ng9k6dpstzy6e8PRsy1nb8MmTM7YWGqIR8McbGHwPqnOS/sxlA1iZK6OQGTHBmagFDZpBKVO0aEC0\nUAhCZwwra+mcY/ABxePF4toLVk++4NM//R+5OF/TuolpuIub7rhPREWT/jU+vWBONUZOA1ZnDjxJ\nwuRgGk2h4GIlVtYxkvS0iRAlFUDI1ixmcdmgOBMz92lI3i2hykOTNmVI5eKC97HYQghMfmKaJqbg\n8VP8HF0KA96Hsrni/NvoUZESZ5lUD3OcAsM4EUKga6L6om0sm/WGqQsx6ZM1rNqGTT+wOwz0h4E9\nnuw6JKUc2wwED6nM6k9la4igBqa2wTvDAaVvHGGTwLtt8dsN/mJLuNziNytC16LOEazBW4MXYaVK\nqzl6NaZLcM6W7yqR4w/jhml4Qn97y2F34HB35PDqjN0PW3bfWfq3rzh+uON4/ZZpGJh8jO4M6iNw\nKwnEI+c9pVB3NaC2dh2e7SAalMM08YYjdn/LJAbfNqhfczb1YBuCaaMqrcx6WmjlzEwhiuuq1jTj\nhKOWE6bu3jyU7f7fcCzxJbf7WFsfyf1wueSW1CsOaeQ9tLpFFu8Vr5GCmFJm5l/z/Hv4X4k3cx8S\nps3Z++SkEV2+h0BM4qSVaFWJwvMiSQAkma4LLgS26nnx5IJnLy45++JTfnj7GhkHLNCayEGvWse6\n23DxV3/Grz55zpf/9Sv+r999y29evuO9TDRGGINP+sUIagETrfZI8iGf3cmmEBi85+gDQzIeIcrK\nCJ21bK3DGaExQmMsq6ZlP3r6MOHU8MkXf8Xnf/2/8Ku//Xu6zQYRRcOEqsHYBrvqSv4VwyxSZuk1\nj44LHhtiMIp6UtCSlrQsgmC6FtomuhiSuJ/UiEqs3YjYSrhLwJdrZxLwChaXhibmxbbOAYIPE8f+\nyN1ux+3dLR8+XPPh/XvevXvLYb9jf7djf3fHMA6M48g0TUDy6lNoXEPTNjRd9Px4+uw5n3/2BS8+\n/RxjXASnARqzxaxXOCM462JAVmsJ4Yxx9BwOI+erFe9uD7y+C9y2LT1V3o7TDS7VGdWFi6CGyCyM\nbcPNes10dcbu6Tnj+TZy3uuWqbFxTJ3FOFuiQMu+yN4ppXanzXqp4s8PiVAagzgDrcPZgN10tE+U\nqy+eo3/zZ/jbG26++Zbv/o9/4Lv/83/j4Hv6YWTwE0FDrO2ZpCxFUrWnHBsglWQejdaxGElkTAYN\n3A49w+0NB4G7dcMgW85NLFOiY49Xj5EAYpMTQFojUite5mfMsF0fVaxlToNcxIR8T8a1tNcrtcLP\nuV8U19B7+dIfv/PjBQQxA9psLMpiz6xOSQxFTHYj81CpJs+Hn+HAS+ay9MT8nKzf1Oq6jNdFO1YT\nRRF+5lGFwtcgXr1ZIQySVQcVsBtncKsVl08vEfF8eP2aD6/esPMjftWhFzFThBNHZyzr7RmbbsPV\n9oLnz57x5Vff8k9//J7vb+94fxwYfHp+2pS5IjwSkt48cuFTUMaQjUeppJZGMXZUoQ8Ba1KghWto\nXIv4AbGwXV/wyZd/wS/+4r9jc/UkAmJetQV1UhKtBYhLBcQx93ijiktuhll/rpr9vKvx0oB4H8+F\nFDpuDJpKfWmuCl+eAc4oKzvR2vgeNoFV8CO3d7e8fvOWV69e8/3Ll7x7946b6xv2dzuO+z3Hw57j\n8YCfohrAj2PyOkn+43kWNbov2hSsJEbYbLZcXT3hsy9+yadf/JJPPvuMp5dPSp4Sk7ImGmNi8FPQ\nFGHbst22XF6NPN2P/Di0vB8Du8kwJi4VKs60VjumdZorGq3WQvf0knFzzs3VBn++YdisCG2DuljE\n2iR3IZPWiyb1XLUdi2osSnMZvCVt0hSc5QM+5ToXFLGWbmXpjMUKME1MmxXWNNy9esX7r7/icDwS\nhiF6HPkY2KV5vnP5vLSXKHsyrWlMTORlwFlFpiQhGYu0LeurLZ/8yXPa8yvuevjwYc/1zXeMTJiz\np0i7QsWlVLs1PpwM6s9yiLVO9eFr5SfaKd5X6f6cmXJGD/nZ9j+ejjz/rcZAT7luqVyGRAsgBIrR\nPVUVkUdkjnl6lgz7A59OnotWzPRjlDB3N1PQ+ny98OpHSKbWs1CPKKFZ4bdPaKcr2L+n3+1xYnBI\nFPUzV0rMqtaahs1Zx7Mnz7g82/LiYstl5/jnH97w9fsb3u+GqMsUgzM2Zv8LgXGa8H5MeuFaX2ji\nGGtyMpPo3jepxox1yehnjUOMxxhYdx3nF5dsL59inSvcST1u9wXEiiNnfnxRrSQgnx2PKuKrRN29\npKyPIQVVGCFYi/embP58GFFaE/OMtynxdz/0HPc73r9/xw8/fM9Xf/yKP/7xa77++ls+fHjP/u6O\n8Tig01QMrpJS2ZrcoxMivZDoZJ7rtu344bvv+PWfv2Ucjvx/zL3nkyTJeeb5cxEqdZboqlbTGAyA\nAQiKI5fcWzu7+//P7NZ2yV2SAzHgiJ7uLp2VKpSr++ARKap7QH4bhllZZUaGdI94Xv28+meS0SiH\niFOxpiIEVBCxfZ93XVaMR0lPri2jdkXrtrhWgsxBZniR0Gs2+2d7/0xlqWRcKGaThMksgVlGNR0Q\nshQv1XEOeM9e2e3bc7wE9kRfCLoahih8+qKn7gdCXwjV0eVKBFLpLj1VIQkxz9+l5JMpg9NzirNn\nyOv3UHexiK4Bc+g03adxlX60I5OlRKiYoaQDJB6kdLEKOS84Pzvl9atL3ry5ZFQU1JuG1rfY8gpr\nKpQtSWbnqGwEKsUEgessAUS8hhCePrud9v6R7v7Ue8CBD3j/tB8+80duXI5B4iDp7j+8/MQa+TGk\nip3K2v8Le5wRe61A9iPcPW17iX0ED/FjYPd512psV2d7cCGH13c8yscf9yr8p2MUR9sfXNORRD6Q\ntd31temY1eQF1t8zVJAPPa/nU97e3fJhsdhpu9GXKwleEpyARDKbz/kyT7k4n/Hqm7f86zfv+N33\n11QdI1yeZLEFl7NsqoplvaU2pgvmdPwdQtK1C0ARfepKCrToswUCqQskKuazJzgSs8Wvbmkfb0mK\nIfQseruhPZyD3g0Sx+TI2AldZ6CuQrJf73v2wd3DLTqlvKMoCPFIQYnoy5VqpwyI7mXUAnItGOUp\niYKmrblf3PP7333Fv/zzv/C//uUr7m7vKDcbhI3gqUQcA+f7fPF46ki61PebDMSYqdxZviF0QeYD\nPnRrDHfX15i2Ybtc4ayjKFJO5rMu26LjabGGdbllvdmwXG1YbzZsy4qqqTvBppBekwxfQH6BSU67\neeMILHqNbjbWvH4+4PTZiGyQIHT0dQchdlZODy+7/OfAzoespe7AtJtCCX1muRQCa0w3zwIpY+G7\nRZIoFYWfc1G4d++sqyrauqGtm0j3m6bo8RSZJpEAK3QpkbtMpd6VEtW1mMURdhTCQki8CJGrRgq0\n9ihhkTphMhryF1/+gr/+8nPeXM5xOEyRk+cZ1e/e0tzc0jx8z+TzLxmfvyYtzlgYSelk9Mf3kydA\nHmQjyZ1PXOzGbRfyPHzUu+8HDpbux04AiAO05mDn3Vex3+4/uPykGvkuoNCv6+8v7G+iH0RHVBNE\n2A/WPslKHByVPch/8qx7belo2YlfsdeonsrjT4zr4T0cyoadtSXEbv1eQOwleq/tWJVRZ3Pa0Rnz\nQjPRgXRSUOuASxQkKd57qqoiNJZWN+hEQylpXUtVl6zXKxLheX0+YTrMaVoLSNI8ZzjICd6zWm/5\nt/dXvH9Y8lhXBKB1Mjav9cepi1oIEilJlCBTCYnS8TcBWgRCXeHLLaGuuvE5zqo4UMx3c7QPFHX3\n32mGOvgdF3nU7ujajvUPdTxO7zfsG3D0riOHoO3NcSIApdIxVA2JLXn//p7bq/e8e/cDb9+94/37\n99xc33B/v8C0NXhH1hXESBkFQfS97oG6VzZUJ+SUitAWQgxuBiFi/0glO9dVlzbnPdv1hg8/vMV7\nT7l65PqH75lOxxhj2JYly9WG+8cli+Wa1XrLtqqpTYt1loHWDJKUPM0pTi4ZvvwLRj/7e0Q6AKnj\nOByUsE8GipN5yuw0Q2bghYvl8ISuuMcTpNx7dEUf1O4Ee9grTXConIj9q6JUVKjYv5Cx4jbysQQ6\nmly/J27rFS7TtJRVw6YyNC6CcbQI/V6ZCx1pGSCVZFhkDPKMPE1oW0PVWkrr6CQLyitOplNevHrB\n3//D3/I3f/UbXp7NKbBUTdVxmCe8fnUGIvD+dsnm3bfk0nMyksxmM7ZGsSgNG6tpiQHenjWzL4w7\nAmexf5OfIFCnu0TF5VNw/B9JytgnY/z5TeEnzCM/hN8jvfwoErwH8/j/AMUPQPfIRfUfOftT5Z1D\nkP7YGSB2v/eT93T69tsdKOz7LJuDWT6sSerHISDwUtPqAWV+gkeQJg0qkQyHA6bOU9mAt4a6abGu\n3rH+td6yrUq2VUnTVKR5zsXpjNcvUpaLNduqxQnJeJiCCKTCc/uQMkwUrVFYws7acTtzufOxihhg\nTZUk1wmp0vScI0r0CqFEKL2/oSdzsROIB8JR7O56XwiU4FH4TrkM+xfhEG26xbOvApVdOzLfaYRB\nCJQMKN8gq3uq6o7V5obfP77j22+iC+X91RXltsS0hhBiA4lU7dM1lYxFRD50f90l9NpY7+7bxR7o\n3A0i8mhrKWLgznucDxgfaOqG2hiqqqEqN9x8eMdoNKBualbrDQ/LNQ/LNY/rLduyib0nXWxIPEpT\nxnnGbDBgevKBZ06Qnf2MZPYCqSJtcD86UgrGA8VkrMiKyIkTrO1c2SqW0WvFvjQmCuDebXSoiRxy\n5uySUQ8s4L3idVhvvf/r+WaCs/RFN0IKvLXUdcumbmmt37k0ejdZn61EiKmgWZown4w4m4+ZDgdU\nVc26rHksW7Y+UBlP1XouXrzgL/7y1/w//9ff8/z5BUWaYLebyJ9uWpT3PLs8wVhHVbXUTYlb30M1\n5nSWM80yCuG52TrWTlOjY4bTkzd8l4IsDh7N0AdiD5wsB/vulMeD/Y78Kwf7RAWnm4X/ILD9NFwr\n/Su9C8Ad/37IE75b13tTjlwoYfejeFodunsen47WAZLuj97VRTx1Th2j/f5yxfEv/bUdrNuB/+Fp\nwsExdjZr99AjMEKzUFNmtmRcrxBNzD1OkxwrYpFKawxV3WKspWoaHjdb7haPlHVNlii++OJnzE/n\njEYjHpcbru8X3CxK8iICVWM87x6WlE1LITRlsJGuVnauGvaVgFp0WrkQFCpyVqxNgwseJTQqyUnH\nZ6ST0y6heB/HOCab2s9rCPJoiAUC3QO5CHug6KlUfT/icQ/fuVOQ8oDeOAJ5EPEvlZakeWD1/f/H\nv/3+f/PNN3/i/d0Nm01F01ps8B3rXzcpncYliUCYKEWiFcZ6auepO26UPm88lZIERSYFmRZo2Wnm\nHQNkENAYQ208lbE0zhEEaKcwvsS/u2J9vyDNFK0xlHXDtmnZtpbaOOyuR2UEwjrEOdFKEe7vyKbv\nmT9eoUfPEJmKY9QF2ZWAURFIk5g+qYJAW4+yLo5VnhKUxHbWRegskN73vweYPSzHeew1j/3aiLXd\nnB+kJe7+XOcqE9EdFaTfWWHOBRobaEOsyO1P1Lsw+hcuSRTT0ZDnz0549fyUs9kU7x1l1bJ43LKy\ngXVjWW5q/uH//j/5q7/5S37+s1eRYhdBMpnHtt7bDa6tKEZDLi5BipS7xRoTHKuba05Pp8wmmlmi\nyPyWq0pzbwtaobs+sFHp2L/rB1lEvZLSAfqnll0sUOwJuo5A46Md/tyPHy8/Hfth/3I+tUk+3vTo\n0y4x8AlAhl4qHoLnE03uY2vmcMN/x9zpELsf3iMxIPZX9nTwj7R28fG63bFELFR5SOb4AHc2RbZb\nrFQE4Rn5K3So4rl0Zxk4jw0tXniSLGF2Nmd8MiUdDiDRXL5+QTGd8GpTsV6vuF8sWWyW1K2lsbEt\nWcyCiLwZiVJda7O+rVfMNU+6rJUgwFiL95BkE+av/4rJm1+RTmc75sPD+zoe09CNXz/Wey6TvdA4\nGMUDrUWEbqPOtSYEEdE7qRhC6IAchqJiff+Ou+//N3/4p/+X9+/fc794ZFvXtDamZQZiMK5/n6Q4\nqD0NscrPOI8NEYQynZD25wmBLocK4wXax7TMTOnotwWMd7TW0TqP8yA7mFRdTrhxntoYECEGNcXu\nbSAmi3ZaW+jcIcFjrGNTNwTvmGyX2OU7shc/J5UTai92Y6qEI13XaLuEB41OU5JiiCoK2uCgXEVL\n4tlJzFzpSLH+3GMfOtDvA5F7BNoHQnt1ZGetBuiuHsI+Rz+4uC7NUoajISsdGz7sGl30YyFj44jh\nIOfZyZiL0znnJydMpxO0VFgH83PD99cPhE3NYDbnzeevuXx+QZIk3XMa02mTYkAhJapO8EA6nDI6\nPeeF8QQh0UnKcDxECjBtxVBumHiLMZpHNSfIAV6mHHjPn+iLgp3Pt3el7GDgUOnsheFeAexB6aMK\n98OTPD3UJ5afvGcn8BEu/9g2+w2fqrl8RM7Uf36iU8MnJuOpIt4/UMCO3vXgbMcg3v8/BJ7dNRzf\n1ZOrPrjWThsSklIUGC14dBnClwSlSEUL7SNFWKNDVM8EInZcSQXjUYZQCbPZFBEE1bqikQ1aSObD\nEQOdkgZPU7Ukuowdx7vgJvTBr4CSgazTziOQx0pOraKJWbuY46uSAcOTl5x8+V8YvXiDynMOxdOn\n6YL6yTkgB+qGSBLQRN/zzmSn+7wTAAf79CZsIPqvfIDg8aaiullw/cNXvP3DP/KnP/6exXpL3bod\nCAdi0Cxm5uznq+dGV6LjZkeQSqLbgQh0nr4VmUAoSaIl8yLjZDJiNhohhGS53XC3XNJYg3EqFl2J\n7thKoLXugmbxwVNItFAoIXcUq10iy+6eY5qop7UWJWC9fuTh3dfMTl+glUZlZzjRdZYSntBUVJsl\nZVsxGA4YXjynyJ4TtCYS2zeI2RihFUh1MLK9MDu2WvuAXq8kHlIu9CXpn8rk6B9072PxVF9Q5YIn\nG+TMz054GIwwZYUNLTth37VsGxYZp/Mxr59f8PLygvPzU4rhEC01jXW06y1CbcgLwfzilNlsRKLB\ntA1ta7BdeqiUGp1mSKlojEHoQDYcopSmd5M4YzC2JdiGlJphqChbx0NT44szRDHrmotEOH9KLhLY\nC7Te8u4tGw7HTxyM6A40urens0g/VhKh5wH4z9UhiH2Vo+ilfb+E4y13n0T4xFPCE0Tst2WPpuFg\nsA4G7uOUk+O0/49Y5D61T786hKPLOGRP/FTl19H3w6BSt8okA0wy7ASUx7Ur1vWQ4B/IbWz+GwCt\nBONhynw6QusMRMb65pFFdYNAkKcZSkqctwgRGCcpz6ZjtlWLDVBbi+yrGbuOQVpBriQJMmZoiNhW\nq7Se1jq0Sijmz5l+9ltmX/4NyXQe082keHJ3O9vpeP0umh3nRobIM6OCjwx9MvKNx7Q3TRDmyBvW\nR/x98DEDw0twHuEb7PaKb//4P/nq69/z7t07to2hcRbXJav25dl7nhuxO64UoosJRO066SyRREqU\nUFgRsCF09ASCItFMhwU/e3bKF29e8/r1K4L3fP3dt/zT7/8YC0+kobExYCplzFPLbOQAACAASURB\nVHeWKo5rIiQpMSjakyP1AqV3H+7qJDow9CH62x8fF/zpq38iVZIX1jL5+X8jyAwlon++lI7H9R2r\n998xmky5SAWXz05JJjNoDa6qUKbjrlc9kB+zXkY5c2hB7fPyHRy4LCW7fqad9n3ozowEZH7HwV43\nDa2xFKMBF6+ec/fHM2xZ04QS79NOoRAkieZkNub183N+9cXPeXZxzng6JckyrHOUD0veXT/wuC7J\nRkNev36O9C3rxQ1KaZomusOECGT5iCwboLOC5WaDMYYk0SRaEpylbWqapqVPT5J4UuFImhXVu7e4\n+RvyixSRjuhz5o8Ta8UBJu8tzY/V9/3z9kkc+vTHeFTx6fX98pP37DzUtP6sWv5kUA5N8MPvH7k2\nDvnOf8x1Iv78b/3yVBbutfFjKSKe/O+3/YTM2R13V5B05D4LBCGxOmczeomr1zTbBZltEd4QnMOH\nmJUynkwYDKeYWUu7rGgXW4QH11jaMma1NHWFKSsoG4SJnWtcZwBHtOj+VMxskMSKOk+sAI2NHRTF\n9BmTV1+g86IrQ9/nxvfByk8OJUSt42CFEKAJMWMlhCdk++EALwQi0fG/c/vCIRlpVcv1kpvr7/n+\nm3/j8eFhx5zX2S4gBErSadyiqxqNwB4rLBVKKqZ5zvPZlFen0R87Ho5Is2zXCd56h1KSPNOMBinz\n0YjT01Nm8xmmbdHSgbckWcbN44Z1ZWIQuRvbQCzd10qRJoqAow1N9MFH2kGEiARWAfYd7qETYIG2\nNWw3W25u7iku1wxCZGZUeHIa7MM71PaBqRK0t1eYTOGGGUEqaBoIniC7CowQOiVpzwu4e6cOMrmO\ntM8uVTFeUn/dfdzhQKsP0f3nbGzbJgJoEStpfZaTDEecXTwnbRrq5AHnYxZSliZMpiNeX57y5uU5\nr15eMhyN0FmGF4Kbm3u+fXvF1c2CfFRwejYh1QrbtJTE1oXbssG4gFAS/1iSpDn5YMB2vYwcL1rS\ndBaf9x5rHE3dsi0rHhZrHh83LB9Lyo2hkBnDyYD5+A3bkLO1khBUfD5FPzpyN2aHFn3/hu/cU934\nHuLB/gX5cU11hw0/glM/HZAffufHvhxLvcP9dz8f/r7D8iPdevfTj8mJj5gTn5yxH/RPGQ49WO8K\nlUM4AvYf08SPgoFHQu143wB4mdLkz/D5Pa2+I9tuyIIlEQKdZqR5QT4YMBgN8ElKoxSlc9Srirqp\n2W63bMoy+onbFmwkoYoNgUP3GIrOPy52bHm9VuyTMUmeMZwlCJEwefVLBpevkWlKVxZ4dHM9YIud\nrckn5jsGJiWBpCsGEoRdZeJuw54PVojY7EAKRIgVn/2kBqBuW1brFevHJXVVd/7RyPFSpJIiz0kT\nhZIS7wLbKo5FCB6tFInS5Erx8nTGr1+95MtXrzidzxmPR2R5gZMe4yytaUF40lSR5ympTsiKAVme\noURgNCw4m015ua0YZBm1cQgkwQZMa6malsZFThGpJcYZBG3M7ugxkD5wG3bvSh8AjOCqEKpAFmeI\nfNalIAokhoSK3DckSQLDCYv1GqqSsFnT3N0jhEInXZroIfjurJ291bOrhw4B3drODRy79wTdZXQc\naB99wPNwCaFjguyYMqWUpFkWowbjCc9eveY8AVZj2tYhpCQrUubzKRdnU56dThmPx6gkobGW+9WW\n79/f8OF2gfGB+bAgSxOWixWbZYnumjKvtxVIwWA8xDtIkoqmKSnXq8jiWWQ4FwPLpo1ZLOtNxWq1\n4WGxptzWtCYmGkyywFnheDETrCzcl4F1E1kYe3Vh/9z/yFsvjtcGIQ6arOxz+ne/f4QCxx+fLj+d\nj/zPBRaPluM0qGgd7/S1PcKK/SF7DTd+eapN7Af9WIB8+nrEwd+f08iPgOpQiz8sAjg85oHw2GfL\n9OlseynsO3CzyRQ7fEFdLtg+/sBcBdI8Jx9kpMUAoWKAJ0iPH4A/0azKigezZNlsaYOjkY5GgVew\nK4/txk/KSOSUK0kqxV5zTVLC8DnDZ59zcv4CnaTkl69Izy+gL8mHo2ftUKM+HttwMF1iJwATH4Fc\ndkIwdGkzvS+a0AG8FEQSKdVZuAEvIvOe8QLrolYthIxUssGhlWY6GPDy8oz5qCBRkrI0fHd9w93K\nEkLMUsm1YpgofvHyOX/z61/wqzevSZOMJE1QSYKTgcbUbMstjamjoAPqtok0BnWNbQyr1Za6aRkN\nC0ajgiJLmQ5GBBuotg13ixU3jysWZRmBILg4HiHsGh7sS1BAhJjSqDrtUQpBlg8Zn7/mxa//G6ef\n/SUiSZEhoKjQoeRkOiVhQtt4qu2WdDhBJRnbq1v0bIo6n8dmC72b60BN6d1XfVg/CJDGka+qXWMK\nrKOdDrBFipNdRko/p94dgXn0bEYWSB8CQmnSQpJoRSYE2Zs3nF5MObErtqsIvkmWMpwMyLQi6Xp2\nNq3hbrnmn//0He+uH2iM4+RkxnBYYBrLu+/f4oNASUWWp6w2G4pRzsvPLimyFIejbktWi3vyPGeQ\nndHULavVlsVizf39mtVyS1k2XbNyST4YcHZxwsXLZ7x4ecqry5yqFVwtLF/fwdZLrJC7WodAB9B8\n+v3v3+woN/durMMAaTi0WA8RYyfkP738ZBr5XkL1j8CPA/tHnYOONL/j/3sTZr/tIXTvI89dPmj3\n29My2R0Z18HKI0GxO0a/pr/Wp9e93+eJ4rrbfl/2zU47Ojz6LuCXDgnFKVbmLNstJhhOkozUQ9ZR\nfiqhyNICPU0RQZMNRgyWSx7XWx7XWzbrLcELNIqhkjvTUBIYJDqm1glBrjKUyAlqxDqfkT7/nNkv\n/yJqh1mBVMn+Ady/xsdzshvG/RzvH9z9vSkfffWRCGn/QuwoRzunozeGnpxaAEGJHdOgKmYML7/g\ncrXC/PA14eEK1wTGgwGXZ3N+/tkLRplE+EhKdb96ZLGKLiMhIUs0ZydjxqMcKTyPj4/oNEWqaELX\ndUXd1hhvGM2nrOuG2+t7ru8eMM7HgLALLMuKxbaicZ6T+ZTnzzJkqpDSEaxkNi0wOJyEdV1TtTHF\n0AMmBExwuzTK+JoItJKkSpGohOnZc85ff8nzX/4dp69+TjYcdQJQ4uqK9faacWIwVclyuUHXDUFu\ncP4dqnTIX/2C8OoS7x3K+y5WHBA+VnT2547PhUQGT7LcMvyf35JfL5Fli9WC1d99TvX5M/xkEOfJ\nxYYbfREMApRSpEkalS8XqOuabVmxvL7C1AYRBMoblAukQTGaDsmzSDympATncKalbgJvb+757sMt\nb6/uqFuLUIrNtqSuW/BgWhvjD1rjvSfRCWmS4I0hKEFdV5TbDVIpqsrw3XdXLBarWHy1rWgag0Ay\nHBZM5xPmZyfMTk4YTabIPEdriQ+GNBjmquZ1ZrkzGUuXU4k8cuAfI8ETjNljwEGi58H7/QQ8PrWE\nH9/kJ0w/PPj6RKs72vTIzoan5CVHWck9mB92dnlyjt15w8H2/WGfnOroRAdH24PQ8cGeCqPDvY4n\nYK9xBwLy4LxHvv/9O4GWDpmK2Po9z2jaLcuqxorIh2K9Z+AceZKQSI0QiiQvKCYerwIukRgFpXek\n3mMEiC5wGjW9QCoVWkbAOJ9eEKxm1UpEPiaZnFCcPiN4tzMnRTiei08NnXj6Wez0cRACRSAJbt/J\nqK8u7JtcsMNxQmN3K4TWICRByFjlqTTpaMbF61/EdEwl0I+PDAcZs8mI+XRELj2ubQjGkMg+QBWi\nP10IijxDSkHTNDw8RlqEEALWGOqqBC3JxgOETlCpQOgU6wXrdUld1ay2NevWUroAUiOSjPHE0FiD\nqFvqbUnTGJw1ndAKtNZSGkPVpyuGQEf2h5SxI1MiBUWWMxqf8Pzz33Lx+V9y9voXFKNJx9Xi0Fqg\nfYtYL2i2S0pneUSQG0t+fUf27gYbBMnZjGA/j8VPXZD6wHh98nz2pr/E5QkuUYREYXONT3W0nGBH\nM8zOVcBOECklSdMETIr3AdsaRNVgbhe0dYPLM/QoZTKccqItg1SilYzVoN5RNy3v7x75+t0VP1w/\nsN7WUUBkEm8cNkiKYsCzyzkqkSilYp2KFHhvqLZb8Jamrlk8PKKTHOegLFvW6xJjLVJKprMJ4/GE\n6XTG7HTGdD5lOB6hVUppDK1tqDYrtDdo1zD0LcuNxZaCrSvQo1NUMepcjXEMj5SaDl+OFLojvNuD\nwKFSGZ78/GNQ/xNp5GF/c8c//OiFHup++4DYPhf4yCsuPgUo4Qgou5X0e4uDdfvu7Pvf99uJ3fbH\n+eC7K6LPzNiVVAgOM426gMgezMXBh723PfJo9CllqTSopETlFck44aGSPJYN99sNq7LkpBpzMh4w\nynMynSCRmL69mJTkRcbIWWpjaLzD4RF1BBTVsfCJromtSgdcXnxGWRoebpeIvEAmmj7RbN9kQdDz\n1/R5If1wfSp4HA2dAyEoIhVA5mMuNV1TZyE8uO5svbDwIQJ5FxCVKqZQBilxWJxrEFJw9vINeZYw\nLQakP/wRKQODPEMLSfAO27a02y3O2njFAhoXYqk4gqppWK7XVCLegzOWpqox3jE6nTGeXKCyAeNB\nSj6YMprMuHp/xdu373h/v2JZGwwKnWq2VcvDcsM4V7j1hs39I9uqpfRQeYFxnm3T8ljVrJoYFJUy\nBn/7NMhMKJSEYjDg/PkbXv/FPzB/8XO0SsBbvKnRSYrWikJbCrPB/OkbmtEI+9lLHpcN4cN7/Ps7\n3GzC4PPXjFYrsvmUVEik0CBjrWzMkOmLdgSyM4/cbMjqH75guywRxmGLBDvK8InGO4+3Nvq/xaEw\ngBC6gKqCJM9QOjJ3ytGUh/d33F/dshgMGIw+w51eIP0S4WpwsSWeC4FV1fCvf/qOH24fWZctWmmy\nNCFPMnKdMjqZcfn6Bb/+za+ROp7cu0C52fLh/Vv+9Kf3VHVOVTbc3y2xZom1kbNfSMlwVHByNuez\nn33G5eUls/kJKtEx1dQa2tpg24qmrlg2G1IJwTnaTcn2/RXLmyW3JmHy+d8yvPw5Okt3/EnHb8CB\nprjLOT8sZNwrb731H7p36kk26CeXn7D58v7C9slX+5+P03vCwQ3uB2jXJebwsJ01vg/YHPwW1fV4\nRNHD7pOzh0ORwV6KdtfwNCy6O8LuXsIO3Pb30v3fTcixeN3TDu/HQAhIFYwyz0DVuPqGzfIHto/v\nGVnD+WzEJNN89+GWh8cVi+Wam0HGME3ItEYRm8865/A+9oysm4ayqmlbE1Osktif0flA1VpaK6iM\nofY1v1/890grqnIuLz5nImJX+xhs7MRNb8YcCMi9wNzNMj+6iJhDngZLz/wROuKs0PdkPNjWtS0C\ngUx0JHcKAXygti21FNg0QwpLcXrBSZKCbDHNhlQLRNdr0zoXO7c7i5CSaVqwqR3LxvDH+wXT4RAN\nTFJN2sUAfBqZIFd1yfrrbxDhLaa1NNuKZltSlxVlWROqhtDEsvNaljhT0TYbqvWCoZRo66mNpfWe\n2nrua8PNtuKxMRjvO/+0RAlNmuUUWcE4H9LUa3KdkHWEUTHYqTuemfjU5Ykhy4A8Y9VUlKslptzS\nisCjENQXZyR5jhKaWevJiiEqTeNj5/e59WE/E9Hf3b0JUincpCAYS+sspm1wbYW3DhkEHk/rPVmS\nIqTEB0+7LbFti3eWjhAebx3t6YTx3/2WyV//mkvrKYY5ephRmhS2C7JqhcJz8/DIH759yzfvr2iM\nJ8ty5vM5rz57xfMXl5ydzshHQ9IsRUmomorWRqbQ1eKW26srfnh7RfASZyPAZ1nOcDRkOptwcXnB\n2bMzZvMZg2FOkiYICdbW1E1NVW7ZbkrqpomNL7KU+82G2+s7/vCH77i6uuaxajHFKT8/+Zzhs+iq\n2r0HP+bQfmLZP30n9lizB/M/+x7xEwP5/ttTEP/EHh+tfJKnfGi2dLb4U9f6p67iqf9dPNlgP5Cf\nPsDedfP0nvb/j4TJ3lF2AP7H55UCEgWzoWGUtBSyBi1xG0fTlpi2YTbMmQ4ynPO8u13wsNqw2ZQk\nKpriWkDYBZ4iRaoxse2YtQ7rPNZ6jA+01tNYR2Vg3XjWraNdPCKUZjCcU2wfmK3vqNcLkrwrpBDy\naFR6AOfAIjm2sMSR/7/fWRFIvYtUqj4Q8JHO9OnoBeiJo3fiW8SOQJVtacjxaQZ2hS7GFDpjun5L\nszQE12BtFF4hEFuJeY+QktFggA0NW2N4v9jwdXZPsJaX44JBlpJojdASnSfoNEEphaksvqxw6y2q\nbilsiGyBxQCN5CE0lAGctVR1w1IGQqLJhaCxlq2xPDSGD2XNY9vSdFzwfaOJNMkY5UNGgzHj4ZhK\nuqh1SxnB1btdUJLgCa5FA8UkI3nzGe3tAv+4jK6hIkdmOUmWk2QZ6YtLRKJpraHdrGPmkjME6yLB\nFbExCUCeZVRViWlbEhGrfpuq5OHmFidiI2qcRwmJcZbatAyLIUIKTNtSr9e0ZXxeZZYCkf62RZCm\nKZlOMa1lOB5Szaf40QSbjhggkNWGdw8rvr+6xSE4vzjj8vKSyxfPuXxxydn5KZPxEKk1TV1xf3vL\nw2OkqvABlje33Fxfs3zcIEjIiwHT+ZTTs1NOz044OZ3HY0zG5EUe6S/ahqasqeuaqqqoq5JyW1JV\nNXXdULWG65s73r2/5od3t5ig0KMTRhdvyMYztNI7+pHdI/4Et44t+b2lf9j38xAV9m/Anwfzn9C1\n8il59ARUD++3x75Pchk89VGHp8PJ3uWx96ofYu9uIDvuiEPfeu+j/TjouvOH7Fd9ys9P51LYAdk+\navHRBMrYlmyUes6nNQkblLcMR6fUy3s2XmKbBjnMmE6GjMdDkkTjrOft9T3GtIjg0B0BVN9kOYTI\nwme8j8BtPE3raJyndR7jArWFso1A471HJQFlG1aLGx6vv2M4HjO9eI0cTCBJu7noqtEO3VE9Q+Eh\nuB+NWT8GnUbuLLKjCuy5OYSI3WeCdQfzKdg1Pe6m0iuoKkubSEgyMAFUgpAarRUWh7EtdS3J00jN\nGohl+FJK8jyncF2bsFXFH7ilaWrc6YRpnkbGvSLnpEiZz8bMTmaE0tI+VjSDLVQG07RUbUNlHeNt\nRV6WPDiLkaCSyOHuQ6DxlsoZFpXhqqx5X24xYe/KU0KR6pQ8HzAshoyKAUWeI1yGVBqpFc62eNNA\nlsZ59Q5nW5SH4dmQyZu/IhnNqBaP2KZF5zkqzxBpAmmKHg4olWN79Q5rLLZtMVWFrUpc2wCCsmkI\nMnY4eri5plwvyVW0UDaPj/zp91/FR7Vz/wgCpjXUZcV4PAYBVbXFbjbU2w1VVaIGBQiJc4EqQNAp\nQmdYH3j++iW/+PJXfPnlb7Hn55jRAN8G3q1q7ldbLi4v+PLXv+QXv/yC569fRuEK4D3GGartmofb\nK25urlmtN7Q2sL5/ZLFY4l1gOCp4dnHOZ29e8epnrzk7P2U0GiJCbA5i2oqqLNmWG7ab2J7OmhZn\nLKZpKNdrbu8f+f6HK/70wxU3izWqGHH++ksuf/E3vPjNf2UwnpGkKcIfIMRTZW2nre9qZbsslZ6u\nO+ys8nCAZfvl0zXT8FNmrfSfD9Va9gGCviIzfj8w1MVBkcgODz92h3zyXE9S+w5+YO+IgkOE72ks\n93h9uOeBtvjknD2U9dqj2B0gdKQ5cYc+yCc6l0yqYVRYJkUJ8g7nLcFLymrB4uoHlu9+4DSYXd51\npjWvL88osozJMOf7D9fcL5asa7s7PsQqwUipGrDOd/9jpaILYAMR0L3vKGJj2luqBYSGzd23XMsa\na2qmL79gcHKBcMR7ORCCu/Hcz+5uDA6LfYSM1LPSB7LguwbRRF8r7HzjIdA1u2DHztcXyTgfBVBw\nIKRDKIuSGgsxg+Jg/tvWkWkZuaulQguBc5bFZhuFlogB303T8v5xTXCWi0HGyaBgOnIUg5y2NThr\nSfMEZrHhc7lYUwMNglZBojJORilDKdjWFVVVI10kw2ralutNze224aFpqazBhd4ED0ipUDohTXPy\nfEDWZUvQ5WIb52J2Seg64QhFsBWuvmNYPGcymzI6mZOPxrimxdYV6/t73v/wlre/+5b7uzuatsHZ\nGPxz1hCsxRuLM/FzQOC8QynFaDSiXm8wdR3HTGusMayWS5SKaZ50Yx06F95KdUVkwcfjdS3cfFVh\nvacxltoHKuupbUwr3dxesbr+wOOHa37127/iszdvSIxnMJ/z5a9/wS9/80tevHjBbDZHEqi2a9qm\nxpkWYw1lucU7Q5rERhbl+pFtWYJSPHt+wWdv3vDi1UsuLs8ZjUboRNHUW9q6oq7in2kbTNNg2hbf\nNghrUdZA21B4w1QFZmnCfHqCmL3m4pd/x8mLz5mcvSAfT5EqibDV+1aOFNWAeIobvc5zBB3HvvGd\nBvaJIz5dfjIa26P/B4ruUxfKJ4NmPSB+lCL4iZOEJ9+fbt8P6KdcIwcX+lGnn93hn/i7Dv4dnjrA\nwSRFH7OQkeRIyYDWnjT1DDJFlpQkeomUDQQRgzf1gtXDLdViwfB8RiIFeIdQmtEg7zqxgJKBRAqu\nbh8jOZaLpPyOA1pWH0HdHwB8bPnmcCH6apXWTGdjnr+45NmLC7wPrBcfCDJHZAXpYEyq83hTfWuq\n49zLzoKKo7Qfyr01Jgld1kpHi9sLVB9iwVK3/U5eiiOZHotNAIREBA++RRLwpsWaBkSC0hopoXUW\n57quoTJWeQbv2FYlqVZoCYM0IRCorWVRNkjvMdbTGIdK5I7jZj6fkRUZ4ywjHw0xjaFtTex9aiyl\naVmWJeHBUJeOpnVsmoZFXXO9iZkttY3dgFznAlR9hF4IlE5I0owkzZBaxqpab8ltS88K6YzB+SWp\ntsynmul0QD4sINEkeY5uGvyD5ermij/+/nd8/bvf8XDzAVPXEVzb2CVKdrEG0VlDrivqEVKwSBKC\ndUjn0SK2sCOAcxYv1S5Do89YIUDTPfChD4gLETv52Njj1NoW6wJta2mMRSqNUZJtovkgJCkBv1ky\nL1JSDecvLnjx8pLxaADBsF1vaOqStmlihaa1bNZbHh9W3N8vuLl74Or2nm1ZUwyHvHh2wfnzc87O\n52R5gjU1TdnSNDVtU9PWFW1dIZxDhkAWYsAZFQOiVoLUApdp5sOcZ8mMwegVL379XxjMzkiynFjU\nIDuFZq/chQMUEL0CF/qnf0cM/BGmROz5lLv3x/3EPyGQHyKt2IH5U0CEj8F9v8EePH5UVu3A8985\n3pPg6PFxwyeoAA6vov8k6PvtxUndWwp9o2DZuRO09Cjl0NqQJpYidwyHMMoTrFtTt0sECXiJtZay\nWrLdPmLrmskwJ091vN4uh7jIU55fzEkTSZ4ovLHcLUs2dcs+ZLW3SkQkVyG40BXUeIx3sdRbSsbT\nMa/fvOBXf/FLnr/6jKurO/7t67fcXX+LGowpRjPU/BKZpp2AOjBdDkdJ7LWRWMm2l4oCUHhS/I4w\nKgS61MNwVCl4SNTUl5Z3HvWuQ00A20Kw+NZi6wqBQHXNjYMxsRUcMWc75u97msaQiIRUKabDnNaa\nmFtNoDQefINpWqwz1HVNU7d4Lzg7P2M6mzI/SSFIrI2kVtuqZLFcUr2v8d7Sti3LxnK7LbnZViya\nlp7I+bDwJxbV7KtRtY6NENCK1kfgDsZ0c+6xbY2zJYNZxsWzUwajnABUdYVKM+xmw8OH9/zz//jv\nfPWP/4v3335PU65QwZNI2XWAir1DlegbZMSxtz4yP5q6IZUqkqjJgHQx11wJEQnIvN+51GIII+y5\n27tenkIqpJSR70b0DRpjYVOiNFmWMh0WzLIMNise/vR7xMMV7vyEl5cXTJ49J000bV1impqqqmk7\nq4LOpfO4WHP1/p63P1zx4eaOm+UjxlrOLwWvkgSdKJw3rJY1rqlp65qmraNQdBZhDZkQ5ErHIiQp\n8Q6MgJYQ+Y5cwmyU02SvGJ39mvnlZ0gp8aHvq/VEwTvsgLP73lP+cgDUe1/4R9QWP0J18anlJ+Ij\nfwrjvab146AcFbsn5e+H2R+BT2rvnzreU2X9qcb4qShp78I5PPdR1WaveYqnJfo+atzKkyY1WrtI\nTJUHksQhtUGrQKo1qc7QgHeAC1R1g6s8pmyo6w1SOYbjlOFoQDEokFrHKw8e33VAGKQpF6czZIBv\n391wfb9k1ZFkORHdKKLLPsELHJEP2nrwIfZZHI6G/O3f/zW//bvf8Pmv3uCCpvGW4c09V4s1H97/\nDuNqXn3xfzCeX5AORqiOGW5nNu6tx52ZeJSa1qG2Cp7UW1RvLrjOteMjn3V3wbs2cr1C3rMZxgrO\nQPAm8n6YCmEcbNds796Rq4Y01ciqxdkoqFpjEYCWEitiDvsg1ZznAx7XG5wxFFowKRIyFUm5ltua\nujEsVhtu7xaczaecTGcMsxwpBM55mr6V3nrDzWLJ/XrLoqxZGsuiaqiM6bQtv3M1ySB25GQiAM4R\nTI0IJrqQ9AihsgiiIloRwVmUEgwKTaYD2/WSDz8YVJpGtsx8wObulrdf/TO/+x//yLtvvqFcr0lE\nINOKQkbhF/3bxACkj4HvxkXKXNMVKUlhSZWk6KpfU6W6VncxzuA6K6S2ltZHUFMyVm4WaUKuFZnW\ntN5jnSdgoiUZIifKaJDz4vyM1y+eR8oJGXvHru6umRYJ9cmY1cMdUnTB48ayXm1iIc+6oiwbNpst\nj4sVm7JBSsV0MCB4x0hJmuWCr3/3FZPxkOFwQJaorimKJwmeXCmKoiDbxZMC3llCiM9KIMYBlFJk\naUKiZYw/iUBXdNyRiLELge3qLI5cueIApw6xRXxk8T8BnQOs+s/mI2dvguzNiD+vWYtDZDhc/6Oq\n+KfPe/jleNfD4z91ej/5unOnP9mGjrNEebQOpAloaUkTT5YFBDXO1ThnGQ5y8lyjlCbgaaqGxWpL\nkWR4DMEJhIGEFKEFG+fIp1NynTF5dkmRqC7Q1ZNfWfAxJ7zIEk5mI9rWHC3slQAAIABJREFURO6U\nhxWbJhad+F4YhoAXXSPr0D18QjCeTvjszSu+/MvfMD8/5X7xyLv3tywfNuhcMBxLlKqw5gN37yXb\n9RnFcE6ejVFpjk5y0nyA0hlCqP0cfWxoRTANgcRasJZgHMH2RT8diPfXK/bTIIhCyeJpnGOzfcQ6\nRyo8tBtEWRLWK+TqgWKSQ55Qdf0jrY1AroQg1YqqNUgRGCSSi2mB9oa2jg0jzidF9LlWDW1tuhRN\nGwF9uWFc3FPoNHYHCgETArUxbJuWZVWzaQwbE4PHlbVdiqHYveyC2JRCdQ+xFJAqyShPSJIUZNIR\nFGpUknYMl3EElM5QGprNIzc33xLmKWnadXmSmturG775wx9YfXiH3a5RzpKnmpFWDJMErRO0VCjR\n88x7auuorKEWltp62s5CdQEsIjZt1nFf7wPOxfuqrKdxARtbvxKCQHqBdQEXZTJdW4ZIZ+uixaVU\nzzmeMRsPoDXUVUVjWrJckejoClsuHmkaE0F7W7PZVpTbirpqu65WkA2GjKZTkjQhzTXNZkVbl7TV\nmodmi63HJPKc1CekaUKeaDKZRNpmFSkQeoXId+4rKfqWfpHOOdGKRHiS0FJIh1QiKg8h9tGNz3S8\nnv69cqG3u7ont9PUj7Dn31O8exnwZ9oF/YRcK/2Hw0DAU4f28fdeKT6MqR26Yg7l1XGo4UkBT3+g\nXf/Hj0H+aHR32+837gNwUdMMOxM1EYI0NRS5YzCALDHkeSDPBXXjWa9rVus11k4wJsc5jTGG6w+3\n3N/cc3F+xmCUkiaxeCIrhtjM87i5YfLsJSdJzvTijNTU+HKLbRuMaTGmwQQfg3lKUmQpl6czMh1d\nC9eLDWFb43smOtFxmBCrGqWS5EnCs8szvvjVzzl/ecFqs+Krf/lXvvrqD4wnE169esF8npEVKTpx\nbB7/hCk/0AxmDAbn6GxEUowZTc7JiikqjZkKomvEcOx0CZGcK3i0dWBi0M17tzczDysFd26I6NmP\ngbOWsm1YL64RwTNTIJol1fKRbL2CpkYOUoxQbLMUFwJ1a2iNQUtJrjUrEQnCci2YDTWYjFbHebyc\nj5BSci+gEpK6sRjrWHdtyu4e1yTIrjoy9ni0CIwP1N7SWEfT0f9aFzVcJcSuO5FCRppcKTDBkWjJ\nqEg5mYxIihHIFGcaEiVRqiApRjF/XCt0WuCDpVmsKL/7V05fDdEZ+LahrA2rq3vW378ntRXjRBGU\nYJhoJnnOpCgYpDlFmpElaQxiWk/VGjZ1xbpp2bSGrXG0XfehRAkmg4JhXpDqlNo0rMuSTWNxxMBn\nqvtWeRItJD4IjAPp4jsTeclt1MyF6Phj+tfNUZdbHh+XWG95NXtJmuUEF7i7XfC43PK43LJclzgT\nA9mJ0hTDAaPxmPFkxGw+YzafMJ2PeLx6z7vvvuHrP/6BTW2xeUqmJAMpmWjNMM/JEo3sgrKRWZK+\nBVXnQpIEGauqtVIopTpKgYpcRoKv4EPkN+rSfLv+J5FDPkiMD9gg8DuAEUeYdATihxr4YfLFodb5\nI6D/k5Xo7z92IC36i++rBQ/dE4dXv0fdj7JQDgCeI1Dfrz8+R6d7H2nnB9ZBf/ywP15P1BU6f58k\nIHFM85TJUDMeaKSuUdqidEw901qSJLHQo21arL3lq6++Y7UuaRrLZrPl4fqeZlvzX//hb/niFz9j\nPnnGcDRDkdO2DdPJGdk852R8xuDsFL28IiyvEabGtC2mbqnrCiETlErIEsMgLxiNxpyfn/Pu6o4f\nru74/vaBkoB3ASEDUgkUniJVvP75a569fkY2T/jq9//K3e0DP7x9z+LhkazICNpjMZydTXnx8jmp\nGzEYjEnSjLryLBdbtuUVdv1IzjO0nBNkDmpIIO1GsNNcRMfv4QPC+eizJxBkx28diP8R0Z3gPSG0\n0dxtPdvtmsdmzabdMmpqTvIEnWu2ZkuDo1KaByVZNjWtEowGBZVtoYo584oO2LKURIC1nm1VMcxT\nZlmKJvBsPkFrTaYSqk4bXG0bWmcJIbpFZPeSORFfVhdCpAYOXSZQCLQd818st1e7KlgZoEg1Wgrq\nFs5HBc/nIybDITbNYmqirRikGVmWM5rMyQZDdJIgpcc9fEBvbzgdBN48nzMdZ7RNTdU2zEeKWe75\nfiDZbBuc9SjnOZ3MuDw953x+wulszmQ8IUtzBALTGlarFVe3d1w/PHJXVVTGIgSMBwmvX79gPp2C\nCTw8PvDu5pav311zv22oTfRZJzK6R5RUXfPi6GKwzuB6bvidmyx2Q9ps1rx/LyhXW6x1ZEWOlBl3\nt2sWt1uqssVYhxeQpSnD2ZDJdMLJ2Snz0zmz+YzxZIJSEmtbqu2aYjxmenrGs8cF5uqGJHgmieJk\nOGCQpmgVm6dEBbknoo1uPCUVAomXgYBF2IhSWtD5yx2V61oT9p2qOrdqjzpeiE5Jimiy45nfYdQT\nBfTQn77DsAM8Cwexh08s/3myVghHF//n7A2x3+kTx/mRfY7O8dSV8/Rc4UhIfBRBFvFFTLVjkAlG\nRcLJqGA41KSZp/EG6ysCEi8kDklwEo9DJp5ilDDc5CwXK27fX3N/f8/D3T1NXTMcJrjQ4IPnxbMM\nXMt2vWXTNKjRAJGnVKkmLXJSOyJvNWliMUmL0hqlE7KswDvf3XTk4j47PePi2T3nH274cLfkbrXl\nsWrZNA2jQUIxn/DFb39GPi3Y1hVvv7/i5uqe5WJJ8AKEpHWOsm5oaoOWipeXzxiOB6AE203FaCQw\nTQClSDOB0g0+GESQOC+ojcL4aKZD6Bove6Tzu6dXSNH5eSL4BTxCeAQOoQwhGII1aGkYSAfCgfQU\n0kcucOlxOJxrqZoGgmOYKEQ6ARHiS9pZU0pKijTBexdNamsphjnDJCURgslwgFQS2zoGacaoKBgN\nahbLDXVjIqdP9272WYTRd+/p+1bGpgoh+peTGPiruzZyiVZdv09I85STQcp8kDAuNDZPsUFhUchi\nTFqMKGYTBqMRWZogXQ3bK1R7zyCDLFORcEoFpPLYcUZ7MmL1uI75+UFwNp3y4vwZl2fPOBmOmQxG\nUcNOMqSQeO+pp2NmwwFnszF35QYnBGmSMBnmXDy/YDIegRdcXw0YpArvHfOyxXmihq8ViuhCedhU\nrJuGypnY69UHEBKpiGyPIsYH/n/m3rQ5jizN0nvu6kus2AiQzL2yuqtnpnskmclMpk8y05/Q3+5p\nWc9MV1VWkskFJJbYfbubPlwPLMzs/poKM5BAMOBEONzPfe95z3vO0Dm2HGgPHUVRUhQ10Qv6PmCU\npJpMOalrJrOayXzKZDphOp0ym8+YTCejTFNx2O9Zr+64/vCe9XrN3c1nPt/cs2saJnWJIY1N3tHZ\n89n9nKdahczlWRR5Cjj3vNK4p8zsd0owJIGKApFG90PB2MzP2JL3jjyJxR439I8Q84RuzOzAsyL8\nV+j2COi/9fjdBoIePn/4g+fdsF+94Dd6w0+R+6Hx+OyA/8FP8Wvwfn7Y45kW46rJw2ZAihyLNq0C\np3PFi6VlPikxVuJEQ990DOFACPmCkXHceidHkAPTeUlhXiGcZHfb0OgdZaHxIfHuwzuKSlNPSyaT\nmqEL3N3es9pvEFqziHPuukgtBmaFoSJhlEUpgxASpQuqEACJNll+p5Tk8srz1es93351x1/fvOOX\nT3d8ut+xaVrErGb27SWXP75g3/dsbj9z/fmG+7s1QzdQVzXa2HyhJ03oBaGPTKYl1dQQRCAJyWK+\nwOiCpLMaJnlP8AHpC/yg2R00WydJMe9jJBGZxqnOY5NZyZFnTTnQOfn8EQcQOVBDpkBdagpbMy0E\n/T5ijUZIhVKSnsAuOobgqYKgTolkFH0yeYeEJuBAQGk03XD0ZM/N4nldo7VmMpkggM46VKlgKlgu\nPBrY7Bq6wY8c8tj4HpU0D43Y0WogJVhMSk6mJf0wsOs9fYS6tPiQHQOnRjOvNFMrKXUk6UhSGqUM\nyCKD+WxKOZ2hjSLt1+jhDh23GCsYXI/z+oHr1UpSjwNNh/1ATIKXr1/yzatXvJifUCAxSSK8J45U\nB2R/lUldgFxQLUuKqqAsCgqpqaYTbFmitKHZVyymFRcnc2azQFlUXMxPmRgFIdI0HX+7vuV6s+O2\nObCL+0w/CIUaFVxKjvRFSHiXUNqyWCy5OLugqiZMpxOmsxnL0xNOz05ZnC6YzmfZHVFJpADvA01z\n4LDfc/3xA+/fv+Pt27fc3t6x2Wxp2oZZVXB5lkjRE4MnRoWSDyj60LdIAlJS+f4PIEUY4X1ElBgR\nSIQ05Ba5HMNQHgEipadKnif/B/ka+RWGja98qMITPISvjJ8/f/1vV6u/E5D/1nPiV58/arRHkB3f\n3fNA3+M3PX3Dxxlv8QWd8h/9VP8e6B8JgcdfgZEwncDZaWI5D1jbEZWkj4kh7nCxxcWO3oVRcKGQ\nKFxsSQSUFJTVhO9++JGLs69ZrT5ze/+Ou9U13ifOz884OZuAGljv73j/+T332y3zk5JBzri7eUtt\nDae6QETJDIVVFmtBKQsiN8i0LpA6X5gxJqp6xmx5wsXlFf9pf2B7aNm0DdtSsl1a7potn24+8f7j\nNZ0fkEZihCVKsKXh6vKcF5cvmS8rZsuKKBM+eoSKaKMgBRwtYVSeSCkwVlFVktQncHtiEBANvZgg\n8ajkUTGnxyBBKAFaIo1C6gIRHEOzo902DLstpbXMpjPy0IlCyES/3SGTxChLIRVJSUxp+ceqJqWI\ns5qgFathACJKQvD5Bq2MxnmPGCvPxaTibD5FKcPJ8hxiwreBYfBIrZjNZhTacnuz4vPNPX1IWR4Y\nQaSQuWAEPoncqyWrM15fnPD1izl//vkDkJgIlTXUMvcqKpObbiJ63H6F7z3alpSFIkSFICJMlS2E\nBaRuzcR6kg907cD9/RqjBMt5TYo5iWdal7y6XBJDZLPp0EqPqVEDh86BC7laD4Hgs1Ry37bs2g5s\nwYtvv0Lpiqbp+Ondz/m60gptCz5+vuFmtWHT9EymBYtpxcncUilFHDzCS87nNV3wbLs+JwWNma9P\noxClhMJqThZzLl5c8vVXr3n1+iWn52fM5hOqusIWJUqrzEmnhBs6Dn1P17fcfv7M+3cf+Omnv/Hz\nuw9cf75jtdky9B6jJItpyVeXl8xncwbnGIJDhzzhq8UxqxVIIdcSYytmXNaQQo1Ne4EPAVWYTG+N\nWafj0s2xCf1oevecEn7wYHo2yn30uHkCP+J4zCdwhhgXmX+fdfjdMjufP/F05frtNedZof2rx3Na\nJj174a/plF8d+3jw9PTEi2c/z4NqRiSMDUxmA0UdkOY48p3VFill06fgA/3QZfdCqdHK4p0DAkIr\nlIV6PmM5ecFkWjJZapaHCik008l0TEWRCB1RFqqpQRaJQfY4HG1MrH0ieUBUnAiLtiU6gZBZRqi1\nySZLQEgRqS3SWJQtqOczTgfHGsfP7YZf1p948/YXPny4oekapBbYSfaSXkynfP31Bd9/95Lz8yuS\nhJQC/dAjTMTIfLHneLJx0SQihcSogsIWJKHQukWmBuElpCUag04RScThQAp0oZGFQuq82fUp0fYt\n280aEwJRK1wYslwvBpSLoxxO4Xxku2/ohgGlJKf1hOgdjRzzSb2HGHJCDDxUzZXR1KXGGsVEK+Za\nYYxiWpYYW1IZw2a9xceIKizTyYT5bM7JcsmnmxX3u4bYDzjIFThjM1kIlFYsq4JZXVIazaQwFEYT\nhaL1fqQXJKUWlFpilCB5x9CvCcYykVOiTwQMbr+Fw47SSGzsqEtFSgbveu5u79EC6sLkY2qF0op6\nUjKdlvR9GL1DDtRJ4puOMHi8C7hhYL/fs9ntWTcNpqw4vbhAGosuyjx0tliyurvj0+d77vYH7vYN\nh8FndaiW7HZ7PoT3FFIRXaBrHZtuoG1bhjDQB0dI8aGSFkBpDRfnZ/zdjz/y4x9+5PLlFbPZjLqq\nKKoSBIQY8ri/dwx9R9M0dIcDu92W+9WKt7984Jf317z7+Jn17oDzAWsMr19d8erqgm9eX/Ly4oxp\nIel9hwt5ECvFPIH64FAa01gZi/y8ONpBZJdNEiMfLhE6e6pkAM8Sxd8eGHwc+nmCySPMpIfXHDHq\n0cn1uczweEf9B6KV30u18mT5EU+fe15pC34bfsUTtUn++vFw+R+O1fN/XGU/fu9jtf7gMCny6Zfj\nL0FIgVKgVKSsBsr6gNARnxRZ+Sczz5giMYxA3vVoKRAajDCkkBUXEUEyAa0VZTnBp46gFqjaU0+m\nVEWFUYZh6KnqkpOzBbM4oZwWWfdssn68DZ4heaqomSjL1OYAXiGzvauSMie2x3xxRJH1u9IkrJLo\nsuCgPE234pcPH/nw7iPr7Z4kBEVpqSeKqir45vUVP/79N3z19SV1taDrBpquzYDqE0JZBAIfcwKo\nVWbcRgqUKNC6yIoANeDcNcN+wIcTlL1Aup7Bt0QRQGtMKVBFTp6PQ6A57Dlst/T7A9V0gpQC5wak\nVIgQEC5glAIB3eBYrXf0YcCWFmU0SoFNgaF34DwixnGK9AjkkdJoamtyao2ESiQKEaliYlKUnM2n\nlMZw6HqilNR1jXqhePXKMf35PeWnWz6ttqSmzVYvIaJlQkuFkILTeY2WgsEF5nVBQuIiDPsBJbLk\nsDSK0mqMklmq2HUkP5BqzXDoaA8ON5T0WKZ1wTytsTNQpaVvFXf3GzSJ03mFMVlqKZRCW0NdF7TN\nQNsc2BlLESF2LoO487Rtx/1mw/1my6breVFWyLIg+MjQZ+17PZlyd3PP/XrHX95/ZB8gCInWmrLQ\n4B3b2zsMIg/TuEgXI1vnaYcel3y2szUq53ZKwWRS8+rVFf/wn//EP/7TPzKbTen6nv2+YbVZcTgc\naJsG5wdc39E1Dc1uR7Pfs1qv+Xh9w9uPN9ysdjQuUNc1y8WCq/NT/vDDN3z39SteXV0y+IF+v2Xf\n98xjyMKUJz4fYpQbHieHHzhvme+lB7hPj0Avya8/ynmP/HiOcDti0ZFuO2LNI8n9QLM89V96gnuP\nSHicD31qoPXrx+9TkT9sL76E6MdmwVMQ/5VZ1dNjHQFYPIHtJ6nkR7OsfJrS0+L/yTGeTBCOY9iP\n5E5ena0WzCdQVh2mbBGqxSeIDmK/Jw0CJXOjcQgdg+vphx4vsu2r1QXeBxKZbslDBx5ERCkFSeCG\nQCiztEpKhVSK2XKGLS2khCrGwFctEEllkLaKwxDZpcDc5lH9x588a3fjMadBQJIhT3SS03Gu91s+\nrTd0+57JbELUkqbzqKC5ujjnD3/4ij/+6XvmiznWlNTFjMlMMIsdu/YOHx2xDUgpcTH7ajilUSmS\nVEnUo8+1CqB61nfX3FzfIETJdPlH+hY+bq45P5tTVgatEyIGUooMQ8/tuzek5sBiNmGyWGSPjxiQ\nIeRYPKWwKrvvDV3LsG/QPlB4QVN32EIjhYKuA+dy/uSx2ZUEJEHXewqddxVOS5yIFG7A3txTBYm5\nOoP5grryDCFQT2fYukQZw9VXr/l0fcPffnrLv/30lk+rNeuYUCHlqk0k5qUmuJ5D4zmbT0gIdu3A\nagOkhFZQjIMzUgrafiCJHMogU2C/3rHa3tDGd8j/+c9MZjMuzue8+qfXVJWhNBLXD6zv13yuFbPF\nlLIsMcpgtKcsC+pJj+s8+2aLCB4rDISsO0cpqumEs9KyABYnJ1ir+fz+Pd2+pT20tF3P7rBntdvj\nnSf6PIcQiNyuBvqq4GxW41zIHu4+MgAHN9AODaVRFEJnFZA2FIVlfjLjxeUptlSsVrf89NNfuLu7\n5+5uxf1qTdM0tF1H17UQ8/SvEoKu69nsGj7drmh7h5Cay9MFP3z/LV9/dcWL8xPaoeft+/f8t3/+\nV67v75nVhn/49orz+QI5yf77UkpkSsg4lsMPen6R5aLpmFv7aJ8tRZarPtSOY8P2EYQfjyPESPJ+\n2cQUT0D7SCMnxgzbx9DwI1am8WBf5qE+ffwuQJ5DZR+/fvY5PH/jD9KeLw9yrMzH1fNJk0B88XEE\n9qeUi/jiRI5L8bNXCQFGwLRWzCeaaSVBtwTpGXCkKAgpMYRhXEgC0stxwZBIpbK7nHDEYlRhjPRM\nEmkcJsip7EqNo8wx4GPAjFSOVAJt86XiXCAMAV2OY/Gj9Gm92aN9z3m1QBbZOIhxKo103KrFcSso\nkVLjSbTJ8fb2hve3N3RDT5IwnU85u6h4cXLBy6sLrl6eMZnXCJWyAkXl1HQ39AztMPKciRh7Qsq+\nLkkFhNQgFRFF5/bs13f8+d/+hZ//8hcOmwOLxYINmqoTVO09YtXQHgxSyXzuEMgYkUNDJQMTArJr\niCLzpNJaxBjDFpvM8+oUWZiCoKEuKxaqwJPogstZmz4QvUdrjVIeJTOn6bxn3w18vNvxYjHlpC4p\npKQ/7Ak+Mh0GRJEHf5SQVDOBVQZdFJjplElVslzOuLw85/rzPTd3a+43Gzb7PV3fUmhIIWCE4HRa\n4WIihsBSZz94LQVa5inJPoU8eSoVKQT6Q4tpB2Ztjw2Rkxgp0gD+QHdZoBclQ9sTnccrQes8psux\nZWocgirLgtl8Sm8cMoJL2aMkeUEKeULTlAWTyYLZYs5sPsdoTbtr2Ntd1rELEMETQ2AQYAaf1Tci\nUVjDbDbl/OKEZrVlF5rMjfuBLnq0kVwtF5SFxWjFMISsrQ6JX959YLs7YG3Bdrtlvdmx3e7ZHxp6\n53CjR0sOB8+7TOcD3eA4NB1KaUprsGXBZr9j+Hng7fsPNF1Le2ho9g27tuXqYsm3l8uH3k0e9pEo\n8m77McAhjc6YAhFzSSfFY4atJGV/mlxhjv7j6RGlxSOhcsSwpwKMJ1zEs7+P7qjPaWEeqJg0vub/\nVxX5cfUTX7xhxm3Jg8PhsRJ/WAHF82M86+oezZiegPkTjvv5CUgcF87jYiCSHLXh8eG/kUJQFYnl\nFJYzQWk1A5IuJpKLD1V+FBGpIcSBto9oKzCqwJpA03tCdqjKlaEEJXM1jcj/h1YaYyzGGELMEVdH\nakKM5Fki0bc9ro/MVQE2W7gqIdh1DekQeVmfo5SmKnNTi8S4YBwvrvG8y8xnNyFyu92xPjR5HFtr\nFicLXl1d8cM333JyOkcVikNzIPqY/a0JtF3LZrulax3WWLSRDC5PuimlcmCwsChZEomsN595//av\n/Ou//DOrj2t0Ukzrgt3hmmqA0+Tor2/ou56tdyCzZepMa74vLfPCUCaPaw/jFKrEIUArRMyTmil4\nTBKc1VOSlBRlydKW7IVj53MTrwt5cMMWFjNkRU0i4oOgHTyHuy1fnS84m9bUdU3jeqadQzU9tq5I\nxpC0wRYlVqicNTmBqio5nbzk9XLJ/dWGz5/v+PTpmpubG1brFQd3YOgCOiYWRtPEwKAE50Zl21Ol\nGMiZpB7wIWFEpuda5ymdpwKSlHxrNFbAtj0wfPjM6lDSE0kugNX0LuJ8QodEkqMaRymszZ4wcrRB\n6PoON0SiF4BiUhiqSc3FizPm8znGGNzJQLtc0GwPtJsdu82O+f5A3basmp5107JrGmaTivl0yqSu\naHYHBqCNgTYEhJYspzWXF0smpYUYuF03bFrPvum4/+ntQ69icANdN+Q4vJgdOmNK2eRMjDYGjIZv\nKRclxmqszQv659tb2ran7brs2Q5okbXsbpgwuGzjcNzlSzny9aMdc7a1zUWeGIH7y79T8AQ3kFLg\ngZJ9NlH4uJfnCGFPYOfhL/FYdR+/K37x/UfcSg8H+bKafXz8bl4r8IT6OH7x+NcTymR84suVD56D\n+APgPV/tHkyixu9/KLzFlzuB4xRhFhxJoNCR2SKhy2ac2LMkGRHCkMjVs5RQ2oK2azk0B7rdwOXF\nSyo7wxuDF6CSQGKxCsToq6KFxUpLYSoUisrUNKaidQ3RgyTnZ0YJQSYiQ/ZG3nTIqKhOCsqpwWjN\nTsK6a/l4/YmyKCmr8sjE5VX+qApBPNhsuhQ5xIAuaibVkhQUtha8+uqSP/zwHcvFgkikaVucC8yq\nBYv6lBBhdxhYbToUCq0sIlmIiaIsKEsDyVPZOdqUeFp+/um/8+f/9v/y7q8fmNRT6sUEqRNBB4JU\nxIXhzZ/f8/O7a/7WdnghKKzlfDbh/3j1iv/14ozZwmAQSJ8YnKNb3RKMRitN27SkFNBSspzOCQKk\nkhTWooXJ/iEx4kKmgGZVwTAMeO9ycLPWpJDYtwMf7racVBVXkylOCfqUde9q36LdHuMDRevQsymi\ntDCpoLRIa5goRakkZ8s5r/DcK/ikBT+vArveZUrDBboYsClxaS0ToUgSPgfH4AIOkavBFIkucOg9\n85iYKkUFnGrF0hZIo3jzac3tbaKpDLY2xEGyvd8xmy/R5QxrNM1uS3vIfiQxwbQsqcqCYd/gho6u\njyAMSUnkVufw4pA4WS6YTKZMJ3PiRWRoc+jCoW3Zdg2f79e8/3TLm3cfMFrRti2/vOty9GDb0QZH\nURmWiymX5wsuTuf4oefufkXXD+wOPet2wCc/au7JPZYYx0lZhVbjvTkOGWmR/VCOVWtKj+fKdQ0q\nQm00la6JMY5DZNlHBmBweV4gZ9RmADgmreWJzGyqRnzcsT96hGbQ6JuGvVqhhw5bVA/Wyke6JB3r\npeP99wRkjoAsn6DUU3iTDzJGnv37QyH6Bfw9ffxuI/pP3t4z6eEDTfJQiYtn25WHt/dku/KrNyie\nnqRHnuYxai0/8WxNEEeHw7wrKA1Ma6hKRzus2Xcts7qkKC3IgJARHzwqSUpTEQN4FYl4cpavpLAF\nUtnRZE1n6ZYUGKmxssSqOYWeo+gobUNlZjgPWlQYkYdRoESIAhdaTk8KTmtJYaYE00EccgU+neKb\nxPqwp+laZsMEjlFopNGpLlumJpHwJA4+seoShVlydVYQTwO6cixPpxSmhqBICLQoKasls2qGUQV3\n60/cre/YHQ6czk6JKSfuaF2gtUVrgxIVUhe0bcf19Rv+9m8/8fEoKnf2AAAgAElEQVSXawbnOZsW\nLM7nLJdTdGkpXYT7hsoKVAzsupZkCxbLOd/88TumL684aMnbvuXUJaokM58t9dhrcKQUGJzDS8l8\nXuFSwguB1xZrJJMUMEIhk8dIyWQxoRsG+sERPNmTm7ybaHrPoR+ywZjM7nd9cMxshUqC1A3YpkMn\nQWp60vZAkGIc/MoDQDlgeI867CkOLbMkqLRFxEhqB4yCUklMYXmh82Rp7CN3MeLIKhoBhN7R9I5p\nEFRacVUWvJzPqZSmHXrmPrHpBjZNi9trylnFaRJ8/rSid+SeR4A+SVwUWWYYE0JpZos5wxDY7be0\nw8C+69k2DZvdnt1mx+ZkwXw2wxqDSOCH3Bht+p5de2C739J2DUCWAu4HDv1A5wNCCcrKMqsNi6ll\nUlpiyIqiz3cbNk1gfWi5bzqUetqRgqMtQx7MyRWvHE260vHjyfb6weM+jVW2IFOeAuKIi1aCESlX\n0yGD+dEC4sjlPucG8lcPjpwxjdLJxND1tGwpmy2FVlhbPLg+xpETeMSr59XosVh8JFCOC9KIg8+B\n8eFneu5m/tvkyu+nWhlP/HHFgbGTe+RDnq5qvwLdZ0dCPFnJ/r0V69lJ+qL6/7KM1zIxqSTTCQjZ\ns+/uaLoNqAmYJUZalMymQCDQ0lJqTbSKvpTZZGh0qMsZgIm+95TSIIVGojNYyxqrKohgVInVBUY6\ntChQoszRUSIAGhJMZgvK5YRCLNgPt7RxhRSSsp4xzODQ7TgMHW3XjBODx8smjXab2fZ1HzzrfmA/\nQGnnaD1HW4WZDNhaoVQJyaCFQGtJXc4RCXa7HR9vPnCzuse7yHwyJbmIipLZdIbS40UsJU3bcH9z\ny1//x5+5fndN2zkWF0vOXp1xcXXOdDZFGkO56wibhkVpOSkN1U6ip1O+/vYr/uv//k+cnJwgmwN3\n19fIzQHhIzOhMFoTUyS4ASESPuYbbW40IeZE+gGBLcsc1jGpMN6hBczqkklV0rQ9TghSl7fJ07JA\nqzxC70kElRufrXPMJ3M0iiA7bPDofiC5iJdjryLEDBQ+e31LP6D6FuMdMyExRYGMsPaRoBXSGqJP\nzEzBXAq8DAx9Tx8iWht8jDjhGVxASc3MWq6mU5aTGpUE3nuWyrCKkegj+y4QLcyC4u52x7ZxFJMK\nZXS28O2zXr+0iSgk08WCvvfsmo5d29J1Hdv9nvVmx3q14eZmwmxSY7VGjsk+IWZTsH3Xsjoc2DYd\nrR/Ytz3bLk9xWmuZVxXLec1iYpjPasqqoOscq23D/faAKCZIo7N6yydgNBMbFSJ5GDnTGUoKzOi4\nKGX2O4E81yGPRlZaoR5CLvII/QNgkwNDltM62yOEkPsDYzZsvufTI+akxwWEkTaJcTSmiymHd8cD\n3f6eeV1hSvsQzJKSeAyiOZK8T8DqyAb8mu59kkr2BKePr3kQgDz/pmeP30m1EhBCcWwkfOm7e6Q4\nnn790CT4okv6jEZ5+IcnK+wXx3m+zo3PPhb2KBITK1nMBWUdud3v2LVrOrehconC1ShpMVhQIGSe\n8NKyoC4rhJzQdVt8t6OoJUl2uOjYtC3CzFCmQMU0cmxHfwZPTP6Bv8vEWBqd6bL6QeVlHoFmUp6i\nlUIPhja1CJNgknAOtjim7ZZ5URLFKJ1K2Qs6A5Tg427DzRCIFNhCg4/46JmXM6q6QBcFhS5HS1EB\nWK4/v+Wnd/+dt58/EGOkKiru9p+xRlFXJUtbIbTCp56h3fHpl8+8/+k9b/78hmHwnF694Ie//5bL\n1xfMZhOEj4QhIbaOftuzkIKLQnNlDfWLM/7ww9f88U9/oKwqgnO056cc/vIT8vMKfWhR2uSdjkvo\ncbPqgMFamral7TtsYXHVAllWnLQXFH1D6nuUyv7tk7qkbTsQAqMVl/OKi3nFclIRoyBKjZeOJuYk\nHz1efzoGTAogDeV0mpuuiVwFxkAMjtA5bLNFNFuSaykjmCSQOMqq4GAEdz4glWSmDD8UmsN2Q9v3\nRCXZxUgY05qm1nAxqbmazvGjm8FiMkUaxWmqeKE0EwVmUlNNZ3nBfXvLer9FKEVVWGZVwemkoDSW\nOJPosuL08hJhCkL6yP39LjsLtj2r3T6DpMwAinh0yfQx0ceYaaAYCUR2bccQHIURvDjJ4/0niwl1\nXVPPZ9h6wvb9J9reI5Lg+29fcdEFqo+3XN/eM3j3ANqZjwYl1KMdbmGoizF2ryzQUmGtoa5KppOK\ncgxf9j7r4r0POSw5CUbSBKUEldXEBP3g8DbksAxk7pMdK70neCTIC0McfxcxjmETrqfZ3uIXS+R0\nihDyoSEZxFNI+WL38IQ2eYp4T7MPnjEr6WmVPqpWfqX6yI/fBcjvPn+gnsypJ3MYo6Hgt6vpfF6e\nbnyegPTT9yWeL1b5pPx7S1h6pFme/GlkorCC0xOFsT3tsGa9/cy+3ZDoQUBMAZkkdXGBCz0+eoKT\nKCRKQmk1fR/wcWDwAmQ2mmrbHcoEoiiJyWKVwcWW3h/o3JYu7BhSQ58a8BEzCJIcCCkyxB4XO2Ly\nKAx92JFkwpqSEByUBVJEpBHsm47bfo8hYW2Bkoqj48OQPCvX8efbd6yGyHR6QVFMMUUkpY5t39Bi\nqHxNefKKwlYQBbv9nkO7p/cdSWTjoyEM9L5FKIOPis63dL6haxrWn1dcv71jfbOjKGd888N3vHx9\nzovX52gtSD7iugEtS0Jq2XeJWcimUpXSnMwmzGcTrDW5CisV6lwxCEEsP3D/5j3VoaMQCm0tloRx\nOaHHdT0hBYKVHFRET0rU2Yy56KhWd4jPPUPvMErlEXnn0Foyanyy/jt6xP4wNh4FqOxDIqWmnE0x\nNlNIqAKMyZVkytxnIBGiIElBWRRMqDnsBrT36ATnVUlXF6ytYOcGGHX2J0pyFR0HBRskKiWKaoJ5\nMWd5ck51eko8OUVMJihbYIWkFomvypL5ZE4YVUkxRG5vbvh884n79T3GlpRlSV1ZJoXkbFqynFfM\nZjMEidnijMXJObef7ri5ueP2bsWh63DOM/i8+I/2+A8UgktHi1YIZFoJOc42DInVwdGLntNiQnAJ\ns2tYb3YYa/nmh++4ev0KoRSXL7OZ24frWz7fren6HgHZ+bOwLGYTlrMJs2lNXVgKO4ZhHxUkModT\npCRxLhG8xPuEc5GY5GiRkKv9qPLvp++z+6UPnihlNqGSGQOOWHCMGsw8e3hi2hbxztH7HXJzQ392\nyTA/A21GkyweF4RnliGPGPOlhPDfweVRqHDcUY+YNTIZv/X4XYD8/vaalCLWWlIyKDVqfY+Pp+z+\n+MRTP/LHLcfzZgE8XQyOqpinr376yucVugAKLZnXisVc0YeOfbNi19zRuSa7Fyo9Kl0EVk4RaEgt\nvR9AehKRmAYSAzF5gpcoJUFEmuGA7kAoj1QVkzjgQk/vD/R+zxAODLHDpR5CxDgQOnt5uOhGIDco\nWg7DJnOXKmuutRZEofFSszl09Pseues4OzlhUlfj+5Ts3cDPmxs+7tY4aZlpgRcdPnV0YUt/GChD\nidE5Ck1JhXeB9XrFarNi3zb44EeHvwAi0bYtbhioypqhb1nf3XP95prDxmFkzetvv+aHP3zD1dU5\n9aTMYbzDgRAgusSh6fm8PzD1AaRkpjXzSUlV2vzbiSn3FqoS/fKSNqXcgP3lA7XzVFKTxsGN5AYO\n+z2uNsSJpbGCqtTU8ykz+5LqzS+IuzXb3QFlDWVhaFqFVQLvE90wEL1CO0fdZZ4cFFAQfUDYAjst\nUMYgpcngpdTY6zrGpeXKTQkw1lKKgN5D8hGJ4qKs6AuLNInbyqCKGqkrZj5x5ivuUmDnPFFIVFEw\nP71g8c33VFcvSacnmJMTbFmiEZRKUdY1V9MFIoYMMl3L8vaGs/s7Dvs9tqwe/Ha0TswMzK1gUhfo\nTChz+arnxYt7bq5veP/+I7e396w3W/ZtTx/Cs2zXkBJR5NIgCkFIAiENAkVIif0gaVNADS2D6Tj0\noIms9j1VXTG/eIGdTJlNKl6cn3J6smA+m1KVn7i9X+FGr/i6sMzqisV0mikeY7JEd7RfJiW8y/2I\nlLIFxZH2TlGCyA1NocYpZyMpjCKExDCMskYpUVI/2umKo1f8WBWOC8ERxGMM9H1P03aEO83h/DWT\n5SVmYjLoike+/zlX8pxFyBf208beIzZ9SbnkOzcdJ0J+xV4cH78LkB+2K4pCU5YGaUrKcoK1JTKN\n7YB0rLzHxkd63H6kh+fHk/+YwfZYuT9bBL6o04/nUTxtOOTPZ7XhfGkpi0BzaGmHNX1oiCKgjKW0\nJdoYItANHZEenzp8avApW3W23R4Xhzw4kDRWavSYoj44j/P+SVZmTnh30eFC/kgxEkXAhQHtFUhB\nSPkmlVISpacdGpLQCOUZ4o4QE857hv7A3WHD8HnN6t7xj3//95SFzRmEUnDXHPjn929Jesbl2RWv\nX73ip+v/yafNRw7DDm0sr8pXLOZzClsQY2LfHPh084FfPvzCh/sPDNFRVQWlzR/v371ju95Qq4LD\ndsenj9e8f/eJi9NXfP/Dt/zTf/1fqIsFVpZor5CqxpQHLDs+vPsLb6//xs93H6hjZGkMFzbTAIXV\nuXqJfrTByDs3c3pK+BHutxt2n1ZMDgNW6+z97SKr1RozOcUu5+T8gogVIM4umJxcIMw1n27vODs/\nxY6JL1YKWh/Ydj29FRS24GWt2SUPIRK8YxCOaBO2KnO0nNQwNlxJeSYgjQIyjQBriSKhRZaShhhR\nSnM2mdJbgU89SyEpT6aoeor6tKNWlloanBvoXIKypDq/Yvp3/5n59z8wPV1iS5N3WRGicxkmpCIi\n0bXFzqfY2ZTLb75DigzgITicG0BAIaHWiakJGJEgBdzQcXJ2wdVXX/P19/e8/ekNP//0hrfvPxK6\nHkcgBXKaFI9NxJhEjtpT+SZ1PhEpiQ5CN9D2dxRWY41GF4YgClSb8OsDAcnpfMr5i3NOTk7443df\n8/bdR+7u1my3B4Z+IPSBzWrPYdsyMtcIoXJc4tH3XI2xeFphrMVagzVmlCVaqqKgrEqMNUiZSM0G\n5x29G7BSjcEealTKkFOTFKO6JcNHinmn43yk6TrWmw41DExOPlGfvGReL8YFhkyzPIky/PJxpI3T\n0Q7qSYGajjj3UHhnm18tEoUcm7XR/yam/i5Avl29IYQ1bXOL0hUnp69YnlxS2CrfJF9ozI+uco8V\n+QMDxWNF/YQkeXoGHz5PR9pp7HQf176EEoJZWXA6nzCfGYa0ftCpptE4R8vsLS4E2RkkdARa+rDn\n0O948GhQEkXWB4PiZHLF1L5koi7woUWoAcYV/mjmJRG5MtAGpUKe6pQaJUx+lyJnTyqpcyV4rDxS\nNq0K44CJiIoQYds23H34zIuzc+azKbPFhJXv+NQdWO17fvzhj5ydXtD6lkO/RynB5fkls9mM5ewE\nKSSr1T3r+x0frz/y8/u/cru7pXEtUSTmesa8mlGXlsqWdKqj7wfubles7rZM6jnffvcV3377FRqN\noaQ0M8qywLsD29Cy2d9wu/nE7WHNVkQO311y0gTO3txQL6ZU1jwOQsDDSLPSGjOdUX73DYck2b69\nZljtCd2AiIHaWjh0+EOHWC4IRuNDIOwaLk4vePX6Oz7e/wt92yNJFEpQKkk7XifFEJhFwUU9QYWO\nrnNEH0AohLYIU4zX1aOSIuvVJEImhFIPDXgtwUaDEAKjDUVZURQVSiZmPrBICVzLrgctBnahpxs6\nnHPsDwN4w+WwpzKJui6wVY1g3PKHhJD6QVGRh38ghoQUGmEk2lhsoYne4wYH4jhaHnEqoFTA4tBK\nUZiCqigpy4qqnnL64pLLt+9588sHPn6+Y3VoaMe4nyCOSgqBTIJAQMUcfSa1ySPuCQIFHovAEIMm\nHASHYc/9tmO97XlxOnB1MWNSGBbLGT+WBa9etbRNS9t2mVaTGonMAc+kLAAYpzIfQFwptM4DeEop\npBIPO2cpc1MUIIZI1w8oD31hMjWnJFrlginryseBsxFfRMzDZt55hsHRtC37fYNF4JzPirCxGoen\nBeJvgdHTXt/ji572/x5olJTQAlQKpKHl9uYD2/vP7Pdr+H/+719h6u8C5OvbXzjsPrO+m6BNzdAe\nSMGxPLlEm7ylDmEAQEqNNROkeiTDv5xvEv/BV/nxOLJ/JNMfrXQTWkkWU8t0qjFFomn60UMhX4Ra\nJIw0424pEMhUxxAO7NsN99s7YhRYa5lOp/R9RwoJQ+TFfMqinFKqKbvDLZ1bE+KBwff0oUVGwxD6\nzNn5SHCeQEJGw2S0oRXS4enGfEqPIdujRnK6et5WCqTINq1DCHzc3HN9d8f52SnFsubN9o73uy1a\nTzg7vWQyrbnZvEdpwbJecH52QT2psdIQfaDb7bm/v+PTzTX32zuaoSGIPCxVFxNOJqdYmahtSWcr\nuqYnuERdzji/uOLy6hWz+QKZFFrpnJupJb7v2e7vef/pDTerzxxChz6ZYP70LcUAtdTMzhZUZfFQ\nvTz9lUohMNZSXV7StT3tdsdqvcU3e8qYWBYWicJjkLMT0mxJLKfQOy5OLvjmquNvf/4JP3gG4SgL\nw8RonFbZCyUI5kKzqCf4NldDQeQ0GKTOE6s8sR0dm93INA6ViYeqSkkwSuVJ0lJl32xjUQqmwXOC\nZr1v2HQdTR/ZuI4m5rxIiaAqLK/PZpxPNVObcpABEGL2+05Cj7QC6NFAJrpIjJlSSOLIrEpSUoSQ\nNdpJawQaQXZ9LLRCSY9WGm0KqsmU+ekpp6dnLJYnnLz7yKe7FetDy74faJ3HxzErdQxgEMYiiwlS\nlzif6IYuS1KVzUoTmQOQfRgIQdC0is0uspxDWSiKwlBOppycZB66G3qEyJO0JEEcw5aNyRa2SmYr\nWjk25J9gKUcr4UyH5KIphEQKCRcCfQh0XU+hc/UeLHkhVjnpiJgeaBZSJPjAMAw03UDXDzg/oELE\n+wHve1LMtOBzWclvk9+/7tp9QaaMsmElcnM9up5uv2G3XrHZrmmazW8e93cB8ttP7xFSIpXGFiXd\nYcXQbUjpv2Crmpgcze4OElTlgrOLHzDCPKysR/H9Yw0+noyRUnmmbHl21kYZD+MU16g7LTQsFgpd\ndPSxZQh7QkiIVKBlBVKhpcFHz9HJxCVB0x24W63429s3KCSzyYR0/oLb9S3eBabFjJcnB+qypiwV\nLlg8Budg328IyjOIJqe6tAcOzZ7Dfk9wgkJ7lsULSjNB4Wj8hjY0OOVYlBUhisxXRw8IpFIYYyiK\nPCyyCwOfVvdcrO+pvznlXz684eYw8PXVjyxOTgii59BvODs/ZT6fMZ8uGIYe33t87xCpoCpqFvMT\ndv2a0EYIHSlF5tWc89kLmvYWqwyFNRxWe84XF5x+d87Fq9ekIGibyOyspJwrpHHsDzs+3vzEz7/8\nd/781/9B07VIa3j5wyuu/ulH5lEwaIEt5xRViXowD37E8yRyLF1RVswuL3IizGbLerujHYZMJc2X\n9GcvERdfoS5eoeZzpHOc6Bu+XW3504tL/nLziaZ3LBcTFnWHbgd8FziXhqUqKG3JrO0xMhIrMEJy\nlJOJdBSFiXwDK5WTjWIA5Uh+QIS8LTYqq3qSDqhCI6zBSMk0RC5SxW6z4n5oOISIE5JG5dT6F4sp\nX3/3Df/X//m/cXK6RCtH61soa5LM11CMmQJAgDC5Qo4+y19lzJV71/T4ITK0A03XUNSG6axCYAlR\n0COZqVw3Zx8RgdASPcsh3C9eX/F36x2fP37m/YdPfPp8x91mx6Hrs+UBAl2XLM5fcPnV9xhb0g6O\n1XYDST1MTSYpcCFP4RKzAkPLBMoQRU4TwueoQmMLlDlOA43hHD7bVBRWo1WmQgBSyNx1cAHSkUPO\n7+WI7MdxfG0MWylxztN1HZW1uKIkq4glQiqkVCQRs3adzJHnSnxg13TEGLEm7wCG4UCzX7HwLVrl\n738cs/8Srh8LkqObbUaSR5V4SongPEZErBaICPv9nvvVmlQuOf3mkktrfxNTfxcgd64fp7IkInl2\n62tSbDkcbqmqGVobQvB0zQ6tCnarO5ZnL5nOTinKCWo0F3rWFP1C5vO8G/zY9xUiPqhdtAzUE8F8\nJsDsaHzL4A50Pjv7gWdqp0Q8xkD2b80J5NYYBpNDcsuqpm0a1tst/WguFLxnp9Z8dfk1WktCEDjn\nEElQ6IIhdHjX421WTmQnukjXDQSXkKUhFweZm5Oixjzo0h0hZH4+6MzB5gAGDVoibEFQktvdlp/v\nPuP3JzQ+Mpsu+fbb7/OOwrcs5zPq+YSqmqBFiUsREUElKMycWFq62nGYb1Glpo8DKUZenn/DxfJr\n/rJaM7RgRMWL11cUtqIoShQaO7WY0tDrHZu+J+w86+sVf3nzr7y/fsPBDVTzGRcXL/j2m+9ZLBeE\n3YGm0qi6zgEGYxamFBIl1CgGyIu4TNnaoCgr9LymnFbYKKmMwe8PiA/X2MkUO19i5yeIsxNUUbJM\ngh92LXdC065u6IeUG2l1Qewcr5dLLudLjDDM6wWVcQTvSVEjU+YpH8o/KUBrMAa0gpAbwAT/0I7R\nyrCYzem6JldbwSOSxgjFspzycuyR/O2wpUmRQ5K4KPnT3/3AP/ynf+Dy/JSynCCMQquBg1ekqEee\ndQRxLfBuvB1SIh4NoFLmYqWQaGspRUJocPGYAJ8tmvaASRFDopR5ulGm8aOQiBOJsYbF+QnfHloO\nbUfbO5wPBASqqrHTBcXsHG1Nlvg5T/QB1zv6wWXTNCEBDaOHiZICWwm0Hs2oSKTgcENDs18RQkfE\nZw25kQ/n3cd4TAvPwDkGJnvnGHpH2/SEmO1qwxgA7UPKAL7fclJq5uUy7yhE3vVLlXe/8kFKmPNF\nB+fYHlpuNnvum54WhTAGYwr2Nzd80n+mOr3i5ExTlVPiQxbC88czFuEBxB/L0BgS3jna/QZVWqpq\nxrbtEOWExYsx+1bpTD3/xuN3AXKt0khdJBCeod+xWTXsd/eU5ZSymGKLkmZ/T4yRoW3ZbTOYL5cv\nmC3OKar6Yfz++TYmPTlpj93gR0omHYso6jIynymms0QQWwa/pw9NlrHFnExjlCQJi1ESkkZhKFVF\nqWcMPlAUNZPplP3hQNsc6LuWru8JztOlA7v9PbPpNPuOjAkjSmi8D0g3ENwwRo3loQM3uPzjyogL\nLWLIW2klyzFt/RhLFnLat8pmSykJtFbYsqCazqgWS7wqWMWI2O+op6ecLV5y+eIlu+6eJBSni1Ns\nPUVJk10cB0nyCo2m1DMoKoY60LgtdII+9pS25mL5kkl5QtdG9puWlCKTr2bUk2kOAFARVCDKSBsc\noVe4xrHd3nNo96AEpy9ecHZ6xsurl3z99TcIEWndBhcS2hYY8/8x9569lV1Zmuaz3XHX0UQwvKRU\nKtVZNVXdQPUMMMD8j0H/6AHGNKarK1NSyoZjBMnrjtl2PqxzyVBmZX/VHICBMIxL8p591l77Xa+p\nThks9x8yL0j3Q3DxqdG42rFadCyyEybGMFDnwurDR5pHj7BXT6BbQlWxRPMqFn7yif1fNMNxS6Mr\nqspTajOLhVqsdtja4kzFFD0+arI1RKHzyHekHjxz7ikTudwH+KJks1l3K8Gvo6ekRMnSbdXKcqZq\n9tnyo4+MPjDZhvXFBV9/+QVff/k568USY2uKMRidickTU8FnK7bIRozVok/3eSoFGdDFIENKEOzW\nGDEISzngumo+4WpGFL4UXIFiCk5ljEroLP45Va0wzrFYr0gp4WMSA7ckeDnVgmRboq6xtRV2F5ro\nA9PkmcIcPmIMVlfkPEvrtQjgY0zkKPYJOXqOh1vev3tPTBPG5pmGOlsbl5MM/kRskPc6qzlWscAU\nIzEGmY3kh0IeYyIrsfcVqEzYTlrr2Sdd7mcmwhwUPY4T20PPzf7IwUcCFtu0bM42EDyl3xH6HXlz\nKZtq+bTm/I+v02dqFDEGxv5I9CO6NlTGiHlX1dBVzf2r/T0DxN+kkK+Wdl7rckzOpczG8ZE4ZVJT\nMGtJ8JjiwNtf/sy7dz+zPnvMy5df8dmX/wnnhAZ2kqF/WswfQlDlDHPqzsXSNmNtoWkzFxeFxcJh\nrebgD0zpiE+BWDKJSCqemAPW1hhdQa6pdceyWtPV54SYOTZHVsslr9++YQwe17ZoK57M2cM4jfgw\n0jbCiU7JEcKEHwOUTKzDaZo3S4gjVV1RNZp9/566WlGZJZVezIPOTMoCS2kUvgRKkqe1MhWrpeHy\n0WOevviCrmoxy4bdMfGH5//I88evWLRr0IFUHMYpoCGEhPc905AgieWu1S1drUgLOIQtxzDiMzy7\nfMXZ8hE5a477iQ/vb4hh4vmz5yw3HYtNS8wDR78nDgFXOZZtJyETVc2zZy94ap6xXq/ZrFYsuyVN\n1bLffiBue9R+orrQVNpIriMPIhE+wT4f2EuFuhQ2i461QVwQKTQxcHl3h9tuUcNARmOajvax5Wq5\n4MtcOKD5b//vnzBKPM1tpci6kACjZ9aMhqQtqbHkrkZ1NcU6VFbYWHA5o8cJVTIqRggeYhSoxYg1\n7sq20BWmNJJCRpUk8WZjwKRCXTQ2F4axwLrlP3z5Fb/77DMeX15iTIWyBmUEE16WLNBjyKSkxLlP\nK8bJU6JACLrS5JjoxyAsCp0pJIiFYZDszM60qMaAVRQNPsOUFV5lljrRzoX2pFakPNi4OqMx2sm7\nbzWTaslFDN/sjDbpIoPgpq6puhZrHU4rDOLdX3QiqcA4ZlJI5JCgUmjryEXz/c9vSHhW65bHF2c4\nfQKzTurv+UQykyC0NtRzNJ42mjhj6tqYWTUqsEkaRZnrNBKFaKwMadVM8yvzZpEzMUb648B2f2Tb\nj3jE0bPpOl58/hwbRrRxNMqj52CZv+aNn65P+eMzkHKatKAVhGlkv72lazWVlfBnreWEoJS6Fwvq\nX7/s/fWbSfTvMa45+DYlBRlCHtEZRgXaSDKe0YkQJw7bW81r84kAACAASURBVN7yLUZLKsr501dY\nbedprwwztFZY6+6P4BKvpGfJbaFyiW6ZWa2RQFarScWLsCaLmlIpg7IK6kLK4qtSVCAli84Ntb6g\nc48IjWJsA/t+z4tHz1jYhn440jYLcIriNcZWJBK+jGjbYoslpppFu0JXmaISEVDW0C0XEgZgDG3T\noKzBOUvjamxpsFoc7KYYMA60jXhdESqP1oquXRJyxNBh/nmBxuLqhmbZ8urqdywXKxIT1jmYTwEx\n9UzTxDAe8eGALoakLUUFitZk5TkMd9wdbvA54qxBkUhxwDpNCIH9Ycsxbnlzk6iPFctFh6kcVd1i\nrMPSUbuW9vEV67QjlIFcMpNHDN3rmjIaOlpWzYrGWBF8zAVcA2oWo9wX8pykI02FGsXKGM5qDdlg\n64Z6vaJ+/Bj15Bl5cwb7W8LtHenmI2p7x+Ptji+dJb54yrhzxJtMyTvu+iPX21sety3q7Bx/vmRf\nFaJxUFfYpmYqGhWhnhLr2wPNMGLnFPkZuJZlbi04izIamxXBZw6HI41tcLbGuBpXErWtaL1l07R0\nz57zD3/8mrOzM5Q2KGU5pQ2VorC60NjEwkRKMUxBM2wV0yD0QldbTDSkIFL1unEooyVirUAwMkwt\npRB9lPdvadBFk7NlCnLfvYZaiQujLgowoOcZgZYNNitDwtEHmEqiaCOfVzQlz8/4zL8uSTpmPeex\n5jmph8RM30z4kCgxsrvb8vrNNdt+T91WPLna8fLpBRfrBeZUaE8noNnQqiAQkjaadtHhvafMiURl\ndldMyROTR+dEmmcep81Bwr7VrNz0eC8uirvjEeMMZ5sVw24kBE8ej/ih59GjDevVhmzBzgQE/TcZ\nm3+LGTz86TTby+ToCeNAvVpSV0ZCbJSYT3NSfP8Prt+kkMcgHtxKaVJMhFiIaeZwktEZ0gzqi7Vs\nIsUEReGnlpuPP4MuRBJ11Yp380yWr1xN0y6xtkLPvgzqNMixhbYLdAvoWktlDbkEfDwSsyfnDEj0\nltJGFFtNnqlvGYoci0t2GF3TVEsWzZquXnJ1/ozWLrjb35FKJPlMMoK/xRIhD9TKkosiRXB1i7ES\n/YYW0YvRHU21EEzY6Pk9svdiB60rjK5IahJ/CZeAcB9CUVcLbIlUZx3n7RP2x5GYClXV0HYdusoc\nhx0hj/OijuKAN/b0Y4/3vQx1bUUsEwVFLCPHccfhuCOWjFGZlCe8LyhT8F7yIn/48WdWZws26zXO\nPWfVtvL9qAada8g1CodmIIeefhowxmGaCtU6jHLUpmHZraiNwVCQvuQT86LTyYU5Tm/Omiwh4Yyl\nq1tQClPX2G4hgpXdjvjjD4ShJ1x/IN98RO33WBQXBV7lyBbFvhh6D/s88L7c8cjUNOs1eVEzrgzZ\nWLAyF8lZic9KSVR+QB+PqBDvQwTUPMAq2oMxmMqhyVRRMYZMmWmKtqopTtPGwNoteHl5zuazz3jx\n7Cld10lDcRrw31NVBfroTGIKgWFS9F6Rc0JZUClRkvi45JPopBRIRUR3Ss06hjRTZCHHjEbCq1MI\nTGiyUkQydTE4mAuU4d7bX2lSMUzR0k8DhykQS8HZx1hlyVmyUXVRmJkeG8lghdVTciJHSdPKKQkj\nK2fCOLLb7vlwu+Vmt8U4w+Q9XetYdY2cMDgV8lMRn09qukgN0QIzljLL7wtQ5oi32XNIzYNdMxMe\nyEUglTQX8mkS75sYaaqK85Xl5hjJcWQYeo77A/rqnG7RzKZpDwFt/z7h8Nd/I8NP+d6EipxQRJrK\nzMHilspqCYT51ev8+yX9Nynk0xCwTopPDJlxTIRUqOYABYue8WCh16XoSTFjbMNifc447Xnz+k/c\n3b2natYY60AlnDN03ZrV+or12RV1081hAIIPLtpMu5poGodFjs5T7On9HSH72RVN47RGFYXVhkXT\nEkKQhakgxMDgR5YpoC2SvtKuBHJpz7k4f8bN7Uf2+x1TkS4ppUBJAa0tIUoizdK5OVlEAh1AVGaN\n65BDXkEbR/CBwzDQmAqj27kTR/I4tZGHgSxJInmmrTUdFxdXfP/6Zz7c3tIPntXa4VTibnqHD5Kc\nTs5zIR8Zh5HoPcXVpNLg8xGSJqSeceoZhiOpZAqiRh2mRFaJ0Xuu394y+H/l1e+e89UfKrRxVK6h\ntQtsXpJGxXEI9OOefnxLP95wDEceXT5htVzTrRdMYaBqKlbLBU5p9Dx0nV13Zc41u9ZJXRIq2egn\n+n4kugV2s6FpKkqWwVZ//YHp7VsmPzHtdsRhIId4qmtopXjsDJ3RNMeBd31iKIH3U2aRFI9ePaGx\nZ5QZFsNYshGf9DwFpmHAhwnrJ3TIcyPwIFbJPpFTwlmHqSpqY9GmxdgaXTl002FKy0ppLs8PXH75\nBWe//5zFosOcJoCnQpSzdI6piPmVybhwJPeJ3htcU2HQ+BDR92nvWuYvMYmRV21IOeNzIOCpdIsq\nhtgnbMV911+0IpqCT5oxQ4Vi4SKmiNe8VopUDD4p+lDo+5Hbuzs+7vesFitqV5NyRlkhNNgE4xRE\noKU0rlKipcgy4ItRtBDFKKZJ8kMP/cDkPSZpbj7esbs6YzhfY+rqfuhdspidnSC3nONpkjInZc36\nCoSXbSgkrTGUmTvvqIzBIMVUxmKZ4D3BTxIpaA2dseCgrQbIPcNxYHuzZ3915Oxsg1kuUCeE4T6d\n7NRt/9rV8CR4ZP6eipJTnFGFpjIsGkfX1nRdTTOOxCkTCkJvnYe7/9712/iRzzzblAoxFhmaxMI0\nm8GrHJnCRAyRVIJMs2MijD3bm7eg5Q3bbW8wpkFRyGWSIaZ1WNux2lzgqhptLM+ffMbvfv8Z56+e\nEJFoJ50MEY9PA1Me55snR01rnOzyKt+rvRrT0NUXWNMQ0sTt4TXFDIxpj668mNZr5rSUBcbANA3U\ndSU8YqspKWNtxXopkuPaKWyT8NmLoX1xVLRish89/eCJ0c83+o6AwqqMMtJpFZXQNpHiSEyC0Rrj\nJEz3OPB//+t/Zewnvv7ya0I6EEbP6HtilIdIZXF2OyUXKSM2BNZZwR2thPgejwNxCjSdWPjm7Mkx\nUTkr5kWrjs+/eMkf/+EPfP7FK9q2Y5wGxuMA/oY0QQ5iPKRcoDuraWzFZrOkXhpCObL78AuL2wNP\ndD2nm5c5B5G5eKv7AAKho4nB/ziOvL65Y1I9RHh1toEkToIhitNd9J44TiQfSSGQUyTGRCzi0+6s\nZZkTuXYch4kyeD6ULe7bH8EY6uZ3mOUpA9SgcsQME4vdSDMllA/0kyfHBxzTaPPgz2EzNiXhUyuh\nvqqUUTlxPOzY3t7iU+Bs2bHerGe9gtgpnyxOKZJcc4JuSkpUKlGVEcaR41RTTpgqlmbR0C4advs7\nVJCAbGsN0zhyPO5pnGW10NSVWDCnlFBGo610seXeIKoQUaBqKlNwRmiVhyHRh0LAsD47p1ttuPKR\nzWIlNMiSSUXPWK9Gkcg5E32GxH1xTSESvBdMW2mG7Y5+e8e6rhgGwxgSxhVCyjKstJ924XKCBmYG\nz8mPJJNTui/2Eus3Q17znyujqQwYlUU9nBFhXYyitk5ij9FUFl9kGGyMkU45B8Z+z+uf3uKDZvVq\nwVmbabsyK+9Pc7vTvXuofSd8/ITtn9a21prKQo6BkhPGqHvs/mHG97cgzen6TQq5MSf61JwlWdSM\nmxWUVsSU2B16Of6pQl2Jsiv6ieP+BmXlgUg5QpGuI4YJpU4cck27WOJcRdt0vHh8QddBuzBMvqJS\nLZVZ4MvhvjCUotHKzsf2TCzC0VaqUBmH1i1O12hlyNlzGA5MecZ7VURaSKRYO4WrxGWtlIKhonEN\nIUeUdrhmiaGi0pZKF0g7SbkJ4qNsjaMzNbpMTLknlJ5QjvgsZkpG1WSVKSXi00BIo/BtscQYOOxH\n3r655fXbn1lUCxZdTUoTPh2ZhpGYpYM3mHkRGZyrKHOSjKsczlYiy06R3XZPDJG2XqENFB5wVpSi\nbmpevHrK0+dXrM8WTHFkHI4EH9CpwpYKp2uqpsK2Nbq2qBoWyw5jFcfDLYfr97hjoDp/9kAtZaaS\nzuu+zNzoh0IeiZNnHEZ6lRnHieg9BlHmWWPucx6tsZSum/F1Ga7HEMghEnJmkRMLZ9mqA/0wcRw9\n2/e36MUKtT7DrmrKokY1FWqcsHc97vqAOvSk0RNiEGoqzHwy7o/+Oc1sCaWwbi62WRKB7m5v+XB7\nw6gVrutou/ZeWCJH9SzPx/xeyM+fyDFIFF4YSYc79tGCa2nrBUUJXEdJ9HvhS3erGoyiIP4ku+0R\njXgcaWtQRQo0Wt07/pUiHjSxiCd40Uri/FKi9xFfwDaGytXoGQI02tw3BznJwFNpgVFPCslsRPUq\nHO2REIMU9NEzHnYQRy5WHdtjz3EKjFNgdxjYHXpaox/Yag94230BFYhV7nGZC0z5hBOeQkI5gzMK\nC5KROeP4pCKngxTldKWgqgwlKZgkj7aUjNGZykI/jtwePZ1boYw79eD8qnL/TQP90KE/gCUFZzXL\nrqKtLI3T1E7P7qMCGatPBs7/3vXbFHJXCYyRZeeX44cMtqwRbuvt7oDWisoZtHLz/CgyjHuUVmij\ncE4RM3if8GOYMxjlEYjR0zUNS2d5+eIRV08uMNZQ5yWd3dC6DWVM6OxQyVIZ6ZoVEOJI8T0hSYSW\nsZqkZbJubKKowpiPfNxfM8aermtxzqBsYQqerBI+Hdkeb+iqJeuuonVnlNADDqcbShZRhskFxpGw\nGxmOE057zs7OWJ+v2LTn7IZb7obAkHeoKN14zUboymWiHw+kIuwQYzX9vueXt7/wf/xf/w9n7oIX\nl89ZrTpxNhx6hl4UokZbsCJpds5gXAUqU9tq9qhYMBwG+uHI3e2WYhJt285FVni74xQIIWKt4dGT\nC9pVhc8Dd7s7hkHi4Tq3oO4alssVq8WaYkeymSg60jQNeQps371jeH/DpjjslZ1x4U97FzX7XUjm\nZooSEJBCBJ+ocqZzEr5QVME6R9U0Yi+rBLHOgHNWmE6mJqdA9BN+HAi7A+M4csyRlau5vtvxZn9k\nO3q4vsGaHzC1wW463Nmadj/g9gP6MDD2g3R9WmPnjl3P4hY5+ovHiphWCZ9bWznxpGniw8cbXm/v\nUC+eo9oGW1ezSlB+esF0JeTj5MiXTgUxRtI04nc79hO45TmLbkVKhfEwMO6PRA+LJx3L8xUhF2wv\nCtv9YcBq8UFpXCuFXyvESTCToxh/pSgzomAdJWlUgugjUzIYp2kXlSha5xOej/6eIqji7Iyo1MzP\nzoTJk60ma0UpkXE6EmMmhcz+4wfiuKerFVfnK663e653e4Yxcv1hy6qtWdUO507DcH1vdaFOIsHT\nIPxTv/F5MFpyIs0nZ3sSdp3gupQpSSiHOSUoYrplrRG73pwYQ2AMnlwyZ+uGaBtoF2yuXlK1S/4m\nupLTGJZfiRRli5Z4OqWlBtZO40zLxbpls6hpnZlDwsUYTzj4f5/S+JsU8r73p9MiKPEKVrMU98TD\ndM5ymkinPOufZgaDUdJxlShdmlEyvCzzNDslRY5wvnnMP/+nf+HpZ89oV43EtzVLKtVRULNoAEqp\n0MXhbDN7qoxo3WC0QCc5gE+JKQ8EHUh4+rLjz9/+G9c313R1y/MXz7m8vGTRdfg0kY6Zu+OOpRs4\nWyU0FUp56fgZEF4b4BWdL3x8/Z7vvv2OrC3njy65ePKE3Czpx5FhvMPbWy4uF9jzCmfXKKWxuqKt\nO4qKaCvF73A48vH9Rz6+fs/65YaiMtd31+z7D+z7G47jFlfXYlFLoWBBQ5b5OAqFUyPOjNzcXfP9\nj3/hbr+lXQi9zAcP6cD2cOT9+3cc9sfZrN/T9wdSqrDGcrY5o65qls2aVXtJV5/R1h1JDyR6Qhkg\nJPbvP/LLn77hfPC0iw4QnFYYKsj3WPJM0RZnwZLk1HQKcxhTYps9N33P0mp8yeSYpICnk0eHYXV2\nRrvZwLKhdCuSu2ByFW6/ZT0OrFJh4T3q/TX7f/uGEiJmf6SubgS79xF1e6DKYJJAA4uulRBfY9GV\ng6qiuFowaj+AH6XrnWmCJ/+PPMMK70LijXF88eyKarXAnMIVZt8NqUVispvnE0mKkRgCKcpHTh5r\na5G51xXj5GmWS9arFSprnHPESTpYg6TatEvLar2kWbbzkDMTwxyePYdoK20wxsma1TCOnjwXOlfV\nVK6ihHkgOzNPconC9AJSyaiY0chr5BTx00CJCqUKcfK8e3NNmkZMiZRpZFlrOrfmuNvhhOpNKYrb\nux1/KVJQn1ys2SxbKmsf8GYjWPNpjpJzvmd7pAw5JYKfSN6DlQLJTDPMKQkrKqW5GxeV6Em/kGMm\n+IAPkTTPpMbkefXl51z97j/StpLmdcoO+BWUov62h1YK2XDkW0dpwxQyu/2BpnZs1pGmUvdUQ3WC\n2YB7/+2/un6TQr5enIsAJsuCOfkGAzNNKBNzIpfThFvNqSEz4T6fWMRALsIBtZoY08zuMJyvz/n8\ny8/56p++YnXeUTmD0xWVbVFFEeNAZBK5t+swWsQfCg0lYTRUTkNVUNlSqRanWlKKhBQYw0GEStsd\nH8aPDMPE9m7Ho8sLiilstzsOh56xEROkQkSpRNYBXzykgC4dteroXE2lHWkMjMOeaXfg5sMN1cUj\nsgIfBw75A3WjeXQpBeHEVKlURUK4vikmhn6gPxxJ/cR6ueb88pKqqqlCQ13VhCyRcyLGSOKdXcS3\nRSlNUpEpeqzvudvd8u7DO8ZppOqsnHRCpB9u+fnn9/z0/U/stzuMU3jvpZOBGaox1HVF09bUTUvT\ntDR1SySLMdRxYn99w/sffuLN9z+yaS5wa/twdCxzN1NO3HHZtE8fOSVKCuQQGEPE+4jhjo0qtEqG\naVkZiBFdCrquyJMneU8JHtW2qKbFNUJBtVOHDgKlBaMZt3s+Xn+U47iPtGgWWrj72mpUpSla44zk\nXGojir9cObJ1aFNB6FBhRJ0GlRSYaYopJo4h8DFl9nXF5ukVzaKbhS+a08jsfjObN7SU4xygIMyK\naRwZhwG7XNA2DW3b4pqabtGxXi3JUdLqSy4oramqmsVygWssTVdhnJ6ZI8zPDvf548aq2SOliH1D\nkGe0qgyuFiWk5FzO0MUsVjuRZShZ/OsLZCIxeyY/kUikGBgPRz6++YXGFC6WDVWjqSvL5PnV6VoB\n0xi4KXugMA4Dj8/XPDrfUFnh13+C00rRm38gNc+LY4hMk0eniMpZILCSZ9th2QBSkuH0qRYxs1lS\nkijBMQRSkZZn10+Ydsnq4rF4088F+69hk9Na/vQ6RcSf/odSmpQL/eC56yeexIi1s2iKE8z499MV\n4Dcq5H/48mt8mITrOUthc0koLYViGCYOx3HOvpwBf13mHwzBwZR0KXMjKrJkiVinchVffvUFX//z\n73n+9RWuku6pti1GW0IamfKOyAHjoHPt7LAmKSNSeAtGV3TthlqtqPUKpxyjP+D7gTwF1u2K9WLN\njze/8N23f+GXn37h4vycxWpBzInxMBFWEymNpHwEPZLKREiB7DWYMxbWUS8WnD9+wtXTO25/+pm3\n76/Z/vyGp1/01OuWaCJ3+xuevTynqitJT7EWbUAnMxtnCewwDANh8rTK8uzqCZ999jnr1YrFouEw\n1OzGijAvXrJIg3PJZJ2wVuTJMUUm33Pod+wOe9KMnQJ4H3j39gPf/Olbvv/mB4Z+4OzRinGY0Bja\npmUMgUwmpIgPE8lJejkacooM/YGPb97y+pvvePf9T9y+uearl+t7poH4Fp/kEsynt5lylkUvINCK\nJ/mJaZK5gB8jL2uLbhuscSTrcNpQKaibGpQiTBNZa0zdYKqKrshcBusoUYQiF8uW5uVzfEgcjz2D\nsti2Y3G2xtVuVo9oUNKzyZRdg7WSNakU2taUtoGyQMVJjo8poXpPiZEQInfTyJZC7DoeP7mk61oZ\nzOmT997DVUomF+kYYwyEEBjHkcPhyG5/oFs/kQ27qlm0NXVj0ZUwe1ACRWI0TddiKmFhGKvn1xTo\nSs0VaGY6YqwUkjhE9rs7wFK3Le2qvRerkEURmTmdgBQUPUvJBVrKJYhhVpQA8Sl5xuOBw81HDte/\nsL7ccLU+o+1avA/4cbyX3ZcszpKlFPwUuL6+Y78/sNv3aGM4W7a0zgrOPUMoesbD1dwhlywbZwyR\nioQqGVOydMXzYBTU3Bx8MpxU0jzEnJhSZIjh3u1w3weOQRGUw51W6txofuqAeHovfwWb/7X6c/73\nGGE3BvqYpFlTp3lA/pvX+OvrNynk/+V//y+knInzDpiyYJ4lS8Crnzz9JKyVEAIhTKRZ9ZhiJETx\n7k5JpLQ+eI7DQH/sKaXQrVr+p3/5R559foWPI7WtiTnQ+54Qbhn8jjFuZ14pUAyVrkkx40MgREn2\nNgpq46gaN/O7HYmESy02dKzac56eGaxa8v76Dfv9ll9+ecuqW6GtJaTAfrfncNgyxTNiHmWISmII\nAZUty2rNVCoWFxe8+ur3bD+8Zz9ObHc9n0fFRV1hVg3LR47z8/XMVhEo5D5s456OBbuPdzKky4ZF\ns2bRbFDJUpslpUlgJU0+xkiKQYQaSOfE7DbnlMFmR21aFs0KZysqW1GS4i/f/MAP37zmuz/9zHAY\nCSkxDJ7rtx959eo5i+WShZHvTyuotaNbtEILJHDz4R1vfvyW1998y4f377m72dL3CYVYBZ/6OzlO\n3uel3+PDOSVyiqKenAJ5kMLYGcOjRcv5ZonLWYQb1lAtW1zb4qxDzUfzsN+Kp3YYMc7SuGqmPCZs\nKfIePL7g85z5+OGWfrsjJoF1MPa+cBetUPc2asz2xMx4AChjydrJ54UJFQtUDrQmTJ4Phx5VOTbn\nGxarNa6q5s0BEd7MCsZcpCPP8zMTYhBPn92Bt+8/8O2Pb7iyK0IxHPcHioK6rVksFrSN2F2Y2mFt\nQFeGuhKZvLg0zjj8XDhTlshBrSGEwn7f8/H6Pa9//pZmecbjp8+5fHwuroPMLBcUMSSG8UBOM3at\n574zC8yZggwaY4r0+4Hbt285Xr/m8brj+dUF5+slMSV8TrN/epitJ2QTOxls5JyZpsh2N/Dm/S1O\nK9yyhXzyHBLwUpUim6rmPks1xUTWD4wROezMO9fc+Co1b9LayAaCPFd5zkooCnRds372O1YXT6mb\njjLnhZ7K81+V6Ye/+1V1/xRPn08OWkkuaCrE2WxM2D0Pn/l3kJXfppB/9dUf5oV5ekDLTNWa/RuS\n3PB0oo+F2QRnDlWNUTqT06ILwTMMwoVOOaEqzfnFmmE/8v7de7pqgTWt2LzaDHUEJ/SimArRJ1Kf\n8KOfTwkz00EbWttQLh32rMNYWRzGyU3WWvjSm8WKEiO6GK5vPtAfPTH0DH3Ps+WVbD5hmnfq+chM\npKhI1hGvMqo21JuG0lnMpqapFCwUbuNYXy05X1a0m1asPbWRI70pBIRpo60FY2mrNcv2DHfRsWjP\nMKolRdC0WB2w6igCJJfAZFRxYjiEF6VdTlDAmY6uPmO1vKSrlySf+fD2lt3Nlnevb9jdDeJkpxQp\nKm4+7DkcxAytrZtZ4GRwyuJcLXLn/ZYPv7zh+ue33L7fMh4jqjQs2o62WVA5d7/I5aFCuLbzMCrP\nm3lOkRwDafLkwaNiYulqnqyXnJ9vMDHS9wPTLOJKORKVxc0QiFWa3HQUZVAhSLo9zKZmQh2sqprH\nlxdU1rKdPWyY7Vhn/1q5j0qJB0tVEdtOWBo5Y2ehZ0my5SpboebNRI0T/nDktu9pFy3rx49om2b2\nFJdCouYqJD73Ao2cmp8QIt577nY7bndHDj7xsqklb9UptLU4V6GUJYRISD2MCuWS2OjqBlWMSNSt\nDJfVvQozzLatkeMY8VOComnqdqbSinLTMKf1zPBPnr+v2YVKnkOFoMxRCzNs3oiPux27D9eE7S0X\nL37PZrXAGSMb9Pw5cp/n/zOLdu7nBXPKzzCMeB/F0vceVpH1o5HhK1pRYrofkN/j0vw6Om0mhcyu\nhCfK1ENOaUqSkIRxdKtzXn71j2wun2CMmzeFTzr58jDgzHler1mox3JS+bS9/gRDV4oQE8MU6cdA\nzHNmQWHOUHhwSvzr67cxzXLyZWUjFIzoHls6HetOQ58ZWzwdtB9+kPkBp8gCTPIxxcBx7Pnhl+/4\n4afv+OX1j1BO6TyJ9XnH+vGS7qIVUUkIDIeBu7c3jIeRFCPWClbXVA2dW2N9S02DrRt0V0hlwscJ\nnzy5JKyGR+ePqVxLSIXjvmd/t+XD63f88dXvIWb8OOHqSgIjAGsNxkFxmaBlIBdtwl40XOorNqqg\nNzXqqqZ9tmF9vkGm8pbaNDRVJ4V8Oohizxms7bh69Ip4tPjB03YbUtSkBNbWqFKRokJhcLrG1IZK\nt6SSmdJAiB7vB1L0uHrBojtntbigqxdsdzdsP+64vd4xDZGM5FzWdUvdLAle48dCCgqjKxb1ksY1\nwqdOln5/5PqXN3x8fc3htqdQ0TY1y7qiNUvOzzbUlbt/GH/NIS+zEjDNw7ZIChN5nKSQh8K6djxZ\nLjk/W2OA5tiz2+4IfhTbAqVw6zVuvaZanIGtIAXY31HCjDn3PRSFsY66zTRtjbs4Y+UcTin0nM95\nDz/MFMNY1wzrNeOjJxRrscFjb27QuyNMnlhb6Jaoppb5y+0tA4XdOLJ++pgXT66oKitrXuv7TpzT\nM5FPsyNpbEKMTD5ws92xHz1useHp8xc8ffEUWznqdoXRjhQKd9st/fHI5D1ZRZxzONdglaNtFzSL\nDtdUWCtfN8fAcZzY7g8chz1NtaJdrvhi/UdUJfbBOSHeL0pL9FsWhSb385ZITAKPyczJonK6hzEO\ndzcMuztc9GxWC5q6noNRHu496RSxJlBGPkEmc8EsswYg53yvi9Cz2vM0jziljIkdxVzs55OCLqeT\nH/NaewC2T016KeK5HnMhpILPGVXVrC6v+N3X/8TZKFPr1QAAIABJREFUxeN7e5AH7vj8OrOfeZ6f\nKe9H2m6Nc83sac/9+lYnL6EyC9lGz74P+DTDRZ9c5d+v47+RIEjPRzpksClYmnQFU99TUqZdr2ch\nAQ8m78ibe8IT5O8LBY0xQuVprME6w1eff8XV+WO+evkHPt5e8+1fvuXf/vwnvvvTtyQiqjZzVqhM\nkPGRtq1pFxVFQbtcsO7WPH3+kvX5gqgP7I/vONxsOQx3HI470A6ra5p2TciJkBOXlxcM+x7fj0x7\nz+31npv3O1bnS5ZrhWsdpjK0pkOjGfOBWrU0TcdFe8V//t/+Vwa/Z4oDWWesE263VWIIVOmOpb6g\nsSuKjlhzQJckO7ZSbB6tMVahsTRLQ8hHKttiXSabgo6glZmFPw6nHZaCylClirqy5ORZNA3mo1gO\nD/1RsjBDEEBHi+9GVTV89vkrvvr69zx/+ZSv/8PvefnkJZVr6eoOraH3N/ipZxoPRO9puyVPXtQY\nV7GsOxb1mmV1xtXxHU0a7yf0p478NNYW8Yc8jCkm0uTxw8jYj4whoZCkH50VrqnRtqJyNT54ilZU\nyxV2scQsFrCopRj0keRHhv2e6diT+4FUIGpNNIamaajNXMSbGuWE3qjm9atSls3gmIXh8egZbM5R\nVjNk6bxVSuQXL9CXl+imJux25N2e28OR/TjxYtlxcXmGUnP2qJkH/HM9OAUA5xTJIQjlMIhn/Ifb\nPVE7Pv/95zx7+RkXF2ek4FHKMo6e3WHP9Yd3eB9ROCpnSTmRp4HDtGdX7ai7muW6oa4anBUrge//\n8i3f//QTUwoY1/Hk6jn/+T/+E20tISEKM3eJGWXkvTfWUtUtMQbpQkNkmvrZL90AnnGcGKeJ490t\nuiTOzzesVkvqykkSz5z644wW6p20+rM9wOn55x6LNkpRUiaGeM8Zn2M0ZrO1uaDPg09rLM4q7MlI\n6zR/U9zj8afhZ85ZbG6LImWFz+Kl7jZnrC8es1xtcPbErJvX633s5FyvcqGkgB8P7Ha3xOhpuxVV\ns8Tpk4cOfLLK54Frnn2fZguBE8OFkxf+316/DY989o+QY4NYTZaSKElx/PCRMI7UXYey9h4rvB98\nPTQq8qtSs5+COKtptHCjrZNghOWGs7Nz2mbJstvwww/f8/rdG65vrxn6gZwipiSaoinLlnbTsVrU\nPHI1j0PiMgy0wx2q9Kh4JI87sh+wtqCtwlpN5Sz4TFMMZ2dL7tYd3aqj6RrevHmLceBzz6svXnJx\ndUZjarSCQiLmgTHuMc7Q1WseLZ6RyyNiGhhDT0gSJ2WUw6qKSi+onETiJeI8FBQ3wJQ97dJRuTOc\nqsXgSk3EUohxwucDGX8faiOeG9Ln5CLQTyEQkud2d82b9z/x+u3PDONELhptahYrx3IpR+lxd+D5\n8yv++A+/4/lnT7h69Ihlu6IyK5yxpDyQgmeapNs3zrJab1Ba03SNJLRki/WJSitskbSXk+Oh1hLw\ne2J9nGTYKU4kHwjDRBg9jRUb2+VqgTYGbaVzNq7G5iRReVUFTszU4jiQxhF/ONDvbhn3PakfUN5T\nUCStScagS8E68XEpVlOCIRt93y3f0wTrmrJcgtYzhxlyU6MuL9AhkRctxRrJaRUKBTYnNsuO87MV\nq1Unm8PJ1U89bF4ng6l7/vysVPXTRMiK5eaC33/9NZuNFJbkJ8bDgX4YmI5HdPLYuSCVUBinHu89\nw2yyZZymahyPnlxxfiE5popMDmJSF9UWpRTv715wdbZh1VZYrYkpEnMCnclJPYiBXIY4i2+iZMlC\nFH+e0RNCIE4Di7biyYsnLBcddeUoSaiClbXUztFU4paocoJ52C7FkrnBk6LrJ8+gT6f7jJ5Dl08+\nPUoVDDK7UErYMHoutPLvD3Xpk+1CnqmZLRVTZgoJHyLr5ZqLq6fUrhHb3ZzvcYJPm82HQX0ip0CY\neo5F8P+ugG4XWCsmeGqGTchZbHdn9t19oXsgrnzyVX59/TbQin34slpriHEWOCQO19dM+yOPP/8C\nZe3D4Of0+erhCMS9vSkPbxwaiiFrcUJzlaNbrnjy5AX/8Md/5rvvvuW//+m/8a9/+ld++fkndrcf\nScOIVZpGaVbG8GrRcaUM5zHS3X3AFU/pGrCJHD1GK2LXEpWZE2sCKnm0SbS1ZXW+YHNY0x963r59\ny7HfkRil4+8cdW3EOEkpii5MfoezjqZaYtUSY5dku8TqHUMYCDGilMWoGqNaWUB4fD7OToKJTCIm\nj6scjW1xuUEpRUgT+35PUj1ZjWQ9yftVEioq0FGglTjO/ssDx/2Bw+3IN999x8+vf6SgaBcrUcrW\nLV1boUh8+PkdT56c8+T5OY+fLlnUFquhsTWpBEIc8aHH+5GUI6511I3DzgrSnDzj7o74fs+l02hn\n505JPQg+tGgL1LySc47EOJG9J4wTYfKsqprz1ZLVanmvTFRaQ1WLinhW9iWjiCXhjyPjdsthv+N2\nOFDGgIoJp8AojXGOqhYGiJ29OHJKxGmcDZ4yaI22whsPdU1cLijBU+5uKVrsmc3lhazXw458M5IA\nNQ3Y4cjKKF5ePeLR2Zq2qSTv85O1XOahXcmFkiLlfjYQJZx5HFG6YnN+yWefv6KqqzlKLXI87PHD\ngIqBdd0QbcGHImykfs/usGWcRJZOFoW0Lom60oS6oaktF+sl4+GGox857G74y4/fU8Ir1Llm2WjG\nMJByQBvh/UsAiKTrFCV2AkUJc0WU14ng0+yRHlmeL3jy/Iq2a6itJaeMUgqXInXlWLYttdGYnISP\nXgT6OWVmkGftwtCTU5hrg5CHjFJYJX5NWkOlmambYrwnk4fM34wj55PQ/T2Ym4cQpZDHUlienXF5\n9QyrzcPJ8dOXgHlwPA9eTyeqHBkHmUMpY7HzyesEIasZLrrvyE8cznszrpme93ewld9Iom9+9Xtj\nDF7BbtgyxUBCchmtk5zMk6m8+tXoV65T9uanYwCBm8zDjZiNebRWfP2HP/DyxUv+53/5X/j22z/z\nzX/9P7n+7k+8WFa82Kx4dr7icr2ga2vcSYVHJg09oSSqEGhSZNgWRmvpreVgDfsY6P3E2Asepm3B\nNXOyymbF5188Y7npsEZsRiud0EajZ4WXznM3oSu0chQc2ojwJKoDqkSsarHGkMrI4Pcc/S192N6L\nTUIJNNphdIWmJkbPx9stf/7hezYbw2pd0a3aewaIONdrfPIchwPb21s+vL/m3dt33F5vORw86+WK\n54sz6s5Rt5pu0XD56Jy2rfj5+59wznJz+57NZc2iEgl/VAMh94z5lpgP+DjgYxA4Yjb693l2pNSB\nto44Xc3UO2EaoIWGZ7QofYki2igpkXwgTSP9MLAfJhbGUuWMGgbG4OXIqsWoQi1WmMUK03aUTUdx\nBX17gwotJkFdFEVPqDrjlKaqG+rFkur8jMY6bEqo/kiaRsZ+YNzumKZhtmm14mz48SP67VvcYolu\nKqE/PrlC1Q15mkg/fU8axQc8FbA3N9iSef70EYvVAqcN0kNKQSyfVHShHeZZDCQBwmEKHPuecRyp\np4k4TZTKobSlqjtW55bYebKPUAQSGGc21pRGXFBgarpmTWNqxu0Hdj//zPvv/sx+8LTLjm7Z8er5\nc277Hp8VaX/L+wS79x9xKHwQDUbXdVRNTV3XuKpmCsNclOWZNc7ilEWhGPvINE7klCQdqBIOvrEO\nMweGuGipa/EjWtYVNQjDa/ZkVwVUSiQPw6FHxchoDcrIO2g02JnfL+HMELQYysWU6EwtBZ0HQGMu\nJPJ3nzJYkHUYcsKnQrvecPH4GReXjwXi+MRe9r4qFUVOnhAnYvDEMOK9ZwojztVCh5wm7sJb2nbF\nev1kDlmX+y12IeJUaZQMlMVGYP6E/z8Jgv5a7WStJQZPfzyQSsHUtSR2zJ4basZ/1ScduLzQ/S8n\n1Pz+9+WT3VbUdHo2valYLVdcnJ+xbGtW/sDbtOeqq7hctpwvWpZtjZ0ZDjNQK+6HGXTRVGi6kBhS\npp4mVEn040gcJoZxYvIJJlg3Kx7/4ZLPvnjGV//4B84352xMw3ICMwsT5LitMMdMHDL9ciJoxZD8\nHMosCUJWN+ybLA5vpSeGAzkM6FwwKs8FMKNq6VxCTLx++543799we/ORxXJN0ZaQIrFImkyOmWm6\n47Dfc7e9Y3+348O7a96/ecdhe0QpS9OucCRcke6IUAiDxeqGbuHIOXLc3/HjN5nXfEDnVvDeMgID\nWg3iMWItTdtinUMbRSqJWBIqe3T2GO1kQ1InBSRyF0sWAcdMBzVzcVcpMU6B7TRhK5kIGgopRRQS\nD6eMnPZyDBK/NgzQB/Sup4qgrMN1K3LdzuvEYhRoYyjTyLQ/MAwDcb9jOoocfxxHSo6irHUVVV1j\nfcROExwO2Ep8y9PxQLaOEgP67hbjA7pIt1imiWw0bim0QDG6mjNAT+yHT37+nMVwLOcyH/MDh2Mv\nkyUrqfExB0rMTGNgGj1+8kQfZvEcwpxxjna5pJhCKprWLam1o9WJd28O9LsDuSjImbquefz0KauQ\nmCaxb27qhtpVWCVYfikCmRwPI/utJBIdj3tKKdSNWCfXtYQl+9Gz3+447LZEfzKCmzFgLUCHyXJv\nnbUsuoZFW9O42SN9ZsFYo2eRlue4PxBGyc/UWmGVxMcZo6mMZHtaOwc3JCnky2pDykWaw9N6m1Xl\np5PQiSlCEZfNMSaitlx9/pLHT1+y6FanbpGTL87DdYLFEiFNYqnrHNZYou8J457j/h3K1YT1FXWz\nwprVfbDFKdJJmVNq0QPh4+/BKvAbFfJSHgKSS5E3tZTCYbujFEXddZ/AJvID/DXGfyrup+QNNQ8/\n56/wK5qOtRat9cydFtphpSuePLqkPHvM8uaSzhlJE3eGomRc8jDXlgeQmaRfFUNOmUXKtDHgfCDs\nR/ww4UNmDJkVNY/Pz/jsy2e8/Oo5L373nCUN3THSHo7o0ZP9SEiRVAqpOpDaO/zqmh2B29BzCCOp\nGJTusO0ThnXF0BVyOWJzoCmwokaXgNGRxhqq2mGUwYfAz2/e8f76mnpWWVpniFkGZcFHwpjYb2+5\nu7lle3OH7z37my3jXU/xUdR/RqHCyBSO9FtPUYmb9+7/Y+69eiy5sizN7yiTV7kKTZVMZonuwjQK\nGDQwmN8w/3peGoMBCiOqsyuZ1CFdXGHyyHk4dt2ZVTnPzAs4g2QI9/Brtu3svdf6Vj6FVQZjFGNK\nvP/xPYdPM+PRI5OgrQTbVnG5Nmw2LZvdGnO5o1qtkCjmYLNZaJhhcoi2WeRsPLWUKUvNCBEVI1qI\nPEMtSialCVIwpESbIklmIJVXWd+shEIYnYORYyDMI6I/gLUwzhSmpNCGtigJKbtjPZI4DfjTCXs3\nEU49tuuZhwE72UzfA0yRF8VRZqWUt44gBNZm3o8C0tv3BFLWdMslDX75u43B40pDYRTl+bDA+X7I\nvygXlacifv7wITLOlkM/EoQGrYkpMbsJbz3TkDXms7VLbGB+iOrCoIymLbbUq5YYJUoYVAJRZ6a4\nA6rVClMVrLYbrp695EYYrIsMw0zTrqjKbKrzfsbakWk+0R17ulPHcX/g8LAnxkhd17Rtkw1sSuGd\nY+h7uv0DbpogxGVYIB7PY+cDl9YqK5rqirYq6eZ5Ga/EfI0ISN4zOsesxEIKPH8sI1WpMnRKZzjf\n7HJ84/NtnR2sSmVTk1TLrPs8TInLbiI/OG2ITCmRqoY33/wjV89fUejiEVks4HEx/fjPlMc+s+0x\nygABSeTU3zP0D1g/sdq8RKqSoT1SGEOMjvPWKpEeI+jkci8skn/+8qHx9PpNCnmMcSm6+WkTl/HH\n6fYBLTRV2+anWgx/cZE/nVbE+Q96+jmxPCDOn+RxgSwW67HEmKy5DiERo8AvJxzvAzalHDZLQj7G\nGUhU9vLyGPqbd/QIqSlFbq9LXdCYmpfO0ztP5wSqabl4dsPqZk2xrdHTTNMNNIOjnD0x2HxxxvxU\nD+OEP3W4j5/Q80QcTrw93vNhnjiYCvfZPyBffoG8uiEWilSUSFXSiIRMmjomblB8yZobapRyCLPm\n6kLyuzevEHUH0oEUHG4PPNwf6A8zGk+ZBC82G6yZuCwLXlxfMNhAu9qx215hh55fvv+Od9/9RDcO\nmV5X5oVUVZdoo4k+8fCpY9pPbKXhszeX/G6140oUVLOluD9gjj1oRRRgFoJhNpXUUEZSkW+KmDKR\nkuAWGFMu5EUSYArkao148Zztxz3rTwdKFzF1TbHeYOpquUlzsn30eSnqDweCy7F6RldoPMk7bEq4\nacJOc565O5cRtzFAzLyNarVhdWkwZYkuSwqTVQ8hJmY7M8wz3Tgwe4e1Dm8t0eZxng8ZERBTwpOw\nAm4RyJsr/vmz59RSsFoOLYKnyz38yj6eFlCW8w7nLN048enQ06k1VTfx/pePFI2hrGuqdk2z2i33\nymJiSvmBIqQkO6IjpBxzprVC6cTq5ppxHJG6QC9jj+ox3CKPkIxRpJiYxoCzBYUrqauKwqypm4HN\n1Yb2dkW3PzKdOm5/eYuzMzGGLMGXAhF8fqiSFq07nGWC565bKUlRZBbMdrdhb+fM+MmzpizRBILL\n/BPhwah8yDo7Y+1ygI2CPOP2gUjW4Uul0KpA6QKlTWbhEBYZtEQsck8bIv0YCMWKdnvFm6/+wGq9\nwfuJEGNGZkv9yMw/F9l5OLB/eMfDw3ticszzSN8d6A97pmkgEKirS/zcc9i/g2gznmMaMqAr5b3A\n+eEkBI8H1r+pZef5aXa+2ELMZpHhcOT65gWr3WZxmZ1P2uFXIxaZ51O/ru//bvP8/9+AZJMPi/FI\nKg2mwClNHAeCFYTCEItICJGiiGglnz6VEMR8QMQtTJgksqypkoIkc0u/awuaVcu21DBb0oMn7RN1\nUBRRoM4t2aLG8dZmCt84EV3AkLgAvjQNaxR3QvPOOj4ej/SqoL664mvd8Lpu0CI9hkVHEt/P8G2a\n6K3juG65ahq+XO2IQ0c6nIjzhLi7ZzNM7LxAR4dKedEnZUEoDZPy3PqRsqjYrdcoA8+fX/AVLzgG\nx+1p5O40YW1CRocxkcoYtqsaXdVcFjWfXa54Xlc0QqFcRLiZlKZMUViMYNLlTMlQWuLmilCd2RiZ\nYnd2OZ5vcK3V0/zy6oov//A7yqpGHTq2V9ew3iALnefozme2yrI8UmWJLMt84lM6jzhSQoaQZ6ra\nEMoyS8/SgqlaFq5a5k4t73P0kmWZDwGmLDB1RelzKLF1lnmecKeesR8YrKOfJ4YQ6GLkEAO3UrFa\nr/lnU+Rr8Fy9l2viPGR5KsZhYag77DzRdz2fHk7MpUHfd7z/+ROqNDnrtchmLLkcdv4yFu1p5CiS\nRKiMsJUmc3qCj0g5Z2WHBCkPi1BCZjOT9Av46qwbz9JhH3IkYsJjTMFqvaEyBWNRMJxO9N2ReRwI\ndiZ6i/QWrRVlWT5+nY9LbrkY3oymrSt2mzX3s82GuuAWRUc+iEkB3kZm75ljXlQ/KlKWuufJqpMQ\nA1qJjGzQmVKppFri9AQinFUxS/BbApcSU5KY7Y7t9WvKqsROJwY7gy5omw1a6uV8+TRbl4tpTyKZ\npplxODH2J/ruhPMOVRRMY8dx/4F+2jP29yQPc2+J5SofZNKy8CQ9/fi3NloZ+iMpelJ0ED3zPHH/\n8Y7heEQ+f0FRmsyKDmJZdManGbnMp3ABjzNV4LE1y61O4rFpW4r+mW8gpVzmygJMiV5tEZtLutOJ\neconqrl01N5ThYLCLHNTmcNQrc+QexfAxYAQgqo0zC7iXAIv2baGjRZU04gdcoyVlAJdNQhtCEJk\nizhL3F3MMq15ngmTRWjDqqpYb1e8SZF9hG+TwJ46jsLgN5e8kIb/qcib/SFEDt5zHxw/Ost3buZP\nfqKpDd8kwYMdqe+PqIdb4vFAPYzUCLZVTZgcyXsUibZpQMJApHKBMIzUXUcbJz7b1JjVG+Za8f2n\njj+/O3LfjeA9lRJs65L1ZcGqKFmXNaUUaJELZQo5qi8sLIu4bPXjnJkag56Znw24ZpVlciKRFKBE\nHpHIfJqUCczScmpj+LyqePb8GdPdAxs0zpTIGLJ6ZJ6Js8tOS20wbY0ySxp7CogoICSM98SqenIG\niidQUZ51shh/lozQmN/PSL7eyqKkKCtaAT7lBClrJ2xZMlYlXVmixpHkM6+D2eYA47KgLiu00o/X\n79OMAc6ulLMbMviM3Z2nkX4Y2XcDxlzifaI7DXBSj+MYsUgkc3FZ+v4FZvX4SjwxY9TipE1y0Vjn\nX5BSxJ9HOjERkyUlnw1BCyhLyoSQegG5ZaNbDrIuqFYrEgnnLH134HTY48aBm21DWZVUVfUoZGC5\nn+WyAylMVq5s2pamH4mxQMQsvZxdHnORNFMMhMU4Uyj15FBNT/hiAK0ETaFpq5LKmFxolcrz8V9/\nT8jh2yFlm7xThmJ3RXF1zTyemIYO52aq1QV1UcGShoQ8VxwB5HqllYEoFrJkfhjlr1Mvf84IWjAU\nt0gKUjRUulzGOuFRfppplOf9yd/QaOXnb/8FNx1w054UZ6bO0u093T5x2L9ndVdSzVfookAZg9Im\nt3hLHl+I+YbLrHL5FwVdiLPqIV9oIvIkGF1ukJyFWeCEYPfqc+Zg+eP9A4dPH9CngaYytHVJU1dU\npaHQ2QihdOI0zMwuYIxBak0ScBwd/WQhJpqiwOgMf7LOY0NAakmpC6zLhojzKUcZgzEF1apEmpIk\nDPv5lv54wj0cqFct2iiqlPjdfEfUFWoc+LdVy/+pJMfo+aqqqKWmkoqvTMVKSkie78eZcp5QQ0ff\n7bna33IxDBQhMIwj3nts3+GdIwHKmEzOM5pGFVxOBfvDAw/v3nPnHZWGTaNZX694udqw+/0N0zAg\nncfEiFnavxAiznl8ypZyGc9Zp/GRd5Et1Sl3IdbjI1w9HCjrlqqGqPWTZFZKhFCLjljkLFUVc1em\nNFIbiqZCTI7TMCP3HYUPlGVJsVpzlq4KKUlKkaQgRpHT7m1eOHufjTbJhyfpI8vNHEPm0i9dxNl4\n9Sh2ICfLuOCZrMVZS/B5Vl6vWjaXF3xeFkQhsCFwOnW8HXr8ZsWqNEhx9gTGMyssX7PxjCWIROdw\n84wd+rxwtY6kNF/87jNev/6Cy9Umn0zn7PjMO6W0MPzjkqwEIJdiuYw0WZ4Xy3151lnHEBf2UX6I\n+JBwLhC8IIQc5OLc2Qk840PIIC9vyfPghUgqMnWb4Lm7u+OwvyOFma++eMH2YktRZK44gicpn8x0\nycIYNnXNuiiZTj1FU7LebCiN5NSd6Lqe2br8MDAFaMnFqqE2GrHosSN5cX6OgGuN5nqzpi7KhY+S\nn54x/goXAngiIWXlW6wqTNUSYuL9D/8dn6BqN1yXNVoIvB2xbkLpvFwFwf7uFz59+onTdMJNI9Z2\nzG4gLUE5KY5Zbh0VOI0MCSXzz/nZZlVWWEiLixkoe2Xi05v1716/SSH/f77vKNIMPnDsRuKhg8GT\n5Ia7hxPz9z8SwlvyLkdmmJAqEapEqxKpFWWZi61WeVkBuYCLRc6oTLYFR2uJqMxu8FnGpFW2Qzs7\nMM8jow18nBL7wwT9iXWhaauCtsnZeW1V0JQldVmRx7QKoxWzD8w+5lO6jxiVlRJJiHyS8R5QGGko\nq3rhn+dCFmLMTOmQ07u9c4SUxz39bPl4f2D+dEDVJWWhqGZLaWo+myNOlVyZhpv1Bc+k4lP0fGdH\n9sFRTiPqtOd/uf/Iduy5nnpu5h7TdYTJYn3e+AcpoMhBB0IIhMomD3wuK4VRlAL6eabrR2YpcHPB\n7CLCzIiy5GJTg5L4OZJsIPlI9DHD+1MutiIu9voQ8IsEzvuA95FhGOjGmX72lJcfiKrg5iZRliWl\nKSAZkhJEnbIUi6eH+WMuo1RIY4jaEqXCpYi0Du1z9qsInmgdzlpsAp9ynFeBwCxjlnm2TP3A3A8U\nSmKUwugse5xCoJ/njFImyyOBx4J/NvKkpZ8vCoU0uX0vypy2JJXi1A10+yMf9nsO3mIqkxkvKWuu\n5XnB+av75Kwz1sZQFQWurmkbz+XFjs9fB775/ee8+vwL2qrFjT4HNCzwqxhSDoVgWZj6gHcZV4xI\nZ64X52ImlUJpidZxgVyRlTLkB3M/DMyTy4vdkEdI1uaDSQg+87rtjLUzzs3Mdsbb+VEDfxwGJu+o\nleLq+pLNZs15aHneDQiRHwBKKbTWbNYtV9uWRkB/6jnEwPV1doOu2gYfMmNIGUNRaJqqyOlFh57v\n3n3MWbeFoTCSpjRs25q2qSmLpTOTZ3PXE/MphKfv3ewc+2GiDz9h79/zcPeOol1zXUjqImK7W7ru\nxGBHmnZDWdWkGLm/+5n7ux/pphPeOlKSmHKDEiXBjTjXI6JD+BwYEuyIKRrKMvNmUvQQA0pA8pZp\nOKJMgVKGvEr/j6/fpJB//zGwq0pKBD98ssiHE4111FvB4TRxsjPdvmOyHT4tKfGmRpsGo1tMXdC0\nJdt1RdMUmFJnA4bO+vOyqjKAKTrcODCPkvE4MZxOjClRVAV1qZmnEyFEulPPz3cHDocJMTo2RWLl\nBG2QtFGxjpp1iqxSoKpyqopQWTI5uYB1Idt/jaGsSqRU+BSYvKNcJERS5gIfhUAQ8okvxCV8Np8K\n3WwZreO+G/nh7sgdGn+xpdy0PHeJi+BZp4GX6T03zz7j9WvBK11ysCMf7cR/G458sX/g7+4+8T9/\nfMvGDtTRoaUgWo9zAedCbpOlQiidqYAkfPT044Sc84IF0mObG0NktonZJbp+RsQ9plCoz66YI/Sj\nIw6BUiq0EMvDKSynWJa0+0y0m53D2swPPw0Dx35kPzhU+54gDWjJum1p6xpiRTARnQwmpUezh8rH\nPYSUaJORqUEoglSkQhFGix0tcnKIyeKHgWEcGUPCxkRyfnkwlxipmGJi8IFhmimVpNSSMuWuYHYZ\nzhTT0hGos+osv6csxVyqnJijpaAQglJJjMj/MBImAAAgAElEQVT7EDdZHu7u+f7dB344HuklXFQl\n3uYZfogRmc6r/zOJnEcFR0WeJeclboGXBard8vXnz7l4eYEpGtyUdwpS6QwJC/Ex3SctEKp5zjC6\nSESrXy2ZhERrgykkykRSUESfJaxCCULwdH3H2M/Mk81UUmuZrWWc5tyV+KwR74eecdG4j12HnWe8\nn2nljqoyrI3g2bMbVm3zNMpaFp7i7MqUEmU0q3XL9eWWZ6uWb99/4G7s0Qa2qxVNXaK0pl23tE1F\nU2RZ69jPxClw7EduHw40VcGmKSlUS2lk7rBN7vAfu3SWbjLm3VgKEHxinC2fHu55CB+xKTJ0J1YX\nVzSrinG443B7x93tLVNwrDc7yrLGBc/d7U8c9u8Yxo7gIsq0NNsNpVHY4BnmGXRAIJdMBiAl6mL9\nxIVJkVJpkpvoD5+gMBhTY3T1V2vqb8NaiRYjKzQl/RBJJ5s3wcVIEVpqYShk5E/3t/x8e0s/WJqy\npClKjNZ4CboSrDeK11/uuLhpqNeadmUoi5aq3VCXGVA064n51tH9sOfnP3/k/3r7jlRJNruG06GH\nqEhR8v7DHVoq1u2GuF4T25bUNMSmYtSSIBK995RjonKBSoFUmqISxDTSVobdesX17gLvJ8Z5xEZQ\nwjPbCY55GRZTTl4pq5KiylZ7HwJD13M8dvzx+5/49sM9b+fE9PIZ97//PfbVC/5we8fYD5Rz4JOT\nxG5k3fd8dnnFN2WLSPBuHHjT9Tz7+JHil1+IGmxhSGVNUa8xK4UOiXmemJ1jdj4vbp1jHAas82iZ\nL3ZTqIwSTdmoMVnL7GOOLCMhu8jbhyO3s6ebIk2Cz68vebZbkcKCH/aRALiFv22dY5xnxtkyzZZ5\nmhlGSzcF/vjTJ7qkccrw6nLkersmrDfURUlR5JQooyImb+FIakndERKpFm6GLBBa4pVhUgrrHTI4\nopsZU8IZjZcKVpJRSNySbCPbCqqCYr0ihoAlzzxVcGgr2ShwIebdhtGAIJIX39Y6onWkYUJ6hwwe\nHSOVlNRljs1zSXJ3+8DtsWMUii4G1JS7ADtOqMYijMkLN5GRqQBaSLQyFMpQFSVt07DbBG6eXfM7\nG1CVJtkTLnoSJagqR9IlgQoR7/KZWy47hpjEY8RiodRSvBbsK+KMWF98ADC7GV1ohIKLtGEesztx\nGiaCXXjofU9ZVZAS8zByf7zHBY/ShuSWpKboUUpguz2pf+D5zXV29saEUE8n4nMykVRZStq0DTdX\nl/zhy8+4Px64e/uWH4eeqiyp64p2lSWOdVVS6XyYG2fH3cOB2/s998cTh5PkYDK64LrRaCEyBXMR\nJpwdlRmtcIZrZSrqOFo+3d5yjAGhFSl6xsMdH74P2Cnn3wbrKMs1c/dAjBmmN/QHxnlg9gEZJclO\n7IefKLQiRIedHKJUkHLykDCJukwUOn/fz7iCptQIP3L4+BN9tGhTUpUN8L/9h5r6mxTy+cMfkfI1\nq/WOZ2bGX5TIqAh+pNWR63VDLxPN6UR16Bl8t8yLAoUwfPnlC559vmL3IrG9KanXGlVICiMpS09Z\njhiZNbRGB0Y9E+2J4XDPeH/PxWcrPv9ig0stx73gcK94WW1Zr3dc7HaUdUVdN8uMvMgSxBRJ3mVr\ncAqMJPTiGAv1xBgdMgnMOEO0WOeZQ6LS4lEpkURO0pn6juP9Qz7lqbx0GeeZT3f3/Hx34ENveRCa\nwzhzMgXp+XPeX16QXKCwnl8my8/bmvd+4NQ98J/qFa90wX9tN7ytWn40JY3SvFhMFRhDjIl+mpm7\nTGb0PmQJYVMjlcpdTBmXOekyQZV5KVcUltBPnPoxj6aWGWxnLQOQtKSoSgbvuD0OtEbTDTP94ma0\nwWMXDMNsl4WyzSaPaDRF02JXDXc+8P2PH5nu7jnu1lzcXHCx3bJetdR1TWkMpdYYpZEkVMoEvnwq\nzvsSLWSOLlOapBSh0Ni25jgMnGKkj4ExhcdWPkZHURlSgpHcViugNBKVCqIVzCrhAbRCl2Yxl+XW\nPLqQHZTOUymZjT+TpRawMoZGa/CwKhRfXm55geBuHBCVJk4D03EPRZZKhhRRMSy5n/Kx/T/b3yUm\ns19iSR0jKQo8ARcGPC7zcqImijNpRIHUWZkiJQiVZ+Upz8IRAZ0iIeZQFTirR/Ti73Bk5AUQc0ci\nU0I5B8FSKyi2G5TODzdfVxS1wTqbyaILFtp7R9PU6E2LiddsLlqKolzGUiwL2TOy96wlzzPs3XbL\nN19/xbvbO+4OBz4ej9g55w8c+x5jVMYoLHpw6wOncaIfp8VEFRkW+WZTaqoiL2PlWf22IBDiGRkL\nJCFwMTJ6R29nBu+QWoGIeAKh88zvpqyGkiZ3Qb7D2S6jC3wOylEq5vSglDuhfGVFlM5mqpQSyBzI\n4bxlHHuMdIvsNOGDYJpGjof3PEwP2ZQo/nrJ/m2cneMD0u2o1Zo3G0Vab4g+MtzdcoPnUoKra1ar\nDZfrLcr2TLNDq8jlheLv//6KL/7xgtWLmaQCUcQ8+3Rztsb6gYIGo9aItM6z1CUUQiuTbecvn2F2\nhttbwcd3CiEu2O6u2O42CCUpinyaMkqTxBJIYHPKiPceHz2WBDEQSsc4HpnchB0DKiW8h9EC0ZMT\nU843lEIA8zgxTjPOR6KAfpr5dDjx4TjwMDuOMnF/v8cdOxRw++IZXhlUiLwf88z6l2TZnx4QwO/L\nihtT8v/WLferDfV6k8c6EcLs8LPFjRNzN9J1AxJYKUWwAVFKdKGBJdbKO1LMbG6ts9Y4JhitRyxM\njBATwxyQjaZt86hr7PJ88qqtOfQTx34ghMAcAi7GhUFBVgOIHFasy4Jm3SKbFWWU+IeO2wfH8WFP\neTzw4uaKm8sLLrcb1nVDU1WUZYlKCa0iWv4K/7oUc6E00hTEuiS0NWxG6E74KXdKh3nICpMUmYLD\nGJnfA++JIbf3hYaYJE4o5qQRWmNKQ1WZTOgzmW9OSATr8LPL3cJkkeNMqyRrY2iVQtmA2ja0CbZC\nUp5O2JADU4buQDCSqDQ6eFSZXcV6ecBL/VSkskkkq3jUoqaJKRJSJKQZHy0+SgIaJTRKGpAGooKk\nciFHLYu+lJ3AZDVA4GmXJh75HoLoM7QqLrsGnEN7iwpTNt5UZSZiCgGiYKUbZqeZrWMiMCKZpKKs\nS+piTaMlukoZQvZI/2Mp4nIZWaVHldhqLXnz2Su++fA5tw8P3PUdk3XM3jPM9hFQhRBI5OLE9LgY\nlnDmjEVQWrFt60WxsnzSmMdOZ+55SrmICynwKTF4h40BG3zmyItIIOu85zABClNUmLkg+B5nO2Y3\nAeLx7yFkWPY5EYHPyh4hiNHlTkgnEBIfHMM0sq5yB5wLOczWMgwHjqf3zNNI9JG/9vpNCvnV5/9A\n0ZYgI29evaHpZqpDh2m2FP3M/OEDD4WmdpbruuTV6xf8j5/fEo3j+e9LVq9HXOX56cORbhiYrMX6\nQH+YsL0DD8+Lr9lt/5H24nP8PEPh0e17zKVmcNe8/f6S9ZstSTVsX5SUuqSpskoFIkIpIoJpCbJw\n3hN9Ng9lHkJchPoCnzRRb0C07FPAzz127rF9oOjv2SnPs3XFzeUlm/WKy5s1u6tn9MeO2493vPv4\nkQ8Pe97tT+zHicM4cwwJF4+kP31LuL7g7p//iX2VTxGhLgBBEIL/expwAv7VluiU+LNWHLc77Pic\n99/+md2Hj8hpYFdX7NqG3WbF66sLKmPQCU6nE+M8YafANFuGYWIeLW1dsmoqSqPx4ZxUnheA2V6f\nw20bLWmMZPIzp8HhhoC3jt5O9NOUtdU+EIVEFxWqbsBkLb8SilYKLoTgc1mx0xopND+eDvzw6YFf\nPnzg+cUtXz675vevnvH85oqL7Y5VEggVs1LAJEqtKZNALyAyueioU0poU2Dqmna95tmUkbzH04GH\nceRhnrmPEUciKDCNRkhFjInZRbphIriA0pJ2VWY+eZEjzpRSCK0JITLGwL6b+PhxzzgMiBS5uFjR\nioZCFPnkKwWl1mybiqLdUrlApyR+nrCnA1ZqjHWYqkIXBq3VgonQKJP/PY8EzkU9K3nOZ28tBMWi\nP84BwpYQIEaFjwKXcqK9VCWYiqCKLK8UGY0qkyCKlN2q0i+4WElyDhE9RmXedylBrQ0yOmQKCIZH\nRVySCdRMJBG0hNowOMPRSeJqmwc4wTMAOiWKBDotkhWZgCz1BUAotABVFAit+cM3X9ONE9++f48L\nPT7kZHmfQl4WL1ruECM25ieSJI+UkIKqLNit2ixRTOS9QSLHBnqIcYltWDoCnyKj8zlCUiaSjPnX\npTxP1yogJFg/cb9/jxQBkicmTwy5e9FKYP0MAlSZgX/5+hR4mz0oUpGXLjLkz3MmX5JVrzFBCIl5\nynmnj3mi/+71mxTyi0bQbGpUWTH98g757hZz+0C7PxGjZSw19uaCVVNRbzdQveLLzQuGdOLW90z/\n/Q75bxPDdELISJSJkARuBrykEAVXa8NMZByPfPj0ibtPe/axpr26ZLW9QbTPCWKN0CWlUUgENoId\nc2uT8MRlXhlDWFK5n2hmIuWtciRhF7B9lnkKkqxIpULIioP1fDzc8q/vfmFl3rOpS3ZtTVsawuw4\nHTv2XU83O+xivECFrLBJkfjzW8L/8S9Q16TPX8N2s2jmZb4QSfwyT3QuW/ZVErxoNlw9l0wny4MV\nbPZ36HWDqAo6BIfTgJtmbDcy9T1aS9pVToOvioamXFEXEmNE1rSS8CmD9WPKS9uz3luaCtNeIozB\nHT9wP91xPw4M1jK6vHRrqop2taG+vOHm5Uucd3z7b3/E9T1FyiqVcfIMQnCKgXFlYLNjR+A4eP7t\n7oG9tbzpel5enXh2cUHbtBRVTVHUlEWi0rmgay3RgoVfwtKqKyQRd+iJH28RhyPFNNNYS/SOsdJM\njUI0GtloUllgyszIcC6f0pUxOeTaB4zKig43jHy623N3t+dw7PIJclWz27asVjVaa2IEZx2n2RH6\niQ+TxwAliVYILp1m6wL15KmanrKpcydYFo/gOG3ygs4Yg9YLaErp5XR+Vm2dZZMSqXKBTgogXych\npZyrKWZS9FlnnbEepKQJMacChHPhAoqgwM2I4NAqm7SE8iAtyQ54N+OtIy7BHC5Yoo8kYUiqZpos\nD3PgkxXQHDFVSVUW1GWDVBrtJVoEKpU111LpLI8UT3mVKSXKooQ3kWmeePvxE//ypz/z8+0dLi2R\nDikuuu9l5p/OM/d8v9bGUJeGXVstaGeWXE+fpYeErPkUT4Y06x29m7LKR4KUCXS234cU0eTdjFzG\nrjH6RZ21kA/JaICUcl7q2Wh0phlmpWIeLUUH0UXc7BExZ4pmQ1p2l6costIt/I3JD8NaIbYlSijG\n0x3m01vC2zv83YHBWR5Kw8Nska+vkHWDVRuu3ryiTgM/ffoTn24/MJ4OHI8PXF421KsaWdUY1VDo\nCq1KSDvmKXHqHvju518YrKVcv2C3WtNuLtCbHUlVj8aGmCLWn40r+ZsdE7il1c6L5Yj3OehYpkxw\nSykrIc4RUzHmhaBSFVpXuNbx0E3c9feE/g4VLJWEdZGTgoJPeARRZnh9H2EO4Pwih/p4SxxmZLNs\n+X//FaIs0GpRRyDAeYbk8THxEsUzCnbVjtPla4Q3VOWKoi1JMnGaJ47Die7o6PcDOgYuWkOr6xwO\noLMVm+SY/cQ4jhxGy2l2DN4TUUs7nL8Xl9qwbjdQ1aTiwIMPnIaRwTqsy1zll1XLypQkZfKDynrs\ncSAej8wxMjQNsi6ZC82tkZSbDdWmplGCd+/3HIaZ7uFA7x3HeeIwjVxtt6zaNU21oiormqqkKQvK\nZCiiwpzhWoJ8ipkt9nbP+Msnpm7I72PwxOhhVGhfstItslYkqfFSUgqJ1YrZLrp4l/PbgnTMs2V/\n7Pnhp/fsDydCTLx8cc1mt+LyakdZFKSUF70hQXSBKXjcPC12dLKZS8AAlMOIORwpTElVV/mjqimr\nirLMcK6yLJ8K+rmoL1r6PLL7NbdEPlneOWfYxGzES25JnGdxJYql2EMQkG382T1J8vnQEnIGKzLv\nFRyO6EdCf6I79YzTzBQjSjfIUiEKwf1x4sOx58PoMe3Aartms9uiVMUcJEOQFMmhyywnlqrI9448\nsyDzl2iMQYtEcK/5r//0n+jGkUPfc9vn4IqcZxBxMRfzFLMpMC6z5pVSlEZTqNxtuRCROi/Ko4wk\nFbNhcDmhxxCY5pluGvF+KaqZapVzWWHxJ5xzc8WT6c2f34C0pN7lh2zwLF1H/sgywtx+nLG3MYQl\nezQsKGb1+L7mw2V6lFr/+9dvUsi/fbnjSyNZjQNV4VhraAXMbuJeKd4Vmp/mGXd3IFlIFXzW/iOm\n2aBjj4+KsYv8/N0Dpduwki9pV6/Y7S6piwq9GDRGmziGnodpZrW94ovf/4G4IF+VEAjhCS4uc9Gn\nZJDkQ55HIojOYoosKRzGmXGcsS6L9c9tmEAt2ZKZVW1ULoZGQ9lsuHwuKaqWTx/e8en9W27fv8OO\nPVKIzO8w1WPO4TDkm8Jal+OuUiQNI/zv/y232+s14vUr1lJyieQKgTy7/5znmQ/cOEFtA1u1Rl5X\nqN0LfIrZdThPxGJANgP1rueq1ty0BRdtwXDqsPPE4CzdsedwPHI4njieerpxZnQ5JCCeZ+nW8qWI\nvG4lkxF8awwnUXLnRsYp7xKkkLxA4KeJd3/6Iz//jz+C9RTDRJU8TiS+O3n+y/olz55dUN6s8FUF\nRiFk5PJmS9eNjMPEvXcMD3s+DAMv+p7rzYqLVcuqbNi2G/xqTRUqKmOotMYohVIC4T3h1DE9nJiO\nAzZFOgV3RvBWgRKRrYbXukDJkilK9qMlPHLA80w2Lnrr3s3c3e/55e0dH+8OlGXB8+eXvH55yWrV\nLJCmpzmvMYm6zq5H7yLDMOVRnZG4puSkJLefOuaHE7hA29Ss1yvWq1Ve9DY1TVPnhW+V03zKwqD1\n0wn97FIUQmaLvpSPp9uzcxLOFnLyoeBc+BdQ0yPUVfilI40ko8itp3g8/QoUXhakNGNnx/tPRx4s\n2PaCq+svaC+eIYuGo/2OQ/+eIezZSI3SJUZn70dCMnnB3lkqU7MrS7Qyj9AxfnWqFgKSUlxs1vzn\nf/iG97e3fLh74O2xy+/LMub0acnX9DF/7YBMIo8RpWIcHQ/dSNI1rTEUVZMRsXYipHE59YKbPd0w\ns+8m+sHlsVta1FEsDlQE0ecDoJQQfFYJWRvRWuZc34WTEkPEzyxwrfNYNuVOUStSiEgT0WY5DIbs\n7JRaPnZhiDyjl1rw116/SSF/9/0PrMqKHQKTEuPlCmLETh3fucAfgbfjjJaSVhRcFQM//PhnvFDY\nbs92U/Hi5jlyHKiVwvUj08OBIWlSGymKiqreYQFnZ65ffUZd1SgCtYBKiqWdA6HTsozIo6pzelck\n4iMMIoLKF7U2EWwg+QAxEZNY9LpuibhaUAJMKAWFlphlUYgymGbL5gZ01XB/94m+6+hmh/I2ByCH\nkCV/PjzCjkiAC7A/UP/wjtXzn5HNlquV4EZqLkJCuYAMGSq1DZEmgAoRkkRIA0oSUgBhULqmqlYU\na0fyjkJJZi14kAkrVtnhGDxq84J6HAhdB12PHAZU39MdDwynE9M8IoThp4ee8Oe3RF2w7yfKumG1\nyLec7/Eh8mF/ZOx7Su9QIVHEhFmcdMoo2rpm/eKS9rMb/K4BpfP33zvWUWCUYlVXyOWkZpYotoP3\nzH1P0Q+s+55td2TTNGzbFeu6oSwrjJaoGJGVRl+tKHEgEvdhYmQmGsV2VXGzu+T58zeUmyuSKBh7\ny3B8YBxOzHbKi1HvOY0j33265f7jA8dTz9XlhsvLLc+uL9htVmiVaYQixkfDkFYKUeab0ntPVZUI\noCgUdV2iRS4Mw+x4+Ljnx31PU57YNDW7dct202Y+d1PT1C1VXT9+lGVNUVRIFf6CVyIXw1J2MS/O\nZ7G48iEXhQhycX+mc5yYlAiZsmYxLVrzJJbZ7CJnFIJSG+RqhdYC1Wx4HgShbCibNTbOHPZHDJbL\nyxXbqzVV3VBWLWVZIbXi/vYj3f0tF42glc+42VSElLKKS8q/wG5nt7bAGEW7qvnyzSu+fv+Rf/nx\nl0xADMtCNorHGXZafp/Riq9fXvF3nz3nxc0lu7alKjQEi+2y5d+NI9ZZXAgLQykx+MToFodnTESf\nT/pFKTBakhKLIzRz/dMZ77/I0yX5wS1SIiz4DiHTrzqdhFQRnQ3KKCNQCrQAsfCnlEiZqW4yjteH\nLE38a6/fpJD7H36mLyoejKGeZ0JTMDzf4eeRD/uBX/qZd7OlQLJTE2U7cbv/gclFVkrRVM9oqxWv\nb65I85jNJ+OAbzbYMhGMAlXmiLNk2bQNq0KxEZa1UawLRaNzIX+84JeOJUaB9zns1YXE5BQ+kU9x\nMlGHxDEGBiJzzHP1sCyYQgQpNSFYsBEnycTFlG3eqqho1hJd1kRpSOqesD8Q/JwXqs4t9nVxtrqB\nECipqKuG50lzPURU59ni2QhofUD7iA5QCYE5740g34PpzJlRj6oOY0rO+ZeJxJgiY0yksoYis78F\nCbO2NJsJNU2YcaDoOtTDPeLhHtWd0AJ6Bd/vLSlZhgBSGZq6ZRozUN9ay2kcEV6zqgqMdxQxUiws\nBVNV7J5dop9fIK+3eQmeEtHHbKJC5jHFuTAm8cjPcVLkLiYEphAYnWOwE6PNbXFd1tRlQa01jZGI\nqzVFrZFa0KSRrRwp9cz1bsvN5XOurr+grC+QQZMOI53R9Eox9EdMYfApchxHxvsDp6pn3iRevLzh\n8mLLuq2z+mW5uYXwS7aFRmiJSsvyVWfJ5HmEIJfxnKwrYlXiyoJhFghVkoKke+jwqiDpiE8OG2ca\nWRAqRRIlSdYkWf+K4X4uzmmRaC67giXzVC3/HyIqJWR8SssRIjujHznd5D0IKT1qm8/IAyUloiiQ\nOkfqrUPEIxHK0o+Oeeq51JF1aaAwJCToxXmtNd57+mNHJQzTODGPI1prkjGgFzb9r8YrcumGisLw\n8vkNX71+xbPNhsE7BueylX3R3y8DC0ptuFg1/OH1DX9484wXVxe0ZY3UmojE2TxeI2RXcggRv4yY\nImIZt4gFVRBzV2I0OTzi7ASF4Bb+06J/z7koec7PWZfuE498tPMuLfF0wpfZNayX9zEszmglRHai\nn/MZ4t/QaOX5pwMiPnCHoKoKqssLit2K2HyJ/eUW+cstcX5gmC3+ZJmKmePhnuA8c3uBLAauW81O\nVlyus7j/JEuqzSVpfcUsS5wLxLkn9A8YN7Lbrvj68oaLTUFTaAolWd6nR/gcv3qanxclwQd8zPPz\ncfacRGIvAve95RgkncxqAi0lPilEUTEPyyIoRuZ+yoU9OlCagGKwinJ1xVYWSF1y2t9n0mPI7W5i\ngTqJgJCJuml48+Uf+OYP/8Rnb36PCSXpGElpJgcqZKBUiIHA8uZLuSxi8onijAeJyS9X+hletYDs\nkQsgSiBSttSTJOiKoi3Q9Zr24hk3L79YzBA9yXuOpyPHwykHL/QnnB8RQlGWFVU147zPy9S64sXl\nBdP9gTROGKlBScrLDdXXL+gv14SyQAiJ8wu+VhVUVZEvmhSJ3i9SsUT+7UshjBCS4JRkTpef7jDc\n0qqCi/Waq82G6+0GsWngYoWpKr5Yeb6sZoTsKaorTP0M3T5HzAlOI2LuqWJijok4TbSlYbvdUb18\nxXXV8Or5J/7cHahXq9zWO4dzcQkwyIuqSki0Idv9Y8YnK6Xz6W357xAzddDZgJeC5uqCizdXXF9c\n42bLt9/+GXX5imK3QyAIhSatLyhevEY3K4SpiarI2N7lfQ3BLwjgkA8o3pHcBN7mj+BIyaFSysVc\nJJTIXan+VXrX02ECiOlJdbFo3FOKBGcZDnuGIbNPyqbFFCUvWkMKMMwT+9M93ejw9Q61e01RN1xd\nv6QtGioGBJLucKKsDbGsSEXMI6OznDQ+USi1llxcbPj81Uv+/s0b9tPEYRx/VfLPhVywqkt+9+KS\nv3tzw5fPrrhYrWnqGm1KolJ4FwhrR5izIqSfJ07jRNdNlFrSGINMIlMrRC7Wzi0O2gXMF0PCzjFL\nMXXm/suFXBhDPpCEkE/sIoFU+eQdU9bKV2U+woskEUnkIAy1UCsXTLcQGpJCCr1o9v/j6zcp5F8f\nZwbr6JznFviq3LC7bDnMHS8vL0hJ8vF4YrZQpMh1SFxryZw8vfvE/sMeX5WEVY0tC6r1Gr19SapW\nOG/pjh853H2kIfLZbsXXL655ebnmclVSnVUN8KhhfdJPpQVhmr+RWZYFCjBCgFaopqLSmk3jOc2O\n4zizH3r23jIGSaKhKkqsLphstkPHmPBRoJVEaahKjZ0DShnqdoWQhqLqH3GXIVmEiJiq4vL6Oc9e\nf8GrL75id/2MJBTRBaSIOWxaJLTIkP7EcmoVEREdJvNWsdZnK/vCgpnmzHURQiIe5UyLjpYESWKD\nyPuwkLXyeaYaid5hfcBFQcIgi4bVVrO5uKbtjhz299zd3WXXa1FR6Jkvnl3yzbNLvr5a86/ecztb\nBIn2ckX18ormxSWUhgAYJMHnZV1pTN5bhLCQMPONnUgorZY5arY4x3TujPKpc06Jzvbc9ife39/z\n1csX3FzfsLm8pHz+DF0HhMxmFS1apGoQUeGGE2LsKZLPvJmiwEhNf/+Atpb62XNuNhummHAp8XEc\nscvXEGJazE4ekPjZ4+asUz//vI9PGH0pJWmRt3rr83VH4P7hA23bcHP9gv/19ec01dOMPC4L5EPv\nOU4nytLTNC2FNnk2rsRjslVMgSQU0jTIepOzLYOH6JHCEaYRNw7EqUd4m3HG+twp5K6BZbkWQ+Ac\n3iIXtHMMATtNdF3Pqe84DSPu/Uecy7NmVdZEbZiQvLs9IlaRS7nji8trtpc7ttstWnhMmhmSJZCD\nnJP3AAhFHkcsLBuh5JI0VXJ9teO/fOrUyZQAACAASURBVPM7fry/48PxwOgsv2pE0VKyqyu+vrlg\nVxoKsVBdpMwdksxs9agEaIGRJa3WqKJivUrsXeTTMHLrRga/gMZC7g0k+aECiSgCcpUw2lCagros\niTE7omMSIBVKRIiessqn6hQkUeQFqkjZYaqSQoRE9JmSOHtHUgZlirwLEYo5gif81Zr6mxTy1wfH\n3Tzj7IxWko0ouChX3N8eCC7jG0mJVfC8iI5vVMC2ikNQfPQTfonzSmbDqGucKNEhcfj0kWE40t1/\nwgTLy8sdX22f8dWzLRfrhkKeuQ4LsjTJ/JgkLSOI9LTJj+ecxEV6uPAwCqnQpeD/Y+69eizLsju/\n3zbHXR8mbVVl2e5iD9mkCImaESToSQLmTdAHmBd9V+lRIwkEMTTd7C6XJjIj4prjttXD2vdmUdOC\nnoRiFAJVGZEVcc05a6/1X3/TVYZFpVjbzFp71krRz4EpnwgmM1UNY11zGAV3d06266DK0ksWYcbW\n1K2Y56Scid6TlMRd3Tx9zovPvuT5p5+zvbmhbsT03ySxnbUKLImuMjRGYzXURgkXN2WsaHyYdcJa\nwe8ymT6K3D6j8JQFEeCzJmYlnymLz3TpKnTOaBIqBQk5iFk2+kmhTYWtahYridR6PBzQPmBtRVfV\nfPXiOb/94gWfrC2v7+750Pe4BFdPdnRPd+hFQ8wKfCQlhfexqGGTbPGTOPhdGBnF40QSx/N5wJDw\nhpQusVkhRfwwMs0zT3ZbblBU7YJqtaNugeSJ8wDRoFxCuZG435OHQeAlq2m6muVywf7tgT4m1u2S\nqutYGcMKxTsfiCpjKglQBnF7VEomhRQSEZmhQ0yMLgrLggJPgEi1Qyj4tiLEkWF4JN1c8/LTb7C2\nxVY1pqoZTz1+csSQMEr42DFFQjLkWAqDzqUpkTFMKznEs5ZwZOHwR1KuSMkQkyLnCeUn9OyojKI2\ncqjqAr+lWBwnlUJHgYP8PDP0PfePRx5PJw7DyHgaGIaJwUV0vYRuRahb3j+MdHmmngMxiuLRtJWo\no8PM5EfhsCPXVyqLwZpc3m9536211HXN1W7Nn331iv/jD3/gD+/uGPcOLsvbjDWGbdfwcrsQWK3c\n2GfOiOa8NxAxkzIKi6LTBozl5e0135xOfHd44DjOqATTOBGR17hSkqmLScLGShqdDWouj9MYbGVp\njSW4wCH20jAGhUoaVRd7AmWwymIw6JjJTjJYvZc4QaMralVRY3FKQln+1McvUsiv91EMg3Lg+dWO\nr9Y7usWavp/4h59e8/2He4Zh4tc+8Vur+KvW8/eLilmveeZaTL2k6bYs1td4VXGaRu5e/56fvv8j\n+w/vYZ759//13/Bvv/mCv/r2K5SVxbtGSWCBcK5IlIBeXQp3WWDkJGNNPrsUFi/tmD7amSoFi6pi\nUTfcbLe44Dmejnz4cM/BHZjMkrB+gtG5GAopQgjkHIESS+YDKVAsLTPGVnTdAtW0rNc7/vxv/jue\nPH9G10ngQWOgNRmNRyHy6ioGrquaq7Zlu6hZVprWIIb3JUIvR1PwPBE2jSYyzJ7eeQYUpwx9ALIR\nnnjSmEthlGniXBA6YzE2gvNM80TynhwiLvTY2qKrhsV6QwgBPykWdcOXn77kN19/zoqe57dr7oae\nh6RZvrxhcbXGOXGJTCkS/SjKRaUIzl3gEyhTUnkfY8p4nwg+ylSiRQTkQy42qlk6mibRVBXLtqGr\nDZZMmBxGd+Aj/sNBRC85CwSyvxcHv8rSrTqaVcWWK44Pj8yj4/ThgFoHxuGIG04YLZ7kpm3LUtuj\nbU1lDdbI7kUrYTWkKKlEwcciH4+0JYLvvKRsjOGmqhiGe96+1exunvDJyy+pbMPhcc/D/QNKa7bX\n11xfb2mbGpUhJeEbJ59wMXD2Ug+uLM4Re9hc+n5llYQeL65R3ZY0TcT+iD+8o4mZThs6LCYLf/ys\nk0AJJz3GyDDOPDwe+endA/eHnsF7stJMVOwjjMeA60dindG6oqkaCVsYHJWesI1QeMUQbEmqKnzy\nzGkiRLHEVUjE3xnWMdpQWct6teCzz57zzcsX/NMPr/lp//jRqRrxklnUlm1rhHSTM0nlYoOQCl9c\numuF7FpSeZ5JZXbLjq+fP+OP9w8cDj1unHnTzyQFJmtskkPeNhqvIqejYzyJwVq1qlluOm6Wa24X\nS4JzfNcH7o8T3gcao1lsLaayJGsxqcZkjQmQJkecHMnJAteiqbEscgVVQ6r/FWHkp/nEu+T50cBK\nRZaHR9bvKuLhiNofWY4zV+sl/1VW/Ga94vbpDb/3PQbF1fU1x8nxODnePH7Pw+Oe0+nAOEi24pPF\ngt9+9QV/85uv+fzFLbaSTD9FoaQUZzGgLIAUoClVvGygc/FhloxEVyK7UuGQKpSkkRSKF9rQVKCX\nK2pt2Ywjj9PM+4fvqUYwUyA6J7Mi5yiziHOiNIzBkaOnUpnNds3VdsfTp8/55HZDV2eIPeM0cjrt\nOQ4nquR5drPlxe0VT25W7FZLVm1DYw2V5hIPdaZwYQuemTQhGhaVZdMFQoq4IOGyg48cnedhdNyP\nkSmZMuYK1ndeifUBYtRkXdO0mTnDMDsOx9MlF7RqOirbkCr584fTwO9ev+NaOza7Nd9UNW98ousa\nlMpUlSHGwoxQ+SIGSekcvqyKda18HRRVJf7wodIEL+9VjkXOV/jjGkWylqQUh37gtD9gtSUcTyzW\na2qj0GMvghatsbqlspXEw/UjdC26rjCNpt1sOKUDPw4DyWYeU2LfLUSAopQIYQquqaAc2oYsRj2y\nONNGfn6WTteaBq0FL/c+lnT3XOxdDdo0GF2L46DKuMlxdX2NrSqMMeQE0yTwzTx45tHhJomYy8hr\ndpbdn6PURB8h3h+zmxingWE4MU893g1EP9FVlkVTs6wboXAqMCUGEQBdDMNmT38a2fdwmgzDLCre\nYRZ/fp8dts4sVg1X22tavcP3hnc/9Tw2TtSx5aA25rwABmsSjYnsWsX10nC1VLRGIFGlDNZUNHXD\nYtXx7Vev+PHDPb9/+4aT87gYISs2i5pNY8R3PosXj+ySlFgbKC5GXSVoTjDVQvm1GnbrJd9+/gVO\nt4xzJP/H/4ibDhglzUOnLSkb3j4ONCiWbUPdKtrVAlvX5DmQtUdh2axuyYzoELjSkOpMqgxR15zG\nkZgTuq0R17IsO7UCdW0XS768fUYwN6iu/pM19Rcp5H10HA3sm4q0ang99dy/jRxOB6axJ/uJrq3Z\nXW1Z314zrVrCKclCoFnxePcD797dcdgfOOwfmMaBFALbtuPV7TX/7W9/w7evXnB7taKyGmuUdNfF\n5UydL8hitp8v5jnFSD9lMcuPER+kkPsLX1W6AmVUCY8t/hDKYOqmeH8oYnScDke6AE0UMyS50JNg\npCkQ/USlE7YYZygiTS0Wu42Fef8WfxBTH6MSTXR0BNaLipfrmpfbjtvdkmUnvGKj1MfnRv7YRWVF\nymc5t3TbtYacNMEEvMmsdGKpoI4R42cep4SfI2lKKNuAqUEZXEjie12gGWVsCQAp2I221O1CljJK\noXXFhyHx+/cD9+nI1fWK28WK/jSIZ7yScVmdcZOcpUiVZTPnzX5WGGNKoVboyqLLYjqmQhEjXcJ3\ntVJyMCvNnDJvjyfqqibmTLOY0G6EpqZRmlDgsxAiylRoZYnuxHg8YZoWdEWoLUNtOAZPTIFewdzU\n0gCEVGwbcrHWFV/rmBPRn1ksqgyCGqU+HjghyVQxO2kWcpbdR0bjnBy+3kcobI/FaoExBj97+uOA\nnyPTFHDjzDw6/OQvEN5Hv+0CKoinhAjbYmCcRvrhxLE/cBqPDOOJYZTGQpGoy8FTGSuQnbz0koWa\nxIPfuSBRayFIkEoIxAgZMWLr6g3rxRWb5TVttSI5zSk5TO8/smM0GFNweSuNlzWZvjMMk2V2iU1n\nWNWathKRTFVVtG3HF5+84M8/PPB3v/8Dv7u7477viVmxairWjcVS0r2ULfma5/eh0ATVxxCR0tJd\n1LwWeLa7wmxu8dkwfniHP3UQPVOAOWf208xwmtktWrZdRaPharejqmv600Ei7dY3vPj6M4H9ppHq\n9Mjj8ECfAo6KuZdcg5QE1lG6mJMpiiGYJSVDt1iyvLr+kzX1l4l6M4rYWPRmQX5+w0/JMb994Ngf\neUiy+JhPR+6+/oLtZ885hpG+XpC85nAc+P0//RM/fPdHfIjFylTegOfbLb/9/BX/7rd/xnLTUbf1\nhcsZgoyznLFWFJS0bCKXpVoIQaLckjAQJIcxFIWeLNmyFQvb8lOKNlROdaUMuvh8r+qGyfUsdaQx\n8NOHOw7HQWTHVrPsaq7XLTob/JyYJkd0Aw/3jn7/DhVFsttZw5fPb/j6s5d88+pzPv3sOW27EFmz\n0lgtkVtndgGpZF4WR7ezyi1GYeGkeF4gSrJLjBGVEguj0J2hRmEmyVpMhxmzfYZebMna4JNE0s2z\nI6dEV1nW6y1t2+BjyaVIAaWVhEhoywfXEo4Vr497/vpqS9c0+PtH2q4WT/TKog0YnUhaFROhhI+p\niFyMFKVSyJXOaGNK8AHCIjAf4QlTusiQHAEYQ+CxHxlTZlbwddfhpgGTAuv1jpzk0J6dk+g1XZFy\n5v7NHVQVzW7HY3A81oreNiSt8UnMpmxB6nxKZLQkuhuBicbRM04O52OhIipISgRVwDw7YggEL5BX\nTpEcA1NwOJ8x1Y5xiqyXUHc1i0WHtkryO93M3bsD/dHhnXCPz7oDpWXyU6mIfAor62w2qJWhqSoq\n27LoNmw2NxyOe97f33E6/IGfXr/lw/0dLjqMttS2pq3rErMni1QfAiGKCjqqwt9Ocgh33Yqr7S03\n15/w7PYZ11c3VLaRDlyJm2JKSVTxunTIUQpuCCVdSCvmMXI4Bj4cDE83hue7imc7acwMliY1PHty\nw7efv+Lf/upbjvPMfhwgZxaVZdXULNoWYyqMtlhdFdpfoRwX58yoxO1Q+AyaYfBMk2eOiabqWDY1\ndbek/vYVebzB+cibEf7uj3/k3d0H+nnm6aplU2ly8Nzutmw2G6YHmOua66++4S/++/+Zq/Waef/I\nj//pb/n9P/xfvL+/5xhhPwTcMBKzJptadk5KUZ9zP33id6/vuXnxnC9e3v7JmvqLFPL//VnLSWV6\n6+HxNTklWmN4+dkzrr94zpQiyUWqbz/j/XrJP//9a+ZQsT95Xr+5Y/+4L2+GOAnW2rBua/7LX3/F\nX3zzOYtlR21rrJJxCq0wlSYrg4rnVHKJ9oqlG0sl9y/mn2HipbCHkqweZSOKVkZ8F5QqlD7pclIx\n8I/ekwqVsJwdKCC6GUNkteywOhJcz7v9HfM0FAN+L/45WmONprGGv/zyFX/zm1/xZ998zpPrK9aL\nBVVti3opiKtiUZrpM60wi8rzjOUrrbHlMaBEhi0USwl8mKaJcZpEDJHFeKg2wrc/Ks/bn37PbDrs\n6ort1S3NesHUtszOE7wjzE66/ZyEx24tilTSxsGoiZurHS9e/hqfJt6/fsub1++kuBhNipGuE/64\nmxxN18hzMpqmaVG6MCS8FzVsZXAh42bPPDmqqqJqKrQCNwcm7yFnKnVmWgrW/34YiR/umWJkU1tu\nFgtMQg6FGBmHA5WtCfPE/v6RP7x/j2ssKxWYU8Yp8CBdqAvMrizYyrLMoGiaiqauCNGT0ohzCXXe\ntZzj3LQwb7wPeBcYx5nH/QEN1JVltWww2RPDyPu3P7LqxKMkZw0Bxn7m4f2e/jgTvcANMZWffeYu\no8jl/Sz7+6JoLpCgAXRGGahVxWa9papqlss1T25e8O7uNd/99AceDg+cZkn3ETqgKTsL4fSrok9Y\ntB3r5Zrd9ord5ort5prlYk3XLtC6AsoeqrCjzpOj0h8zUiUImYv81ChwPjP5xDBFHk6R+1PkdlOx\nbRW1VjSN5fmTK/6bv/wN3z9+4L7veX04MniPi4m2rkjThO970mJFBsI4khCjMTcL66afJpngQuDN\nuz0fHo6cZkfz5Irb44Hrqx1LmzCrhhAzqU7crVvysxtu/803XK9bbI68f//A9dWam90OvaoIRtMt\nKtqH74h+i9ENTz//NWE+oRQMb+/IysjEVbxbjBZChLEWtMXUCz759bf8+ttv+cu/+Os/WVN/kUL+\ndmEv3gWpeAsYY7naLFjc3qBXS0KKLDYbxnnmqDLRTwTn0D6wWayxVgQ/GsWua/jiZs2ff/2KT59d\nY4uUlos4UvBJZRUQydlL0S6BB6EEPqAkFDnGVHIISxF3XjDyLPi4tQVXy6L8ooTyxhAkAmt2+Nnh\nnWccPS5AZWsqDdlAV8PYD/SnI6fTiXEai4dLwegRIdFys+GzJ9f85a+/5PNXn9C2LQqF806okWWp\nJ9Y6xQoiRtLs5LUqEmAj0TplvM9FlVr+HWK5mI9iC4p4pIeQ0CliU8AfHznM94QP9/jxRLe5purW\ndG2Ds4boLSZFxtOBeezlMY4jOkU2tuFJpXneVHyy2fD2/Q8c9ifGYeR4OEn+qlY8ud3SVPZygCoj\nSeptV2GM8LDnqbxGSKBDCAmlDMaakhQk3VZyklgjlqRaTKaqjMuZ/TTBHg7WMEwzPmWhi04z797c\noYwFlUnJ8XoaGb2ivjMgnB1ZFSYuAdK6SOKNEcjt7H+SMxgbMFXA5ESYRPAlij5ZPk+Tw4fI5DzD\nMOOdwxqND0vqWuPcxMP9W549f06IG8iKaXIc9z0PH/akUCA9IywSmTJ/1lgkLkHRGYVKiqTBcE7j\nodAJLXVdcGRTU5karSt8iGSl2B/3hTUksIYxutwHNW3d0XVLVss1m/WG7fqK9WrLoltitJVDq3j4\nCxR55qOX353PdrYyIV+YJBGSygQFhMw8Z8byeRwT1yvDts00WrNeL/nm85f8xZevePv4yPvTgNaa\n2hrWdUN2nvFwordiguZCwOdEow3TOLM/nuSgMhqVMm/ffuD1+z0H59lZg9OKYTyy6iybRUtdtawW\nFS9vd1yvFnz56Qu6zjK4kWxgubAsG+iaJdkYjInEd7/n+NCi109prl6xaGpqoyUZzAuDj0pfEoJC\nkoPOVBWL7ZavXmz46utf8fL5yz9ZU3+RQm5zxbKuWbTVRYTTVpZ1VrzYXLF79Sl63fLw/Y+8fvee\n1XJNPz6yNponn7zi6ALHGOnJWAyf7Zb8zRfXfP3yltWiJgVPVJmsLEoJ/nqOWTvbfIqAQzo67wNZ\nK7QVpkciF8xUJLzBe2EdAFqbiwl9TBKOmrIUxOAFdhiHkeHUczqceDj0jLqhWm1Y1DU2B4yK3N9/\noD/1smxJ8nOVMaggh0Ntaz67ueZXn77ky09fUDWN3KRRLAK0FvGAVUkUZCDfd444TsTJoUscljUG\nVYohyGJOZcF2c4x45+nHgYeHoxwiTYOLmWmcCSFgc2Y6PPJu/z0/fP9Hnn7yipeff8XuyQu6xZqM\nIswj+/u3vH/zI3H2nA4PNErzzfqar+qOl0mxngJ3QwCXqIyhP42chok5CfRwtV1RGYsPgUpr2qah\nrSX70lqDd55pckzTzDjNGGNp21Ziy4qmu+0alNbMsyKliLo8f3uRN/cpMc2Bg3PcDQMLU3F8PPCP\n//h7nFJ06wVPXlzjq4o5Zcaf7olBQqq1sdRNRde1dF2H0VUp4lryOpVgrDEW6KWqqJCi7ebi0YOS\nwINxKk1gBGU49iPTNPH+/sDz51dUVcf+cI/zc7luYX+/5/HhyNCP1KYTu2VpxT8K2WI+7+0v9LqS\nASTvVRb1Z754BeVLelAqDpd1s+TF81cYbVnW75kmEXppbbBGk1WmaTqudrc8uXrCarmSJayu0dqi\nyETxuuC86FBlkWuNQDTamEIELJdvPlMJ5H8RwV5GFTrskBLTnHl/CCw7xe3W8NlOs6trNrslf/nV\n57y7f+TvvvuJVdOybjs2dctpnhkOB+7nmcPhxBg8QUFrLNPoOBxHUmNYLDrqqhZ9SEgcMFhq+v3I\nj497lq3h1fNbXtxWmKbjs2fPqLXm5dUWXRv2fuDISEUg+x5dtaJWDQP9m/ccZ4/ZfcJO1UyHD4zD\nkcFPzMOReRyIdUWcHc55htkRU6JqG3ZPb3n+8obb3VXJAf4TNfX/j0L9//XxP11/i61ksXF+66w2\nLHNF/VPE7t+iWo0+9SxGw7O0ZaprIFBj8StFDxxihtpwvev49HpFYwQ/jDGUCyCJLaS2IhpJiTDN\n+Fk+Zyd0oJRAKxn/ZN8myyDvz2k2ToJelcZoS7RBQmi1uOGllIlOOvFxGDnsDzw8PnL34ZF9Mpy0\nZ+pHjvt7tNZ0ywVttyZlSSTP8RzKHMg6oVOmspa2a6nquuCKJcQ4CG4u1qz5oygmlhs3lzCIpcW2\nDbapxZjnLHpCnl8Mgo/PsxTFYZg5jRMpQx0TLiQOw8z+OHAY5mIalZimIz989zs+3L/n6dOXPP/0\nFbubp0KxmyemoySHx9mjtCUEzdv3D5yOPbXVnNJAthXPPnlK23YSaGEUm82Kpq7lps0ZXYIcUMJm\niV4gjZTB2IqqylirqWtR1HkfmFzpbrzgzposWa5a7IFtLYvGmCI5aSYfeLt/ZBon+lPPwQWubnZM\nteUff7rjMAZ8kg56s2pZLjoWraVtG2wlOLjSRhSwKdNVkq2ZClU15FBizyzL5UK6bSc2DM4HrDWM\n48w4TRz7Hsrid5xG3r0XWK6xlYTxkgkxcDwe6U89ZCVLWqI4BZbYOymAmrNJZQEwLoZaYqMqNrwZ\ndfH0yUhws48JHyWWb5odVdWw21zhmq7smAQa2u6u2G62bJZrjJFmKQYxVEN5MYtKEv7MeamoRWwU\nreyQrJIGRkYDc7EF+GjyVa5Z9REXTDmTI/SjWLuOQ2ZpA50KVOsbvvnic/7dmzek6MghF5m7xlY1\nuu2I/UQMUQ7lusYkhXGJujEl8StR7a5Bd7jJccqKu/d79kPP8+dPWH9xw9PbT2lCJOUDMTgGN7Ay\nC2ptqbuOPimCarH1WqyMgaldkNVMmGbu//H/5P7xnsdh4HAaUVqzXi1ZLqUpyUkQgqxyid4TkiQ5\nE9O/okL+rd2UJaUSnZK4+IjQ4OjJQ4BW0ZBZU3FjDflqAUrGwpjARTG1Sa2h3lrWiwqjueDaKieI\nsSTHnE11ImH2BfZw4m2SEtIjFR/jUlBDkEI+O8mXjCGWZY26UKYoQokQAm6aGPuR07Hn8Ljn7mHP\n64cDQ7cSrvY4oYaeVbfk1lhWt0/w6UaYNNGLM6GX6SDERFNbdpsNla2IMYkwIwRSCJdNu0RVnRWZ\nstw6j+7GWExdi8qPsyS8PDcf8MHh/Cz4+DgyDTOxiFeSc2JH0I+c+pHJzXITA9EHTsMjh8MJP81U\n1tDWlmaxxE8902lP8EFuHmXog8cfTzycBP+LNqAWClM3NJ1mtVpxdb2mbhpSFtxbR5E8gyzVYkwY\nJfJ7kJu/OSf1WEkISiljdMRlX9hFWehsJWFHFX8TVCZ5oZWeJs/bB4G35klCJOoYaZLBZYWyllop\n6loK8Xq9YLVciNGVNYX5IPCBKfFkGkUkEZKwL6pai9UsIHhBKrarsh+oKktVlJJGy+ItZjieBozW\nbFdL3r//wGKxoa0t/alnGkasrUnaUtkkHh7nQi7bkgsuzplaV+LiKGv5y260/EXp5uXvgS7sm4q2\nXci9ET3ZS5jHarVhtyme8NZKmHcKYpWQ5p/ZXBQzrsJEqqqKumkwWV67ixgHhMnzc7HLz12zyn9K\nL5LICnyCEBTjGKh0oNaRzlrW21v+7b/5NT++eUNnM/PgCDlhitFJQsnjzUXwJ4OpcPtDBG2J7RUh\nWCZ/II8TDk17/ZTPf/Nb1p+8JK6W4EdcHJiHkehOZCO7h9ZUhPUOu3rCev0cXfYXZg7MD+8YDw+c\njkfuTz2P48TkItpWqBIzmAq0mFK8bKej89x/+ICKgbTxf7Km/jLQyixYoLYap3KBQSg3oEZXmpws\nVSvxaDFBvVtiFjWJjD858hB4OiXCUhM6TTwbvBdf4NJmy4WifLloE9ELh1a6GUhKeCeJs5ozXcKC\nvRff6TO7wBS5sjCYhP3hncdNM8MwcDqceHw4cNofeXcY+P40oncKHxPj44EnVc3LyvJJVbN88gzT\ntSSjyX6WSCcn3fEc5bHfbISXHuZZ2ApBundTVUAx3fm5SKkwzLTWaCscXTKkECVZ3TncPF8wuXme\nGMeBaRhxs8MUfDLGXLr0iXGcZJzLGY0W1kXMRDyn/sjx8Eh/2GB1xg0HxuGIxtA1C6w2HNwoomYl\nBvvZzcQ5EXtDUpr1ds1us6VpK5wP7OOpYLBi/+m9Q4zDBHIxRuxEm9pijaT15CTWoY2SBHlyIhtZ\nPNqSFpRkwSEdvdFMMdBPMx8OJ9w8Er0Uqv3hxFZvuL7ZseyWNLXFWCUS7LahWzTUlS2Hw5m2ds5l\nPXOThRXR1Ea+hoEQcQjS4EtqEkqJE2KGvp849dLRKmOZ3cxxGHnYn/jn774jY/jk2VPGYWCeHLlW\ngv3buuxBzKWQlzauTGH5AqtckuNz8dm5hDAIDKRUxuqKyla0TYu1mslakZwfIz7MVJXl6mpHbSti\n8BzdCEowc5UVsxf7X3JCa+mgU0pYW4NaUDdNyak9W+9yUVdTune5yc76o0KfzIWZQ/wII5GYgydG\nkcRXBq6bBX/1mz9jWRni4z37w4AvC9bYtkL1nAMhehpjmOZIPzkm72XHWrecbmsmlRgjTP2B9dNn\nfPXnf8G//x//B0Y3cNi/JXWGk1Pcu8R7N5Ay7EzLUhvM7acsP/sNz5/9ihyl+YnTyLvf/S2jh2nK\nPEzv2Y+ehMLWNdM4cjgdua0XIhzLkkBEzrhx4sP9A9NwIqd/RRL9/y38iPGSO6jUxw22DhmTxVhG\n1RW2qajqispUmGONsQaVILmA9okqQlffUOklWltyDIX77bFWFlRZq0vnkc9GKlmJAY2RmKtzxNMl\nK684Ec7OS0EPQWh7OsPsCDEy95DPVQAAIABJREFUDjBNM1M/MvQDYz8wnAb6fuDu2PO+n3iYAysX\n+Xyz489f/YrPdjtuliuWbUdV14LJG01UDd4GfBOJS/HwSAqq2rINmvDYg+ZSrJOxJJ2LZWe6jMda\nn8OH5fmkGMlZHrsLM9758ulw88Q09IzDgPdeVIWVJWSYgoRU+BDxQWiK3kdG55lSpFks2V1d8cUX\nX/HJJ5/QtQ0/fvdHjo+P4q2sFdE7XMpYram1dMVV1iQiy7Zm9/KKxbojRce7t2+5fXpD09ZsNwuc\nCyKs0YquK3sUMjmXA4yMd56goqg5nS9FOpeD1wsenjM0NVVVim5hj6jCfLFGEbxnnOR1ySHy9MUt\nNzdbdpu1ONmVlPfZR9BBQqbHWWif1lBXVXGm4+Jn73xgGCT8V4amCApsZfGH0wXjD8FTGyONRxYK\npPOhwH0JHyLHfub+4cDV5sCT7YYUpFvzIWBqysErz8laMWQS9mHpvIsoLJfKmCm+JRSBTxb8POVC\n4zWZphWHwBgDbbNg0S5Ydkv2+/e4eWL/cAcoKlvTLTs0Vq4R57B1jVKZEBzORaq6ZrFcYo0kHn20\n2C2DOKXxPEMIhU6cz5xJpFtXpMKSEWwfpMinKEyzHDw+waA1+3bBk+cvOVnF7378CaMiV2LGw+9+\nuuNhmMBoPnEwuMT3jwN3YyAkha4TaXhP0AodFKejZ/ukorENb396yzQ84Ib31LvMu3zgh6onMjEM\nni9Y8sX1Detmia4aTjpdmGQ5ah7GwLvi839/GphCxDYNzjuGkNgPjm0s06QqYrhCiQTYbLd89urV\nn6ypv0gh/4fqgE5iSKV/RsTXBjjzS70V2aq31KYinXLB0mWzbJKizpov84obvaDKZwphIEVLKtLf\n88VL/jitaaXJuoyclAURBX4oiSPnaKUQU+H5RhRRcNqUcGWpOZXPYRjph4l+mHicPb0PEDMtnhdY\n/ovVDU8WaxZ1g8VgA+icUFHCiEMyxKxQpozFZ/xwiKS7AzMRaoOxFbWxMhXkwl8vS8ysRF6ssviM\nnEU1stgVS1nvBBef5olxGpndTExRDL0qi0qJOaifvQaRcfYMsxcoC8t6e82Ll59yc3NL9I539+95\n/d13jMcjC2O5XSx4slizaVq0glYbGi2pPYGI2lZUL3ZEo9CVIkWHnyc5WLW+5BJaLSZQ5W1EK83s\nAsM4MU1zWaAphmG8mDzNhZIYSzyf80FS6fW5MChUyfY0Rn6X94KZrtZLVquFfK4XciAV2mPOgtEf\njwOVNRgty1RrzqwRyk5FhDHxbIYVErOL5WcVUy+tqKwp1seyMG/aGj1MpanQLBcdm/WSp7fX3F5v\nWHY10TlSdKRCO73gIkghPFPt1aXDFZz1PL2lkm9JBqVk6tNZE1XhcoM0xbqI3oRciNWaqtLi6Okd\n/WkvpmZNgzWZUKDHrBRt7ogxMI69hEerBTk2VE1H2zQ0bUtVN1RGJiql9c8KeHHs/H8UchHLnQv6\n+UYWeuWZrpe1EBmmkHiYYFVtUFvQvmZdJTY1NJVm5cGfRuYQ6LPhfg7cTYE3vWeOgIno+b2EdeSE\nHwNx3+O+f837ydNkT4ujOVmussPHjE8GcwrMeiLVEX1/JDR3vNFGGsmYSC7w3fvXvHv7luF4zxwj\ntm4wlWKaBsZxZJhnbK1ZLRu2ywaVBWJcbdcsdi3Pnj1js978yZr6ixTyd60riw0ZnxVcusgYUknu\ndnICZyBI15VTpq4NRmsqZWio2GjPRiVsLEnf2RSjKyM8WT6q20rZlmBebcpFLq50OaWLh0RMwhxJ\nWYqZ95F5luCI4DzzNHE69kzTyDzNBD9zGh2naeY4zMTCDmi0YqUU66xZBnCHgWgmefwFU8OoIqgo\nWGLBW42WlJE4JsIRjq5H75a02xWtFYochY+cy5PLWRwApUMXXvG5U/JuLoV8Zp6EHTHOMy54IFNX\nUjRT8fsW0ZC8F/3o6GcvsXe2YbO54vrqhuQd3//he97+8APzqadRmieLJX92+5Rvnz7l+WoNOVJr\nI1054FXksFTcPak4uJmkMm1TEYJnHAQumCZ3EfboopY0RsQRQ5joT4OYTBUvmf1hkO64toQCh3kf\nLkstOQSMZGFWghM3TXVZyPkQaeqKZ8+vWa8WkivZNWgkxXyaRE4eQmD/OLHbrlCVHBq2OJNpJQKf\naXI4F6hqcdebJ8cwzufRE6Wg6xqaukIbhZsdOWXRPgwz1RwwJnG9W/L86TWvPnnBi2fPWDZL/DhA\ndBcipCp0WK2Ls6bRxZpB/FQkGgxALJuJ56slX+h/F2k6cq/lYmEcY5AJFpn0qrrBVg2gmMZe/qzB\nnTKHhw9kYLHZ4qJjnkaOpwPL9QajYbaW5XJD07QslxK+ce7MBQ46J+/oy6GdOGPi55MnI1ayUszP\n8npZAalCl3SElHgYHWNV0y5e8OTrVzxbJK7qwNI4Fi8G9seex/2R+4cDMR1gjEgUaakB0yDMngy1\n0uiHPf4ffsfwwxs2yzVPlkvWHxqWZD6jIumavR/JNjJwovI/Mp0m3vWPeKsJWZhMP/z0Bx7f/Egc\nB+r1hm5ZQ0rs33riOBDDTNMZdtuOm3WHjgmjDZvrHbvdkt169a+LtaIoLAwofuDqX9hvogXTlM5A\nTmy7qJE3NRQbyZa2WqO7ikjCTQ6VwFQyVKachE1Q8L8CuAkWf7l2S/VDKInenbtWh3Mz0zwzDCOn\n00Dfj8yzo+97xnHEu8DsPL1zsrTwAuucDfjP2N7rGHB33/P9aS/jbzGEqpQqLJjCdVYigba6BA+U\nZBmjFLrSxF3Hi1+94tOvP2fVLshKi4+HymXSKDBRlFs4FTFMDPK8/DwVps7MOA2M84yPgjde6HlK\nyQ4hBEKQAud8ZPIOYqRVmppAfHzPmzDhhoE0Dqx85MvVlq+vbvj65gmf396wWXQ0tVxepgi3cop4\nnVBN5MEmqpQkYzHLxR6CJ8+O2UeUghCDFFStSGlG5cw8zWgi60WNrazkqnrpwMlRlLxal/TxJNeV\nuKLhvSMlQ1VXDOPM4+HEw/7E6TTCaoFGOuXaaowSf/dMpqosdS0yaWfB6Fi674j3SpacujQIxUog\nBpHb17WmqpdFrxBoNi3BJ5yPrHXLqDWjmpmmmboybNcLurbiyc2W3WZBjp4//tPfY5xilStutjds\nujVD1dEtljRNh62sQGkFPpTutTwmXZaOUQ54rTRK21LEucAuGSVJSkhDFIotrLz2gXmeUFpSjiCR\n3MA4HRmdI6RI1y5oVeZ4f4dzM1orhv17NInNZoe9HDbmow0usqxXZ9YNssPI5+3m5RgWuEHOQl1q\nSMaajCERdcKrhNJW3DpTIObI6BVjyAyjJ24NT54tWXQdL26vSTEzB89pmtj3Ax8eB/anmX6Qe985\nR5g9KmSe1C3PmgUbW9NqS6W0XG+UCLgMVW5lLfc+kPcPVK97bv/pDUkLTz4B2w8TY+5wRtPUG3Rl\n8d6jdEMyDY1JVKcZ93hiPA4SwB4j7njkP/3ubzE607QNr/7D//Kf1dRfpJBPcyiFXN4oazUoU8aq\nsmHXuaRmFPy6dMhn0QM6Y4t0T1zzvEhus5EcPZKEJiQZLy84ec6X7jcn4YLHwlBxs7t0qv0wcjwN\nHI49x8OJ02lgGEdOfc84SmDCFCKjj/TeiTQ9Z3QSr4xz/z/mzNt0EiFKwQXNBR88S4XPCehcDKP+\nxdeNJt9VfKNBLxbc7K7KLG0uhVxlgVQSRZ1Zxu4UxcMjeI+bZcHpnMjyZXzVxevCEApzRyCBeNk3\nZO9RQZgjJiWm/SP+dCLME2tl2DUtz+uWK2OpY2Q8nfDzWLouXZ5HOWCt4thpZqPxOREVqKiorBSN\nrBEKFhTutGzzYwxIJF9mtaipqhqlFS4mmtrgXElxUeZiP2wqXbBwczmzswKtIrMPTGWR7cruYJ5F\nWxBKdN80O5yXYICmsQVrr8rjEN742VVSK6F9ai2huuMUZeGnoFtUBG/w3hBzYsqeFBOmrulPI30/\nMhRxUNNYnj7ZcnO1pqkqXO/w93vaGZ4vdjxZRWYyo5IDxlZFXIcUcYHkfsbFjvEjc0SXkUCd2wy5\nTKWzzx8X5arAM1kVxbLcI03bsd1ek/zA3B+Y+z1uFIViUhCOlvH0SIyRumk5zQPKVizHgW2QoAtR\nRhfYJAusdF6WXtgu56kBPuKhSg4nuTIiSgWUikAEEgFfrByQ1PlyqGmVeRgdral5cVNz3UInwzop\nZ7arjtvtimcbyZmd5kCM0swFJ8ZnC12xVBYdIM6B6AIh5sugkDJopFmR69WDC9h+vNSBjMLGRNA1\nsTLYKIdZSIq4uuaGmkNw7OoNt0eP/e4tM78TYdDdHad//idGL9g+/+E/r6m/jGnW4GWjXoJL69pA\nVgLwl8Xd2WQoxYxS4nuSknxdk6hUROcgaRzF8IqymMpEMppzJJPYKX0MjEhnm9okeZtntdc0TYzD\nxGkYOfQD+1PP/iDCntOppx9GhnFimGemEBiDJHfLtr9s7ikLnNIlZyCkxIC7PH/FR3yeTDFJKh0K\nZUop3ytmbUQUc1Ox3mz4s6+/Oo8yclOeu/JcmDdZkr9zkuy/lGNRkEnRkkxQeSRnJZ02Iu2OOeOT\n8NpDoUHpGDFB7HcTMM0CjRkFtmlpEbz/w/HAw/GAVhR4SCwSKlWwW6uxtiLtOmZ2uNZIyHLO1DXU\nxQzLWDGTuiwKUyIljzFCBayrCoXGR6Fknt0tU+FGCyxQmCy1KESt0cXgMkl+KQU6ujCVPP04Mo4j\n4yj0wlM/iy2uNiy6quDhhhQj1la0VS0wkIK20cJmMRU5wzzri3tjU2nayuK9YZgdXscLA2qeHY/7\nE/0o3OtFV/PkZs16vSTHzHycWQfFK1Xx14stCsPbEPjBevEoM6o0LOp8cV0Ku0BswkGXnYAlY37W\n9V7KebkWJGfSWkMI51zKdGFKdO2Crm6ojeHh/WtUiDBN1ESa6FH9EROF/bQgMYSAGweGwyNuc4Wf\n1/jWU1XVx2E4g3Db5T69UGkLvn9mYgkbp2DkeCRKL1xgwJxDmb6NTKtZY5Sm0oZHn/kwJr47Qq0S\n1opqOUd5f2yCdVWxUJpQGbSqyKmVfrHpQFlSAjd6xuNE7B1qiiKoSx+9m+SxFxQgy1JWnzvIJPe5\nNVZ8mryEvDcafrW75ZvtEyKJaDIMGfPPPzE/DESrseNI8+YD0zQw539FrJUz3q0U1FVFiqJumzmv\nbvIF9sjp44kslCpdyqBmaVtqKzeY1vpfuL3JBRhK4s85lfBnGPLFn9sz+6IYHEb608ixFPHDUT7H\nkj9JiNLZeoEeMsIWyNpgs3iNZF08KJT6GRU2gwaTy2Cozvt6eWL6wii4/A/y7XJRC91RMR563ry7\n49SfWG86dNUUuEguplw68XTm7yZRbqaz4Kh4YEcfJWkmJHFMPI+7UUIcQjz7YchzOS+lP/6DKAEz\n3KWBBzfxu9Oec4LMRxl28YBBFWaCfO3q6TVfX3UsF0sZwecRaxNWN8V0qjBQnBeYBTBWeNDBJ3IM\nNI3YeaaYmefIaRBsXGmFcxJmrbQqDKRYsko1xsr+oaktbSMF/lxUYhbF5/E04aMkKymlaVrxgQlB\nFr85I/FoTm4q29iSdK7KoZAYRk/fSxRf29a0jbBb6sagVC3mTP100VOc+p6r3ZqbqxXPn+5ompoU\nEq3S3ISGL0LL59sn3FvLnbVoXRcaXuEc52IHq9WlA5eJQO6lrHSRfReoUdpdztmR5QoqC1M5sLwX\nwuTZy8e5Ga0Ui+WGuul4en2LenzH0zixSIGUM6Pz5aCEu0VDnzJp3jM+vEEZQzaSx1lXzeVaEfg7\nFSqwfFymZmSS0BdrunMnnlBoSUFCJgmyJicwJBKalA0+WhbNkpwCr989sjkEsJFOJ3ldJPmYnOHu\nzQd++uFHBu+wBpZtzXa3Zble0S4WMgUuLW1j0C7je4+fPFmy4EozlcvjkJtXXw4r+Z7KwtLhYiue\nIRWYq3DOswcVAio8Qs50MfBKLYh18y+EfT//+EUK+ZlSppRgktp8FNiccTCltYzK53V6gbmlW4dG\nWzbtkq5q5ITPjUAWuqjbUiapJAXnXHz4SBGLRcgze880z4zjRN8PnPqe42nk1A/0w4SbXUmWT3jv\nxTe6SL1V2V6lgsnqpGU5pz525ufiBhSbWTh7ap9rueVj0T935qVhvpR2hQQtHI9H9ocDm6s1urHS\n/atcRmEuJmBkOfGJHxN2ZBo5L5EowiYpQLkcbKFQ9FIJ4DBKUV3Gw/N78PHQySmJFSuhNIXlYCpP\nT+Vzp/jx+YaD5fphz+Kqo17UEiOmIFGgFMDNjtOhL9Q6SRIPdYU1lqrKVE198ctxzl8gkm5RY6wG\nn5hLw5CzFKcmW6osDJZU3sOzb4hw1oVt4pyXsGwt6eXp7EWfFd4HjLES4edl+Y4SplMqzYlYIcjr\nOTuHORi6tqauLblAC1rBMIzEGEX8tV1yc7VivWyJzuMQ1tJi1RBrRx8CBz/zUFcM1mDK/ZDKNKqN\nvvQH+dLqlseVz94rH03cKIvOmBQxCPc9ZURv4F3ZO3gRl1lNVVtSUTfXdS07gBCxMfLpas2tlSJ0\n/n0pR07eM4XARGbfdYzANI0YbYhdomlahCp9tgbIF2HT5Tmcl58lIBk8Wke0LjYEhVkWgyrXsewE\nzq9FQhfbBMf7ceC21jQqolOQFZoxoCu5Tx9mulGjUoXWUCWDUpHoZnwPuYmgxdPcnAOYs/oYvnY+\nHM+NqIJzIDSldp1BI3Xu1MrfvTRsZbLXCNvFpIQJmRYx0Pp/qeO/TCFfr2T7LQUtXxJgYhnfdaE/\nxeKjrbQY6OQyRhmjabRl1S5oqobKNtIFlp+lypgD6sI5PdP0zi6FIQgX9yxFHoeJfhg4DSP9NDGM\nM+5MqyojsnhGS8q93IzSaSctyzpNpo7y284F+4KFlz9fZMiIbNlqxbqqqfQ5dEI6w5AvQIsc6EqW\nwTZm+sOJYRypl624Dp4LueICGamUSjp4hFRw0jP6KL+80DBFtOGjLDbloDr/TkGrKn023CqF/Nw5\n5Vzw1oJply9r1CUI+OPlKnNUypngHI8fHnj2yTV2u5Bu1cqkFYof/DjMHA998aDRKK8JAeqawtYR\n2MV7Rwxe5PIK+VkKxpQZhlkOXaWo66o0A1JIQzFGk4M/E0NkHJ0UjCR00+VyUSiK8eIprjIFFhGm\nkUAbmXEWlpUs51Vhi4jD4eEw4nykbS211VSmIsXI6dTjvaNpDE/bHTe7FYumEopjU9N2Latly71y\nDJMjTIGp/pShtaALhJakEColS/aU1McpthwmoQQAn31dQnlNUhLGVoqycE4548Msdro5gUqixDSW\nurIEFS9c7n5/j/vwmuX4SLv+lKtuUUI1SnhzaSxyjvic+b7q+FHXvAuesT/JfW4kuFxS6mVq1MUq\nN1MaDbQU7BDJJTRam4wxJUO2RA+m9BFCDSlhlUHpSMyBlGK5z2ceQ8MmRJbjQDa5CAYNKinaBC/a\nK7knKAeiV2QP/jSTbOCSG2v0Rb+h4DLxQzGkK/Xngi6c6Tjly+pyI8qfk/pYyA1nwRNyaCjK1/K/\nmFp+/vGLFPJzQE8qnh+6qPWEF1qw8ZQvRePMbCGXFBgouXiVqMMqg9Y1mlzM7zUI8CEXLGdRhHhM\nhIIBx7MpVjHG8iHgUyCk8HG0y+fOKjI6Mc3Xpd00ZZHn4fLm1YihEKr8vTNE8TNoQSP83KWxPO2W\n/M2nX3KzXAsUUBaTwXtClmITUyRpRQCaVcdyiqRBDprGWJnfyrWSigxcpVxglVBuglT48qX4ao3K\nsuz1xXN9nGbmYlugS+7gmQqZy2t6wfYRDPC8OMvIBSdd+BkOKhNWGd0F78/gA4f7A6dDz2LdUVnZ\nZ5xHaTfNBC9udG1XFxbK2YNDQZab23vh9Wst3u5KK9pGRCfeRx4eezJQVQK95SRsDaN14XqXkN+c\n8bNn/3givLiiqgytqWgaK3aiJYtTa0vXSWJ9TPIktdK4KdD3E5CxxmK0ZXayR+ha8cCmQHralIWn\n88xFPRyihIuI/YMFI0KjpjJonRkt/PN05H99/QNfLhZc1f83c2/SZEmSXOt9Nrj7HWLKoaq6qyd0\nAyBAEQIrCjfkgiLkH+OPo3DNDcnH9yAYiEYPVVmZGcO97m6DcqFq5h7VjbdN3JKozIy44dcHMx2O\nHj0aCFE45YQLowY6VUfI5VzIqRl4R+uLMqRFax9ZNWBa1uVo3y8sa7LsQ+G16Wj87xhZl0WHb9fK\nH377D7jnD7y7P/GSr3x3FWpKqqDoPFryteu2zG6cBobo1QAXlUAOjp4NiggpJ0pdTKBOeeYIWrSt\nBcj4oI5LaqZaDaia/HQV0ajZFbxPEGaGcCDEO47upAyX8qRwiGhDmRNU7hpt4W/yv9XskN4gnV0r\nJEq/Nt0HTdWxoyj7BqwWmTs2uNE3Q+0M+tX+D2XxaPm2Zb06KxdCNfEz1zGZV68vYsjvTw/kkkh5\npfRmAGe4kTUI+dC7GatFGFU8xMbuMBW1RmnyQlNXa3pqDYrKLW0Tw5GrCQNllacttSBO0+8hRpMi\nzcZrdQbDWLEVjVIF9ZKDbZaA02kk3c5tkIrr37cJPWbM305n/ubhG/7uJ7/k/d29yfpWalbjW4pq\noFcEiUYviw7nRiQV0jozDJPi8naxYgMl2tfmuGpP+bWDtRorpWihd1Ud71wrzntTxdN7HdAF+eO0\nrkIvltrSZnSeWz9wiqoh0tN6gQwUKkRPLI71aebp8cLxPHEImp1o16KOK2s49zgOWji1NnTv9DrX\nlHmZV67zqnBbUMzbu0iaBiuOKR1wHALHw8D5NBGcRv/DEFpoRCmFl5eZWpUNcpgmfHDEQTteY6sj\nGKsoeKE41fbRLFE1pEWcZnEGHYYQlAZpDjHnyjwvfH56YU3aLJRSoo6By+VC9I7jYbQ1rM6tRM/F\nV/756SP3lxem5Z4Dkcv8TBUYYjSxMFPqbOqHJrerRe6Fdbmano/q7OSS1PGL6RDVSq4gBEIcmaYz\nN+WWko4k77jMF+bLM+vLZ37/3b9Sro+k5cgHawTD1k5wOsi452oeyukOefMN/t1PmcYjSCWvCyWt\nXS4A3AYNOo/zeQvgajPk+qV896R/igU7jdUWIkgGt4APTKNGyWldOBwn7lLhbl6ITmtEwXsqClO2\nPqRmO3xb306NdePuux510zBUgFd7xKyWWrR2mA6Sq7xDFmG1Kl4wWKx6lRtuv12ksloEvw+k9q8v\nYsjf3b/VCuxy0cjVaHa4VoGWbkw0hd60lUtVRcNpUB2NEExzWwGpHaRhXY8i1AzeugUFsYHKGpWU\nqhGqj8ovPtRKLkJaCmtIlq5qyo9sBrmiEgMAo93INsigIeSCFfncRjcMOAKe6D1fn27523c/5Rdv\nvuLu5qyZh1gEWxXjFucgeFzUbZEpfJYXPubCvC6MTtkhOp9xA9qdYcMVyLYYqiWAipdqZLYmpeIt\nlnIL9Gk7Lbr2ssFBQIdW2v9brcDhOPrIz6YbfnFzy8N0IElTAlTpgUyleCgxsiRhvSz4KeBSUG13\nUTiiGFQSgk5NnwZNw4s5p1oLyRzRvCQtyFmDUIxB54fGYHrnyow6HQdORzWSayl9ZqTSW4U1ZcPT\nlbaYS4bqGayBRdUDrfsQpfm9vCSKCMMYOBwipUBazBC5YLBGCyA06lXKoQ7dWFNhXlZyDXj3rJFn\nOVNzNRropFG1E5a0cLm+GM585uXlkZILh+mGuQ0nSasV+rdBJ+vywvXyxPX6zLrOrHlhTWkz/iZt\nUUQoeIobidOJ27v35LKSpxO+Fl4uTzw9fuD54x/49PgDyzLz4emRgNV/eoGbPjAZNHsOxxPvrwvf\nhpGH+3c40Cy4qJMHxberRdm+6Rqhz1qpi/ql/85W5FWacarZnk9AXKC6CC7gfOR00Ole83rl4B8Y\nrzPp8yfGWohOobJo6ouaabseXHZJgaYXZIGikwab6v/6gAy2clDbLw1ObVh4p+K0NAkV9XPeDIDO\np8M5p7WYWjqdkrrzFLvXFzHkb89H5gDrGBnjwDTp1PFqOaAYQ6AVPvZ0qmxMjLvpyHGy4bA+6NR4\nU71rrfnGnwKnWJhiii1ttEHKwREZwIfOe86lMsfFFAa3G9gifbHF2rIuD0S7/y0Kxx763rMre0PT\n8fs48ovbB/7q/U+ZWjW6NGejhsVVs+oO3AqYENYkEZ+FkhJrjIzeEQhKw7RAwblgoXTAFd+V1MRJ\nj2B040J1Cge5OKiTIfcGDdd6utF72KCiBqm0zdswvEOI/PJ8x//47a/5yzfvSR2iUkfSxpwlB//n\n6cpvj5V1iLw8Xzv0kNaVEDy35yNvTPNEO24NbgueVDIxeG5vTuiQhsTlmonDyvk0EqM6y8vlQkor\n9zeq5y5VWGvh8nLlel2JTQc+hD46r+TK9XLh5boSolLPpuNEHMyRhwZHVDPCopTJUjgdDtzdnljX\nmWVxXK/Cslaeni+UWjlMI6WKdaIqe2RZM/O6giiN9TBEi0IVSnz6fOHlaabmwtPTJz6dz3gPKa8K\nLy2JvGbWdSYtL+R1pqwX6vqC1AWpGUflNnrC6HHuQK4Ta5pY1oWXeeb5uujA5LTwtDwzP37ku08f\nWb658PZ8j1sSl6cPXJ4/sl4fGbLK5xbRkAWp9NZ5HBltPlI2kFDTquoupZK//pZxOiEu4qczISod\nMS8zaX0hrTo3dE0m8FYS1KIt69TefNW455pNFA3AxFoGxzPDdMPhcMt688A0nRjHA0sW/vOnD3z/\nL/+J+XqBWszp+B5QqmFXaYIGLUan6ymaqqc29XmiMYWi8xvl1jn7suzEh97o581JDF7pkZrM6jGC\n7cMaHHlwel5Yo6A0ds9/IEN+fzpxnkblKHcsNmzpiTXqtGkwTcVP8XIHtXIKA2OMBqu0KElx3Iba\nKuZqRQL7EnMW3rWOPE8Gx8tHAAAgAElEQVQIEKwjs+RCdL6zgxqNi8YXdZvnLb7BC2as2Qy52321\nBeLNtEfn+OXtW355/563N7ea1OWq+ulGoWz4IkjnqkrWKFWdhi42sHKoQ52enrQukOrAInbtqNMC\nkAteo/wqhKiLsHrfO15T0YYX77bGEtfyzX5xbvu7nUXLVC4lE53nbjj0Aqg6AisHOShO+NcDfBpX\nstOuzlwqoUZSysQ4cj4fGMdALlXb3HGEIRAGzzIr/x9QHBpYV4PAShtgECybkw6RrasqDOai93Ya\nIuMQkDpyPJwYzIiWZA0yzlFEtWx0iLVQXNUuTiz1LY0pFKij9Ait1bumaaBKweXMOAbiNHCcRoYY\nefz8zKdcmFftTKZq4XWIURvcCjw/vvDp4xOUwvXyQk4rh+kAOEpOPM8L6fLC6AsPx8DN2xtOhwem\nwRFMuEm5/dYSL6rIua4rl/nK56cnfv/9D/z+u4/87vuPPM2rQjCCNrdIpqaZmmbIC1JyD0raWvVI\nQ0ZpHPVW83AI5Mry/MgPtZIuT5xu7jmcHzjevaMiLMsL1+cfoMxEJxyGwM0YGU+RYdLh4odx4DAN\njMPAMOjelyKWWSaeL1c+Pz7z/ccnfvfpMx8/fSC5gfu7t7y5f8/b+/e4deDz82d+//LM0+WZWpLi\n+bt6T7s2BybmZdfYDD7Wle1ag5/reuttr/emPnbj9doxmuE3Y79vAFQ6M4hXOxH2TgYth/2vf8am\nfhFDfj5M4A4AvaAI1pRiAWBjMHRjjt3QoLHfwceNP+68YVi1QwCNbymNdieNMLd5XbyNBhOnmGzJ\nLXDFMJ2tUsQ+2kbxKqet8MiebtjeslsUmBG3ItDBR/7i4T0/f3jHcZoMErHCk9sMplbU7YCm3obT\nrGNwqsWt/HldUd57461qIUctkac4FdvypajWdymEKhpFG0bkSrFiMETb/A0m2nBw+n1ojUp6jVpN\nd+gQ4u+WC5/XmTVn4mCDk83JGJxOcMI0DsSQ++AEbcNWxbchBqaDFvLyqhi+954pOrw45uuqhTmE\naVJpB+dyZ2kE76y9XGywcuY6q7OoIsyLdlcOURt5HJ7bmyPTELUDUoRDGIijGo0YNfVu9FWC3vcQ\nICehZqH6wJoKzqmU63Vema+LzhSNqrZ5nDQAqSrmw6jat6rgaIX1eVmJeMiV9TIzv8ykNeEqOrRj\nXVWnvk2kul6Y6gsP9wd+8dMHvvnJV7x7+8Dt7Zlh0EHUztazdjJX1qTiaS+XCz98/szDb3/P6HXQ\nxQ/XGbcmHQlXM6SVul4JUojek1ugY+vCAwMqO9EK6iqTYcGUMc4krVwfPzI/f+Z8/4b7d6pauaSF\n58tH8vKJ2+PA7e0N7+5vePvmnjf3d9ze33C+OXE+qR78NE2M46jNZTbhap4XPn165A9//I5/+Zd/\n4+Xyn/n99z/wh8uVp+sjOc2MUkk+8Pz4kSUnhVZL6XTZDnt3hLIFgN0s9f0tGE5Oy0GcBVObFWiq\nrs1BgJEeMKPcHYbbIvOdjQnNYRh7pzHy/rc/Y1O/iCH3ppfcIu1mzJvRaIyHtjAaXou01nPzUq0B\nyDUeOla4qf2zGk6uhqIVq6w46pWCRakb3gUbFCDtATdIAXMYJv1pDzlKM9gbz79dS4tX9FHA5ANv\nxgO/fPOedze3iBe8cY8EDB7ROMaZwJOzNLtJ17kAwQfGOOCHqPQ802xpTQdOtFlC703A+6gLv4oZ\nMwde8EXwxcaPBcihEr3rLf8aiLYiy8YcEbBIFYs8FMnJtfD9euXDcuE5LTxMN7hoKne0YpI6pBog\nu8qaM0NUIbQYPOfjgePxQPCBWvRab84Hk4v15Fq4zImXy4I44ZvTrTJLqvD0oqJV3jlyrSyp8Pyy\n8G+/+8S7h8J0GLjOV55fZi6XmbQqjBSMITIMnsNhIEZHKY7xcODu/qwc8qz3zlk3r/eOgw3CXpNq\naV8uVx4fX/De8cOHTzx+fuR8PnE4TpyOEw6vBeYlcZ0XqohpDEHK2lRTc8GliiyZuiSkVkK1mswy\nsz4/8fL5M2lZmecLuVz5m//mZ/zNr3/GL3/xU27ONxymA4NpsLRhKSXr/FlXE8UpNjwMkdPhwLuH\ne66XKz98/MzvH5+I14XJQfr8A09Pn5E1MQ6RMUSyC32/DDiig0MI3ISh7+WKKYmKTR5C+62L6BpZ\nL898co7leiHVBD7zy5++5a9//Ut+86tf8NX7d9zf3HA8TBp9R5VaiDYX1UfNMEtr0lsSx2HkOAzc\njBMfPj7yw+ML379ckGVhff7MxTmerjPr9QWXEpPz4GO/FvFWmpQt01X7sdELpXeh6j7wbLWyhug2\nS9J7LexbLcaiH1M6z1xsJoNDeenZstcoTuW+oTNg/tzrixjyXFQ03YnvxkekWpT7+ib0KJh2I0yy\nVbZb1rycxYa9mLwVlTcnEWIEHM7brMMiiGiKLlWdQLEKvkYU23k3LrXeVLEo0FIrMWhFNs/8urNR\nv27HAz+/f8c3b99xe3+rE+ezGL5Px7IbjAMC1e5TNT2VUPX3Qpu03Tw9vegisksVayXKYEG9Y6gg\nPuNK1TbrrEM2XDbpW+OfS61m0O2a6QgXDkxdwj7X3lMRllp5SonnosNrXQjdkDstX1HRTsNSdDHn\n0rRVhMNBO+3WZOeD9vGlWWVftWnJsNdaNNMZPOMEw6IFy1yajrp27ubqOge32ECQZANDkmlnzGHF\ngWr/4MDpGLeaBR8cQ7RRf6ZAp/UqVQc8jDosoZSKIzEvqashatu7p5g6Y9sDqVbwKgf7xqFCZmui\npIpfi47BKTZfFYUDy3zl6fs/8nsf+M145ptjJN8f+NU3b/nm3QPnw4HDoFG/KjMaR1kqBbd7hr5H\nj84pvHkYBm7Hkbsw8IxnFAjzrL9XCwUdZTcGnQvQnvn9MPKbmwf+/u03lg3rs6xSe3G6WG1krYV/\nffrIv8wv/OHlCVkWpmPk3Vf3/Hf/7V/zV7/+C7795mtub85MLZOx7KoFb723wHS6a6kEX0wfPnKY\nRm6PR+6nibODqWbq9ZnPOWlzX9bM+26clPXeWHFWw5EWXLI15xVROLBBtFms7mYbI7aubdsRrh2n\nWbItzuzfU4riRiIQt7UKeZq8tzPo53W28OPXl+GRWyODc9Lb0/WaXsMYYoUUt4u2e7TsVKPjFZzh\n9p+xpXablVMD7k2kC9HSW2v2AHYc0p0Rt/P7sTNsGKp3ruuqt8yqwxJseJnHcT+d+NWbr3hzd8fh\neKRJjnaBFSXgamenSdH2eYuWtjpXdSE7W9RW7XbitntFM+qCl0p0il9nW3QSMuSC+KRG3KCVKrVL\nwGLRZzAHsJPz0EXmWk3iNayURXjOK0957VzzTuGyVd02djUM0NSONFPAmaphJqViXFu4zlrcq0Wd\nXvAqViQtUTXjpEJW1XBqXQM66b7JvDYp1Epes47/q8IyjuYcmkCbp1RYFoWIxjEwTANX42BLUWeD\noNHqOADCGj0l510ars9Yaiat4LwW1JOxZKZp5HQYGa6R68uV/Dzr/LFe/LbWbq+zYZ8/fcQtC3/3\n7lu+PX0F72/5+v6G8zThlfxMa9PX4EN2YwFlY4lY+UesBhK95xgHbkLgxnliBU/pxqfkBM6Gl/Tg\nUHg3Hvnb+/f8zz/9TWeLdVjFuoSb8ZpL5v/+/nfw/W/54+c/UNLK4fTAT9488Fe//gt++fNvub+9\nNdjQin1tn+3ID80JiWWyUqVPyhJ0sPI5Rs7OM0jFrYsWlIHoPFOI/MXNPbdh2Ay5VM0gWsRsQURy\nmlGkZsQRFqkULybJYQNxzLlJtz82Tg6rFLgGOTWkoEHAes+KCN7WXpWq+HqXyNhqfX/u9WVGvcVo\n4kXVlOO8yWu6zq7RYpL+o9HK2ny/UivVbRNDELHNYhGiNK2V2hdVFcPD7aY6722SeDWM2XeD2Xnt\n7dXhiq2A5XaC/Q1yAacRtWxmvNOVnGKIb49H/vLte07DoGPacukb1Rw0xamwky/VaE4eJ6Ffp4QC\nRNMv8Ua9e+1mdHFrU4WPDlxWZ1MKTgbNTpzyvJ1TrY5tzF2i5oSUQgNVwnZ3Xzmo/mnN69m3XtLK\n46xj4jwmHuTVoYmDxRXy5HCDZ6xVZRZMd9xhsBmOZU5crjoKL+dKThqVH44jx8PI8TDhiuqyXK4L\nl5dZT8M7psOkjKglMdjUnNaCH4JnjJGn9UpNNmFn0EaiyzUhwDRF0w8puJQ4ysjtMJCyUhWrwPWq\n7eLBOcbzgRgC06BT5J8fn7i8mAOIyn/POYPzrKlweb5SUsZ77Ui9OU2k04mP9Qcu6wurQWO6zjVz\ncQ5ySbxcXni5XfGD593Djc6rNQ52qdra3XU5dnWelt+XqqJhLevSmaMDYxwYnWcwJ7BFk94cqJIC\ndPi3w1V4N5346njD7XhUQ9ODIPlRGKmfKw+F316e+H8f/8hVhMNh4u7+jvPpqIJoTruYFRv+UQC1\n07KozXA3o9lZadrPcCJwcpGoaDNY1nxwka+GM//L17/mN+cHTj7YqEk9jlZs1G4UKgtVR79ZzJ5F\nuPrKEoTktZmn1Np7ClaprDVrw1c2fr6DFNQJ1Fq7jcpFZx8UUTkFrglJ2sCnjUDglWXZe0r+3OvL\nQCtV52amrBoWQ9A5gYGgKbFUYtA23VIL65x6ZyKWyk6+UbSaTKfFhN2ymle0RgPtmvP4KojpNGhA\nuUWM0sPpjRPrpCU7PZzsIlbbLd0VOzukYdHDzqjfDCNf3dzxkzfvdMqPnWsvhdgmc4AX3ztI7QN7\nVlCc4mXOuKbuTxyP/q9vwqCCQs5r0TO40qMGZccYV79op21KRQcxF+Uit0yjy4/urldPfIOD2rXM\nOXPJSTfP7l4iikXmIDBohHsW3++5946aYb6ufHp84bf/9kc+P15Y1sw2Y1IsAtbW8TbEu5iGzuF4\n4HA8EEalv01D5M3DmcM4aKTsPeuSeHm+cn2ekVI53hz4+u0tMWpAcXM+4XwgZ2G+XgnBVAFLVn/d\nWvutMxYR4jBzmEZ7r9YFUs48PQlpLca4iMp9nxPzdVEoxytu7rxQU6YsWvhUFshOu6ctByBL5bvl\nha/XK+8RGxierJM3U2OgFHWIVbbJVyoJrM+5NGNvhnMwQx5tOlCBThJoOkGbTda1M3jHV8cT7w9n\nomkOST9P2yV97arRe3+65a/v3/GH6yP/z/NHoqhD6Nmr99sXaObtWsa9pbyuBRBNzdTmATRDGZzW\nXVSD0/W91jquBxe4Gw68GQ8dcmohYXNCFZ0pnNF+DHqUrhH5Nm9YumPRWkAlWWG8IBQPc6gk1OFE\nNKhcqMxemCOsAW6eMsO1EpIQ8IQKLttz+1H9b//6Ioa8YWfZpFK1cAguJ5akQvXBDHkqmet87Xic\nA4ZhJOLJY9F5fbv0ZMNp2kNuF27Yk7PYveVANNzKjPMeBmALAKDZVDO6TkfVqQ7j/h1qsBqU0qlL\nwLvDmW9u7nlzc0s0qKRhMZYoquETS10t6sdh+Lj+szoQ45Rt9YHdVbZ/bqsfnHXB1kjEICTDers2\nex9PVqw7sHZxKbcz4vvXnsnTrtPhWGtlKcVgJW9Ft+bS9BdCFYai0FmMo06Uj4G8FtxceF4y5Xlm\n+fTMy7yQcumiTGpMXWeSNMcWQ+B4c+J4PjEeB5Y54ZyqHXoHq+lyXC8LL09X1uuCi4Gb04Fvv77n\nMCkue3tzolRR5slSqFX1WXTkn1L5vOiftUAqxTpMHePYojvIRbhcZ3IuBilWLpeFy2Uh50qMg/Ld\nl4VShHyZyfOqBfjt1u7uGm2l8P184fv5wi9S5mysq1qKNtWUaDNbZYMMqnRnV1oNyAxnjJFhGJjG\nkRAizrpfi0XyrRGuvURQnaA48JPTHe+O583h9GxNd1VjUulyF87jgd/cveOaV661svioMFIPunyn\n3OmxdmGT7U07pB63N0AZo6hKz2SV1x16w2HLJmsVkq2bIQxbUNbOW5ozarpBdBsEBo24Fi7Znmtp\nq51flRb4CdXD4oXsFBOI4qhOmENljsLLCHMU3hwqxxlicspXb4bc6nebjs7r15eZEGTpfnAO8Zlc\nK/NyYVlnXq5Xlpxw1tpcLHI/jtr8UxRcp6TM+/HMg4jCIj4YFrdJuFpFjIaTbuwYnYRSZIermTGv\nbpPQbM6gF1YN627uIkpja0iTO9kiJ4tAvNHuojh+fvOGb28fOAyKpTaJQ+ddD7qdtfsrRLsvhKh0\nZ1sU4u3nu4Xd7+/uXKtz2g3rHb6qbkiVQHVlc1Syda/mlCkpW4RT+7CCzT/snIbbvqMORE15k/+v\nCM4H/XJOL84251Ac8dOC9xfKADdvJh5ON9zfnUnXxNWdeB/OfH048d33H/njh498fH7meV64JhXW\narRSnNPUNCXSvPLyclEZgGkk4zmeTjw/zXi2cWwvLwvzRWVmxzhyd3Pk26/eKAtpiAxxIKLMlBAw\n+Vo1glhjCh5Oh0ExcZsmpN2bmlFU06yZ58TxODKOA7VUliXr1Bop3A6R6D1lWbk+L+TLQk3VMhmv\nNaTdy+8i4k/rzPfXC4/Lwp1RdbtRM5hFG9eEUqBmjcSbgW+ReIg6oGIYFeePvZbgunFWiHCTJ0a0\n+etnp3t+efeGd6cbo8u2NbFz2Q4LqCzbDIGf3bzhFEZSqfxzXBRiLJuh0jXsLQs0MgTSjykti6wb\npNLXQ98HKn2sX7rYNwkPIYvq73vXRibuAx+29MfO2xktlbZv9Jv9384utuH0fh/3VBjrxnfRWFO4\nEWVvLa5ypTBmiC4QQySKDspgkN6Y+B9KxvYffv//dYW/UssrjzqnZFGP6w8JdB0Erx19UitD9Sy3\na48Y6Q/B4wLKjTZMbM8H91Z42Tzna/3uWrapNNJStl6wME9t0UkbCOF71GBwCnSoAGeUw2HiL95+\nxTe3dyqq0zpLewzLzt3bwyrSo4F+MQ4ksH2fbQHtX3uopcFEEsBXTWNbtFTRaC0bLVFFl0xoq0UB\n0rbQ68/Yn7Lij66LEO0doEiLcHQjBIGTi/yKM8dp4vFt5M3btx0nlTdKC82pMs9Xnl+e+fT0xA+f\nPvPh42e+//iZ7z5+4vPTC0+XmbUUUqlkVylol19KmUvKZDxpLfzLv3iGqJOCStUCpxgjRIo6Led0\n7qUPoTePOQfjqEYueKXAzSkpnmk3IAZPjEpbHKNGf3nQoRaHaeRwzByPB8Zx5PHzC8+XhcfLjHMq\nsjWFoCqVKeNSsUxPX15cd6QNL273POXMdV25LKs1JG0pfhueUp0z7txrBtZ+XXgfCSESw0CMA0MI\njDaNpxFzdRThxn8WHAcfeT+duBkmBh87NKnJrrQN9ipTbhQ7HwK3hyN///XPecjPfAyBYFBeo+A2\nWGmfOetFaqS0D856kCaitSeTb1b1wF2mYNcgaESesUDQ2rS1DtdulNuyYrtfTevEIUbL1XPq261n\n2LuH2M69w1Ptt2w8YAUnjqhVUNZBuI6Vu+wZqqbgzaH9yUO01xcx5L/94bue7lXD6Rz09vhiaVZT\nQAzeU4rRr6pqLZzjyJp1gECzamo4tXOtGfJ2N12tdEytpWZbmLmloLVY1KLt0c3Ti/BaC8Vtk31g\nD2m4DjO06PTG2vF//uYtb843XR1NP7riTNBYEMsgaCfVJWddC/W9R0I1SVb7nUYl65uGVw/ceYvw\ne5SxTcapVqTJJRtLJJNy2oYv19fRPtu63o6//7Jn2TSmpUdTbXkr9jvh+TqcGA+OHx4mHu4fuLk5\nMx4m/DDgw6ByprWwppXrcuXx8YkPP3zkj9994Hd/+I4/fPjIh0+PfHy58jIvXJfEmhNrcUhSFUkp\nmXUtfJczo0E3IUJeVqP22X2uUKrCDKUIl+uKiE6wGobANI6KxRs0k6sW1xtDBicEb0qNRTd5jJHD\nOPShE80hNicvxhAiFWrKkCqutNmfem/97pa3gKHdc29OqKzJ9krLPumGrUV+LXbZVmtrjAsQHDkM\nZswD0QUG5wHTjOmruXcT4BzcDBPfnu84DaPVDPSnsoMt95/ZtohuE88YB35x+5Yxjfxx0OK+5NIh\nBPF742z7JehnvzLgPVI14y9Ni7/i8URH76QUMDmTZoS3gKt9NWaV/ngDtcwWWzD348DJ3tPMQM+c\n2l+3bAI7/07/FIVafPFkX5l94VMoHKsn1rBBtzun9uPXFzHkS1L96GZAAHCqF9LT0yUZTUe7MFNM\n9Cnbxq7IWaNzbPG69nMRjVorXfGvifk02+5sobYoWrmiVnlOOj2+VGVIqMwkXWOlYYCbP8a+u1MM\ndFsU8+Zw4m/efcNXt3ccRp1s0zerCGSdWC4mWtWae0Tza42gvaYCEhwyeLBuybqP1Jxs0QxuJyvg\nTT1OedutiFmyDhHIedVhAmubWanwSsm1y7X269xxXVvDUHdg5qBwTusfVZXpRNTr5LqfwxqM9xuY\nxkHbx9sxa8X5jZUUQ2AaJ+7v4DBE3t6e+dk37/j46ZHvPnzin373B373xw98+PTI8+IJOeuzyJUo\nmZJVs3x2jtU5QtB2fSnqTr1preQKPldySTxfFGs+HiJv39yoUxFhXVXTo6rICKVUXi4zy2J88VDJ\nWVhzRsQzxIF1TTw/KWR2PBx4/8ZznEYu1yvFtFLKNVHXghToxXK7tb5FsU7zvxYBHoAjjiEZW6VF\nG4praaTnN8Pfraolr55G5RNCqfgQTS+k1XjsPcYi8kLvZhyc493xzF+9/wk349H2k9+smL23Z6oN\nqoSOhTer+W48MRzghwxSivHO7flXCFXwWWE5GezkK5ZF76PURkXUfSxV1Q1H7zh5z9FF7V1w2hk+\n+WByHKo2qAJxO1vZHe6PDJjb6nGO9vFm7o0m2EL0/e+6P/mL/rxlOMUJ2QnPZD5I4h0jEwEvbW+9\nzsT3ry8zs/Pp2Ta03UQzCC5YxTooV9UyDUSk67F47zViFGFeV1XsK9VInNAxqmZUMEYgdm+9Mhma\nJnrD2opBCjkbZchYGyXrbD+3u4N197Dd7v+2etnvmOAc9+OBn9++4eQD3vBqEVSh0KL/liyIE93M\nxpV23kFwHX900B0L0CPK/vkWvcgu+4At49gkC2p3piUVSsqkNZFTRrI6smrNOv3q3I/+zebM9GTa\n5twxDwyjxJKlRplkxwduaXTrpvWtgOUMu8/KohFzwCFEpnHk5nTUVNzBw82JHz4/84cfPvP94zMf\nn16QNSlc0Z6XRW3V7pkz2OJ0OnA+qWTEmjIpayZyPA2aDeZKSqoW+fT8wpqKKSxG5jmxrpllzVzm\nTPTWro9G22sp+Bh1UMRh5HBQnfExBobg+fThkfllxs0ZV7bEfYtezdCiioKIRpfHEPn7d9/w67df\n8028IVZsHbXFvYcH2DFfNhy7UUHbMxWbD1BtgXv7L7jA6FQkKtiiq1VIufDxeuXb0wPehd3cAFt3\nLZrehTrSskzZAsyRwEng6ZpgVnkDKYPeBxUwUhtRKpSAi64fv8GmPSMWqLmY5EZl9J6/e/sNv7l9\nw1eHG57nmSKVaYj85f1XvD2cTAPImYHm9ZruIfaPE1H3ygZ08Mbt1lrbe90l77Ltdp/sSM6+50xo\nrOaKy9rH0a23tM/509cXMeQq6B+Jpg+imHHDgcxgaRcAgmo+B9McaCyIKsKSdKJLf6DQPWHvdOiR\nwBapWsCivyZiE4M0FU/ryrqoQS+lsmYrrGnstn8U7NMvDCxxFpGIU+WX6D3nYeDt6Uw0aKg7haqL\nszVvqOqhnZg0B9QWjAmDmXBTu5J9pNOc3oaH6p/VGW2vmjFv3XY7ymFOmdUGbGi0binuj56d7ZXX\n39tRONt/wQeG0ETNmhYKjXRAX5KCFee2yrwzZ0OjzO1ggrY+vFfM+zgNvH244XScuLs5M00jIQad\nx3qdKW7r9m3nXUWsTrDVUNKqdMTLsnC5qsb53e2R82niMESOx4lSCpfrDDgOx5Hz6cDlZVaRq6Dz\nRKtDAwsnNts1Mx3GLqsbY8BVIcfAGCOuVOqSiUm5/PttqtG4OstTiLyfjhxC4BwGHsYD/8NXv+Sb\nN/dUP/Bcpe+Fvi5+/KR2B3f7SlyxwKcU8qrPH2ikPU4h8rPTLfdxZDI5gc/zhXMYlG1TW2bLbh2g\nYm/W5LftOjYLbqcX8EwVhpdEnnWoSh1HG6TgNPtsImTSIFN2meG2pkTEKLQqzRu941c3D/z9u2/5\n9uael3k2enPkbjx0mvOW/9ASBV2bbnsmr6Nh2f7oBd6doe2h+mtoxi6B5jL2z0iFszxHCdzmwJB3\ndanmbP8jGfLD8dA3o2/4rdkjnRRCl4XUdVFtYTQYRY1fzqtqE0tV5NUaJ7w4ak+5WqRXrHCqSJ+0\naKRNCkqZtCTSdSXNq/67FK4lc5VCQdAZ5G7zFeiDluC2CN9tugw4IThtPDlMA8WLMnKqdBU1h0a6\nFWs37/9BdnbNRXDVQ4DirYmn4Z+wbZFu8OxnIr2BoReOZWteaM6qNcksqyoKSik/EiyzyEGUBdPa\n5lvKr+/pCRG+CqP3TFEZGSGaIfeGu4oo/GpRlhT6OLValQGkFQ2btuTFJvxsDSK9cxflCx/HsTsO\nQViXhafPTyx+MywtImrDAdpGevr4SC1CDAPP61Uj++8fmSaNnqfgOE0T0xgZhsAwjpzOauRFhJvb\nEw9vbjWSxzLDKsoAKoW7mxPBO1KuxCwsS+Z6XViWFUlCLKrXsaXhzXU7om2M9+OB//79z/jp6czX\nxxveHW/42c0bZIA/1hcuWbpKZrtWPWBzYpXG/KBFzsa4kJK3fTCvGg1iDK0qvB0n/qef/Ipfnh94\nmA7gPP/w4d/4PF+JiEkiV6LftY05zEsqrCJ1a9jzrp2e5pdOPEGE6SVTLgt5XamHAzVGxFs2OsbN\nhAld+E5CoHSNIf2ckjPLmlQKG8cpjNwME6c4cjqPvHr6jlZSA5qa6c4Y1y2y3hMKpN3iVwZb9j/t\n64v2lv7vnfEWy2fw1lkAACAASURBVGydI4qOeXsrE+caOVdtZap+X3T9D2TIN5xbPX87tSrVKEem\nbl3qzgtaDGrVRk033RZ92gNpuJYTrw7AbW3aGvVWIx82I1ItFVNDdl0Tc1pYc1JYJUtnDmxx92bA\nGoShpMZNg7yd8eC9jg0LA37/0xa5eAcFnJgShoPOaHG+t+J3xxc2ZkiDjxqbRg+rmQwNXqmuZyet\nZbprXddKyjqzdF4WjcZyUV503unNtHTR2fX2hW13oLVJ23k4y0Sic0jOOjBi132qsgMOJxmXQao6\npyLakVilKrtIbCqSLfZ+vQ16sQfvfQCqOchNG7oNANDT3DoV63by6jQFyrry+OETWQpuXplMMlhq\nwQ9BtTVSYPUeHxYuTxc+RS13j+PAeBip4nBBHdfgvTW3CWMcqcAslWQMk5QLy7xSUrZntWUrsj83\ne6YVWFLm25s3/OruDYcQGWMgUTlIJOSqM1oblioKtThfejbUhpz09Wl7p0OLS2K5Lrru7fO9g2OM\nfHW64evzLXfjAXEQ/besRWdY3g6TkgOano6tzwYfqFF3qD5rM2R7GEkN1SEJy1xYlqQ1jH1maQGU\n7j39/jbowa6pquDYOidWo6julTu3AmWLbqXbxn2kK+xYKDsyf//9HkzbUWxziO1rkZalstnsbuzd\n3mMDikiYS8XhOIhptzRxQbcd5k/zYX19EUMevN/RDqWPVBPjiFsHgRVLXCdkChvJXumVzjCkxnzp\nT5o9jxrYIn6pvaouUjprIyX14vOiIkspZXLW83OihartLIyB0B2s0GKfBr20coizB1GlkkumVu1W\nq05ZOkHagnJgkWtf7N53wam2eASN0BvjxFuk0zVWWvTppOsz6OKhL6BGqyy12tzLxLKuWkBOWh/I\nBmvQLhFeLfUtNthFL93NoRS2oKPUNBrEUpVtUwlFh6Pk0NdCczDasauf1Oihrf28NbPox+o4Nf1n\n6Q7b1eZUWjFpe7Uuv3aE4BRXfXl8Vi+TCgcwjNUx2ZLUqUvq/FPKZMtOZj/rBkalmEMMDDYaLsTI\nYAXKYswp573Ox7wu1JRNTdF1jng3hn3N6USjP16fSbUy+sjNONHAPjXkovosLbCotdcPNBOySLwd\n3+5J10MpmbSuzNeZlHO/NzhH9JHTMHIaRo7DiDgdq9ece8m1r6vNVrZ1qDd6bwO3xbTtJYApCXFR\nGd9N492ep2tmjn4ddOOu/zVYZZlXmzJVtzXbo+wt0Gr3QKmEuwXSo2c7/b7Y3e4+7gz1Hn6xFdZf\n7vXx2jU7W9uvr8UkgUU7wttnb/6gwcN/+voihnwYwrbYEBtwG0jZbfoJTh9e8F4nrIsa8bXq4vTi\nGIvDF7FuNo1WN/zMKI1o6l2cp4qOEGsbvCsdlkLKqo3Q9BGSFQCt76PfyFbF7pi2YYDVFqazSSn6\ncJTXvJbE03Il1NCnjniJvevMOW2S8INSwRx0imIrcgoguQ2MzuQ8ILUSc8UZP3rD6qwM6TCmjesD\nXS3kV7y8t+RnlkWNeLJ/tzmpgDWl6L2te4MgG2NmF6Zot1yMTNOIG3SIhYh2jrrmBKvq5Uh1JhAl\nljlUpGSNmr0eCxFqacqHOuKtm/EWeTujEBZNrXNTb3R0XXLY76vNkDnnkFK5Xq6dPnm0n0/eczsM\nuBDAB2hG0YxccxzdueQKWVhctjmdmXyZbUiAPZvgyQLLywxr7jLI+5Q82MYWa0J5zol/eP6B//Lx\ne95PJ+6nA4I664nIkLIqSbaHZvdMKZQB19bVLirX5NbWb1Z8/HKdSVln2FbbZ+1ade3oeQZr8lJB\nMt/rGHo//S6woBvzboza03MbLdZXYQDCUnCzqRTW2rNThU2NrbUz6F3+2fZzWhPzZWZNybRhGklg\nK/KyHUEP0bIH+j82Y72d/u4vfdH3wGvvB/oP98GlrTWEHbRH7xQHqMHhWxmBRk+U7b7Jf7AW/ZRU\nhhSnIkkhRFsYXjWuRXHSGFXQH6ea1CLgciY7pT/FLKboBkjb0E55pGYUWrSsqZm3wcmNQ70ZxrIo\nRr4sqzXFFMM8LSJt5PGWRrleutm67fbGzHjyfyiP/B+//0f+6eUD7jjBNOLGgWkYGbxnCJ6b44Hj\nFDlMiqWPznOsnp+WIzc1MFXTXa9F9buPQl1HU1zUuKJx8QU1ks6ojBqROXyxKKDamDcraKY2szNl\nbQqqwlJMF9v2bQsCWlTUFtc+UqA3rmhkOfrA6OLWqWeW4RXM1fTorbVaMV79Xi1Kl3Qh2Aao5rB3\nWUW767bAlYGTLZtSwy+NgeFeu5v+xPr3pReh+sYPjvPpwM+/ec/D3S23t2eOpwPLsvbpVjfnGx3e\nqx1r4DylCk8vF+Z5oaRC8I4hBqKDdVn4/PmZHz49cZ2TTn1qmefuzLwZ820Bqk7HS1p4sfFnvbDs\nHDEJNSl1D0yDPqq0bjOqSVBapxOc0/2hXZ+VdVmZL1eVEzCH215VtOtXDAJorB/ZGZk2aKLfzR9H\nji0j3H9fNFRXGMbjRRhSJV4TZU0U04wRgyDbHfKG7VfKpiho2HhaE+t1UZYT0gu2WxS+ffaGhe9W\nhNu9y/6+Zdk/eq95p1eQy4/es0X9uw83Om57r6tiNSFDQtF9JkY26BIBTrPPP/f6Qoa8mOFR790u\nKg6RSKu6wzBEvA8U0c0guxTNVSGmCtlScdsIDTveCn62dloq3go8KBe4TavPRi9TnRGjHrYIZx8s\n7RZ4S+t8X85tvdriksJzLVyeF357/UR8c0N4ODMczxzcwOA9Y/DcD4nTMHAYAqdpJAicV89UhHEd\nmXI0yqI1ngQj6Vi00Qo9ehIGT+SsRri1/xtcUU2nuxvyrDDSmjIFgWMgTEfqmsEG4zZj7J3H20Qb\nMYlba1Du0JYzp5onxyVmvs8XgtNWVG+FI+c2/u0inlpcH7rdb6RFe016tWPi9iWNlWTvbxF/Sqov\nnlI2+uTuqZmhEfmRMUf6s7NVZDWJwMPdLX/9F7/gp1+/5+3DHafzkXXVRjTvPLfnsxViKy5od2Mu\nwtPzC9fLRQuaRe99WROPj4/Ul5WnAn7VNbZ/9c+3v2/xv2PAMcVADI5cc+d4u+AZUlUaac49ywhe\n2+8VY1dapy8V72t3iNU0dtKisMq8rApJtEBSTNrYpHv73fqRndbb67rZ296zZYn9fdIesv1pka7H\nEVMlzoWyKgGhDgPVVzXHfne8liS0oMka+dKama+LaduY8XOuO3J2H93XLOygFffqD2jG+M9c8Kt1\n5Pbp3o8X2O7fbvd/esbSWTL29trWuL1JJ4F53CtHsr2+DP0w2dRoBz54imF549jmdzagPyhDLxeN\nokVIUsiSEQkMVQcjqB5Ii5LbZncgftvw9qViQB5x1dqYBcxwZxMTkqbfA2g62dC59tibEVeDFOxn\nFR06W5pP9Y5ahFW0gHhz9BzfH7n9yS2DUx7xMHiGwxFiIEXPcpzIKXF9ycy14rJnctH0ICrFK8Xt\nGU/p5wFNzlEHQ1QkZTPi2gBRDJaphj2+olymRC6JGivx/kC4n4yKWKjmKBGlih6PRyiiEdOqgp+A\nzsDMFYwN+nxT+V28IukDQTy+eh3s7J1+BY+vjlIiuRyUsmfPwykvlYZ7iqn20Q1Ai/ikb2YsKl+T\nFq3XlJVB4tXV7lm/rv/eLhpvP5XNmAYfePtwz9/+9W/41c++4eHutk+n2dQxpZ+jM/W/bHDfuq4s\ny8z8cuXp6YlPHz9xfXa96YliVRWnutPObJVmlpoFinO4qhDPXRz56fmWN4cDxfaAN835KavCYs5J\n1zDs1DH1+hu3v0X/uvRVlmE1DZo5JSUdtFuNOtGctYlP6x3S72R7Rs3x7KPXBovB9oza+/vN3tl7\nB4QsxGtmXZM1pWnm42h1IAvEelAnVj/RTDOlxPWiWQXQhxp36Yh2LqBZZAvC9lG0QRo/Nub/3mtz\nu+xYLGzBiNP70j/fbavRI73W5rOAd73PQ6TS6NbbSMv/QIb8dDqxhz1wjhC1EaiKaHTccVC9RcUM\ntQ+aJg8SOMtE1K4REBW+d83LuoB40TTGrJ0WP+2g9pxExLSAt/S+twi/SgOxB2Ln1Io4SMshrDAh\nJpPZkOra0yofHH6o1JhY0sKcKnKtfH6xMVaDKtAhwn2O1HSz4WmvMgxLcdvnyraJerEQExVCNZWL\nSJd6rQ1rT9rMooUhcFMg3oyE+wPMnpCLdlnS9b2I04jDEcuApKxzU4MnV03PSyp4HB/Ojv/rcOG/\ncCG6gKtOJWRFR9sNPhCr47ac+Dq/JcqZoxiLYh+LmlQxUncw5g6esUJ3KZmU1BglV3E3kdNwo0JF\n0qAd/oSi1/n1RsN0Fhl6b9h+EK7LhVqyngNm7F3rVdGjSaCvG6ogZct+RJSvn7OOnluSOhonbtdo\npuuorc8ANAnlCpyGA391/46f37/lzelWSbQSaPNqxxqI2XFdGr5c2NMNle7q+3W31s8qhZxX5nnm\netU5q8UcTHUaxRcppJLJol/VAqXN2Ldo3NEL27avOw97n021/0xDvE3SAn3sfnbURRuDihSiRIvw\nW3pdd+tgtx6K6tVf5rUbcmUxqR5+rYW+Uzp+7TrW/wonb9G12xnxhlnL7j005yVmuOnrS/bHYXvO\ne59QzYJUx+4aa8+q9m/uP/8zry/DIz+MGiGJYrJ6wRvVqDbjalrY0zB0uVqNNGAgcJRIsC7IxkBx\n0BtQQN/cqHvNMFdpecxWQMi1WOt6E9xvDwz+JFX6r/hniyNbIP/qd3QRFKQYtdGE/UtxrMETSmDI\nI8E5TlW0088Ertp6EGmdkBabtOCiLadmmGS7r7rAdqO3Gm++dXNmxRr9ccQfIm7wRAk6kELEWDd2\n36JuWh8DbtA6RhgCQYSQgk6wd4EyRD6FghchWOSVsrb/IzBG5ci+dY6jrKzSxmzZJts9o3Yj+xSY\nPcwCmlrbWLd5WZABDu9PBH8go12aVG/cdddlAqBh62JQU7JORme1FDi+ncjO5JJr61TcYIf9q+t+\ntPb/Rm/dFZXXlMgB3HlgDEcbAAFdcxvX9XycYPNchek48fBwxk2e2esMTiceLxqhriTy6shrEzyr\n/T61tfoqnReFVWou5KSG/HKdVUO7GSu3BVri/dZ7sT+iQQPt3y2g0Y1q/RoWdvc1bMcQHFk0UtX5\n4Q5fUMh0SVRrThPr/2CXBe+SMw2aRB1pNiGxYkyg3o/iTSp72ynNTtv59VCIFrG5/kFbJt4jbr1B\nVkOSP/UB21todr/dsq2yYGvQnJPfqys69yprbAf/82b8CxnycYqKWQmE3JpPNHrxXrUvolOw34lj\njBNrWkk5IbXgRhX2GWvQ6RlFU6tWcOkKZs6CcZvzpze3pY0tJdvBKlZ0K1k6hthtObC/r9sNdX8S\nqXvjy3b1P3vKFd04MivlLDhHiAMuWKONd13rIjiPS+2DpH9wXxQtMKnSkw4rEHTD1ji0jeqnXZ3Z\nWDr6taQ2OxKG04BMgVIz6gudRbC+0zBrtmKZjd2yW4nDMU0HvFcGUovkhxjwxtv3EpB1UUgrDhQR\n8uBY2IyHyspIj8ClmQ0R6wBtmVPtxkHb+DUdn5cZd/TcPtzgz1o8z0UoRRvGog9ae7HR8qqvoyJY\nRRKDi4qpUqDC/XSDTFZz7IXHHz+XFhC0jMggO3s+NWsRNhvkI6fAcDxzw0HrNNXUF8GaWvTZShFI\nEKsQpoly5/m9f2EpGSma2TRZ1loqaT1S02FH3TMaZ3WdgticBeg5llzJRju8LAvZqc/rQad3SAjU\nGCnBU4KnD2vBdYhJ2kJoam5meJvJdG6Dw2ybIuKoWY1nsIArIgxZcGtGUlY4p+pErLa/+jbcB7cC\ntahswNXqPc57hqCzS30IO7XC/UvsMcqWhe/gix6596h8+3571Z2zVJaNs0e/YdwCOtzZaaf1q0i7\nViKeMao+EHi82xVj2Sia/97rywyWyNuEmtwmeoCNebKHNTgWPHktzLNGj0hliBERh6uOkLRg5LNo\nJGXt4M4aRKRkak0aBTcVIXOVDbIQcSrhUKxFXDB8yt66uWU2Ye5/x0vK7mE7PUeVtVWjdDpO3JxP\njMcj1GKyqFrMAd1sh2HAiXBIwUSK9IAaUb8+BdcQCLeLFBrI2+sMrnd02sWBteavubLkTK4Foicc\nB9wUcV5ZCi1UqlVHgU3WYu6ts6RIMT0VpYcqm8CZZnzbrG1cnF7fEAeEig9eI1QKC1vE21JlV0WZ\nQrVpw9jGqIqlN42ZWoS8JNY5sSyJtRYzRnYMe47OCalm1rQSqieGaF3FDYdEB1mXDZKqVVhK4bom\nsumN91hKNproXkJARwVq25myhKygmBWLTjUzPIzc3h5IaO1ErOnR0zqXwbtArY60JiiFhOc/ucTv\nxo8cgmYzYno80Tqk74dbvlkP3NbcVTtDswDO6bxaF/Q5yS6TWRJXEsup4n4y4VYHtWpjXoXLWPhH\n/5GyZt5wNJhGqYlO7PPxaoxrg6YsGLGtoeP+WoJoQYndXydCdI5DiDgHJXtVgzRhvG1sY7uUlinq\nAZt5bqPTcq5UXGcLjTFod3HY65vvjekWdO0AEPuM9pxd3+sb4qHvDg3aAZz4LcaiBXS2N4NHHBQp\nnREGOu1Jj+N3c3EbXXL/xS60f/36IoZ8nlOHNFIyLMs7ciq9bd8H38eNlZL7wF2pIGZjBgnEDC5r\nCult5iPeqfAUok2OZuSaWpo09T9rRW+j5/JO8+PHnlmP1v4ir/7sMUJbJOyes4OGJ4YYiMPAMI7U\nnHVO4hCJY+gGLAad4HNwUQfQVte72jfx+u3rVZbQjAlGt+tROt2QNyw4WRvzuiayCIyO2mjSsEXz\nOAgGGXmHD0qBct519cBqH9NmKO9HsmmHvWGa2SJtD4JnrZk5e+Z2761oVYsDm5LU2vZLNY1pacU2\ni4JNJyYthvdTSWAQltK6lIGox89SKFmdjbf01Rv0RoWaW06sdYXZJa4pdfnaKkY3df2298fRFC33\n+ZPUTctnzYmVTB0i/hBMSrUvks7mUdZItAwIKJ5UKnMpvMSVwReCU0ldsTU+xMhXfuCQr6w5vTZ+\nzgIKr1Gq20FLIjYVKgr1LjCcD5CHrs/uxLOGkX88XPg0ZE7hWYeltPUoQvRRC4pY1zEKlYwxEhxQ\nNdBy0gYJYwXzyvyog6YjntGKkv5mIr7/hvt84rDfb20XdtitQC36rKXYUA+9zzqSz5Nr5vN84fvL\nE9M4aE3HqIxb1UAjpCZnu3+u3m2Kpg0zadh6f6/4Dh/13zPwqO3JKto/IOi1O6c1CEFgilAdLllk\nVptz2kVtsj+rP319EUN+XVaNpIwu5Ew2E6nKK486GcPbjShV9Ri8d6ylmtChMLpAyOgoJDMW2i+g\nBT4HxvE1ApEt7lpyx4lV7VA1uEvJ3XB0709PBtl8P/ZAm3f+UeplD8jRmnJ01YueED4G2oRucXCc\nJgQdIIwTvI9MbmQcBnwJpjFim50/+Sg7t1206NQRYp/hzKC2e6kwxMq8LixrVvnTwZOd8s/7Rzjl\nrAaLXDNFuxA9Kjlsx8M2Z/A6QNk7LViXUs24OWOUrPpco4ItS8pE77muiWQOtRTFkzquWduQ7m0I\nid3+3r2YrXi45kwOULyYsqNo0buxJ5w6pIojl4xDpQRwypxqbeFORCfWCySfWVLSzFHaoA3j8rZC\nnqMbKY3EtyJsY1SkrB3Dq68kydRsbI8QdFZnzdBYL1kQSSbsZlLAKINFoqN4KEif/lRr5eA9FzJP\naWZJysF+XbB3BjM2aqU3zRObcj96wt3IIQaGfeAQD+A9vyszv/cXy7L8FhRVzZJDq0HtAqhpGogO\npZBWp7IZ4rQbea7kZeX5j5+Ra1Gtk6KyG3dv7vjbn038VX7DGztnNZpbgdtJVSNedMRdkbI5zKJd\nysU5np3wTx+/J9XEdDMwHUbGqI15kahsIcuAvHMajJiBVxnqYAbfRMS6HbU1JRqFtx4W375P+5nu\ny+rQmQj2o+YcKgKHAalqwBvFeM+yatDlf+31ZTDywcPocYzdwUqt1DXjgu8UHB0om1mL6kt7F4jR\nMwDiVPQ/ZMEli5Sg38QWaVXTbvE+4L01TLSiVBWLAPM2FccKVe1md5yblhJuBaDtpYa8xVdq5Fvx\nVl/inV0bumlrUTzZeaXeieDNE5e0krL0KT3ArhdJNtEMNJV3RqHQKFyFpqqrHYrohqwUait0Gqac\nS6UGh5uipoKN6NAjE09tzTUihOjUsBSlaeacqbl2bZMB3XiDD3jRVnScU+lZ75T9kARZTTM8eNaq\nGUJaV51CEzJYkawHIlVIaVVju2vd1knnOotzKYU6BtzkCEPokAlomhuDRwKmsW6byXtzNqI6K45e\npykijHFSOmSLxn68n5qnb6E4vDLg1Yroa8osNZFHRw6mK4RDSoaMdc2WPlNTBcGkGzCP1k+cqDPb\nUDKT5Q2B6h2zZNaaSLUxPux+ucbIUSPbZmIqx1pHiw3DyHFUvDqia/Nw9x4JkefH35HKilBNXbJN\njS+KQTuHVHp7v3O+DyYm6PBicZYFVRQyrStPOZFz6ppHVOF+Et5fnvlZSr2u1bp+G2xamwOyOkAp\nqq2f0sqSM2tVnHyVlf/9u3/mppw5Hu+4PR6ZDkGnBsnQJZy9NQsGD14UJgp4dHSzMl9atadF8+Wa\nkblCcoxxZPRR5RzmjM/aQR5d0L3h9HfOw8ibw9mcic0SnYvZC3NyDX5q8YfrFmiHm79+fRFDHoPf\ncCPTUXFON6APWh1PRdOm4pxNCLL5ekTbhHZDi7I7LOAyT2Zz+LzicBqkW3qyE3hSCdtqjUDZNMib\n13fNqfYvaDHxn8eptl3t+u80NgJmyJ1lDMrSUf2VNVm0bBFsFOWftzmg/bPFRs55vbb2YNtADTXw\neuzinHZSNkdUN8XDZsSXpIyV2uSE2UWYLR1vx8FZiUHvT8BUDQWyFB2RZpOM2mIrrlIlA0o/FGr3\nEK2LU2rrDShdl36bv1g7FNCuX8xB9qlN6N+TGXJ38iZ1oOcW7JwqmNHStZdNd7uvQ2k+0gqicaDU\nqvIOxqjpbI4WGe4gLTGRr3Z/6u5+51xYc9KO2UkjajXk3hyTWOeyGETYzlPIJXcecQxW+zF81zun\nGv7iGGxtZRSHL3VHQbTqaWNCeO80CAo62i5Gv1HwRKgUsoI2rOmKq5Yhi6PaNepxFIfzJpYl3non\nqtYjxAWiwXHZmsuw5b+WxCUl5lpIdSM7SK2EtHJZF6vTND+524luy0D73hTLNHPW4yF9Atl3y4VP\ni3AonjtXmUJzPIESC5VC9A3oqgSnRja4oBmE3WsvVlMRwRO45pn5siIJYhiZQuQYKuWHZ+rzooY8\nqEMMDt4NJ35xfuAmDAwc0OFMjmEVgg2OeW2mrZ9ggwH+XcvzRQy5x1kaXRB00UbnGaLCDu3h1BCI\noloO2hbdIm0ITnnZoQJFpTr0ZfiXyb3WVygkrxeAFXty01cppvjXG4L+f+be7EuS4zrz/Nnm7hGR\na+0ASIKESDZbavX8/w/zNi/zNKfPtI7OkajWQooAqiorl4jwxdZ5uGYekQVAPW9QHFShKjMrM9zc\n/Nq93/3u9zV6EazHxFmaLZnHud7I6WNyEJxgipOd1AmEi+3n1Ycz54wzFrFzrg2i+l2bdG8p0siT\n5pWisVJaSShKArnqoQNZU8pJpyRGmeJcQsTX6bloxDDAaYUxWppIRQ5QXcv9XNq4u8AezkoGZ4wh\nxFhLdtpEiwRjleRXyTQddQkcapVWyQVCyTJEZRTGueqonilFTA2Urmx9ayDW6q0GVhkfL/iY8Dmi\nOtGsKaoybZSRGYXSXJvkmpYSWCoNtPVPck41JdM1Y6vZY25CXfWnVmZC2wrN/Leg14DT5FQF9gks\nMbCUROpUtTCjHlrSsD2hP0q0h6yM+udFmo4iZaHXykiqibqzi9w7hbBvYorVIadR96TMqgWbyHub\n+vwYLRrpSuCdFLM0YUvFh/2E1prOGQlzBVKITQFX9mM6VSoKTSkJHyvf3Bk6ZSr1tSYwGRlCq7De\nudhc6xXFUP89p76DQJGqgdecPZagZNo1pAoVcl4jq7rPIktKkCTpSFmabaqTCkxIAAXjivSLFGty\n0SqylMUIRufCfV7Y+4kcCpgFa+GiJA6PH1g+HSBXBp7W9Ebxh+0rbkwHKWOdyNbqjDSILSjbAvfK\n1ZLreJYw/Hgo/3kwcr+sgUghcp8+R0LWlFAxpfqbqsGlFOGSa60Yup6t3tAVhy3VI7GW3EqJi9Ca\nhkHN4M/0NvIPFQ99FaJv3WdgLW0kAzh9o9JKnCro0wZ9a764jlW3zzWKSQLmkAhjIfkKObi6geqD\nn2sWdowyjdmC5wmaU+tmblinqvK2RlVcPCtKZB3bL+cUuBhXR5vFS0BPzmAUdMoIJKKlcrFaoKw2\nnKBRpBwlW9EyWZpQBIrY97WMGbCdWQNHqZ6kxhqctbXpGjFGzCGMs6vGhLUWZaXxtToI5UzMDW6R\nycU2ReljYvY1KOuM2fQoI0FQYqqSwyxnlhwoJWO0IYZU1yHUPSJ4e9c5oVUuC8661Y2mNdJijOuE\nJLo2r1SttM6CTssiU66wSox4MtkZdC+TrVZZgpbvC4UYZEJ28QHXyWh9SgW0lNs5J3IdyCm56nHX\nQGqdApXRpbDEuHrb5hwpxdKAAQOkFgthnbLtnWPT90Tj10a5KpoQ5AALOeNMj0bh41Jx/Swa69pi\nrPh9UjN1Z6t+eKFWuad80jpDNkLzpNTDoK1bfWzXAb1VN6kySHStG9t8BKfnoR0CqUJuVApfKRl0\nRlthcDVzd2FXFYxW5EoqoGSwhpISqmrR5PrcaWMEAkuF8ehZZpHbpWiMLlhbMLaIOFrlBCvEs/er\n4YI/XL3m690NXYVUm53eGqhXTPM0MfssbJ/Hgc9eP49n5zRjrMVYKSdDDMJt1mq9WadxYmkIaFOx\nbqOEG6osYa4eyQAAIABJREFUOldIoZR1CGIFlWqZ2BYjg/CWk0zXTUvgMC88jfJr9FFw6RZRqP9T\nZ2O8Z9fQytsfW9j2dW0aUmmNcuYM/0ew7CJO8RIOha9N03ROrA9CTd7W35s4VStNlKm65VpBhWSE\nfpdXGCM1H85wMpHwNTsvWTEYefg2XVfd5itO2FIvuWhSEgqb0hqVEpFcW0FUWqImZ8EZrdZ0nZEx\nf6ij7ZpExiihQIbiWYwhRMkClVJCDbQWo61kyilSYkGp2N5GhfzlWmbvWXIkqHrt5WwOoD54TQNc\nhsxOw18FTlIN9Z6FJH6tsUblHkOo2uKyJRqcVQ94LQe2TN3nOhchQTzEwDQvjDGwkIiVBUFp8JBw\nD7UxUC0MU8VXtal1ZIU7SmpEdnkPwkyRazyOC14Fis7Mwa/aKC0jb5CX4OOqwisabQzOOTrrMOha\nSZWV0dM2uNDiT9iIqlCaplWHyN5OdV6h7geh20nF1QyiqfcuxQZjnj059ZmN1c+3kQ/kKup9VVK0\nLTFz9JG9jxxTIWhLtq5Wbqkit4qiMsoorJMp5JWL3pY3S6bdoMUQZMCwJYYtPTHWoQtEXxiPgeCr\nr6jWkmGbFodaZFDcdANfbS/57faWN8MlW9dLolDh13XS/Cy6yNv6PIifPvNjr5/HWKIK9+is11JF\nNEAEt7NKshFlKtaaylpaGqMxRbArpRSpFJaQOEyeZA2uUBkbMk0nDT0Zi54XzzTPHMaJ/X7i09PE\nh/3MxzHwFAolqYrl1um0mmWvDL610SAc5XOYpJw+w9pxrt9DWY3uJNNs2gnK6RM+H1LNToWO6Ao4\nLDo2PPmz26fUKZjXIL5u0Ib3tiBeKhQRm7xrZPFeHFS8VCU6m/XgNMbiOitZd83iFOrMKNtQW28V\nc02S7SmDdcI4yhEo4gzed5ZiKq5rhHWUS8Epx5wmcWFCi2hXa/QYeR/GGHJCDldoF8Np5D2JbKlf\npKJTiPbOWvcDVSFP4I9KQ8+nIG6dFQqskn0jFLE63xCl3uiVrrgrlZWjV9xa+uKZojSplvaidyIN\nOO8Dx2lijJ5ZJVLR0tMRTzjR8lZgtD1Vfi1IF4Wxam3qliIDcw3ySqnx9RXz7PEobKeFHROl2UnJ\nZ3LDlVlRA7kkAAbTOfHDzTIbEEtBVahTfsApS5YTRgnnXsv+O3VXqvtUbtmwNIlT6xuUKlRHIHjR\nUUn5FLJOTNmCj0HWMssB35Kw4gOxKHyIHMeZ/XHmMHpGn1lMh97u2F1fMR1HQgioDKkePLZzMols\nK79b69O0MFT2nKxrCEJndLbuO2R2IBcIS2aavJjOVAVX14FWhTTKsJZRCmcMX24v+ebill9vb7mw\nEsRL68BTqbsqn6fla5K4xo//HzH1Zwnk725fVIqhYl6E3hWyDAmZaqSQ1vO/iC6HM0ItzBGrHaaI\noP0hFb59zPyxeIb+iHG16ROEBSGGCTLBOIfI7D3zEpjnhadp5jAtHGbFEi0XObFFbmjLdM5f67xP\nVXsXHqjCSIxCbow60884w7CNxvuAXhYcHZ3TuGrCm4o0XDKsgdzEKngEKFWnKkuVu9SnLFxrXTm8\nksnL5Bhn4j1FxLM0xAJziIw+4peACokUMiWKBOpxnPDRV2Ery9ANDP2Gzjh8TEx+IWRpmskwk1kx\nToF3LNY6tAU/B2LMUCK77YA2msl7lmUhp8K222C1WidQZQIzrXBk6wucuP7n6ocn4+gYo7gblYxy\n0gRufpTNak1rjXOij14KNTsXrW7jDNqKIJm1gslrVRtUTpzrBcsvNcu0Kz5eqtCVFMiivpeCeE42\nE28fItM0M+eAt4UcQ+WiSUDOLUAkmWJUqtANNdDUoNhsaZUqDL1Da1sby3qtJoZeZI3lEakMDh8o\nQ17XTPQeTpu6TaPGLFVVbxx96fFhISdZD0VBVc3+eFYmqiT/Zh0CS5kQ5rUCNcqu2W4bvjPGYg3y\nvjKUrNbGNbnBBoqUi6zZ4vEp0pWMDokYCz4VPh0mHg4T+3GWQ51CzAnfDVx/+RV/22357t//xKcP\nH9k/HqRCtAbbOZxz0jOhzg5Qm+pKZD1ygRwz1oTqLVwwytRegiWHTC4BP0dMksnRzllcV1Ckmqhk\nttbxy4tr/nD1ki83l/SN3ljve+PbU/eVuFvVyrBQUQW5T61SlQX98bD+swTyq8sdpsIMrgu42Up5\n7MXPUiG4lTI1CFJOTUUFgzJ0WaFiJhb4lAJ/v8ysTSsyKfgTGyXlOpIuWGuMMim6RE8IQRzSfeai\naAZtpfNfD5ITpFEz3YZ30LDQUnHzswB0nj+vyXllCqia0zapAESLRBgIVC67gqLP1NqgCeyXArGG\nu9VtXuv11FmrgfoQtQGgmCJL8IzzwnGcUT7zSnV8LEesMdxudwyXHdpUaQQldD0hJiSMlnF70XnO\ndT8VlJLPGdNxff2K7XbHMh95CA9M04FlETzbWCMHQRST4VQKxloZ/MqZUIS90MwE2uoqLZmyKZqU\n9EoXFJgn46MkAp5MMoiEQ6wwSc4rm0fX6k6j6LoOHajYdEZpyaysta3WQLfmO4Vm35zzZ4GQs3tb\nw3lTNkxNMsALAyMZMINF5o4E/w1VkkIpLYJvZKxV9H2DlGQiNKxQkRwqMUgTM1ZnHlMPKquMON1X\nSCZm2fMhRpQxWFsDJ7VpmYRNE+rAE0V0ipyxZCOMi5yaSFZerQZl9F08s1JJOGfBtHUSTrb0V+y6\nd5siYykFiybpyLlJQqlzHwIRGqYlc5g8h2nB2Z55DhyXwPePBw7TwuIlUx/6jq53bLqOzli6vqPb\nDLjBcnVzw/5xz9P+Ca40F9strrcCA+VSSQasWTVU5UErhzQIm05X3N8YQ5wzYakWkEbXKlThOg3Z\n4BNc2YG3u4H/evOad8MFO9PJDlGtdln5YXV9yvq8th31bI+dxZyfev0sgbzvHNrWZpYRZmbK0qmG\nKqBjWhYuF5WrjZW1jj5bXNLomIla85QK/z56kb5MkVyEG94w8yaeL1IAlSGCohhXGTNKOMza0KNY\nVFg76W0QY1UCKufL/PzPnxGiOOvAoCk4a3BODAZUGxhBdK21kaZlDoGUFUQLpY2iy/fOBQKap6Iw\nsTD4jDZV0c0UrNHrGH5jUkh571kqrPQ0TizTwhALb+yGP/KARnFlB15vhd8aY8anxJwzfl6ItfLT\nCP8710Au2ttSO+li6c2Gjb3EZy/l53Gph0jBOlMxTym5vQoSACq7ZqkTeTmf1gUl7lByUGZMtpja\nbCxFKIRLHQRKtlCsyB6rdPKC1UZkBYxpLBbF0Hd1UYXhoUqpgdsJnRWkCaYa/1fWs5meNHJpm75r\nh6dRbSBEmB3L4hmXhWMMpF7Rbbr6fVJt5sV1urDkjDUKY43AUblQDGAL0ZRqvye9lFRhJe+jHCB9\nh7IKawy97TDWEpXiGBLMAY+hTwrTCeWxJPl+vlYMyyLPToiJ0okPgFIK5yyhJJQumKKwVtdn0lQN\ndhme6qvmuVGKmIUf74yj6/uzZvXJXNthmPUik751HUt98DcXF1ze3NBfXBPQ7KcZZx3jHHn/eORf\nPtxRUqEzhovtBrvpuOgdF5seZRVzjHSbge3Flpdv3zGNE58+vieahe7aomxe1Rzn4IX2usKnQj/U\nuk6Ew8mdrD7VPiSWJcpkuTaiJWQLprPo6OgxvB2u+MZe8ldXr7ClQkZVybJp08h117hxNity4ok/\nx8hXeuhPvH4eYwmfZaxes5bMnbMM7gpb3YK0Fiwuk+uUVrXSMhrlTS3XMg/Gcl/HXTdDh3MbTF8V\nwtXp5Gu0MAMN8ZABCzLzPPJv//qvmMc9cZyl9Mnn2IqqJaNida9XzVThjH7YcOszJbWyfr7gnEMb\nJzS30ppPVgJVkgDgrMZkhYpFqEml1QOKqOFBFf4ueIanhZfDwsusuegL285QnFx302b2Ubw4/bIw\nTjOPh5m7pyM2FF6qji/cFps1h7uJwx8/8td5x9vLHaZo7sYD//hwx58ePhHrdYleSZKDrTb4qAEd\nbbj7tz0oJQJnwVd6lyJ0Gdc5XGeqD2gmGY9GJj2N0YzaM19E0VyhrDhu613r1ltQBhBIIdQgFFLG\nDh1mMxBk9ERuhdaYThICZyRnbmYLKWaylsBGiljluNhcymRrbRBqexrPbqP2Tey/vaf2gEkQkCwu\nlVwldSfGaWJSkVSptSTJWDul2JjKTqgZvOs6rDGSndYekXEKszWi++IXOcxrEB86cc7qnGT6g7Fs\nuy1ZDzwumocYUIc9/RDp+0hGtFec0mw3HWRFQDMtC4dl5hA8wQjDw1gZElJ9QRux0HNVs0RZUblE\nK/puWHsWCiVNCET+N1dbxiZwJh3qTDNNXqea6rOgrOUXf/gdv/8//pbbyxs2JrIPCX+ceHgauX8c\n69SrsHTsYLnaWd5cdtxcXaKtIQCvbxMfDgt7X5ix/Gr6FX2esMrzsDxyDDNT8OznidFPzHGRYbK1\nClfrpGYKJ5CXUkS9MmbxEqgCdxipOgfTcdvt+F13xS/NBYOxq2HKKl8g3WYaiaKcOUqUOsHeYk4j\ncsiPzi3K/OjrZwnk47xIluQEl2p4Vd91qGr5JiWviMxYbaETrrgvWYxmEfGZBRFegsyLmyvevn3F\n63evaghVCDsknzVUM957vF+IPjJPIzEsRO/Z5MJr27O3QR6cfFq8s4Rc/g60RsR6Tq5mx6w0tBbb\ndRUW0kULr7oyHxqvuTWDFKZi7HoVyGoPQVSKx1z4X8fI8u0jm4eJq43jYrDsOsvGiYKa0ZJtBu/x\n88w0jtzdj3z7MPHvT57rBV5RTYFzwvnC1bHw67Djq3RJzpnrmLnf3/EP3+9l+q7IiZJLkUGrdT3U\n6SLrdbdgLEukWKpmua3ejkBl55R6oCqu3hae3CXlq9MKN1jr2XASpaogClwkjjCB4zjj7w/1YayP\nY9Xs0UavZiVKSW8hVPy88feNtcQH0V+nBmZthOXhtMbbW8r1ipPRTMFVzQrWQaCK9fsYmRaBBuaQ\n8OOJQdT40dpIua6AnES8DVOf3SLZbqTQdbUqCYKvNtlWqoZ93zm2my296XHFcjcW7g8juShs57i4\nyGyHzPE4UmLGKkW/6bGqkJeJp9FznAveW+xgCGnCp0DOWjIJpFqUyhlUlMaj0AzN6h8gUgJy73LJ\nLMHLHqnXW5JAfSDMnJMmjzw72lhuXr/my2++4bIfGO8/st/fc8iKwxKYk+gTFZWxDrZO0amE1Zm+\nN3SDyAnskjSfN8XB9orNo6X3Ax2Fh2PHkiNZwXEamZeRcR75cHzigz/yEJfanKVCIbLPc8kEnwhe\n2EO2eu0WMmiBdAcsX2+ueJt3XCi3QqfQKBCyOvoMWGmwClAJFHIQnoKMYsVYT/jtD14/SyD3KYJR\naKRMK7pmy1o6urligU3MSAyLjVCYUhSD1togy0WCuFGKq4sdv/rqS/7wN78nlVRlK9Vpwq4OwRyP\nR/b7Jw5PhzpRlpmnERMK17rHuJ5jGzV+hledSqAWj87V3Nava13u+vdTg0MCia5TGdoIH9tqK0MM\nuY4gK4DKhW9MhgKzgodc+MuUuDsspJzpdGGwlsEZBqsYOk1vFU4XShIDiRA8j08HPj5MfNgHehzU\nAKJypgNus+MrteULNvgS2OnMt/S88Ir7/cgSI00E/zTRWPfaeeXS1ucMXvLrOpyvoVob9VrBp6DZ\nv3h1amiuaw6iKX/qKbROdMky0TlPnsfHA8dpWfsVp8PlfFq1UgYbtxhWZoU2mif3tOqglwLaKoxR\n9J3Dv/pqVVxs19gC+joF3ISbaiAfF89+nDkeZuaxUB4ri6Myd7SuuHzVxTHOy6EOnJyHMl3XobQi\npSgB2Dl6vaHf7hi2G7abDZcXVxAV037h/mkiLDMKxcXFgLaWkuH+YU9agkA5ztZx9ETxCZ8sJfc4\nbxj9yBgmtPKiKGqlx6Eqrlgqq8YYTekRN6ksWHob/1c+nDxTqYlJdU4qZKYpEIM0c0sWGMt1HbvL\nK65ubukUHB8NcxSpjqWxe4ySrHgJ5MUQTCZsOpRRdFYE3XqtmY2SAbeLnv6o6JOupImNVCauY9ID\nwW6Y9YZNlPsy1snQUupchtJyL5ISpk0QnEU+V0R2wCoomR7NF92Wy2gxqbKN1qPtBLmqCrkW5B6r\nNY6c7frC+Qf+t6+fx1hiM2CslLimmuuGEpiip2gpnRuu3IJ7bCFAKbQzKKtJpdCbzEYpTB4ISYPu\nuLp5yWleTAZsYkyk6hI/bLdsNhv6fkMB9k+PKGPZ54lPWXFlLF0dmQa1Bi4Fa76XK1eqYWmngkhA\nsZZMg6oqhxrTWWxflQ5VG5U25PXAklNc54RWUo7VsIIGDkbzwcBxCfgq/uVDYr8ETpOkWaiHpZkL\nyKj2skxM05FxnPib7YYb02Op2YGSTa5QNIeci27gV1cv+G+v3nK3jPgUCacrXINlG5Y4Bd9WCrY/\nn+F6LbE4KxlblA2zxy/SoC4rTl5a9K/QjhzupjXbtCIhNmRhmomHqb6/02GzZjv1DZ+GR86ya6CN\nPKqSaLCYNEANeTtQQpQrr8Jrp3nzdqdlND2lWPFxoR0+Pu55/+0HpiVSiiKrvC6LqsGgrUHjep++\nr6yTDLjJWl+/esmrL7/gq69/yRe//BVv333Bi9uXLMcnPnz3HeOnP8tBgUhhDEMvYnMxUHKuDdmM\nX2bGIgQaZzrcFi6U4nj/xP2nJ+4PT9iaVEizuo65KSQJqRWOMWeHt6Jmqm090lodlZX2mUg5sDx6\nlqnOB+SCdortxY5N32FLJvqMto5u2DCOI6b2MUqGu/cf8dOeeHOJf/OCobPYnNDeY5Tg1/a4p2SY\ncsTu9yS/kBQcxyd8iuQC4zQRq1JiTpkL0/HaXTAWz5iE95/WfaTQSaOSqoOKgu1ri4hxKUO/KPos\n3rTPp39LHadV6x6SpnBLMk5V5xrq131V1++UnfBjr5+HR67ruG8uworQBm3KKvokjtpKVPKMBKg5\nLELaNxayBixBF0YSCwarXc0Qz4c1hAqki2hEFy2qdlYjk1iqMDjDbrthd7GjzIEQCy/7LZ+W5ZTJ\nUU7ZpzrBfeufoVLRpDHa6IelZuuFOsyABAkBjuQLchHBqZLFbzKnzCaLkJHKUm4lFHsD/0sV/qEU\nloaXKSODIiiq7KNI/zaetJCwKSVV4wTJBi5tx9Y4cl4E69fCeVWV1lfqcMTtdstvX77hXx7vWVLm\nzi/P7mPLtU7Zdzn7/YevFe76PLarIvovFX8UAbizaoSWYItBiDUySWicZLOrK09jdtRM5/P32g6h\n55uxVIZCqveq3VElh3XNmnvX4ayTda6VUpu+y7UybA3mkAOLnziOI/vDiB8XUgvkZ9//BMuVNYC3\nB/t01eX084zmy3e/5L/87X/n17/7HdeXl+y6jl4XgjW4qx3u3Ru+f9wzxYIyFuMUtrNsrOFi6FEh\n4eeFj/s90+xFoldGSknzwrw/Mt8dWJ72xBZMKqNqPRRrtdMO1nZAFtUUAuthX86G7wtVjVGajXFJ\npDkjaVuhJJj2R/74//4d435Pv9uxvRiwVrNMx6rgWVAl4MPEx0/3fHz/kV88PKJS5je3L8h1BiCk\nzMN44FgK3u8ZxwnlZUhq9rPw0YHFhzqMGFlyJhXNxgxoa9DKognMhJU4sfhAitJXMUqjrUJZhPWU\npaels17XY828M4I61ENQVcYPhVUPxihhv6z7dU2E/oMH6uz18xhLFJnAS0XKf8k6THUJOVmzaaMo\nSrQ02oLbUtBJeOTUQY1YT7SUS52qy8LJpFSNEGlgiURphpxQOaLJdNaw3fZcX1+y7I+Mfl5deuoe\nXuGDZzK2nJpbzXnkdBtO4a0dBu3U1VphiiGUZv4sLIwYIsss7jm96USsf5VGhScLf1GJP1cGQBtN\nLkWx2Qxsdxu2uwHvl2qcLA9oToEcAzF0hNkRB8tVv6VXmjzP5FKFe0zNuOp6FaXZdT2/uL7lt7ev\nePQLj34hrVffrvQUvNe1Wf9wwgWfffj87/WwCxWOaDIJLVNWSjjwKlVM2QqtzXYO21XN9vPv96w6\n+PznnX9cPfvMKf9pQVY+b53l8nLHbrehH7qVMrkKeVW8PlVWi2jby5DScZw4jpOYjVdarS7ltGJn\n8KeqFV5DhPL5+2sZm1a8evmSX//qa37/zV/hYgA/kqcDW53YXW253vVsrq+ZlaO4jjA+sVOZK6fp\nlSL5wP7pwMPhiRilCT5Po0hBz57x8YlwGEX0Scn4OZyqqFOhU4/G2txv9m26JTGqHYl1Z6wbRGh/\nqdREp2b3LZD/6z/8Ix+//5aXX77hi19+yfXtDX6Z5J5rIE30VqZe7x6PqA+FF9uBuy/fY4wExiVF\nJp0J1pDLwpgSIQd89NK/qVskGvBZERLEIjCs0VqqcQy5KJYcajAWM+2c8joQZpzGdqJNpHPBpNNB\nBshwYZYDjOYKpDXKGkoqhBwY44IqisF0dLh1W8og4o9l3z++t3+WQB5zwhmHVop5maWE1SLcY41a\nFetSTsTq6qIAq2UBbDEMWHbKcUlhKOK5uE4sxkRnJUNWRbSLVc4YxIFeK3E12fQDMUS2mw23N9f8\n+fv3/NkfuJ00j8mLktta+Z4ChCB+5+CJqqWv5N6r1KVWtaoydF0vAzbDBqUgThPRi3UdZOISCVPA\n1kGh3nbCqkl10MeAaGlEMolUZOI1hsgvvrzit7/7Nb/53dcs88w4jszjxDIdWSbBS71fCPNMmiau\nnzzq8Qgj6FKwQFcbr40iVRQ4ZbgeNvzN63d8mkf+/fjEmCKhbaasTtDE+VGmyhlsfhbq1wRDvv/J\np5IVW045r1OrRVV9C1UbklQ4zjlc59j0HduhO6n3cR7ET4ySz1/nj4dqpgDrm1P130oDuu87Xr2+\n4frqgu1mQ9d3WCeTkJI8nOznUhHFvVgbnePsmRYp44s67ZaGjz4vZGpSILXq2t+htNwdKJmHD9/x\n8O//Qnp9hcPTq+qbajtwlltjuPmix1y9xF1cc3z/J9T+E918RIWFcUwwZRgPzPs9oxfKZ/Yev9/z\n8OkevyzoupSK+uYbk4a6xM/OxHLaA2eQ1goPFHnv59d8qn0ypYrE5SQDUa6DXZcwZSH5CUpGOy2y\nDoeJL243vLz8gsPxBfvjxLFE/vjwAWsLRct9sJst/eaKzcU15EKXM31Ows1PkvCFkNA+oBcP6yBX\nIilJakyO5BApMVJCIvuEKkKzVFrRbRzdVqNMwniwGTolPqEqN/ZY7ecUs+4rpTXeT3ya9ny/PHE1\n7HhlDTt12htrUfbMUOKzGZWz18/W7PS1XDmJEBlKyvTOMXSi/SCpVnWlxwjfUykchq5YOmXpiHIR\nitWoIsVMtlYeiBwo4yMcD7DMYHpUCKhxouz3pHEiTCMlifznQ5j5n8mL+UgBW/fxTy3gc2r/+Sfq\nk1vKOrAhD4VUH05bii3EpAhRONP9MMgEmXGoqmCSVWbS8HHIGJN5nWDCMQZEvRDYXVzw6tUr3rx5\nRQyBeZpYppnxeGA8HBiPex4+fSIdDqj9kXex40XRvM+RJohlq+pfMRrqFBoKbHG8u7rmm5uX/OXw\nyD89PZBSXKGl9kg+l/dtfy7Ph5rO4IPP+zhncX/9Fm2cvIi6Uz1LnahEho7tdsvN9SWXlzs+3R/g\nMPI5dPO/499+Prz1zK3Paq6uLvj1L77g+vqSbugxzq2aMVRKYqoHUG6TqJUe2NQlTwDKZ7uonK7z\n9AHpiLSHWWlNP3RcXm55dXvNX3/5it9sHZeHR0gLqrfoi8uT7IXpUCRUiRgibmNQZQCTCceC0gsp\nJg6HI8dxZM6ZzljCIvtlnmZSjHUNTgdzgwLWM+ez6yjP7v2p2jqL3Ov6PjPOPtsr7W/OaHZbx+CU\nzFxYQ2ctViUWVSt6rdhuO6wVWPDjYc+w7ek3A/1uSzEdk9ccvn/icDxKcjPPZ5x5caVK9f41wkUB\nGaFXUHTG6yTc8UniiqHOJJiyShRkCl0RM3irxDyjNFGvdvKVXKEo0BXa6bue190tW+0YtH2+P9bl\nLM8LzP9Mk52pag+nOriRS6ZU155c9SHIRbIxkU05yaMpMBlcUeL0XqrsqtJ1nDmvzTLZUwXmI+Xx\ne9LTA2l7SyqKdJxYPr1n3I+Mj0fmw4HFLxziwiEFBt2xVR07ate6lUactt2PL+nz1xqXlDR/BPKQ\n65eS1BBSxCiFdbayFsSUVpWC14VHV3jfZYrNXCfoQyfQTCoEY9hut1xeXbIZBpKzomZnrVQ2CNMH\nBWleUI8HXnQvuEbzbdMPUQprlCj9mdaAa0G3cLnZ8vXtC+6mIw/eE6aRKYkbgmSNLVs4D+bP1+As\nT372ubaWzonGi67641IZnAV9JaYQthhScljr2GwGrq4uuLq+oO8/nb7zZ6fEqoD3H96xH76vfuh4\n+eKaX//iHZcXO2wN4k0FT6C7qj3eZIKrsbX3sVIcTxKc55nsCSFXZz9zLf+grsnucsfV9cDr2yt+\n8fIl37y85I0u2PtPJJUgDmA6ssrozkmgWKJ40C4TGx3QGpI1BGMIqXAcZ+4enniaJoIVy7mweJZp\nFvnYs4nLn1ytFXP8Ccjsx9Z3TedbjC/rXEZbinboDn3H0HdYZ4lF0zuxk0ubgbIIbbbvFMPQAzCl\nQvaFoApzSYRwZBo9h8eRh/0T++ORaZoEI49V2KsWDEqD6YSdo63AH9oKNdR2lmXJzLOIfFlTPRO0\nIlFIsYhwXLJ0RfSJ5DqyNDeVJDBtXsIoIEkPamMHtlbjMthy9pSs2yKfBfH2nP0nCuRWabTTaOeq\ni08tSYOIbVIKPkZUknIsxSQLoBRBQ4kdOhZMxUkKcG6woEpElcrCUB0AaR5ZHj8Q9cCM5TiNPH78\njvsPn7j7dODh0xPT4UiMEQPMJVNUYgAs0sA8zx5Effpsb55XQPVj7XzNORH8QkpZGkzLgk4JbSzK\nWXxvSQMGAAAgAElEQVSUzDjYRGctfSn4KJSxQ1f4fpP4pBMTmVg0sejapARrDcNmYDMM9a2VWsrV\naqH1HarfiS4ap6Q8rEZIq2mBMlKCqDX2CIulWMPbm1v+lsK344ExJcYprherlKqHHSd4Q322GFAb\nmCe61RrXFFxebLm63Il8q64ZTc1knhNi5J4rLaP2u+2Wy4sdw6ZHW5E0Xp+HcjqQfkoAtDU418Hp\nmgEl4OrmkndvX/LLN6/ZDoP0TkxjZbQSuDazm0tNiiuHfPmJoHh+4JQf+YSqglMXV5d88/tf8e5V\nx+1guUwWDk88hojvOra7LUPIsMjQlbrY0hlDXhaW+09EFJuXLzBOtISNUszTwsdPD/zpwx1TiQy7\nLSFCmDzJx2e85latff4GzzP1xnlvHaMT1HbWqF4ZONT7+tk6nL1CSMxLRNuBbtjSDxtiLnSdxRhw\n5oUM6VRFxBhCHTzSLMeZD99/4MOHBx4fnjiOo4jmaUW0mmIUGEXXO4ZhwHUO42SeRRlW05cmopUB\nH2Dx1Vs4IxobSoJ9CJk4ZmIOpOiE0aL0auJVtMCqSsmAVecszhjIBYcknnGOdaDOoszpMM/tWV6j\n+mkNf+z1swRypyRr7Kyhd249iUOK5DZYV1gZAVoLPJEVBCVqbiplSgyUvMgos3EYLaJNpo4MU7Gs\nogyl26C312g/UpZIeDowz57DFHg6LozHmRI8XclkpYgIhc+rKrCzonrPAYQ1KH12WK6d/fqXosC5\nDjt0aCX2aRiFru8114sW17eGGiqOqvBJBeboGXPi4DXTrAixUFKpMqQWaxQlBmnkVj6v0aoOwsib\nzlX8qQldtWtRSnSpS6fIrtRqAMinYNh3Ha+vrvibt19wiJ4nP7HkxsZhtVQr68WfFuoEV5y3RuX+\n6Cpy9ebVS169uEWZxng47ViBVCq9L6fVOUhrLdROa3Gdw7qOkP1ntcGP7fwfVg5r8w6Fdha72fKb\n3/+Wr3/zNV1n0cZUsao6wFN56OdG0OL2VBudSxUYM7o29M/Oth95S2etcXkf1jDsBt68veH22rE1\nirIk/m1/z/jd94xL5qubG768ueXdzQ1u12EVmO0FJkSM96gCZprBQ0kB7SOHT5/4/vv3zNljnWEw\nimnx+CCKjT/VKP7szdb/nYL3Dz75I9d5QlpO+NXn09cpRMb9xLd//sjhacG5rvGyZAI2yLAeRSCQ\n0lyvlsAyzkzjLMNhi6/mFImldyzOEqxUmyZmnE+ij+8s1pkTixTq0FJ9g6VgVRb6o4wz433kMEbS\nXpLQkCOvOodyBe0qKWKNXzVJqGyVog11BlYMJdSpOiu0Z6TKFqi2I2GV+/2J+/PzBHJtRD1PW5xx\n4l1XB4FSkWaETH7JL5xgkhEJ9rpAip79+MhRHfGdg01Pp7VgadaidGNhVAaAG1DDJTx9ohyOxOOE\nXxaWJRLmSBcC1yg2zvEIJCVKhh5wcLJdO3/eWtYLPwgd58uttcY4R+e6MzVBv054GqVXcSuf5OTX\nVabXq8KhJOYU2fvM01JE5CtKC8E5UV+z1tDMpcWU1pPDQvILYZlJTYem+UEWqsazXJQuErmLqjDS\nKg8gF2uN4XLY8LuXb3h/eOLb/SMfZk8o9QvPYKf1N4XAR2cr1HjnIiIk/8waw4ubK66vLtZsFxqs\nIl+klBw9qTrgyNuuLKVSULbDbDYiJBWjlO3PHpDPX4oG4J/gHjn4h4st11+846uvf8GrNy8rxdys\nErbtLq9TrUWCTE6JEETrfQ7iVKO0/mHgPgtyPwRY5EE21rC72PL67Su2Pegc8cw87vfc+SP3hwVf\nEqNfeBz3vLi5JGmwtmMJC2FaKEtkPC6YzpKtkAwe7u748OmOzdYydB2d1hz8TKx+qJ+/zedvrqzv\n+AeXpE4F4Q9hqhOD5fzZWHNNdboHOSXm48y3f3rPp/4BbYzonCTx1E3x1JFRlUwQY2KZF+mPpfTZ\nsF4hOMVSFEuzG0wJHTJdZ9mi2FojUGejUtYhplIKOQXQqiqCntCCx+NCKFVeNyfCRcLsQLnzCy+1\nQhE6MdpQrMiwqVRq5fW8lG/bv/nsPl/J/IN1b6+fJZAbLT82xEyKnk0neFjXWawT0H8eF0quMpJW\nE0tmjhE/JbSGyU/8+eN3fGcij9sLir1gULCxBmMs0FzPZaQ2F03BkpeJNB1J80IcR8o4MswLvwTM\nMDA5wz8WudkpF6EmZXCFFTpWpWVi6hRsymfbtEJaCpHm3fQbhq6nd0IttMbgg2cJQW50ET60zgkV\nJQNtmWlKMEbDg9c8RAPKoLSc673rGYYe13dkpYlEQgyE8Ynx8Yn9/SOP9/f44568LCKVipSAsZzE\n+ksosCS0q5rgUcoM4UpL6tApy1dXt/z29jXfPj2yjx/IocqwqoxuVbM6r1pOG1WGbNpHRfpVo+iM\nYTc4ht6eTsH6jXSdvCxF3nMqBR+9CD/5wDTN4tRiO9TlNSYk8jRDkL7AyttuB8LpDtFwgEYjpYj5\nwM2rW775b3/g+vYSGbps9MT6dUrJyV6bYu2b5lyqkFciZBFmW+34KkPnWVKl1Omfr29KxNFc57i8\nuuLNu68oeWaZ9qQQuXx5zeZqy9sg4+J/3o/83Z/v+M1yy2+WifH+UYy0n0bS+yfuk2F4c8vwxQuS\nLnz4eM/98cAvv7xFF8345MF7yhIg1MqhnNanBfPTmpV1+Kf+9fT/xrQ5feV6XcJYKWtmmes1NxRO\nq5Z1KuIS+PjdXV3n9j7K+l7OBtzXzXauVSr7th239X7VgKl1rXU17HYbXr+85OXNlhBmuc9a5LJL\nEZhnfDqS54hJBWd0tRXMzDFLgqgUZE2HpmsDP+ueYzUlN8gcANZQiqEU8V/IFE6OTLJPn8FZZ2v2\ngwzx7PWzBPKLzWbV6qBA33V0XVfV8ESc3hhNwhCz6E0LSa/Q9z2LN3zUnk9hz59C5C9h5sPiMeM9\nf7ITlxy5fvuO4foK2xnS/Qfy/pE8ziz7ieXugXj3AI9HzDhD9jyWwLEkDjlzTAEfq4tMqVCQMpi1\n6Dl//fBv53leC/RKqxU+8stCqLQvgxK2iKY2WhSDdXRBMx0emZMib4oI3CtDzLr6HybRJa9KdIYC\nOQq45hd4eM/y3feMd/dMD3v8ccEfR+I04YeAzwlfUh1RQgZalki2kawU5HZI1ccjSwZkjeWLyxv+\n68u3/OW45/s8MeW84t8/WBZ1/qyrNXkX0TGN7Tv66wtK15GqN2cOkWISVR9LXklip1UaZxyzXwjV\nJGOcZ4rVbK53MB8FN42pHqS1Wc2a87T/5D21w1kplNX86rdf84vf/5Yvf/1rOjUTgidmJ/6ZqTbT\nEV5xm4FYs9DabA/VEzVUh5vTIXBaEzhPADg9vEpkjuM08+2//oX/6//8v3nz7iUvXl1xdfNOBKzi\nwjweWMaJbjNwfXvJMHQcXeHP+YAKBtcr+ncXMCVsF2F+5NPjI3fLkc31jhdXVzx8PPDw4Ynp4Yk4\neXGXOl+cdY2eZ4bn4ep5PG//9nSit57D55m4fFqtwX8VYGtfUIe7SFSBNvkm+hTS5WNnMJ6qScJ5\nvbDWgqpRShXGQO80F0PHxhmchn4ztO8ISiz3yIVOGwJN7VCzhMgcEqmeZBrZk8PQ0W86StH1cBJj\nEMnGoXm9Ukoj49Govs8ShHr4lWeLptY1/5zt1V4/SyBf0aD6prQSCU5njAy7tCaLEoL/HEI9tjVK\nOfYZfI6Y4nkKC/t85OF4QM2PFL9nfLzj5osv2d7eMmx7tg9/ZvAzOsLd/R2Pd3fs7x/YL0lsonLg\nU448lcxY5P3lcnLhnjVYBQ61xpUWpNsVtaxqde45f9VGbClAKqtOuELhrF1pecUorLJsosEEeJwf\nOCRLMY7BVb/FrKt3Y0YjkEpjp5AKJSbyMhP3d/i79/j3d5SnEbUkOMzEaeRjv8eXgieLLdbGMe8s\njyaTCaQiqnpqFcBfI4+way4HXsUXvDreMB3FogxUnXDMq5bIs0yiLpqqT2qmMGy27G5uuHn3Gntz\nS3QDASVTqSmvGZs87DIPq5XBaEfGE3MhpMKSC/1uy4urjo/jkbIEShSlQr1mhD+4JbVkkgjgho7d\n7RVffPNrvvj6V1xcXsGi8EYxuwu23QVp2GF7BylBCqCCsENUPfyUYOc+JXyBbCy661DNzq/IAdaM\nSdaDhefBXAHJR+4/3DMeZh7uvuDdV295/cVLNrsB1ym07tlcdOyuRA9GqN6JYxSnJWcNXWdIKlGY\nCYeR958+cT9PoBTTGHi6H3m63+PHSZyKnu3p54u1BnMlz+1zDtD509DC++fEwtNnn2fqp9d6XKiT\nfDNAyfDDr15/zPk3+MFBIodDqeeCvHdnDLut4/piYLcRswvn7JpspSIxSNdr1u1OKUXIZc3G25Fi\ntaE34neb0/M1bAJZMuBT0FnmTKhVSQvScDqsntMzawJU1/4/VUZ+9/SIre7SpoBViqFzKGURcaQs\n5U2SZqectpkcYfGJaZ/ZzJEXpuCWhFlEhvL7uHA3Hfmnj9+j/uf/QClFpzV/ZQtfDD27oeefxpmP\n1UOxaEXMBZ8Lh5TISjSYS4aiIsWDz5kpJ5SGjbI4xBGoLX37nzQ0nsdwJeey+PJZ0bZ2SmNth6s6\nFkZJEzcX8fqzvaM/QomBj/6JMXfkfsNl0riYSaFQlEUhQ1R9Z6v0qRIM0QfCMjONB8LhgHo6st0f\nYPKk40Q4jvxjgWvrCCXTb3r0yx1PX+74522hMwupCLfYarNubnJG1W47FwrfbXmp3jKPO1wIYmgc\nAyEszIu4MsUosFYTFhOtjKYHn3nx7gve/uprvvzmG7YXG/xgGEvmQiuKLkRd0ywtOGkqhVQx/KIM\nRVuKseS+5+b6Fd3FFYenPX7yqBBRfhFFubMgsz4e5fRwZq0Yri/5+q9/z8uvf4W9umacZrrNNcvl\nJcfrG7YvXrC9vsRuOoievMyUaSQ9PYgtmF5kYk8pYskEZ9GXF/SuI8VPFdbKNB28NdBwAnyeB0bR\nNB/DgX/6+z/yz3/8Z7q+48WbF7z78i2/+OWXvHn3movbHf3OYlBEvzBNR6ZpZJpmnuYDflmYfbU5\nXBb288zD08y/f/fEfH9g2Y9ijlyhgM9F4M5Xrw2+NWSJZ+/3TIOHxmBqn22G5C17buH8+Uu1N3Be\nrq+PWf3zWdV3YsnWg0a1ZKpUDSH5V6uRs5K+TN8Zbq423N5s2G0sSsv1i0mEZpqyQGFZEiOK6Lzk\novCp4FOrQOWXsRoXC26JFGNppUXTthGNeiWTn7Eg9ognuKkdPqWcLq9tj3Ud/wNYBX6mQA5FtHdR\ndBUzVhRC9MgEmeiEGFVwSjGlhJ8DISgWn4lLxmtFf32Dur7ipmS+SYmoTNU4kJunYmJIiQujeYye\nf3qc+TB7DkGgBZXrBitFXFLqaZhTOLlnV3pjpLAgN8ZwNmSiqFN4clNU+1i9TsXJv096AT0pRYaq\ntZ6zOOPMi8AEJmamPXzYB25y5mUKbPeFxydP9qC85qgsyjlK33OfHvkf/4/n3/757wnek0Og9xMv\n5gfs3QNmP/JxXtiXwt5p9oPDEZlT4VIVuqHDXm2ZX+147yyuGmBrZMMJPz+vAy9Wi3nDEjLBXXAR\nevpSsNbiw8K4zEzzIsEtJVQWI5H2K+eCD5HZL7x591dcvfiS0l9Qug1x6JgHy3F3QXd9zeb2Bf1m\nqE4zmsV7nvZHjvcP3OePPM2GeKN5/esN4+w5PO2hKHYvbzEvr9BMWC37YQnh7BCpzetVDtZy+/Yd\nv/wvf2B3eYlCk3QhKU3SHdntMLuX9Lcvubi+QJFJMbBMM8cP7xn1ex78B442M2499o3iq91rnh73\nHB4fGbqB5BdUESVDmbwd5XCsMELTqD/tHE47qBSKUoQcuX94YJpn3n/3gc12w/ZiYHMxcHF5yWY7\n0PcyPyDaHTsGt8WmTOcjtl9Y4iOH4z3h+ECYRb9ozfnKD2PF+m7WANqC7HNQZaWerl8l694y90o9\nqJosJ6hr9fusAVi+6LMK5ScC2LOKeKWdyHO4qmtqhXHCatLG0PWGq+stN7eX7LYOozMpBdnnsZCi\nVEPEBEmcgBQGtKqDjKJbdLpojVVZuOD5ZM9YgNxouTXLP2X3VdJAV5kNI7l9Pl/mzw/Huk/+U2Xk\n1hjBupRYK6XqodhO0VwSMcS6IYX85xeY5mrsiiZvBvxug3OaWwWbnAnVuTylRNYaYsTMCyZnDsvC\n3XHkyS8sdbKqxATVhGFpRrBFDhFVxZGauUFCTFxLhV5qpbZu1OcH5tlq12O2qEJWmYTIDhhtq9C8\nNMlUqcpwIbI/RA57zzZHfgf8IhfiPEkDLxamAmboIXaE0TAd70Thzi+oGHmjFNvBUWbPg/d8mwOT\n0oxKMRpNlyOuFDotetV221MuOo4FcUfRa48JKNL0zRmfEzmLNnkyGbYGo4wI7BsNiyLNUDYGG9Pq\n19j3jr7v6JwjZ3AxYpaFi1fX9NsduWiU7VDdlrTZEK9eUF6+xr1+w7AbRKwKSNNMVPccjoq9WRhd\noGwzl7pn+fCB+dMDShs2V5dsNhbjRjaDrY3lUEX+RXnOFGEGURTK9ly9eMvtm9dEH5jHkWnxXCuN\nih4VIyUJdzkpgzEOTEcpltBNjHbkSR3Ys2F0F+hd4nYD2na1SWvJfsFpuL65Yp6PTOOeshqPC5RU\nS8/VS1Ke3VK1PWoNWKQ57XMiTAemODEsPWMIbJctm6GvlWw9sJoDV8osS+BxjBx9YkmFqA2l71Ba\n4AFr9OrKVRD2mMBjudrXSQ8gtWG2ttWVyFGsUrfnsECF11rTN+eC915MsotMaJ4y/vr1nAfp02sF\nntYkSq0fe378nf0LxWrmoAwMg2G7c2y2TpQba6AVqSHZ6+RCiZkcZKS/QWFzkECesjBO2nFlY8Gk\nUpv9bc1KfQdqRZ4aHq5W8TS1Qsjt1Cuw/rwmG33qw/wE9MXPZfXWd0J9y4UxeMpSKGQcHW0SMfiI\n6h1KW9A9SygsPmNMx3ZwbHpH2TgGa9gqZKNV0SyfM3YYSDkxTRPTYSQcjmyB/XGk0wrtHFkLH/Qw\nSdmba3mpVaUctlqtUhFbrdaCeDX1EWGrOsDSMHTZb5KjpJKZs+cQRia94OeAU47BWXqnUSlji+g0\nzBn2k+e7pwPaKQat2Lk6rVAg50BIgeITKgVCiNwF4QHHFOljZDCWzeUlf1Saf9WKOwMqZ1KUqcOp\nwKRgQqM7LfRFrUVUKGYxgTDiX6lKdTZRMpF7v98Tq2WaVpq+cziF+FMuHu+l4WpqpkEpAjUsC2VZ\nUNWLVFEIwWPDLA0oDcY5lBnQ/QV2d0V3eV0zciMBZCnM2XCIwuIJWIrpsDaitQEtUsH9ZmB74TCu\ncHU1sNttUBgJnEWcYKw6acsYvcX1NxijOU4jD3f33N8/cPGrRDcYzNGw3Cmeiqf4ka7vKShmHzge\nj4xLYEpwSIopQSx1KtD2mG5AOXFZ7QbLyy/f4nrBrcWGTyzWaNmjsfRdtwbBnBKbvpeBLSX6OmL1\nlokhQBOIU4ocM8d55Lv393y4O3D/NItRS+11lCyaRCUnrDVwdSE2blbG3S92AzcXW7QRrf/FS8M/\nxUjygekQGI8LfpzX7Fsej4LtNJtdh27QSJGqmCxZqHVOnpkYOd4f8LMIUFUdwNOE54++Cm146lnT\neI2A8kZOiNDZVyl5/mKJUHR1qiooFQlJzLUx4g2glUanyuRKWXjoKWFqk/ToA0sQAgQVvtFFGG2m\nFAqJiECQlFL9eSUZVK4KAdZnqkGzdQapFj1qHcaTHEP6aeRSvYx/Koz/bBm5Yg5BqHepELRiiQpP\nxGrJoIbtQCiwHwN39zOLF2qQMZphcHTOSgZbyxOKmCikqhOdcxbVxJTxKTPGxN57DkvAWcfG9owx\noYyuuHhzKznhWk0qWgEGcJUzlWr5t74UVQfmh5heKycxBp8yJimyBtsZlDEEBQlFVJqsLBTF0Flu\nrrboroPLC+63AzlGVE68y4mb1iYpQuNLJYqptI8MPnGdEg8UxijMij5KNh2iDKvMyuG1rVz5yljJ\nUUwElK2KuOU0ch7CWupebXfEaqari8Amzhjpd1q3qr81r9VUMjFVaCYn0ZKpyo62LCyHDxwOET3d\nUa6v0VfXHA4f0Q9/IXx7TT/0q8zv4TBxf/+Iv7+H/YEy7pnHJ54envj4/zH3Jk2uJMmW3mejuwMI\nRNwhh6qXVa9fcxZhL0ghpbngijv+fS4ehaQ0+3VNmXmniMDgg41cqLkDNysft9mecodEBOLCATM1\n1aPnHP3yyul8kQG5MXI5BYYhoY8W7zxxSTjrcLaXSs+0IjcXYvLUDHG68uFvf+L8/AWvFb/f/ZF/\nOnY89GDLGXsO1PkTU5EG/GWc+Xy68Pxy4vn5hefXE+fLyBIDpuuZx5EwX9EqgSkUFQn5yr4bGPp9\nG/7csjKjmJoHyBq0agWDpWpNtSJ8Urmgc8WWSoq62RVXpjlwmQIvp5EP18BrrIzKtMXZDKsae0pb\ni+o8fW/YHxxvn3Y8HHbsh57Bma1pXasmhMA8L1yugXO9cE2ViVvmSa0cdp79045v3h1wVjJ7hWDE\ngvWKQ6d3jpoKf/nnP/H88zPTZZJZvHf6mxu0cBfY71AddY+R/ysUjs3oSwFVkTOU3LzDvSSB3svB\naI3GGamOjZIRgvNVrApSEruQWiFXxRgyceXal/bCNHijRYeRClXfzMVUkUBumlGWUrqhEDcyAEjF\nsJm+rbV9ueu3qeY39P/jnPAb8cg1Viuyap7jG1e3bkpBlCKEzDhFrteAKloGIZQodKSoKTmjvacY\nqEV8LXJtYp4iQTwukWkOXMeZ8zgTUsZoS2nE/tQEBALYyL+7NnNUc+LTiHmWLbJIVnrQiocDdyvw\nLpi3jF0Zg22wgi7CG7XNBCqlxnev0hJSiIry4WDBdbDfMR4GKbGBR1V5pFBTQuUqmLUq5JJIMeNi\nwYTEJS7kELAh0YeEipDSauYj4FCpVbyRjaboikJv/hBl85Ku26ZVtOy9KSxVBW+sUEVTwhqH1vYO\nPRXIyGqoJTdqt+C33jmcKeS0YEh0eWSIhn3SdHPBnAIpnlDOScM1V/IccOPIw3LBlQVXruRw5tPL\nR758+MzHy8S7t2+lCiDhjMFoS+87dFU47/DO3VSopUBtPuG5kONCmc/oeGUYDjwNlreDZXAAEUKG\ncCWHIBbA04y+TtjrBT+dsOMr+XThdF1YtMFo8Bb2B48xDuc1u4Oh6zW+EzWuMRZjDWjQs2IKsm4F\n5gOlNLk2b6KWVdYCJRWmJTAvkXlJnE4T5+vMeQycr4E5lWbvTFtfGYXGGoX1Brc37I8dT489T097\n9ruBznucVsQYKalSE02/kTkviUvMjKUSG/SjtCRlw+PAw5s9x7cHkaFbI0MpGjyEboHcWvIS+bLr\nGb0jmUBMq8jlF9j7r9Ba7rPsX89O5Wfc8axYqYfWGfrBcxg6Bu+wWoFq1ae1rSJv/bKUiDFTUrn1\n0HJlSZKNbzh3+73Xmk4ZzNpdXYVmdY0nre+0TpKiwVWtMt1MsBUbkepeDLQehlXfvS+/uH6bwRJK\n0VlHZywiOJHHeuca5CLNv3nMhDFSQsIVZJJ3qsSTmD0ZFGboUEbGYCWtW2ZbKVoLxS4XxsuV8+nM\n+XyR8rJUpsY/XprHcKkFp5oLoJLhyzoXMHKAiEkXN7OkFSfnvsC7f4QtizXGSDBRwnhx2mBowSM0\namWVkkwrS+csDIqoDVgjw4+RqThOK0oOGFUwqjSOasvqtaE6TdKaxcjIrV4llE44K3awISd8segq\n5bP1Dts7sG0oRZZ+gBwrGmdkzF5IkZwSuqimcm2lohKlWkEOZVWlfM5ptfAsDF7Mj0JVzHOCDG7w\neKcxnWM3PPDDrueb/Y7joWPoHJ0HaxNGrzyPSrKZY68IyjHZykkHbDD8nGdOXz7wt0+v7HYdTpvm\nR29xxjJ0Pd7ZzUs8FzG1yilTU2aOCYXBFsubwbAvHd7t8N5hrGoVigx+VmuqZDTKW3S2dNWzo8eF\nM+Pzwt9ePvPX88i7bx/54z++55tvH3g4DHTeyaFRUrNslcY+COxhdMGaSi5RfPYzKGWgiAw9hIBz\nPSUr5jHyepl4Po18OU28nmYp+1Gb7FsSjeYnXkEhkMowwPFR8ebRcdw7jMqkOENNRKVZwsI0zVxe\nFy6XyOm88Pw6MYVCah05rcBZw35wHPc9D4On0xqrFA6NUzKntZW3eK0hZcK4EEMm5xvGLEEBblj3\nXfxev3wXt381hN/zse93pVYYZ+iGjjdPO94cduy8Q5fakpcCqrQZpZUUsrCuYqLkilWKUKr0FNqh\noFsTMyODMQ7asLMObxy13PkEtZcg8KvsG92yxnt6ZQtmrOjt7U1Yq/oqn6OSBumvXb8Na6WVZLWU\n1rmVzCMWmbSyTrMZS6TUhbdqYZgzPkrjJ+ZMrIVUIC8zGBlUnLUhK0g1M8ZMUIpoDJfLmWWeUKXg\ntAxjFhe0JJzs1ca/8QdrrSRayYM4k/k735EGgLcOvMAT9+G7LQ/5HmQSdxhH9sNAZ3u876SZVJqM\nuzS+qlHMoZCLlGouZdI5cb1qNIWsjVANtcAaGlGLrdl1qVKm1tWaszFNYhXuqreWh8MBnyEtkdO0\nCEVq9dMGsUaIGatE/KO1bhmK8JOruQ3+cK4T+l4umCKiJhnMrHB9Jw1QJY1FmVRk2/g0y2HXk0tE\nUTl4T+dda5axmZG1txNY98St8VPaNKOcpRLrO8vbx4GHXoYCoBS7fY91khlqhcjQl0ZFaz/VOItJ\nNFy/ChbtxOfctXtVbdSauNG1ddu8fmIIxBDIIaKLwqLQJTONI0odORwGrJasWDLtDHn1x6+NdtqS\nggwqa0wx1JApKaNMxVuD955OW2JRnK4Tf/3xmefzzGUKzCEKyaLZ6KpmOyteNA6lKt4pDjvP22Hz\nLgkAACAASURBVMeBd08Db447nJUgH0MmLALp9F0n1LusmK6BT5+vvJwDIdWbAZhWDIPj4aHjzVPP\nN8cdx11PZ8WTRsY4GpxzlJJFwZwz13Hh+dOZcZxlJq82oLJgEPeB7Y6SJ5/STam5rQbFJvS633l3\nQYaKNAxdZzg+9Xz/zZFd70Wt2wwqSusd5ViIIbJMgbgkciyUVLBGEStMSbjoq6+Q0jJI3WvL0Tq8\nXqf+SEO9VmGtFMoNJ9eyX4UtdWMLCQwjb0BdRwjW+0RRbffzSzniev0mgXya5zb2SdgcqikUYxNx\nFIrIzUtC6UK3s6ioJEspMFGJtVKNaC2l3lGt61xYUuQ8RYox6A5ikjFenXOoooSB0RwHNwxcq40Z\ncAseLbuoIrGVEqfdxDoJhV+sQW5BfYVrjFJ0xrDzHZ3323gypa2Mi0K696XANMXW5KosYWpD3RXk\nSG8M3hmK21pEjV99G24gJBkRM4ScBNPLclAZY+iNFeVgLVymQt+wyFIFpkHXNrZMuN5U2WdidEbz\nsZFS0WkJBLlBKGIdoDFGsEdrxSlQVamydK0oXaXRBuRS0arglRywto34o/HWZWR7m7jSNkJVNOe7\nNhwgRFJK7DrHOz2gS2LJInTynaGSmZeZWjNziITUhgS3Q9EaRcyiZ1DVYpQwPbw12xizTcxVBY+u\njS6YUyKGhbgs5BilKdUgQqXAeXkNKSfiNMmhXzJWabzWdG3kV61CyVzNqwpFXPtyRlfTbAIUKRZO\nl4WPn8789PGVy5xauS9uiaWNUZPX0LjVWuOdYug1xwfH49Fz3HcMTu6vVlAGQkxNvVrIITNeIudL\n5DIlpiA12rqwtYLdznF86HjYS2WldYMFGgsjU6CINfW8zMxL4vnlypdP5zb2jo2Ns7Ez7vbebQf+\nMgO/S3PX77/7hq+fXkUjMDj2u45d77AbU4VtDoI2ol9JsTBPkRwEVqmlUrUWWCXXDaZZ4ddV6by3\nHq/Mpm6uZa3YNZb1UFqfy+3Pu8Jhpc5v/uW/vJeyKRB+9fpNAvn5Osp9VFFPaiMez6u7mFIK47VM\n9nGGanteKVxtZJwDc2LLHjZVZKlYqkxnqYpRaTSaHmnu+K7H2UKJhRwWSpR/t1JRWYQ5WyBXgke7\nqtgVvUEqa323vs2q3uhDrUAW1Vb7UFZ/jc5ZHh8OPOx3aKeJKYsHg7Hg5H6dtdQKr6cXQpVGy+U6\ntglFmhRmktH03pEHB0UaODEllpSISaaZ5CJBahg6UlM29mhxWjRKRD5GiWOcUfi7zKe3joJhSmzD\nEqgVp8UhzhgZUyUFSaXmtEnoCwJPaG1R7XAqWdgrymhxNSwFjORCS0gC7eiMyQu27jDo1puoLYgX\n0FV+3poZI43lqoQVsYTEEiO73uEGw3mcuISKG3q0rSxxoVzEROsyL0wxUqhYI5ainTXUZOh0J9VG\nLQ0Oa0G84ZvrqEDJtgSzTjmRomTkKcXN5K3UwjB4uk6y4XERAdqSxUp25zsO/YC2Trw/amVaIs/n\nC9MS0FZ6DqiK1eKznWNlvkR+/PDKhy9nXk4Tqd6zqVqzXt0S3FKhlIRzjsPB8fDg6Lym1Mw4Tnhr\n8d6x8x6rNCFlSobzeeHzl5GXSyIUjbJOst9SULrinOZw8DwcHN4qUk7Mge2wFUStUJaFmALLsvD8\nZeTTlyuvzxMPoYqwTqmNX37Lkm555zYGr33e6/9tOepWIcu1xQLqLVvX0PcdnXdslsjtl7Eebzqc\nd4RQyWUmLJkSJTmUyk9EQHNuRGOltn9TaXFPHKyTgRIg4j4liRF1fd0NG19phOrudlV73U2vIh/a\nnRoUGoLR7vs/p8ESD7uB1UtAa71BE6CJubEcQqFURSmKECvnJbPEQtUarQylVlIqWNdm/iFKuJAi\nS050LRuMKaGNxVYJNiFEYvONXnnOutGzpKGpGqNCyuQGXW2f4XpySrLWQvp66N4tMvmwmgpRK9CG\nXBRkhaoaY2ST5zYgwrQsse8t05iEGWJlg3ljSL2l8w7vPWnlnqfGP04JNS/M8cq4COVst9sJ6yRG\nppRk4IB1mK7DeIcyBj30eG/pnMEqzTSOpKbITLmAliw+AaYWVFaUZjGwUi2NFqP93bAjV4G1SokY\n2xwtS8Joh1WKnEX4ZZpfikKz05qDtW3UXNuIuVB0wTRef6kizV+zEVUrtUFHtRZCDHij6DvPh9cT\nc5Jeg7KVmCMxBxSKHOWwG3OQakgpKAWL42gHHqoixYBTmqHvcFZMvHLOomRsDoe3ARKJlMRxr2TR\nB8Q23iuGxDhNnK+jjCGMgayqeK5bQ1WFVDNhioSYuM4zU4ob7uqtFVGPslzHhc8vV378+MrreWGa\nM0o58eivlUxucNHqAS32vp03PD32HB8kkA+dwxjZb1kpxhy5ThG9WDH7WhLna+D1tHC+BKalEosA\nFNSC7wz7vefd2x3v3+zYDw5bC+O0yLAGKrkmcSzU4igYQmQcEy+XxPmamObMrihcC3S3aw3iDUP+\nxaO3zLveBf5fXg1SaptVaVFd+s7Qd4bOG9apUwojbKhaxRsnBGKQoS+bg6KCOSXm1CiiRjQtm6Fd\ng8l2Sjz+BToxmCJDmE1pFGalJOtvGV+ltAxb4FHd2HCCLtxV9euBgWqKKvXVwXV//TY8ct9tH4TQ\nBKU8tKa5JDW/Dq01uSpKKXhr0bs2JzG1afTa4L1uWYBs7hATXZQG6TgFxmmh62QCempNzVxyG3ws\nRV2nFb/v95jcPtQ2uUg3bwbWjEB9jVfdrso9y3M7SdcFJXUYJcuUEGeFsifTtzO5VsEzlaZ3DqtD\ns2a1OOfYdx7jDdaaJvBYucQyd9BG4SmnGHA5o5QWT/aSNvVYqRWdE3mBlAImZmzKstibGf5KJ1Ny\n7mwbJze6Iaze5nKSaa0p6lbCi3hhNQZqIgtUgyn09vO1kiG3NmZ8rTirG8NEb0KxWpujXUvMVzYZ\nQF1Nw1gFL+CdwXeekESN2nmDBkKQxpVqVsGpTaJSBpJSMo9RVRK20TAz1huOh51USUjfoCqaR45s\n9Jilb5CSCMpkXmfdMr6Ve51jQumKN0I9MwqBIVr1GJbIskRKzQJHaeHUkzUxVq7LwufXKx9fLnx6\naQ3NIo3oVTaU77A9jYizhs5y2DvevxnY7yzeNagLhFpX6ybSSUtknAKX68Lr68x1iq1Xo9oSVmhT\n2e0dT089b556doOjs/J5uWxvop+WmORmOjdPkdM58HoJjFNrcmYaFvz1Pvr1ELXWv/UO8uSr/bY9\nv66oRfPlMRrTW3a7jmHX4bxtFa7a1qBCejzkloUXgVhK8/qZYiYkGaytqziB6kYVVEUSsH0Txa1y\neqU0WtWWBDbR0DoCrt7dc12LqbpRndek8D7x/tq/6dfBld+ItSKZAVTGeSYEUXn5QWbeoTW6KNAW\nCxgVGPYajIg+aqkbB3QtgXOV/89FpvB8/PSZ03VkHGfJroyGZL7ygFjdyHbG8z8e3pFT4ufrmZ/y\nJAOGFW3+3u21//JDuOXgDedrP1+qoTU/aPM3mx2sc56GUGC1IZuCkQkLbSi1YMhKK/rec3x8YH/Y\nySGUElqJUi82JkMKRih+tWC9F6imc3hVJEuwnlKkCkkpsIwBEzKHpKjlSEXofVZbjNMyabyutMhG\nX2tNGGOtsFOMeKyXlsHnnNCrwKb9ski23lupAIqq21AApRQqBtl0TmOMlVFqrAffas5/f8Cs/hnS\nC0EhzUprGn/ZkHLBDZb9zkOFGCLTvKD0DRJyd3DsShgwrRGljaLzjsfjQdw4SzNR0gIN5QapxBgJ\nMTaHw9aYalCb1gpKRtciwrIGicm4vzaKUGuBt0KgpryxakCEV1PInM8LH59HPrxcOI+BmKCiWzOz\n3uA74esKtKUUndcc9o63TwNvH3d4K6HPGC3VVhRhWNd5rLHEOXJ6XfjyOnK5xE29WGlU4TYt/nD0\nHI8dnVcoMqXK1/udjFvTVWFVE9MEYX3M18jLy8TpMhNDkpFmglk0h0Pu0p67ILdWu+3xr9LwO5jl\nPrzdHpZNaIzCDo7hMNDtOpQFUku6tBI77VohxWbZAORCbIdloTKl0qqSZudAbT0WgQFthb2Wilay\n9NqIOnp7PcJRVxtMUtZMW63q2LpBSWsQV21t1vU+G224/Ctk8t8kkC8xY5rrToiNZN9Ov1w0IUKM\nwlG1RmOcpbNOMtK7WqsidB7dPhS165hjksk/48QUItZ5OutwVtSRfRKL2pgiFMVOGX7vD/zPb3/P\nx/HEaR4xaHJjstwLhuvdalmltltH/Su7NnlWRibvWG8Zdj3VQsmFaZ6hFqw1dM6jrcEYQy5wmQOx\nFJy16BB5PD7ywz98hzGFOM+ESRZ1MUqann0v/uNxIB8PzDGSSgZleIg9MbWGUwiElkEqO6PUgqkZ\n1wJhbSZlRhuccaQipX8thU7LwVIQTxqKWIHqKnbDGgi54o3FG4daBUtKJhRVBaUmUEWUm6bH2V48\n0EvFdD3Od3jvMcpIs5ZbWdoiMFKFabx1dN6zhAXvDLvOA2IPnEvBO4PpNFMUxeewGxoDRzJiUyEp\nsR1YFhjcwK7fYVzHftjx+PDA4/FRHPFUxWjJgFPzG49BAnmMsdEGNZ1z7LoiwdFbus7wtOt5t9/z\n2uAJa8B6L1VoSKSCrAOj8EbTeY9SmrBkPl2f+enzmZ++jEyzlPbC7V/x4baZWmYpgjTZM8dDx5tj\nz5tDj7eOofd0zmG0ML6WEIk5E2LhPCa+PC88nxYu19QmVK2BBsHpTeWhDUPWSmCHOcj0LGtsY2Ao\nlBKqbi2VFLPg/qeJL68j1zlCkkk7tTTD723LrBGsbR91a+xJPG+BbA3c6777FZhB4Iqy+SQpryk1\nMc8LoUqVb61FayuuqlkoqHGJUkGlTMjN6gOYEqSqNu3BCs1oZTAKvNL4RvEsdXVBbbJ/JTOHWT3p\nV4rkSvRob/Ja5W/PVYrSsPOtbqmVUlJ7r//++k0CuTarx0o7nVasqrQhB4jHtkLw8K5zeCMcVepq\n4CRVfCoFUzVWUl5yTEzTzPU6k3Nh6AectSKMoG4Zk27/7kE5vvUD/7B7IOeINzemBfxr5d4tM1d3\nv+6/XxBL1bK+QqySoaQokIgGhq5Ha8uwvr4qLA3dvEu0Ep+S3TAQ0igLu6kiNU04VYAqMALOoJ0h\nFvHC6JyRie4poZ3FhEhYRD1YVERMsSpVCduhFmELFWU2H5mqhCa5euKkWjBYDCJM0Ua1qfIVp42Y\nVDVF4broBRoUcZW1O1z3SNcfwA10taL7HXnoyd6J6rNkTBWsuLIyfxpn3RaK6+hzJvhA5zqGvmNJ\n4jr4cHyg33d4b6XKc6ICtqb5tmuZzJ5qJebMYB3e79gNT/jDN/QPb3g47HAPj9SaSTlSQ0QrK4MA\nUqKkRM1SRXnvZR3XSsIwPBw5vk186waOb7/B928wSyaniVqCCJJqpaTCkiqpbXqrDWHJTFPg+TTx\n48cLn15nrnPafPFX6Uitq8lVy9eUagyQNjsbTUqV6zURwszVF7wTNss2JLpkpiVxuQZO55lxioQk\nCVVteK00r6VPYrQmzJlLDcSgW5ZpMDoDWYJbo+CVXAkhcxlnXi8L0yzsKVsLqonq/n4zfYWbtOB1\nv/vuGSwr5Hn/1bVC3uptlNZYL0pl1eDaVG6qyhxym6jV5PgpU1KVHp0gQMRKs6xdm97t9amK1Rqv\nDE6tnuOyH2ttz1gph01v0c7FrdK8J8mtWon1871DkoAq/veNmfZr128SyH2nCSGLB7JSaKtErdZO\nX2sMxkrZris469BKeKwlJ8YQialAlkaUMZrdUCFlzuPI+XRmnqTBtd8J3S+myLIspJy2eYtGK3ba\n8mg9e+vojcVpc1skd1nC+kbfX1tZp24n6sYlpW5+CaVmQg7C1kiReVoENzaaLneATAzJOWONxRiL\n0hGt5QMMIXCZJpZ5ocZMp4SznWslxSgNzwaupXJTn1klisGkwTlpkMZZDpS1aZmRzDuV1HBB4RBr\na6hVyvzcmnqlVEznG1XQbFx2YxS2KTpV47JrI+P5VJVQrLTBKEfXPzLs3tHtDqjH78SThcpkKtrI\nZ2JrxJSMLmJqpmnNIgWYSjYZ7zp8l+mGhf3hSA0zpcK333a4DgavRX7tZKSZMeJgJ973clDbUtG+\nikvg4S3D2x942HWyZnYddT6TxhNxGjFKHBhLlc9Eq8ajd55YIeaKsYldsby1O/w3muPxQLZ7bAjN\nLkKw+t5ajFX4mJmAkCK1wJfniZ8/Xvjrx1dOc2SO+bbmVAvkG4h6VwFyz65RLEslp8hZRdlfjcK5\nNofXgLGExLKIEVRdm0Cbtlq1ikr6GynBOUSul4jrtDTIG8asasVohbNG5uommKbCZVq4TonYBmJL\nOCxtTdwy7O12/u6+brts41vf90ruv0vdk/Paz26N+JXhlVMRyw4SRkVizNv76WKiJMH3ZRaBKM+r\nuoGn0ucpmz7DWEOnmvipvTAxNSs3eNAosbBe4eK1EFG3X7d7acyuX2aJtW4Yvqpfx6D1+m0k+gVR\nTaYgs/KQN8khSrBaM6VqrpcrcY5cn084IwY3ORd+fnnlMs6QJC33Xcfh+EB1hiVGzucRZTSDcwzO\nMIeFcZ65LjMhiblUKTefbKu0sFSq8MbvvZbX8q02vHzNgvT6NbVmD9wQANSt8aE1fd/z7vEJ5cSY\nahrmVgZbtK7MYWnsi0KtUhGs1MwPHz8xXUYqlTRN1HlhX2T8HaY1ebWmakO1ilgkwIuJvXCtrzEy\nLguXaeZ8mcgp41Oha3hdqYocCimsDURRoaVmXibZhKhKO+PpjahyraQ6m3fEWgtrRct6ErUUfPeW\n4fCO/vAOZweM6UBbUePWSlGGoh1JG4JVuBLZ68hDjZg4Sq8C4aLHHIklUoylDkeM3vFUB1xYmJaF\n8vwZZyOdL4QqdsVxmdn1Xdu4sO89qXHBVc70eqDDiE/84Q3dm7cMb99g4kh4+cDlpz/B5QWVFull\nGI3uOzSGjGHOMOZK8BXjE0/HxKFRyEopaC2ykJDg+TwSvac3tjnraXJUfHo986efT/z85cp5anz3\nUlCKZj2xYrs3ZNh7D1UYMrUWEpAU5CpWtlpLL6MRNiXjbD2KWqTZmnIWszHdxuohrCrx95Z6MqRK\nvAo1USmFnRXOAaUQJhmNbKzBdxbnZLr89ZqavkFgxzX+bAG50noxt8ebbd0vMvH1ql89f+1ByWNs\nVETFBr0TQmL+cuGcq9CYWwNTt0ox5SyZtdV8M3hSLJIgCvrRRiEiEA1iZaF12fD9rukybBO+3Qwt\nmuNsLWAs1egmWmwJa3v9WUHVdz2AljjeEsJ2ALbIf0sX//76bQK5cVhXpayOqwJNQ1mphIolaXzn\nKUXECqFVFKpWlpgJsQ0pVqBKZUpyIKRcMcbysBfWgfOWUMqGUQmeLidkXUn+FVRRDMZxdJ2U8Q3n\n3Xig20Liq4X2FYtlDeYte6KyBbUlietcRXC6dfSTqBPl+bHAEsX7o+s8Q5Wm02lapJE3R8p1IuUk\n4hgtTV7nHNY7YTqUNo4sSnNzSYlLTIzLwrQItGK03jyhvXN0zkkl4oR5onRjg5RCXIMybVWHiFWG\nXluM1W3osBwYIrCQDYluw7RzwmmH9Y8Mu29EDFQRqXfDjkUJusN2HVUrriGTagQd2XUdnQZlneDB\nh4orkItCzwl1nehKRxwvxPMrSr8gs48KqCqVWMrMcd5cG1PpW10riYBDEWPiy88/ySCIhyeicqjd\nE0o7NJ7w/JEyXVBJhlhn7Sh+h+32uFyx80ycA2occXph5z0pRMI841zG2o5YeiqJkIWDX1NhHANf\nThN/+3jiw8uV8zXI6MzWwFz37TpZaZ1yY7TieOxxVpFCani2rPGC2MrqpkjdGsQpUTIiIy+FWr0E\nbLOW/sIJZw12Ruh7lUqIAdBYZ9ntHLVklimItF9pjDPYzopIqlH40AprFcpYbCm4VPBR2B9raqpW\nXHndUF8lnOqrv91DmF/xx7fHb39DKXJRTIuinKFoqea1bhREhO1jDAy+UL3AuqkRKUpt0FcpSINZ\n9r1psE41Cm8tO2NxWm+HydpTux/jt30GLXDf3+NWm+hfvAetMlkP7arW3/5zCuTO4lqA1MjmV0oJ\nL9woUIaIwu8GMJ55nFgabmUpuN2enfXSNVeC4Snn2+I1jZxfW7ATnrg1MvBY4ahO5LexxnbyCjtj\nZz1PXS8Kw1ao1VYuyYFft0aQXLe6SDICod2l9eOs0gQJKfF8uQqFSYO1GmqW4GmQHoFSpKqYlkhV\nhmEYUMYwxUwsiIpVG7LWTEWCa86C5w3G0FdRc8ZaBAaZF6YcmXJmToUxpC3YGmfE8yFXaRxah7cG\n6/WWUyigFsGBUxVcNTdamUWUqs4J7azmKgIrq9rBJZlVoRJypC+KWm0LIM03pXmxSDNRcTgMdMNB\nXOZUJtWMdRlnM9aANhbtHNYLnFFDRn16IYUPZHUlxCpNwZjJJqKMUAxLzSxh4XRdBDM1hpgSzjez\nKjQHDPM48fnTB469JxwfmB+f0IcH1P4dxj5Q3CPL6Zk8nkhhptoOs39kePseUwrqfKK+nlnyR0IM\n9H1PVIqSIrrr6MsBrMZ3lRLOXKcLYVr4/Dzx85crf/t8IsT2nlR9Gzqtm4EbrepBnBv7zvDu/Y7D\nzot5WuutKKUIRQZP69VkSf99IJdZok01a4RbVbN4EGlEOGac+JOXWrheR7SzdDvP8aFnGQOX80zv\nxZ7WeUvXWc6XCaNjo9euPZRGf50z/hrRU/4qaglZQG3ZuWytG755C9K3jHT71nbWrYwPqK2iVVQM\nVXWU2pOKJteAqh6jvRi8GYUhYJhlDTdYUinxIQopk6pI+XWbVqVU0ztoTWcdO+OEQ84aJ+qtqXmH\nEukWmLdmdXut6yPr/ZQ1s1+nHLU3pQq2s8WUX16/zczO1lyYl4V5XoR1kcXE3VmL1p4lO1LS4j/R\n0txaKguaw+NbAMZ5EuZALaiat+k1WSHDk4MINeYlEkIUS1frMJ1gpNckJetcpOnkteHgunbCqo32\ntp6oajUg4nbSSlNQPggN6AJKrSShut1vDJG04o9BDhynFckkdoMnpsJ1ylSMUPGspdMadMLERKiF\nag1qGFD55gOSUkYZQzJaeHSIejI6gz/0Qv1Tlss0MU8TcV6gFnSQDnhqsu6qxI+lVinlpyhClZwS\n1qomJJH7ySUyLxPGgFGCPbu+a835ilWw5MQSA+O8oM0ztXaMY6TvnYiMlDTFnHMcDwcOuz1ud+A0\nZYyZ8UYz7Pdo56nOUp0D29SlVDQT0zTy01/+xJ//47/w4cMHxunK+3d7nvYHdkNe8S9iSeSiqUqG\nLCxR+iSuOLwfCCERpjOvn/6Gmv+BngVjKsYocinMU+CyVObkSHVHbiwenwtv+qH5t2v6bqCWSAoz\n1lpSSijr6J3HDTsKwoD59NO/8PnLJ378+TPP54XrHBFHWwnGVNU43mw+QEVpKBVtK4dDx7fvD/zx\n+0eeHga8MtiN/aBYsphu1Srsp5AiSwyg1sO/UQuVWAqjKxah9V6Dx2iZA1tKpu8HUIrL1WE7K0SF\nklEO7IPneOjkvfSavu+Yp54chfi/2jwUCsZa4mlh+elCDiMllV/klvUOG76BxIp1+s/6Lbese3Um\nhDuYZYXhVME6xcPRYfZHsH1r9FqGw3vefPMDh4cn5tMHTj/+X4zjn4lzFLGZamtFGVROt39TN42F\n0qAdg3HstGmHSIsBbcqRghZ4Kyq357UKJLMmhqrBuHIAlBtyu1Vgm/VKcyf9FaIO8BsF8hITuoK3\nDtUrTDCYHNsQA0PBERE3MbFsCMQcoZ3cNKk2zYDJKBH1aKtFHGE0OmqhiLVMOZVGuwqxQSzNa6MK\nPqiUotOWg5Vmnli3rAvmBp3cHbLtWpswdwux/TUj1pen04z5yxcqteGAFWMkoHlreNh5lPVEZYlZ\nkY2wTrQzdA2uSONIpJK1RmuLc0KnC/Pcsn9ZKMLOMChvxVCr+TEbLab6RinSslBVarCIHHbkKjRE\nJHiUIswa67xs6lopSsQ8nZOJP8oY0jqsoLLWMKJYLILzbtxnLQKo2nDTKlEKiiblyOn0gp0XxlBJ\ny4w2mqX2MOwp7MhavF3E80YGK4QQmMYLLy+fOJ0+A4X97j3Hg2booigqfSKkBFnKZjEz00IBjGKx\n64879g9HHo9vePz9P+Ie3lKqZRqFsjleR6ZxZByvLNOFsAh91Psrx+MR33viPDOezlxPr5zPJ+Zl\nZlkW4hIYvIfmdZ3izE8fnvnTj898eL4whyQq2nX5tICs65o0sDEcrNUcj55v3x/44bsn3j70PAyd\nHBRGDMkosORIKuIlpI2MyFtis2bIhRCTeBVlYWxIpimQWr/ZEIuZmzZSxfWDwXqxe73OgZQSFZo9\nc4MbasKa2vpZzSu9atGDNBm8dpZRqU3C/vVWUl89tsasG3zcgqRaab+3r69PXx9VGvqd5fh+R3Wa\nqqWavk4JqydsvrIzRwqZtMzEKYgnkdbU2oaUOIVR7cDR0u8yLSuvWDyWXhlUUc3+WRhgtGqgBYYW\n9G63thX1dZXg393+evPrY9v9/zrdcr1+k0CeU+veOy/sAxspOWG1JmVNyAaqR2tHKYXpmlGqlYvN\nhrQUoVJ1RtNZTWfF+VAhizcpvZ3YJsqbGrOo7Yw2m/lTj+XBOpwWPuhOO1zzXcm08U1tJQlB/66l\nsZ682/srTJDVa6FUxRIyry9XliiY7erZoY04xVlnOQ2e3eOR7nikWmHBJkrjZUvwmq5X4Z8qBcah\nvfhq5yhloamgi0JZgU686ygpsSyREBYZYlClf5BMlEOl8ZmXMTBdFjovpXzIkbhEFGJhW7JqODko\no9rwCSdmQsvSrIDXAbuVpWQyrXGqHAqR4+cUmGJoBl8Zp2XAQVaZLz/OaOskC5pnMIbx5WQJZAAA\nIABJREFUOhB3B+Z+j+v29Psd1llQME/TVo0op+h3FmfE8bDrlDgOZvDasnMdqhPG0Ip5LrFs9gi7\n3Z7vvvsjh4e3HN+8J7s918tCmF+Yp5HrdeR0fmWZLuRlZBlHSspY5zl0Gj/0zMvM8+dnPn/6yMvr\nMyjTDrhK6ntU1YQQOZ2e+fNff+ZvH1+5xsDma1/FkkLwW9XcZ9Wm9LPW0HeWf/j2kR++e+L790cM\nBacESrTrsOyqsFpTceLfoaQpF6xBG0XMmdkEppSZ8yL+KhusLOwgGWsn/ZyYYrOjlTQkNR56bgpi\n1QaHkAoxLcjAHVHq5pTEJVMbbPOFadrtXwRhtWWsZY1mK6h8913rdY+X36HiW0VCe/+GwfHtNwdi\nliqylEpZFpZp5pxGfBkZzy8sly/kGEVVa6T5DG0AimsH2y/oMiWLsKxrE68a4C8WtmssUGzsFWrz\n/1/JE/XudW9Bu34dzNu/q9Z72zD4v79+k0Ae2niqNdONJZKbKc24ZEIW68mYI8sSWKal0X0avqsM\nJRe8FQc5rStzjuLxLE1nUsuGUlOTDc5Rh56oDSlE4jxTcuZtf+Cf+gODEtxa13UprKzddlVAle0R\n4XKz8Uf1VtKtk4ZkYdZSCFMgLLF1v1s8p9n3aph8x1PSPPV7HvYHfCeUyZzaTEMri8obyQi8dzjv\ngYILDmtqGwgNqWRSLDgsFrHZzDpRVGHJiRCl2YnzhDny5WWiVHh5HZtdq1QNuXX4K2qrYLTRQpns\nHNZZUhGPipTFXdJqLQpLq8nN1bJ3lun1lenlyucvJ67zwrxEllD47tDzj9+84b/+4XuqNtB5fN9x\nfX5GGc3++MC1wFwNQQ+8/eO/oXs4SiXQnBHfffc7tDPM1xNpvpKiDFiwOhByJKQItYonutEsKUlD\nuQhjwSiN0bY14D2X1xdefv6Z+Xzm+vKZ1y+f+fT5C+fzK4NVfPM4UJIIgZJxvHImVvh8vjAtiXGa\nmZaFqjTWS+VSM8RUuZxHfv7pJ86XiaIszjZctYgR14anqpVOKKW0szL1/R++e8N/8cd3fPO0p3OW\ncZmYloXzPKGVxlvP4Do6K/0L42ToR3GivK2qEmJsTpYBUyTrvmZx3DRVBFM0T6BIo89pqRBys7K1\nTuO8GN1Z7bher6QUULk9V4OuRqrKKmPQVE6UJZLmdEd1vF2ruI62h9YIrbbdKBtzVUxuQVCtkMbt\n5xVV0FrhvGW336GrIobEdZwpWcbzTeGFl5cPGBLaTAyswipRA8cUhN67Qqtt36pGSSwFjNP4OlBq\nhioSfa3dNpatIOIzVWRPGdXqyY0LflN23sCG1WV1q0FYzW4Vkqz92vXb+JGjcFbUZlprUleIMbOE\nTKiJOVUgURAeca3CS9ZtgcaYqCXhtMY5g1CwAqkN2KUg01NCYFmEZ10V9N6Tg9C6SsocteXfDkf+\nu4d39MYQcxO1rNapW0ddbWZZaw389VJsGP66/urq09KifCnUVn7etKByUBilUFqEElo17w8jzI6a\nC6U1pjSNhdAadhrBsql187Ney9mYMzGEdpBIY5EkNrLr82LOhFz4/Czjyawz22aojS72lfpMSRBX\nSprLWqvNPrdWKc9l8tNqXwv7zvOHN4rd9wvKLpyXj5ATpiRUiJipw1wz/bVHdz1OJTwRVwOmGnya\nydPMPEeyctjfv8ckTZoL0zSzjDOkmb7v0OyZSuL1+RPkK1ZHasuwjBLnu5gKJUBMAs3IDEVDjpHL\nl0+cfvyATRM2L5gUsWHGX07Y8ZldWPhm98B/+f6B8XIhRvHvfkoXni8j8afPLEvk4+uFn09XihWx\n0NB7DvsdfddRqiKlRTBmpL9Qaia3NbQO6rBKRFUiDFO8eez5/psH/vi7Nzw+9C2zFtfHMSxcl0W8\nhKrYx4Zs6KqnV9Bh0cqgrRLaZhF74zlEQhb14gpXWGPYe09JcpD3RrVGaSEUEbKFGImzJCXalDad\nSyxfU8lQFNWAUaLJ8NbQWytNWK2bY2jbMm1ttb/c9seWrt7vsFUZeQehr19r+MRG0GtV9GVc+NOP\nXyipChVxTlznxLxkYs4oEsZWvK6iSK2QCsTafHNahrxW0aXSZhRI1eQBqyCWjNXtkGk+K6t30TY3\nQK8xRd1ubYspDQ6qoMpKXZaTrH71vV/bhdxfv42ys5WCznnZ/IBWWXjeubDEDHFBm/pVkNBa6D8h\nJyi5TYIRO9Pchh+IkVFliZE5yIzKGrOY8ztHTTK53KH5p+7Af3t4wz8dnvDGUGtpHGkJ5mFFxLfT\n/u/xu68ebc2M9YPegn1zLdsKv7omLsJh74yMx9JaExaBKYxtbmlKtRO8BdP2c0uT3tfSDK2qapOS\nSnNxi5s/OUqh2rQerRRLCM3vunCeg3ytlfTb4mk3dC9YuEF+svkKm/r4lj2tCkMU73Y7vp09/fsH\n9kdLOkjZnZPhckl0KrFTE3U6Y1Wl15WhZrzWMh6vQI6BbpmoVdGPJzSZOE8slwvX68R5CmRrBX9O\nideXE8t4QpWI9YbOd1hryTkyL5EpBuYiPineQekqy+XC6Tpz/fkTjyZyMAJHeK0xZSHaiDoY/vDu\ngf/m+2/4+BHGeQEUA4nL9UT8/JF5Wji9nPhyvmB6sYjNXYdLe4bHRxEQlQylTYNCNrtqfGo5CAUi\nMVrjnWHoHT98e+T33z3w7dsd1CpQWXNUDEn8XpQ2qCLujhPQlUgsieJkVqYxmpwLIUXmGLmGIKyM\npkpd8z/dsGARPFlyzXIAKBmMkRaB4mg9qWTWXot4rIj4S6wpvHMM3rPzHqUqwYatMQi3RuUa0NTd\nGtt6Lk1Tobb/1tW4cqtu11e5VqmcLzOf//yREAsxVsTAUIRlSotJX6cVHoXWlSXBkmTWQW42AUoB\nRbc4dFehKpme5ZQ4fqrGLTT3GV57X0VF3l7/FlJuAqc1NlBp/kxrEL97U1aPgFL5tes3m9kZYmAO\ni5gOVUgZLovmumRCyKQUZFGpKv2YXKhRUZmxRqOtQaNIQTLv6zhvXiIpy+CIOQTmZYFcyEmTZgns\nDvh9v+N/e/sD//3hvTA7qHhtebCeB+vx2jDmLJj09n6qGx7WgqzwxdswgdpoRvWOxcK6wG4Zvnyu\n8rM0MkvSeEdRmnGJ1CVitWHn/TYQthQ53XOthHnZSvIVUsmlkKtAJyHKWLbVdKcqJeVto0fFGMkx\nomtlaMVqqbndz9c43JqZQ7vlNUVogfy2GNfKRb63orhMM//Ph498F7/l3f4t335bGFxF1ch8vRJD\npsbCj+ef6a4n3nQPuOEJ1XmMt+hSYIq4kNFZkf6P/5tsNVedmNTCl+dXPrxesQ+P9A+PxFx5+fTK\nx7/9zPV8Ec5uE7nk2ixe6y04HA57fN7R57+iesuDCvzueOSgDOl5ooxXVI70Bobe8aANZo7Eq3DG\ntTKMl8Cnn5/500+feS0JtzP8u+/f8f5pYD/07Pqe49MerR2fXiP/8h8/kscZ3TQMq5LPVIVTGtsq\nwt4ZHh8Gvv/myB9+98Tjg0c1JlAupcEXmU6BMkYcKmOhKMGylzhznSxzt2ff9TJGsVZKRhwlqU1g\nJe6NMSauqXDVE9aIt9G+74Quq5WMKsyRqAIpBoyz1FzFSbGZSjltcZ1j33sehgFjDLuu5zAMqJKZ\n3CjeJnUdynwHkXDXf9pKW9kz+m4xFthwZtUq5fv0Y12PpYp75OUSqMpQq1STuYp4ylBxpg2KTjJ5\nLNfMnMSiODf4wxiJM0IH1duGVmic0ri25sua9NXcOkLrVCCpootS2x4uqGZx23QmCkrDZjeZfgve\nq/OhmLYBv2618hs1O6tgq/MSSCnjnKMqx7xowpIIoZC3oIl8mE1ebdppqIDarETnEJlCIixBPKJz\naX7RgpvrKnziXAuP1vFvuwf+h4dv+HfH7/im3wvVCymN3KrWWnm87SWIkVMre6ocMKw5wRqgWbON\ne7l+e75as9t6t/jkt93Djm7oSCVzvo5UFN55RBhmQSmyNhRkAvdq45qzZHcp3zyUUxaBjVIbE755\nZYt3eQqJuEQelOGHYU9ZpAF5SivYs3JZ15d+y3y23+8SKTnAWimpbu+FRkFMjJeRL58vvP/mkePj\nI50t6BJwRhGXSIrib0HJXMqFdF5Qk2+Zk+b59YQtlUfXE8tMpDCqyNVmzq8vjNcrPzw5aoLTKbJM\nE/M4M11GspJ1L0xgeY0G2uFX0VVxejnzu7c9RlWu4ysXC9YNOKtJqnCZZz7MM0/HB/b6xKdQ+fT5\nC9cYqUpznUf+8vrK7CvfPh54OnoeHxzH/cD+cGD/sGe/H/j46crrpy+8fn5mmhMZGte5tAEkGnRE\nW8HVv3M7fq8dP+ie97OhrzSGkAHVvN6zIZeOkAtzuXGec0nC3LKWLmt8rHgjtq5dsnTBM0QYo2YK\ngSXCEiRjlUxaM/SWXbLCsqpFJjlF2GdLMoNYwCpFMaCcaWZr4pQ49J6971C6TaivWlSlMVNTuSU+\ncAvSd+tNtQi/GWbdFt923dae/I/+6lvqpp5c9wNtnVYlVhDOKoyqkiwUqFqCf67S4K/NspZKY6s0\nFlGTZjqtNsMsBcRaqEUIG6ZqaH5Faq021qlBSl5dVXprMkvgrtvfJd5Azc1qWCvp/bU5AL92/UbQ\nimykksXIxyhFVavFZiKnSm0KwK0JQGssrp7VRYYmxJBYglDMlhgFWmlZRskZjeDeDsW+Kv7Q7fmf\njt/y7x+/5/vuAd9GZKGU+INrhdd304JuBdv2Otak/L6Kur9uz+D2txa95Y92U+0P33mZUqIRQ6uq\nQBmUStLlbzaw6wcKUGtmtWWIpRBWGuFKX9NC2yi5CMySxVAsLRFf4Q/dnn//8A3TPPHjeOZfLmfG\nFgzWTKfCDff/lbvbFiktcN+14nVtVVRJvH448fr+iTfvvkc7MDiM1Tgvk3XEuzsT5sBlvKKTRRVF\njoWPL1c8muAHdsUScuS1BF5s5bpcsTrzZlA8T1dePr0wXS7kEFA5b2dOUSt9dO1jyIYoITJfJ/EJ\ncZZrzXw6nRj1zGA6xvnKx8uZv75emQqoXKnXkZ/OZ6acKUZzmiYuRPZvBv743RNPD46+s/R9z3B4\nwO8G8VH5NPKXv3zherqQYqaqG5C1aRSUBhPRJeONYTf1HMfEe13ZLYpYDUrZmzq5CCc51sqUZRhJ\nKbL2sUoYQ9qhMeiisdWQsyEWS6ieCc/MwlwTC4m8Ngm1pcPjqxfr4yw9qV01HDAcncGYpizWqjFm\nmlDGgK+GLjuppItGhUKKmS4ojrZj8JqoLTFFaspboSQqi9qET9z2f1t3K5Fgy8jr7Zvu6YgZYbdF\nrfHqNj9XMmZwWjN4S1elUq1ZqIm1KDQy5MQ2Cm5hlfTL00vDvTsUXePhGwUJod0KH7zRMVVjHbX7\nKY1JIWMeW2W49j3v4vO219Ym6Ppgab9+5fpNAvljv2fvBtI+b69rXBJaTVt5UUrePBGUNnKCapp6\nSrrwMll8IYQgwaD5Ra/YsVEyY3KwlnfV8Y/0/K9vf+C/2j/x3g9NPyPj0NYTUSqZG2al1L2DQnvw\n7tdX308b9bb+nPa1rVnKPU6+/huK5bowvKs8PAxcp4kliumOZJEFXXPDTmWSOzWTrGqTaSrM0uQq\nNVNSapiHYm7vTUlZqIvNzP/f+AP/y9Pv+N+/+ydSTfyfX36Gv/2//IfxTExiiL/upVIVZWXr1Jtk\neH1/4G5DbRvs1nn3WhO+XDj/+ML0h2/RDx7Tezp/gDATl5F5PFNzRXuDt/KexJQZp8CyS3w5B/78\n6QXfDvspJq458uap4/e/e4P3HacPz/zlLx/48vGZNC3IaEZ5tXbrVEsGZ9vLdaWic4Wicd3Au+/e\n8fNfP/AfPn/kfI5Mi9D0IjB3itgVpmHPq48UwDlNd9zxOyPDM469p+89/b7jcDyirWeeEn/6l5/4\n53/+K3/6T59QpeJbInN7z9aMsVBz5vr/MfdmzbIkuZ3fD+4ekctZ7lq3qou9sdmkZoZDyUwyk43p\nUZ9ZT/oQkplspKFGJLuLXXvd7Sy5xOIOPQDuEXmqqNerKDt1z8mMjIzwBfgD+AMYBv5pHLg7HSnT\nxO9+s+dX/bXVUXFhIKqUADlADsIzXBipkPNsyisKYbshbjtCn2wNzwWdMmWY0U1tKGx1WLTo6l7c\nxRFsb1gHImWOhTFlBKEEq+2i2a75tOBTFss9AOuidF2u+NWrjnkuTM4oyt7EoSamZSzQmGt8ByyX\nBFNaswcecWZYKbm5Yqp3OaOMArtkDUaKLrx1VaWL1p5tB5DNHatOkdyKsIlQotFT5zwz10Y06qWC\nQ2CPeNXDQBSlWyVw1ecPweZ4metq5ctSXTSoJRFqzf6kBYRrwS6KWplp6ms/Pz6JIK8Rf0Eoo2XZ\naS7sd4HzYDXKg3OYQxTczQRYEsM4j4zjyDCMThWywB+opeKTSEG4CpEXkvhNt+d36Zrfpxt+v3vG\ns7ixAl2+btXNuFqqdSzWtqoKZ/v/8pd9bHGmND+6a1/xDMKmSv076t9Wb7kZjRweDuzvj9y8uOHV\n7TWP55HjaWKeRiiRqJZGJH1nDTLUShtkUUpQtETIkXm0JsB5zs5gsR6R201Hn+FWEm/ilv/++jX/\ncP2aF/0ODcrfvMjW9uu7r/jm+MiolTFfzdewGodLv2ZzJFWPi/8vqJCAXoTfb2/4m3hN9+7MMWeG\nm44b7diEDWkT2caOuTuba2wa0aL0WkjbDukiyCPvppGT2oKOm8TrzYZXr264efmc93cnvv3xIz+9\nvzf+e1FLLntiG1Epoy7YNRfOD0fu7088f77nZrPjxauXxL5nc33ifLb65jEGnl1veXl7xe2zKzbT\nzkvLmgWXkgUm933PZtsTu47Hx4l3Hz7y3Q8f+cu/vuWnH+4ZztbJKdb7kVUIT2kp2eZugYmRtx8f\nGF8M9L2yj50J6Box8+5Pi57yNaq1iQcg0SDq4C6NosgsMMWlgJMoosndFEJNNdeirQ2ZZWmay2J2\nmFiw2IwWW58l2PVrXGXWQqnuBSmUTWYOliNhnDTroVuyNw9nhcprgB/Lci2yvEf2ZCW12EfGcjcq\nMAKYXJiP0Z04BSjeXcldQNEV55wLOQQGhNEtNmOpWOZ3dV0Wr9aaYuAqJX5/dcvNdk8XTHZM88x5\nGOmxRuIaxeoKh0As4jKGRmNsNoRU2bFYFa1An1RX7L9l/9vxaQR5Me2fc2Y4j/ZiEG62iWFnrhGd\nLd3VqDxWeQ1VNGfyNDJXtDllQikk4Comq9CX4Cb1vI49X8iGP3TX/La/4Yvuyuqt1GSDFV8VxSlU\nLsh1SSGup7RkhYa6LwdXnvy7PvOps0Wh1cA4H89MHx9Jt7d8+eqGx23i3Xzgfh6gWBas/Zjpp5qp\nnU6DqFVBjMKALb7gtbyvJLHrIzddxzMSv4pb/rq/5t9fv+aLzZVVbQvCm/0N//GV8qe7DzwOIz/N\n54tnqt72snKdCHZP9e+yesKqpOrnXqQNX+iG/GHmXSmc5pk8zuy3vTWBiFfEbUeXRhgnKxNLIUkx\nvnwIFATT/yY4r/c9u6s9c+j4+vt7vnt7z+NxIGVd5QKsXGFttpbNUnJhOJz4+P6B65sd6dWWzf6a\nl5sN+5sT8zAiWuhiYLvtuNpvubrao2CZpdOMl5BHApQQOU7KeBj46e09X3/7nm++fc/H94/MQ2lF\n3qqwafeja1iAV1kQmAp3jwceHk5Mu5nr3Qa8uYRxlk1KepHC5fDlrQWjrw6KMlPr7IciyBxaBygV\nadYvuiS+oRCKxz9csZd67WDXry33rD6IePau/czUpBgX5p1SUmF0AFLE3RpuLdZ+Ac2l4h+UuAT9\nRIC5EHyMMmqWiqzWnQqz51Bnd8WIYqSHVYcqHLBlUWa3bHLAgrHqUrdg9ebnbFaH30+XIs83G677\nzjLD58I0DDyMmY1GIymsGECRYIPn1F5xY6yyeCpMrGuhgcXVnnMTn186Pg1rJQUeD5YxVwpsu45N\n6tn1kfBsT5c63r8/GIfcg3pm2uE9Ji0NePYdu42R267jhsRzTbzSnl+nK77o9nzW7bxCWbRmCFUW\nN9lqi8gxmjUI0NJ6+9V+egsKBwuLLuO7YAc/lHa96s8LyKWwW81HUWX6eADe8rebW+b9nu+uIl/L\nIydmNAqpj4gUyjRQslkftgis72dP5iYK+01H7HquQ8cLTXwWen7V7fj19pbPuz0v4sb6Y0aLpFOU\nTiKvN9f88fo5b09H3t6PaKj4CCojIEhotT8qZepSeNfzbDxmAo+58MPjI7+9O/B3uyvifeHbYeDb\nuwObTWS/67nZ79hsE31/zWYXKXlCi/tlux1pe8WzF8+ZRiucVkTQDPeHkR8/3PNPX7/nw/2JJMES\nPHwOgtRaFYrlWNNQuXHlC3mcePfDBzQETvNzbvY9+02k7/bsNzuSWAyn660naOh6AoHUQdzYBrfm\nvRP3D0d+evfA9z/d8+1PdxwPA+U8082+vsRQ5HqdNAWjtraX9HNjOTyOIz8cDrw7nXi1vzaedltj\noS3Atv4E9yO7iysvQbsQKvqX5mZQQMNCi8PLGFywtZTFKqvoUFx4l8ByG9rOR712SBXQYSn1OpWa\nOaoNoRYtnDUTJbKpjaUxYyIXbYomEZqrIoi0VoS5CkaxMcyO+DPFE6xsCczFLJOgQoj27DlCiYJ2\nAZIV2iuloFMhjYWQLbFJpmLWkAfsJC6VW1NSphwJYUTVa7UEWnlsq2Vex9LlmFYLjEV5aZUP0ij2\n7hXyfbayMFfHp2kskQK7TYeWrU9SaJS8q20EUaYBZmvPQdhYYu82w/Mhsp0VKT1TtyOkwg2JN3HH\ntXRckbiSxFXouAodu5C8ySrNr0bVdNV35S8JFkTaBCtCBG7iYBQoV+YAi0JYB2b8dVbnrUF73Whm\nQi8niAjDNHE4nLh+zLwOV/w+9bzvOg46M2hmHs2SMR9huEDp1aUTNkrqAxsi+9D5OFgJgqvYsQ2R\nDe6nCgIJ800XoZfI6+0VLzY7gnwEoKw5BbJ+HGmbuR4tBuDjoU4dU5R/fbwjqPL2dOTz1y/44vmO\n26ued+PM4Xji/uFkdS2SFZ+y/kLqyKh4OQZlmgrjbHkGx9PI6Tjy8DhwOgzIeaIbZ3AEWee4dVLy\nOQp1wyyPxOH+kZwzx8cDV7d79ldbdttElwLJXXtdDHRpIKbYmgtP08w4TpyHmeN55O7+yOPDmdPj\nwHAarLVZWb4PlqDZ5WguN6MVXOAWkBb+dP+B237LVUo863fsYmesqpUiqJdYGZj2e6nV9cSEcZMM\ni/BXXe0HxYKWykI7VafJVdy4KgwVfPKrgbusF2mZ2ybcZZkXgYw01F+51EFnRAMJ+8FpfdkpvRHL\nu6A+2+r72je5oiwEipjbpfqcBWk+7Cr0ccvFxlvAa64bGaMQSu3B6YJfKkpTpHj11iIEVYacOZTI\njHjnJ5xpF4xx4rsKj80sQVtdmemr51F+Vrn2l8X4p3Kt5Mm0dApIsUzDUjI6z9bHMilXO2FOgAb6\nlOhT5MUU+O37yPVktTTmXsixcB17Pg9XXE2BXp0qVJFNk7y6WuTqE+6lM507F8QKM+1jopOwGr91\nRtXPh3J9Xnlyhj455wK5r94Zc+ZxHMiHgecbeBH3nGPHWTPnYlmYoxozQakNjo1KFyWQknGQNxLo\nJdGH2BJLlvrntlokWKXEEqByoGII3G53XHW95x7Y65WKuPB0l7uvdEV1kFeToepnK83yp/OJ8zTz\n4+HI/xQif9dv+WK7ZZsHftKR++PEGAoTpRXmQhZ3TVWY1tS3MI2Zcp7ZjpDOkQ/HzHCeKZMh9jay\n6olXlT3gz3ExAwLT2Uo5nA8nHu52bPZbttue1EdCCsQAz/sNN5uebdeR50KZZsqYLcYzzEzHM28/\nfOBwHmFWohYSdY2t/JxLivDPV5CyWkzuDxb49vRA/yGSUP747DVf7p/xrN/62r207ioNVJ6kAK5r\nfNSkkirIngqSZmnqpWKoc3p53Xa7TxSUI3b/W1frJ4hYNUdq5qPt11DstXqOuee0SdqAu5OaWryQ\nce0bTBlZq8W00mpm7cQV7K1zoujsVtrM4mLywmXVTSjVDBeFbKg+luDKrJCLUQ/XVO/aiLwpkYbK\nLy3any0J1WYVLcvj3xLjn0iQ/3R/Z41si6Wgay2rGUc2ThXcdYHcmRDapQ3P9zu+HHv+7hy59RT6\nww7uNjOy6UjdNd27gXR2KqGjDEN2NdGgTqZrXdYI05ZQFwPP+p6tp8kLy+KVmvu71vJiASdz4Rtz\nwE5eoXYqepHmG2uvmqnAjHLIMz+cHvmr+ZbP4jV77dhLhy31pRkEtc2ab0rxpgBmylqgLDjK0Uq/\nEv98sHIHlf4Z1RIXigQ2m56+7zz5QZvwM0FaEOdK1Ucs9TnBxrr6erVhdgRhRPmYJx7nmb85PvK7\n8zN+W57xXBND2XPQzAcmPpaR+zxy1sJAYVIrgaqloFnZIWyzsM891+GK511Hnkf+l/M75lHJ7oNc\nKlnY/5e/HYGxZKxWPrOUQhkmTuPE8OGegwSkS0g0n/yrl2/48vmOv7q5QYuSROg6oU+B3Gfeh0f+\n1w+PfJNHhmJskmaZLYPY9oCyrAP19YSj2oX5alL6Pk/84/07/vLwgf/5VzOb15EX/WZBtbIstDW3\nellfNCpcRd6hvieeOezvhXWThNqyrN7jyod+UYmvNglRahCgCVnFfOFztJsKvmDsdUP/NYU9IMaX\nbuaE1t4jVI0lT6Iei3d5DdP0AnGXsrh8QpA2L/WzJgt8b5VFRoSaEi91/xoAQrCyso40glrtFVM2\nYiU3gv0e8XiH1qyO5b7qRFc2TA16t9W6crtoWO21Xzg+iSA/nyz5fVYYh5k+WV/FvrMWYl0IpLTl\nOA+M88w4T4xjooyJTelJEslkxjzwMJwpJSHZ/FHmZ8RMl0qhqmisUb38WJHra1AqcqYIAAAgAElE\nQVSml8hnuyuuunuQQxvstjDVWqNVIWUTpKtrrVSD1kUiq00rLSOyZnW5LOdcMt8c7vn98ILf2Ypi\nvVxDdXX49wfB0HXdQ1U6yLLca3U9M699v3nvv5hXSE2sOUE1aytzpSKkhnZWgqEeTTnWgXwisNaJ\nRlEinSa6yQNsarzjqxx5ox2j7swv6sGq6p7R4PcXhJjMX79R4WE+cS2JhDTU2+Rg/dFl09Y5gfW5\ndqYWPEsPkIwUSyaZA+R05nYr/N3zZ7ZJ1YKGASGHwnWJfNFdcRcGzmXwNaduFVzaMXXMLgRSTQlf\nj54s9XtmVU5kjtlcbdVSqht+OVbP5JKjWks2nKtznUNd125dhy27cn1Vd5WxEpBQGTPaFKSshRPY\nfowCSZmC9brsRiDbvBZ6990vuufiu/37alXIqiTsvWXPqY+tKWl/nmp1VwW5doPq6tpruCV1y4tT\nj1c3oopkqaYBNRkOMdphJUhECZQo5C5YM/MCtVCYQHNtLu5ITIHUXJOqVHSxZKjnrMTX+vgkgnzf\nbdriDBn2/Yar3c6q6nnabAxCPlnWIlpaZlitblhQzmVmzhPMM3lKDDkR1GqMpyKEslqgLCyKX9Jq\ndfF0EnmzueZZvzEONJUbuwhvWV1zrSWX1xbxsDaN6i9NK7e/LBA0qfLD6cC74ci5zGxCt9Q/CbL4\nGT0Sr6H6OHEO8LLJmhCvmzQsW1zzko1ZS52qWq/NJJY9K08GqW6I1WP774tQbK87mrIvW565YK34\n8lwgm9KNCF0RdkVA0yIkXICvpXKQOn9K9q/IMbONieiUzxqL0gWWrlX3xfNczOMKCbWtVKDW2Hg8\nnDgfB7YTXHUbuhCbrzhb6jBfbK74tnvgbR5aUGtZAKv5lvVdcPFzoYUu7teVYLLORm58XB5tIS5C\nHFkQeiNA+O8V7rVaJiv3S7Ve7XK/PIJUIOKZ0VIRyup+RAISQZJJodozFEfJRBfNa/0il8MUnX+9\nrKQFmPgT+OeqQqExbUQNPf9sTO0BV+Olq4mo3+SB4vVHXDNKkWUPCV7xtGbpCoTKJCskLfQs9yCB\nxSIUGjC7HNtFmDflpRdq7OL4JIL8d5+9YVK1Kn15ZlO7qFjLGQtwTFZvpA+J0AVPhnEuafFkiBS5\nPie6UbgSYZRMUWXvWWxWjUwoq0FcOoosC2C9oKMKbzZXfNZtuY6Ru7wm9FdkUE3TxT1Tjyc4pv3/\nAjOp11nAFn+VXUWUD+PA2/OJu3Hg9dYaQQjBm0RgvrmyIOIcBVf5vgZtJWd/rd2FYPpCxQro+7nF\nuciUWtJ1ldXahNFa+fzsaeq6W/+5ir47ynU0+HE48WE4WyC1blaneZkwCdSgdGuo62wO615uTakD\nFgvpQ/TiaYZeGndcZamz7U+gLEKilh1uz0kVDtoUgikFq9j3w3DkTw8f+MvH9/z1izd0fXL+tbkH\ntl3i8901t4cNcn64HCddKdGVVbh2DawXkazcWlWIJhH2KfHZ1TXPd/ulzEOTZoswbAHni2UoKw+M\ngNYyxf6ep9yv0XBFwlDnYrln1cpusZuo1mG9jbYvgkAMSBA6FboSCVqsdkiwFPTaRYcqnJ9YK3Vu\nm9JZASVt7+BuTm2gwdx9hSksayu4AMbdGRebV6zmiYTFqmnuKJ+7UtfGnNv4Bj+nst+qksmiPGZr\nJ7nDqrQ2oLPeV/WGFbwQ/Xra2vrR9sLPj08iyA9e+EcV5xGb/zar1UseZuvkM87WoXvO1gKtoi3E\nBjVKtKQShVg81V4LpWCddFCjMdVBc635hHLbxsbAV+A69Xy+veKL7TWPxzuyrBbZCgfUK1TKmOqy\nkGqwVWX5XHOR+ApakoZMYBXgVDJ3w5mPpyMvtlfWIAErexrUfOFVoyug2bglzR+IUqllC8oTR5dm\nzCKgrUiPZdeWoBbYixaXqAteXWE1aV3RwxNhsZivVWhdnoff49145v1wYsqFGM0FVC2DRaPRFq+0\n8XXWhC4sAhEhxsib7TXPuzt+Gk9tY1/6cVcmckWnq7/bEqkmOcsc1qD4WDJvhxP/dPeBN9fPuer6\n+lAAJAKvNnuedRs6FTLBsxr1cryacv25AG/C74KiWOfVqHOVimtra6H+Sc3KXJvjIvUR2neLLEi2\nCWbxkg51f1QQ4DEWwNPKFxehDZfTB1cPUvvbQvWpC6FAykLBrBhJy31KqX7x5cJ1DBZQIBfzWsep\nMsrqDFfFZADFZ71kxgQikTBD59MsoYIwH61K/QyrwKw6xREHkLK8Ti4k9e9ysJhRVKxyZ7TC7px0\nQhVm2bamGtE3r7aHlcvaH0+erSm2XwyU2/FpfOSzpezaYklMqxohY5k5z9btHbD7nzObLMxTt0y4\nD6b1ODeBkL11VSGab+qJi2AJzi+Bz3aIEzhU2ITI59trfru/5ZvzoyUE4OnIzdSpCMuuWa230pYZ\njc3xVOs/+aVtmAKMJXPIE/fTaPzWhFdN0yaU2xCwKhEQDNGzcietn2+hehlPVv384pljKtB1iW3X\nsY2RoczM1I1bMe2id56aeMtT2/mX23JZkB+ngbenA4/nM9ebvpUVrenL7VQAQpPtdQKFheUAkCTw\n2+vnfHX4yNfHe84s9TiMu68X92p7YuWP/iVB2m7ElIuawcBxnnk3nKyrTlHceEAw8//V7opX/Y6r\nkDiUBSmC+211/cr6Wy7HUtb/2kQ2dBxlYWUtCsm06Np6ak+x2i7rX3SZEmdpWHAz59kBUV0/0gRz\nJDY3yuKn0QsUia7f8/03Y5mNoSJetc3mBavCMiyXI+H3sFYUJsCXE2tUYd3XU4AS8blXSljFjJYR\nczaRNIzSsMpqEOs6KShjKFSXWxDrNGUWA42zXuqg+v3MWPmBRtlsw7bsqTbRcgE5FrT+ZEx+6fg0\nPTsxdDHOEw/jyf1L9qAFvIP1DI7AkwqpZM5TgHwDrmn1dCJITyQRxQpOabawtxK8NKSjDZZJV8yn\nVX3m1jU7YwsChMDnuyv+5uYF/3j/jikrJy0u8DyZoH62XdE26lLO8hL5VEFt/ts2z03SKzVrTjlT\nOFIYe0hRYBbi5ADR+2eKeqanBN9cipa5Cb5mKrMEriQIIUVyKM6x9QXmSnTbbbjuNtymjsM8MaKI\nc/hq4EdXG6qa1fXvprP0UjwtgsUE+fenAz893rPhueUTxJUJX8+uCMn99zV5JXgbPlVTcJHAH28/\n418fP/Jf794y5qk2qWkbtSpbWVspbW5WAmCtjWTZdE2ZuSwurd5HdcaYe+XV/oo3+2tedBtO49BQ\nLW4JqZQW0GrjshYY/lZQZ9X4vQe//jYl9v2GTdcZi6GNs6wAxvIMlgi0JOKEUr/XUuDrvkC11Sia\ny9j2hIg1ZK6gJ1Tueg1ursenIn3Vy3lXkNk2coguFhXf6OKsq+r2WVsievmvP2krb/BEmIfVpNaG\nDiUIc7JWibGYZSAWclsQGGpuHgdBa8aPal1vlv15CjNTsTjdxpML8XuatViFUbVS0xmL45gL0BOK\nFKqFd7kIWPz7K8ld+e2Nf//z1duOTyLIf3j3ttGbFv+1l490wROxwvR9jFakJkd66ZGzPUhUYa+W\n4BIVSpm9FrjxQrTYxtGaCeZItGWtuTCwVNziwrGiFWHfbfjy+ob/+OwV//n+PV8PR6pXTNC2yepk\nOjEPWflmA44E1NCvMYhWftGK+NrrIBIYcuEwjsisdAiUVRlNL15kEXkX1m1TeSTdL11WO83qIruy\nKMv9NSQMJA282ez54+0LPs4jx5JdwNSmxRXFrjHSIqib37a+d4FqDJ1NWrgfB765v+Oz3U3zqzZB\nWj9RpVpDa0KMPvqKM2+gQ5C+5+Xuis/3N9w/3pPVZ6py2cSy6Kr0WVtTC+NjdfPwhEJpx6yF4zww\nq6V2h6rO/f62seez7Q2/uXrO2/knplwF98IsapZRva600WkD1tLU61hWa00zo2ZmSmOL1Loy1dys\nirleR9tEVIlh14xOWUU9i7E0roSd1qwHo6eGFTCoz9Jc2fWzFW3W8VWg1R5f5lkLrSRrQ/0slmYN\nGLZ41mqdLVbHU4G2SHZBSDMWyA8BKSbIU+3SFaiCwD6WlwkRhCU2amF1xQCUpI4uR0IpdLOdW4kC\n1iUprzj6gR6IRPaarHCbLvNblV5lvIkaeeEiyKB1+a4Rxi8fn0SQa1ELqnXG1S6+EUK0xJWixd0k\n6vxJ812FsIjAiLBT60spLlGjsz9CbdXGU/Tl4yNWajL4l6uuB8qWcxciLzY7/sOz1zzmzGOZeT+P\nTNj9XCA5X1brBJYl1bqm/9e1Iqt//Te58CozztkSS6biPRRDi8KvhYDtZW0BGWnRpwXB4pTMehON\n3YJ4YLHetFkaLzdX/PH5a/50uOc4z5ycILuImacCXC6g7CIcK8pa3at/7nGe+Orxjr958YbXpSz3\nUcdg9QXVRx/AnkO9J2rddBLoAry5uuH3Ny/57nxinpRZ1AKqKwVq97f4Rp8qoqoBl/GVRVgJjFp4\nmEdOOZNVm5JuazJYduzvr1/w/zx+ZMjZ6upjyMxomKUJjKoYLxR7G1P7K7Sbowm6i03ugrR+TO3L\nFhdBveL6D7hwRbTxDIEgsQlqE+Jh5UMHXSu+qjPK6rWVO6/xoFfuQLQK8WUv2Mvannu9WKpb53In\nu9prz6QXz1f3XSoBjSwASlfPvfJD2dlt+lcKqX43hAKbSazUbRZSqZaSCdpaL6ZeJ2pg46p+i9dk\nX0fnVtqpfW/xFxSXaZdzpk9fWB2fRJC/un5G77zx4o0R5pxRMZP/nCfuDyeO00CYJjZdoqOjzF0z\nTyKRvfSWvosFPhHQUFyQR1qN53aY9jOzp9AVT3HHfNSCbwDf7LvY87fPPud+nrmfBx4fPxoaoi6M\nRUhUgVPEqihVJOXiw3t4hoZA1kivvlI37TzPnM4DOmbzJyJNALfNhQvxslgSdYM3d4rvKyF40pV7\nDaMh9BCjZdT6xtIiPNvs+eOrN/zXu594GAfO5/PF2DwFBo3m98RH2Z5QFgSHc6VPeebPpzveD0e+\nnG/Zha6Nec2nre6Uak2EEFqwWqnVp/xbAnx+dcu/e/GGf7p7y5BnHr3GfKi+aWf6LPuj3qE2iVBd\nCBdCvO57EaZSuJtGczuVQhftgVu8RYUXmyv+cPuSl++/5XGeODqyrTkAReQCZFz475tgW73mboeI\nlVHoCVa7YxUgbFxuP7/Iwp2uFNxF6bKILV2Eg7UjiySJrWRrXWutf4Cj66dsFguihra+FS/ehitf\ntwYVDP22WhdVYq+0jqwCrCvEugzJau9IVSxKLVnsM9LGMuVg9EPxPIaLc5YLNZfPaj2ghsQphTQp\n+8HL+arSqTe6CebWER8z9XWZVOg0EYlWabVZy9qAk22JFaCq+7bOVwVldqKt1pWraX18GkSOdQ0v\nxSh1JVst49QFznnmfB64PxzoJbHrrN1ZraNcuaqKF+mRincC0Xt8CpUZYt/WXCi+cCtADYR2rXVS\niwkQy8uKUfjrZy/JQRlRvjo88HG0io3RTd7ZTbVQaOnllfEcN8Gi9ECQWLHESusvDpd6vwSxcrq5\nMPqGMMMkuD9foThn1R3uIo62V+iM+ixzbune+KKD0rivbVOJsUBu+g3/8PILTnPhbvqBM6VZnzZY\nCzZolny7vCLrTbLag1U4TihvxzP/+njHm901f9i8pFCpa4sXvgmMsDQHUBbhrnh1O4XrbsNvbl7w\nP7z5NeH9d/zzw8dmlSjS3EpNEKyQUEt2aTOxQoassxS91rU3W5DYLcjShd02Jd7sbvgPt2+YCnx1\nerAMTLErBdbWB8svuv6jDpz/rtZD9M3mimfdlq0ka3LRnmXl8lhZsSq07EN9ivBkmRjxWkc2xMaI\nqTEWceHRBLtgY6+L0FkLcZp7c3lAARfe6jkMT9UVC+deF3fQcrsryLN6r6F1vbxWO+qa9ESvX/q+\nn8UWVusZxMv42ietUTqgpcXJBByRFyuvW+9Lg3PN/VZqsJNVPECX71zmYnmuJyrYjzUwXY5PIshT\n1xG9nKyI9cWzrtyCZhe27pcL0RBBVCGqCQoVQ9RFCqbzbCNFIq0AkB81/bUpdrHghFL5qfAzK6au\nErFzXvY7/ubmJefagPXhjiEvrIQa7CFYYKWuoChw+9kN2/0GBPq+tzK6SPPxigghpoYIVAtvxsTn\nureAzZwRKZ5NavdUXJBXd0gtZ6qlLBs3LEtBVJogl2B0zkwhC8Q+InHJGDUNF/jy+Qv+ehr4cT7z\nzemR02wlW8svIoLF8vilRKL1sIrQyhG8PR/5OJ0burZzVlJuDYnbbjWhvJ5mQehS4uX+ir9//StG\nDzz95XjgrNkBoFIrUK6FjLqgFKkW0aVIWLvHWiVLrYHmqhmX50sh8myz498//4yP08CH8cxDmchK\nxWMXglsW7di+DViEBMYhf9b1/OHmBc+6jWWxlipxfE/ga1apLNGmkBrAXOQgq38Wb8hqQbdgpytP\nhRW/+skc+z6uiHKl5v37tAlyqe4DxADBWqHiDJklBeJyJi4UXr3nXxThLGqOp4Dev09W62d5/iUW\n7f+vY+JHjSvVXJJFAVbLxOdRFkCgQVtnoaf33x5J68StJ+vy5H8DjAOfKrNzu7PF4n/HmMgUZp0h\nCqlLXF/trSiN1/3oJbKR6GntyizWUaRzQe5SytdiZRUs+qx5pC+oUg2vOVpb/M1ULS5CHxJvttfs\nd1tmJnKZ+O44ci7WSDaqsyMIVo/Z/aApCV/85g3P3tyCwM31FdvtlpSS9S7EEHzXb7wGhEIuvPlp\n5jc/FbaI1ecOxhcsOte92sReUXX0hAt2QL2GslSfXWjNlaMGHscjj3niFOBmd03aduaymBeEtU07\nfhNe8ZBmju8ynAdyNtOymt6/pPzagq7BxbWUUJqJrVk4MnNkZk5L4Nn0pwtWYZlH/2y9XvaFH1aI\neBs3/OHFGwMHAsfvv+btODBooZBbnXJT3ob8ltKr61IE+KpZi1dbPxFrFdZ5nWlivW9jiIgI267n\nj88/4+1w5PvTHcMpM7hoqXu5zsySOOXK2IeqBspFhF0MfL694u+fv+G231wIIdpd+xVVkezrwznR\nLYh48XxrsLOY7PV5QdpzKZVDbmCjlMXX+zMhXq9TOeeucZfM4/qdK0u5xpNqUEWrIP63jnqXvyAV\nV4/WhHmVA/V9WfnY22e0WYQXCL+6bqjU1/WFDCSplOXZg7N76tpfPa8Xf28ypt79ArjW8TqllSn2\nfaDrh3tyfKIytj0VnyjegWOaOUwnxjyStTDpzDTO6JytBZNeMecNFGmCfJLMRpW0EiCL+dJmzRfP\nshkX00Xb77WYjn1k0cZN2UjgWhP/zdUrrkLPu3nmT3cf+frwwLvZKZQ4lQrLkNx2PS+f3fL69WtC\nCvRdR+oSMQZfFIv/V7xWdFLh5Xni+cPMdvA2ZaUiR1ogsaJfQdyd4ijd342eMWfNA2bmebIqid2G\n7x8+8s/DPV93E3/3h7/l9uXWkivzsoiTKsObPTe/+yv+/vyc0zQxz97JpQndBdqVXJimiXEaGaap\nNdYORGNWuNumFljSDN3VNcdngZ82g9XeyAUmr1fhjXubEFVBolEOS7H6ciFF63KeMfdRNjrl86s9\n/4HPUSn8l4/v+erxgYfJ3CImxLWNX6qaseGwFdKtUl+qYIOpKIMWJixgvgjAYF2sxJTEdtfzh+cv\neZwHHn74C++mgXEBolzUqlkLBlw4ujDvRfjb56/5h1e/4te3z9mmzu+tSohyUXGzVczLaiyK1bqv\nx1p+LeKwSnsXQBeuk+o6ogkjO60i/tVakOV8oL1eqY4t4QgDDBZM9fhBdcvIxeA3IdrcPGKv/oxF\n8+QJ5elDswjNttXbuK1GoSYjVcm9FuyLeG2jqhVouMsvBctjGTRbOzgsVqeiKwNCmjCv4OViHvg5\n4Ky39kvHpyljO8/eQFYukIg6XcsKEplJWYJ14Ga14dTJ9+dY2JZCKhDbQlowBVw+eJ10+LmGW7ia\n6ohH1x80wSvCbez5q+0VnwXhJiSeb3r+fLrjx+M9h8m7HWFuoa5LXO323F5fE5K7iiq3XaRxov3i\nBBF6FbZJ2QQlepLH2jRUQGqpNWr2nGvzimKaC8AWS1GjRhW/2GEc+HF45C868bov6JWQC2iR9l0W\no+rpZMPrvGXKlgQDTzepLt2ehoFhHJnyxOk8ME/ea1S8nG6K1t8xmzC47TaM/Zavt6aw8zQzj5M1\nEIjRFF+wOioBwSG6+SPFGpTEhKV3T4UyO4u/JKbTnq3c0JczkgeGYCheV1u5sT58Va1kOLCw0gJe\nejUGShc4xsxDnEhxNI+an1d7ldqeVm6v9vxR3/Axj/zzw0d+OB05FutL+XO7vgIQ+30TIy+6Db++\nuuG/ffUr/vb5a64326ZupKHZlfCmwZNl6Tr6rLx6WS3ztieeCL02r3V91f3SttgqEFzvo95XQ+hy\noQjs7xqXqcHRupZWlnB7vsV1yUpGUNF/26urjbE+VriMtWVQUbff588SburFah7Iymq/vPwyAKqX\nox7a/SoLUWU5pz7qxSM3RfrzZ2mf+bdNlE+U2TkMdF2Czpo+ICbkNrEn5hlRyDqTekuDHsaBTe5I\nRCPvY3UMxlCYsbFKtdcTK7QCNE22Rg3QFkT9dVGUK73uqraWAM0omjNdKdx0G14+f8mX11c8O3b8\n7z8YEs0+gRICISX6vmPTJUuICOb6sYQS56DWsp+e66yKISk1b+7iMxZDQqqod+u2/RFWiSuBtqdX\nsgLhYhHlUpiLkkXI4p3YawMCr8pWO7WnEEhRCcXqd6aUWhq/LWJDWPM8M40dU55AlWmaKEXpYsdm\ns6FLyYK4OYPi5qcyK3xdCnMujNPEeTibEoyRPhW6Tq2uupurtexpEQgRQigEDzSVIhQtTGPh8FD4\n4Si8f0wczj2HuNSfaWi0CWAwt9SKHubuo+DfmbpIv4mEq4673cSP3ZGhgz6Ya89jYNYEIxdkVmKK\n3N5e89+FvyKkwFktkD+XWr3wcmcu7hS46np+e/uc//HNr/n97UtebPfkJoVdcauXmbWuD47wrKZ7\nzfat66flObByD1QL9omAqIJJfL2iXBRlC3HtClsr9yXo22rfO3PM6uQsaDx4gpCqLo2NkSbgzQpd\nUIWKrDj/dlO6Ho/VHq55Im0P1xOq8hKsnLNviCWm4KcpzWqr5Ilq2dTPG/7yRD5PBFoDrlpLqSYi\nIdoSfJ66JZfiZItyXjCnrp51mc+nxycR5M+ur40T7kKsdtHYxo6cM/M0sQtWgwWBOW15NnZsS6Jq\n4aiWJJScqxlCcHJdFWR1GJ5m8+myOFdKsP62Srxbzl6jJgWZCpMOhBjZBfj9/oZ/6Xp+CNJaxAUX\nNEIxn2+wBgUARVe8VS1ewlnRbA1zNRd301tHe0s6qxrd3AcLoanCSm8n5ZGiqsEzVuvcmuCqcegD\npkB8o659hdVkXkUVEImEUK9prhWy+4VZu7RoXP7Yx2VsSyHPEyGmljyy9P8UiEKXOmKf6LfbhjYV\nKCEyiXVcCSFYb8ZGlbHa61EKREuTPg8zP71/4JvvP/Cnb97x4XDmWDJTsJINzW8qq4BUbSBcsvs7\nSwu4hQhdJ3z2as/tyx3PXmz4Osy8Dx/ZxgPXmx19jIQgaIHxPHN8GHh3d2A4zWYlFOU+D3zcdNwz\nc85LbKNOgGCWaMT69X5xtSPut7yVmfF8x3Y6WBnfaIojqgn9GIQYYvtbBOvMLhAy7rYLDUGbgBFS\nsXo60dfqUutEV26GBQ2EhqDrmvF4RliEeAt0+hoydpN6dmht1eguFrykRvWRh9pL19b4es+tVO8T\nCC0XFuiCXZe/YL24uTxEWWoh+WdW0rjVK1Ifi9XXaH2jui8RdEW/nDVzZqYvPbEYEcFYmE+skPX9\n+u3r6gVLkVme/5ctiE/lI++6ZbAwp34URZIVuc/JGprWh82S2ZHopkTBqD8dgmCdfCK12Gu95upY\nzWPTylVJ+4TUU4pU94R/t7AS7CawUohsYufmU4Sg3CQLiIYWRKk+YfOLFacr5bws7CpIlkxrn8GV\nw7MKPKt5HBezmAoJqolbmpVSF4LJ2uojX2t0r0Hhmy27b3vOMyFadm2IsdWwwp8/qzLlmXEabVFq\noJPQ+n8abTt4sSCaizNnL0WcldiokYKIGh0zVCvCxiO65aH1vte518HvXYsnrihoRoMwz5nDceSH\nt/d8/cNHvv3xnh8fjlbXx11CFcGJS7RWjMuzcUsQt5a81kiAzSawu+l4+fkVL55v6bdwP43c60gi\nccVMJ7GN7TlP3A0n/vJ4z+PjSJ6VJMn862QOMTBLagk4rrHb+q1JJj+IMs9nvj+8t16kPjYxRBP2\nxYRLdBddEu8a5fGWKMbOCh50VNTzHixrOnlLtY5AkujuL8uiNrefuQiMhGvXDRUxuwBaf3+tOlnd\nTCgQ3KIpkU00Vyp+TfH7t/UQWop9nd8LZFEtpZWvuKJjm0Ntp1Z32SVy1cvF7Ii8BL+PbEKguZ7q\nZ/TiCk2p+Y01N81cM9TXhd/QBiwNaymi5n2ovv4WSFWai7S6up5IsdVN/PLxSQR55QA3bmqsaSCW\nbSnR0rFytgCWSKTXROqSpUar0Bn2IxHNF0w1iy6fdl0Bbz1A9a/K5bRJKWTx9PcqlKtf1oVqFxNp\nYxtKg3AKBZGh+fpNMAAixGTDWxtHl2J+5qJqG9JNRg3r+V+iK4aozRXRSWo3K61okjM73ITOa4Gt\ntv5rSn+DzBhKzy5IcjFBPk0jKXVIhyeBePDOxyvnzGk48+F8xzRNhBK4jjuutlu2fUJr4Cos5YmK\n2iIfp9lqe8TZ3TImMGJ06iQw5+zUxrrQjSpoWfnqj2usmVwyIdSsYGux9XgY+fHtPf/1qx/49t0j\nHx7P5JLJJTdXlrh7RnyO61JpSqNaCljwu++Fm6vEZy/3fP5qz34Tmcah3S1SLzAAACAASURBVOsc\nFMniFpN9x+E88vZ44uvjIw+niTxDkLRaH4IkS1aTsHJD+JoRR+V/ngf+nAcrSdEEmLsfFKTkBS2D\nC3or5RBjtNrlDhSKWhNzKdblKWDxp06sBHAvHZtkDdC3qafzhsJRhD4Eb+gR3IXkMSyx70xiDZGt\nsp8Qqcwpk6g9gWvpebPdsEvJXKiSXOCbog7VvUJhzDNDnlsGdWXu1E0bROjFAooSHMRJGz7fQ8rc\nSg64oNeatLeANw2rDj65kUMRV3pUAUv9nRVF1WNDWDPp7OCI1Tw3pVbt25p82GZTG+hrSmQVV1hA\npe/n/w9J/okEuY2mrCLF1ZAvKBogps7MuKBIB122Aa/aXrCFmDw4WoVtU/I12OCHnVIu3C/VPRFq\nYMM1euXwNi0svtkxGlYKHZt+QxGYyoTmobooV8FCIYXoGYkwTaMh3zmjBTabnq5LpBgIK4uiqR1h\ntay0NRJQf0+CtM7kRaD2A6QuUhcuVr+9NGRQTUEEQgp0faLfJMwFZArCBFpBsyN+LUzjmcPhkbvD\nHUOegcCjjuzPR3ZdQiRxvd2y7fu2QOeSOY8jx7MJv9hHerdo9t0GYUZKaDVsqiKc5olhnBjHkf1u\nS9+nFugUTImKBLJmzsPEh7szX333nq++fc+7+wOH08B5GsnzxKzmCjI6YzKLI4ihMLyyZK0lEiKp\nF/pNYL/vefGs59n1hpt9BxGGXNCQiL1ZI31M3Gy3iCrjNJJLZghzQ2mmSGzNqNhqq4kpohkp4r54\nmtCQZnovR8kzpcxknVduLFmlnq+yfQXIhpIjHstwl0Wlt9XqhkGynRdmkk6kMpHms1mWPhfVFVNf\nq6i2FiALLtxFtdUbUVeeULgOiV+lLf/p5jVf9Dt2MfGq37MPiaDKPM9UC3PWwk8PH/jq/j1/Hh4Z\nPQaQ3P3RSeQmbfjD7Ut+dfWMXd83t0NWq6c/a+ExT3wzHjnkyXJGfF+WInRRrKl2CoRkSqj3/gXW\n/1ZI6oX6WKyN4HtahGbRWOntwuQlG0o9r4AUoVdzXzmKs8DAWi//TDCu7YEKNRd517JCf+H4NNUP\nczM6WgZmFa9aCiVn5nFmmmc7V5WrszBOiaJiTSMcvTQBvj5k0V71/83FUMVjXZQr8Vn7cF62XV5+\nq9pTvOawLeDZEFrdkEANqBmlsZDzxOg11ksxNF43Vi1yX406rQX//WLr7MulTgQtyLU0Rl9pdP9Z\n+h+qmQmiLT1aWConGgUy0iL59TpSL2X+niCgWTmfR8a5sJGZPG0om55NtyF3nQmvnM2aKMUCjMEp\nWJjAicmSkCqlMjhjR4L3Hi0ZRCmSmcpEcUoiBQKRIJEYlcfjmbcfHvj2x0e+fXfPTx8PnIaBaR6Z\nZ3MXZS+IFiSgoaDFXEdRLHhbfGxsBpSrfeLmJnFz03G9j2x6U+nnaXLTXQgpEKIQPLlrkzr2/das\ngynwPg2GGDEFO5eZGiGrWYsVNFRU0cZHgrl9qGZ6sLhRnshlXlmcznzCfdeluiMUY2dWhsqSdVkL\nr/kG8PkPvpeUkGckz1S/WJ17W8vLZ4sWWnPkVdkJQ67Fg3+2x5+p0km0FnV5triOm4virrEKk+d5\n5uPxwF/u3/N/Hd9zrrEDUVSFPkRepA37EHmeNuw9kdCKNpjr4pxn3k4H/o/Hd/wwH4kBhhyYszGz\nYoAk5r4K0V1H7mZKYmOaFHM5OY04huiuK9jkzKYUOglcp459TCSXRSlED7QGokQvmuWRJnHgqLCu\ncCgXwvvnUmctzxsC/YXjkwjyPHvNYzzttWp7NSE+jROn05lxMGE+l8x26jgPW0pOtpGp5saSqr8O\n2q2PSnlaIulVYC0BvfrhoFUxVqMIKlyvArV2eTFFqwzTTPYApR3aJm/OM8M4Mswjec6+MJKXCViE\nbpO3lbDSGIYulLFYglW0s5vUKEz98rkyzWYiFu8RW4TSCvfbfV0IgtCwhm344EqqPbcJuMo0SSHS\nhYRkIQ+ZnGZySI503FWEkkt233ewtn3JWvtpKWz7DX3XGar2MQoxtDE3/72iQdEIx2lgPit5yuRR\nCRqJMRGC8Pb9I3/5/iPfvjtwGLKxQdpcg5e1cipbtjmytu2s695Y3MVaGd/se17eJvZ7V9JjIc+R\nmCw4Hwh0IYHa/c9zZtdtuN5fISjnc2bXH+hrpyW1etRtGbkQV6pStWsGsWBfEUv+qmnvuEIsxQrJ\nXdLyjHohLe3frlW0uDtlbms1SDT2T/Tx82qjoZLffQ/kkpsgz8WAFdC61xtLKRt/X2JTBvXH4h7W\nDUcRYkh0qTfrVCpgsjXtrbWNRaPKMA18HE/8MBz4YTwyeNeg4vm4nQQOYeD31885zyORK9sbvl4o\npvg/jEf+79N7/jQ+EBI8TIkhB7IaddkyoOtYmrWbHL4Fp/xGnLElNmYpCF2B23Hgdp7Zp8ibzZ7P\nt1d8tr3iWdpyHbd0Bt1t7YtYwJlqEVa3Yd2B7j6RxWd+EditcqQpP3jqOq7HJxHkwzhSvNNJEBMC\nyf3kwzhxOp85HI6UXMjFWsJJsVKQ7TG1Bgsrkl1w+drFYufav4Y8FvRtv9QPLfBIqx+ioibXuJqL\n87iim7bmPrg7nzjl2eqNh0DJxQVt5DCMlNOROc/Eull1ZpwN2aSY6KW6MAygSHbKUlFbYB7IqoI1\nqDJcd4y3kXlj0z2cMh9/eGB/VG5K4nq7MWFTIHihHwM+1S9nPOyUAl2qhQW0IfJczOGRS+Z0OnMe\nB87jSCDxfH/Ls51ViNxutmw3G3ZdIiXji9M5WhXQktAqoHP28gzJF7bFSsY8M84jp2ngOA1Mc+Y8\nDRyGM8M0c3gcebwbGU4ZihCIzHPhcB55PE3MJbQlr2o+6RSX2ju5WEJUcWZK1EgNoFVRvttEXj7b\n8rvPn3F9lTjPoylGLUgQdmlDn3pSsufsgj+rwjBN6OlACIHzPDFZnjKqc4tRLNmfNPeXdyGw9RqM\nqhfESgZbdquzT4Kgan5l9R62FiS3Gjh4jcUQIuplLSiFWaVR44pmsgS6rjPgk+cmWKpSr/EKkWhK\nQrx8hCzbBEJTpNT95Iu3+JpZisWZdbuRYAjYhRnu9sNGiViUPGfePt7xzeGO74cTY7F63m2YXCGf\nNHPME6c8kbF4mVmjBVTIJdvcMaOhUAjMKsyIZxW70qmC0fd5YeVOFbHG8FoVvhI9gztQuEmRV1c3\nvN5ecdNtmLF7VdyqjJbxay0VLaBdxAP5VPfwKqy5AnP1qHuxuhtpwv4XkCqfqtXbcGaeZ9vYIdKn\nRJdMJ06zmcPiDZilKBqFbgx03uqsoWZZUpovjmau6OKSWAvntpMWx0ppwn+1anX5tfoXzZ2CmeOi\n5FI4z5MVlae6ZSyIaT6xQIodKSb3mxubJYbaVg1DCZ7BWQpQZEmMco+IuI++oJSNcNrBeS+UCOOU\neX965J+//4b9OfCr/pp/133WBOVaiasHIIuo+efNEjTh4un3MzAOA4hlY4aY2PSBLvXs94vZExAT\n3jF5/Ro3JEJk9oGrmzdZGLtRJOeizmfPjPPE4+nIYThzmgbGeeY8jZyGgWGY+PjxzPt3A8M5Y7lA\ngZKV2emaIXXEaCg/EDy5KmK1PAqhmNWx7nJerYEUhGe317x5dc1vvnjOy5ueLiqncbQEtSDm2/fk\nJCGg6pml7pKqNUhKzojAtk/sNx3HPlplz7kut1qkzYVfWLk3QmyskHUjFJHgTBQL7qkV32exrqpA\ncgHqFeEqog+BmpLgqD86BNFVX1dP6xdTBiGa26FaLRVRar2rKrt9rzQGSd1UWml9hrZ7Z91UBozt\nJz81Zx6HkY+nA/949yN/Pn7k/TzY+qCWUah70ai0o6+bWl4BbJ8EzFV2nidwLv2U1dlbC5O+AcDV\nM1jtLAeFNct78ZVSgE6EV5sdv00bPtvuuO625k4ppfU5kCDkaA25p1yc3ilVnPi/2pS7q5IqZVj/\nWqtcLB9e4opPj08iyMeSzX85Z7pQBYNNclGIKbFLxhlXVWYt7B4S3Vg9iXbY4OtK4DpKqP4QvRiF\nNu01INlQ8M8GR1YfW7ikRkexO1AX5EWV0RfVynj2+7C0/P1mSwzBEZkigUbbM7QFtVu3CW1BtBY+\nXbtDlDkUztvEcSuco2nyj4cjf3n7nn/8+htiidzfvOTL61uuOllyRXybFYVJzZyMwdCGZdyVpkSL\nwuF0IsXIbrtj02+dfsZFB/BSWn6dsV/mJbiX1WrhkAu9U9vMGsnkKTPmidM4MuSJKRfuHx45DZYs\nM5aZcbR2f6fjwMPdmY8fz4yjM3PAg1BmykfJ5hoSQRpDxGfSmwskqbx2Jfh8dylytdvw2y9f8rsv\nX/HbX70k6IyW2YLSqoQYSJtoQlyFkgvn4Wx+4hDpup7gtMVpmtl2Pc+urvj85Wjp2vdHHg8TeXaF\n6vdWlZpx9IP72+0OmylNRSws1NbqqtayZHfqiuq2qvJkgfZFYMXoyihY7R0DEE63zLb+UqcQAqKx\n1f+vcaFlezTsuvLxLu4ZrbeB+aJ7qQHTasu6K7VAniY+HO758/17/svdT/xlPPBQZmYNtDihXz3X\nHy2NoaXtlirSV4Yyt304Zqs71PZYRS04H74KyzXYuZAClR4I+xj5cnPN7/sr+mgMoWoJFpz+G4Qc\n1Kulmi89NVdstXuXTmI/L4NQhVnD602B2vT+/wiRv7y9YZgmxnGizIWUkiWEiLBxHmyNENdFvy8z\ncVD0tEDphsbFtWEzFJeOPb627NW10F7P1sWeWQbUXDSL/72VCMXQq0a8q/uyeUpZTN8uRbZed92u\nZ3S/PM/UgGh01CzB2DMxutYtxbjZ1SVCQaMwbxIfrxKTQB6sGe+337/lq6+/4/544j5nzii/vrvl\nj8/f8KzfOgKbHSlZGdnZvxMxM3ecZw7jmexlTMfZAmt9zoROES1kIC6xKdoKF8sItSzRzC4kIsJ5\nVu7PR3o1tkpKiUkzp2ng/vjIeRoZ84wC0zi1hiP7bsNGesYyMZWCzBNBIymYW0nd5KUF62p99kJh\nZnG4wRIMV0KAlAKbbSKFwPOrPb/98jW//vwZL5/t6bvkQdDeTPTzgGpGirLpekKIjW8PWPmB1GEy\nyWIJu+2O26trXj9/yfu7R757e8efvn7H3XFinD3oWhegXgrJZnKrsSFy9mCxF4Ermj2GUZWAP2JF\n+X7lnL1mO9oSlajIcJUgUAOrxmqq6Fzaf82arVeu36fVsl3twSe4Uh25JxEvMLZmudhZWQsPpyPf\nPn7kXx7f8/145lCyo1tzR1RhXr+rsDBvMtX9YEluqXjGd60/o8JQvaH4mqmKMixjvhaXrdxBkymG\n9pMI+xjZxkQfK7trma9qLc9iYjrjTDKpY7jQTBfrf60IaWSKOgstCLga21/G45+qjG2IkCxSX2Jx\nV4OlYVdu7ZRrD00XFB7EC0Qzt9SCMcY9kNXAwsLcqC+wsloWZsZqDB1FVPRSTR+biNag2AX7+muK\nOo9UK/PB3o0psN9t6DpDNkZzs+fLLgRti1ZtvSxYW+weqKMuNmGIwkOChzyjY2CaZz7c3/HN92/5\n4cMdx5x5yBP59Mj/9u579mlDf23FW4sHhSz4lskBJEVwKl+ssQo1ulXaGgrvgqDzxKyeYCQ0posF\nXu2nYDXmc555nCYIwlQywzRzmkYoHrCVwJQz98fB6F+hJ4RgyjwGrrYbisLdw4m748jjQRknIYSO\ntF7bVdjIglbNF2lKp45biObXnKaJECJ9L1zvzcW13yl9ygzjicNRCXpF2nYkz9SktzVgbrDUEphS\n17kwdT95U7QdfSpsusy2K+RR+ZjO9HFDF2sJYF8/K2vvl44mrIr72bVY8NLXemWL1A4+y+rWJlyq\nAhNW5n1tgehW2II4q383NjfOavfwZNSXV1qyzvJqBU6IAZFejDJaaws1aiOBPnVsU88mdHbfvk46\n58RnEW+irs3NuISzChqiAZwEYRZKgByNuTMjzCtq8SJ4DUOvffmyfn+RFM1KCgR2IbIN0XI6go+l\nZ1rX8SiotRpUk2kULyGt6g6t6vNu/1sdwuWrl1mnPHl3fXwaHjnW0UdSsDtwP2rtApPzzDBNTSAX\nlHkMkJ1bjm2cXBTq4uBnFtLPv7f5Ulgk+VrerxCHVVlzMx6WIGFYFIBiyGnM86pOt30mxchu1xNT\ndCXjvmIxBDnPs7ULU72gYBoKF090UERKy0A9RuUuFM6TUiZ4PJ741+9+4Lu37/l4OFpVPlU+TGf+\n88ef+HJ7w03oeLnbNnZARXvF71HcbxoksAnJfMoIm01sbqwamK4ZoqFWbHTFW8TQsOZMnicezyMh\nGT/8PI2czxPTNKMlkyRRsnIcRvb7LV3f0YeOEjPbLvFsu+XhOHA+HHn3fuDjw8xxVGNz+Byul/uy\nrGt/1tI2YAwQEyCFYSz0XeR6F3l+bQybbQ/oyPGYCZrZpR7ZdOZGKhD7ts3NFy5GW6xp6U1AOkND\nxKwSLcJ5PnM6TRwOE9MMaCCSm7+3/fjMy8XLDZNRLcSKIYr752s9kaCmZNDVWNTgWQ2OS+UvV1eK\nfUsu2dF1BVLSvq+VL6AC9RWKvHBDVNqr/6VLTEa1QOyMveFrpnFk1JTRtttw3e+4ShtL/nLA0Ytx\n73MMDfgELYS8IOhaK6cm1bVevMEszlyERaX7KFdfuRaq83LxFDmgUm2grgl1gR2BjSdHicDkAKk9\nPq581Z6vw6p3NgUh6++qK+vyuLBrFJam51zO8ZPjkwjyGiCqaNr6cdp7pRQsXhWYp5lpGhmHkZwT\nRaOZ/mq6z1zW9uhxnYO+qNS2JVpK7JPocPvMaoRq2m/B6XSiXkOFtshVXMFoYSh5CRxVF4+IJR20\nDSHMuTREUgDNhVxGdl3n2a3irdcMr1jesunxcxLuQ+ZejH1wPJ/58e4DX33/PR8PB8ZiQjwDY1He\nTmf+z48/sQuR/7T5svHuS/Hgj60SVIVcjH2T89wa8ZqQMsZEipEUU7OEwF2quRaGdXOxWKenuShl\nnhnzxN3hnmkQRCL9NnH/eOJ8Gshz5jyNbLqefW/dDQeZeLg/8y9fv+W7d/d8eDwxz9mSa9S/q2bd\nOofbrCvjEElQLP/Q3UYRYuelbgm8vN3x+sWe57cbUgxsUmK/3bLbdP5vIgUbJwnBgs5rpMpSRMpv\nZVk67m4oOXM6nPnqLz/xL9++4+u39xyH2carmnEOXC6D9RXxgjFDnHPf2XtaTEnmbAgdrWVf7TvN\nVWfjUTncq9KOKIXZa+BT3SKavcOSZ8xKIKk2iyt69ixmyLkAtYB4VeKLe6U05VEpoGAJQkG1JQ61\nZGGp1gLMZeY8j4zVXQJ0GP1UYkTVeAMRpTOz3ECPYO7IWQhFrWyBK6+p2A8a2xq17eR+7UXr0WqA\nt5eXuFhdcyD0LMFa/6RndIrVNHKwU7ISVemKkzXU7rNITbBiUXZ17bRvrkBxLe217cl/6/gkgjxG\n/1q/r+DRXgELTGlEOyWn5EHByP4c6GMgizJJtkQLlI5I78gEuAgGNIxc0Ukpy0DJLwxKNZEuEIdt\nuOJVApsvTW2jqCrTXHwfX2gDRCzJYZ4md20s1wtAFrvOnIulCossC14sdVkFpii838JjJ0xiFKt3\n9/d88/Yt745HhnlmBmaK9yO1+/zX8wPXDx1vtnu+2F9z028NyVSh4kHJUvnMwTZNwfyzIQY6iRSc\nddDKFdhYzWX2lPlifPl55jzPjT54HE48HB4pczT/cgmcTiPTmIn/b3vv8SNJkqV5/kSUGXHuwSOy\nKrNquma6e4DZ02D/f+xpscBiLzPdPd1VWRkZxMOZcTNVFbKH90RUPTJr9xiVgEki0pmZmqqQR7/3\nvQixCFgijTW0B8fdtuN+ueX2cctqd+DgemXNG1AHcnwkXARGy56jdpOPBBuGjlGFlKvPJhVnl3Oe\nn59wdTblZF5TFbK3qrpU+GsJhcnrI1BAgZFaqyaHGUJfqJJPsMIQPK53LBY7Pt+u+POHez4vNmxb\nKWrLvRiSsDDDPht8Cw3PjeK0KUUbLEQ9NtGInTkUuI0Fasx8JanZrwhWowyGJm/9IaEqx8FohatK\nypzMTorKZ2EtgtWmsneSFzFCYyRvgEgJonwK9Q70s0MIdK5n27esXUufIaFKCBZFcHol2GvKguum\nYT6ZqOGTiurARqHA9i6wd57WRVwge9bpeA/cLCbzu0CiShif+6eC1Bo0rKJhIZPqv8meRJqBDo+J\nkVlMfPrC6zKufRk+KI4iA0m2DPlBvRlGt/qr4xsJ8qfCNoPlh0AVxliCCVRFSV3XnGwCdSEHtTUy\nWc5EGsG7UaELylOBGtUKysIcctJjCMakf18rgeGARJNItQbNKa5uoMs8ITryiVcSMC/+YC6xjxDV\n8osIVptkRYbBcjEY+iKyrWDZQFsYvIft/sDN4pFPj49slS42EDXBMiR37vuWP29XXFZfqIqCWVVJ\nJWCykOxwqOT2NdGssVlJJmpOQkuVYwwKCdMm1lrJ52OkdY591+Gc43DYczgc8K3P82u8QOwqU1Ir\na1+JhRDZblu+3G/4+W5F54QrI8XgDTHTKOTKSN34if4Uo1jiAKYUyGRdW+aTiqvTGW+enXJxMuN0\nNmHSlFSFlOtjJUnZB8eh9TgfaXxFXVZiBdkUbiDDBaXyUg9diDgX6Lqe5XLDx5slP3165MPdmm3n\nkVTPSEijwi+K9znmEYl55cgW7nhfpiQndlAq5L8kojEvDUIYutbIlJksyFIIAaN0FOp1PGnyEJS1\nU28ucYmj5ycSCHHgORnOzdiylXNdYLXLPAJj0T3nvSj8VXdg2R/oo8xQEpEVIqBaI4VSZVlxeXHG\nrJhIi8LseWvRVwAXPLve0QZwOZaRT2xeyyHvK38ft7vNDoPOkUFgqrOioDYSkEmFjAlSmXsEG0On\nCPieIPtbQ1tJig+29VhmjH7Mc2og75lfxBGejG8iyBOwNU1xinvmG1ZpVxghnpICjJ4yerCWUFq8\nsfS+15CHZRoFKZFcu7SAmYoSlK9j+MwheRmfJIxyBxN54bAHCoMpbE4EBSJdiOw12Ul+qkFQlmVJ\nURbSek0rV70PpIIYo1agjwHjwPUQfAkUBAO7MrJooCvl6r53fLy75/PjgsX+IJYWEi7pMWSxqWGW\nu67l/3y84Xoy46JuuJrKkhfWUFcFdSn2Za/EVkW652Ig5pKQilpRTjlEovBpmBipy4KTegIWWt+x\n33cUwEnTMK0bCgomVcl8NmW5a+nanipEem9oW8+nxYYPd2sWmxYXpKBCugMFTfiJMgzaWi/GKLGd\nxGNdCIo9We31tOT0rOHkpOL1xTmvLs54djalKCpsUYApiFic9/T7luV+y7Zt6QM0Rcl8MuFifirh\nsUIahJR5LUtsNLm0PWLoOsfD45Y/v7/l/c0jXxZbWmcJqpRJFMApnqoexrhlmmxFBYqaAaoag9eY\nQFYdUtCZ4YAp9mzVM1DEjovqzfhs0VnNz4gUkzOQ4IADmiUQQp89k6jFZIGgNQFF5iNPNmQmmDNJ\npZgc27UKYghBQw+FAmHVWNi1Bxbtjsf+gGMEwTXK8x6hAQ4xCGS2LLGzCbaekNSpQCzFQu9jZO09\nHYZoSl0jjQ0N+BV5dqvNbax6LVrH4YlZh6Znk5L8miZTcwzY9cIkkjmFwCYyPFUkRp9jpOHI0joH\nzcXjTVa95FLGinR4y6+Nb8S1IkQ52eLyCpZSZIe1Iw2GfFsE+VdFQwwWZw1dETFFpPSR0KWstjpO\no+RjnsCYtPEg5JMbOPZYBO+cHR1Z0BiFDKcgKwmPtP3aBaeCXDdUDNpYImVGh42dQi4RjXEGsDZg\ngnnSoNebyN5EVjawJRJ9ZH9ouV0u+en2jsftToqQTMxWeBLiaeGDkUo41wf+dfXAaVlzUk/wKPeM\n9wTvhM60LHCK9RJuErU4CvvEHY6FHopgGLI3QtFrsEyrhvq0oCoF/ZF2njVSRVqYmod+x91izXrf\nszv0tJ1j3XqcsZgyiYIon8EgNENIlYqyJsGELGAigmiqq4LL0xlXFydUlWE+qZlUpXg6yq3h9bmj\nDzjX0Tuhguicx5ReoHImUmCZTibUTUVEGBr7EJTqVQD1213Ll/s1P39+5KebBx7XO/adI1KQ7IRB\ngCtLYkoca1x9cDJSCCBx2Atc8mQ+ZTqtpUFJOuoBep8OuKyFeH9C25uKrYJ3uN7RdT6DA5I5moSE\nUa6ZiFRnWg2zFNYKwoUohnQEa+TerE3G0Mj/1crrwSG1NLZgWpRK8PbklOkZCPgYshBPB35Ae4sg\nN0XBrK6YT6fUJzNC2bBzhpmHMpINGhcj2yANS2RS9WZMCtjkm83hrnTP1hoKI6GSZKEbRKYURipU\ny0TtMCI7k3oGFeAJex/TSR48Ovn9SK6ZNA8Dag2SVy0/WVWoJivaXx/fhmvFKx42Wba6ub3zlIVY\nPYVS3UoMTIR9EQQraqKlKwyhkn2ZrIPBPxk98BM/afhdssYHXmDzZJ6SM5yvGWPmLDGIjPEh0EdP\nFyQ2rYHGfAhtOQjA5Lfl5Fm6x7yYWS+DMfQmsrSetY1CHnRwLBYrPt7d8Xm5ZN91utghOTAj5TM8\nekrC/MdmyVnV8Hp+xt57fBQucuccNZVgqKOEeYITdEWRrIkMRcuqTeYrpu4pkiewWKbVlKIxTJqa\nuiwzDt75wKHr8X3LZuv4/HhgtWs5dE5CQwYGXmpdVD3QknYusiUaI8KXYQwmSjioLAqmTcnV2YxX\nL865vJzho+dsOqOpaiRsJFDL3vfK0hcUFlpQlzUGR6MUAr0T4q8YDdaW4iuqgCRIgvFw6Li5W/Pz\nlwU/3yy5X29pXSosd1mQ57BbVGjaiGAtHeYxGscYKIqCSVMwn1W8fHbO5dmM2aSW+9C8RueCEtCB\nd8L77rzHGPEA+17a7603e5brA/vey+dqxXGGKhoxA4z+aVqXTCclTd5KLwAAIABJREFUk0k5nAIj\n1moMhkhBjCXOQ9s59dayoY8GWATSaguxYnMln0lfwBiqsmRaVsyLilWMOMWZWGKuCq4xlNYyK0tK\nW9BjWBH4HDpehJJTrO4LSXBufRAjJwKEkUgYwiwxiuEj2ApDodiCxN+e4I5EMCFSGqnsLGwqCEzX\nN8O5NsJ/hBnkxCBPRs+txmF6+1iIp9kbhc7l3XZ8tV+Ob2ORx6HsGKSIxgXZiD4EyhBoqkoRH1E6\nzvuICZKdNiFSB0NVWBpvmDqhnTQ6MyYOwHr5vBFEaizv42D4P5kmk46UbONsVaU4viG7xql/pIzk\nwkU1eiSm7J2ELVJncWNRrLJU9XklprcRql4SawcTeKwDBysFHu1qx6fbe97f37HrRx5AHFyxdKBE\nHYwsA2P44vb86+aRy/sJi74lmAnRSOPrGCJ1VUNR4Jyn5UCnfDipSMFqY4GiqijKEl9KQjQodWmI\njqqsqYzciOscrnOUhaGqSlzvebjf8i9/ueHn2xWbJMBDIPjI6Exkzg9B1YzWJQ7WTSwkuVVEqe68\nOJvx+sU5/+X3L3h2fsKkKTk4J/h0W6rgF0ik9B8Vg6CwFdO6YVrLdeuqxmDo+55J3dA0NSaW0vik\nkCpF72G13fLh8z3/8eGO28WOzcHRuZCNCpk7zSWEOJCWobStWInnayIvccCnuonZtOT6cs7vXl/y\n9vkFF6dT6rJg2NWSnxC20EDXdnSdFFBNJxNc51mvd9w9rPl537LoxTKPqpjNIFmTzUhRGmbTitcv\nLnn17Jyr0wmF0TMAdM7Ru0DvIm0Li2XLp9sVrZcaA2PE2EnqPlVDSP2A/Ms9ahGKiIv5KW/bCx7a\nPZvdo3hLkGPP6YmnxjIJkc1mS9f2PJiCj9HwT/UJVTllXtRK2xDYO0evoRiTLFq12GMqHgtIzoMU\nf5bUrAcNxyavLObuXlWljVOCyXUjMHhcKQzpEUWUUDSp+XjKrkZDKrfWCvG0CIoGiinkxch6/zsU\n5NkIHrvdtiDaIfnjvKdILnNkFJOSxFsdLFdtSYWlidJcYhR1z4nN7NaihvnYWM8W7PC+4fcpQUqG\nOGbkS0hCNPnOT54uP5O1hbLHajOJOBzDrBRgoHENsv23RcTWEKsSnGO/P/DX+1s+rBYsDwd84hfX\nDeijtnPLrjmDy27EovXRct+3/D+rO3YxMD0vOS2Uv0PDDTaKB5Ti5GnunHPSYky72qem2caIhRaC\nPIeEawLehYxm2fnAbr/hYbnj/c0jN48b1ruOhIRLSdN034LLHgrBiqIk9QU1I8Fu1Upp6pJX12e8\ne3nJ25fnPDufMW0ayrLgTAWHwAbleiFGTlydwzPZ88qWsVh2zpUq8OT5+ygGR9877h7WfPyy4MOX\nBferHfveiyuuIRMUxeJj4iQfJS5NZCj5spho837FRKrSMp1WvHlxztuXF7x9cc7ZbMKkrp5QyZIt\nc69UF4amkvoEGwN937LfbrlfrFjs9hyCk7L8qF5G1OYWyqA4aUrOTie8fnHG2xdXvLg45WQqnboM\nCpeN4nkdWsfnLytWi4NUkYbklw3GBUa5vwtlAVSb1ETpLpVCD5O64e35NdFYylXN+92Kx+5AU5TU\nRYmxBXskMbrZ7XnoepwtpJFJjGzm57TzK/7bybWGVgKtEm6lIjgT7YhrSr1vtXqbacnV+YRXz86Y\n1JXef8h7rm871ss90z1MS6l5KIwwuCb5m1YlqNdWYwVxE0WJRRu1h4CKiyS8RzLHjObuiSX/lQD/\nu2I/zJnzUSJSMvLpJxHkMSVjoskkUnoBylhwps0mhEQ/bSYVpV897yCqR1px/LsnCz1cZ8yqmBVF\nEjQjV+3r54uI2xbCUCM8ICxkwYIWr6RGxjZEQufYq3cevaE/dCzWG35cPHCz27D3iZpUrYg4xNSS\nnspGj95eUOti43t+3K/AFLzwJxL/Vq/Ie8n0pGsU1g6UsCEIv57xKlDlWRLmPAQV4CHges/+0LFv\nO3aHju2+43G5426x5eZhRacuqYlaHo640ylPIf1bJdwxcF1bTfyrkMdgy5L5rOHZ+Zw/vL3i7ctL\nnl3MKQsR3MaKEMmhC31OgBgqXbWk7Effgya9qhyPjyHQ9YHdrmW53vLTx3s+3i75stjS+wRpTW3i\nFDmiCWGvAl1Ca+rVIXwvVslrJD4LTW05PWl4fnXC92+uePP8gqvzWW6/ZuwA90sr673Ne6gsLa63\nuIPUXqw2e+5WO1aHDhdhoAJQ4aEEbk1dcH0549Xzc75/c8Wzi1POZlOqQpt4KB+QNdD1jtX6QPQr\nuk7pmxVfn3DXxsj+OZ3VnDSVMEViMwmcJHFFkdZVxdXslKooacqS82rCp/2aXikhuijcTL0PtN6z\nbls2GFqMgG1doI4l3zdnVEYMmh4S7f7T82nMKHcmNzyfVbx9dcE//O4l80kzhFpjwDnPbrvnpngk\nPByYlRW1LSl8HAE0no4YpPCuHBuWBmJ2gGK2AdMFBuKAfKpHq5Qu/NQw/Xp8G/hhOTpUCb7mFc+s\nrnkIQRMHUphhFQGQizCMle5AkLX9k6XTAyPzNprQkViOT99COs5JlOcCGP1Qo9adTYGLmIT1aNfo\nNX0I7LsW6wSBAYAVPHZZFCIQ1QJMRRKxC4RFh9tC3wvL3nK75vPikU/rJdveaQgiZjZGafyKlDGT\nhPjTsuSIFCP04ssB8r21EuKyxuBNyMnScZgm6sELwUvCzPf5eaVjvLizXuPNXed4XG75eLfk5n7N\n/XrHoe9xijJJsSWheUkNsz3OdcSo92RKSquMkZorgSg8NIgHM503/PDmmj/97jkvz+dM6loQFUaS\nfsHFJDeVffFrxasi0cgaGIzyKamREcgNmX3wHPY7lqstP3164OP9hsW+J1hxgKOiamJ0BGQ/O6fI\nHo3RphRu4ohLkNtCk4pFabk4m/Dm5SV/ePeCZxdzTqcTQe/o61NoYiAFEw4TSUZHQqwpKocPFmd2\n7F1k3wecA2sqTGWzIWGAojRMmpLrizk/vH3G799c8/rZuShANW6EjliNnyDrv9m2PG72rPadMBSm\n+kkV5NYapnXJy2enPCvmTA7CXGq1uC2oNR6NVHjXheWsMczrhhfzU77s1nzaL7k97LlvW0qDBqQM\nEwNtNHSakP+4PzAzK/7QLPndRCqYffLc4uBtpdBWwvwGZE5PTxrevb7m9dUp07rONAoGhCCtaYib\nnsPOMK0qSgpMHDhUEo49ifUQDT1xoMk16V8UpFAUeZXI30ReGCXLYzCSNMCU5Za2iHyCdBqNbxRa\nSdakWHJDBj+hEmTzxyhPbpFkZ/TiFgYjlo9oeLXnTT6aQ9IyKWK1XMdhDSCjHcZezmB1S0gkvSYf\nxZTUMBrS0LZWeXpjVIRGST2tKWsVRklw20LLvdOHCBTQ7AN25ai2Hg6Rg4ts+z0/Lx/4afnAznVS\n+pu4PfIuGKoDhaJ0cOOzQB9mflBVJhUADVA4Y23OByQoVFJi3nu6vmffHnA+iIu976irgqoocX3g\ncbXnNhX0bA9s9z2H3hOiOqA235p4CYmrIiUAQyT6QCwDwUhCNvGzGGNpmoLptOR0XvPs4pRXl6ec\nNpXmIkRJxZAStMM+EF6ekJtd6GnJ4ZWktJNJnrAYvevY7VpW6z3vPz/w6W7Fl8ct20PHoXc4H7KR\nJVvE5lqGwkqSfmjtllxoQGPUpYbfJk3N1eWc37++4t2LC15cnzGtS+rSUNqnVlqiT0Y9FGsNxgrj\nY1Kmhzaw2nqW+0g0FWVtFTIp+8UaqTq+PJ/y/OqEN88veXV9xvX5nElTZyNlDMM2iOfVtj3L1Zb1\nZi8J91ERDwaqquDibMrrZ+f88Oycl21F0wViH1l2Wx66jglgEc+uqZosoApraL3j0Pc8HPYs2lYS\n82jxHEJpUQO9gT3QxcDn9sD/sbzjv8cLFkHCYANtku54YzIxZMqZNWXFaVNyVhWEvqMLCtXUWHbw\nEaKntFDboVAvC+expa+KOVqy55FpqNM86hJGa7RHqEYnkkeoUNugFpThKY8OGP5WrPybCHLnHBkP\nHDS1YYyS+Yj7LsZjEIxmLLW/ITmBlMS2yeJqcEWeCmfzJDaerLB8cI0KvCHiQerCAiLsAyk+n1j1\n5PN99DiFTw3vELerLAvqRhoRWKvXz0UXqaO4CE3jI+UhUG4DVQ/RBXZdx+ftig+bBV92a3ofRFAA\nKSVukPZXVRSLZRc0zWLG9/PLSYnpR40HZ+UZkrWnh14t8Vy9GAcvxXlP23U4Z4Gezabj88Oam8ct\ni00rIQel/ZXQrh4OvZYoar3PZLEa9XdMkQWuMdJjsakrLi8mnJ3VnJ40XM4mzBtL9D1tJ1Zxoc1J\nyrIUYiu1VPPjpxOlSehc2ahSK3lxSTFutgfu7ld8+rLi/ZdH7pZbNocuw/ukgcjwbKT9aKUxQ5FM\ngFEYTgS5lt9jmE0bri9P+P3ba3736pIXlyfMJrU2YhhKH2J+t36n4T2TCeUFGdR2noflnrvVgdXe\nEUwhnkzyTrR+4Px0ytuXF7x7dcnL63NOZ1MmdUVhxVgauM4H7LVzgf2hZ7HasTkIb7zckyKHSsvF\nuVz3hzfPeDWbcfrQ4/ya5WHPYrthtd1SxqAKGuqyAkSJl4UYEjvX82G3ZeMdHRCsxTEI89IYKuAA\n+AgL3/M/tkvm1tDZQBdTaVUcBHn2itRQMTCbVMybksaC6zqNAJicCI4h4rzDhEiFFDZloZtXggyP\nTcnZIlpqDQUblTFijSd3TM2vSI4BhSBcRb1y6Yji9yQvW7yugTvy6/FNBPmhPQg/RAgURUFVSlJj\n6HiuoRYvDRdOzATjS2zQA2g1DsdQ0g5PBbgYrCncIPjQhHsdQhIxC5AkVIHsISSXKbGWFaONEBmw\nukPcarD0C2u1/Zl2bCls5gcJMRUMSdGD2XfYXaDaC6nWwfSs+gN/WS34tN2wcU4taHGvpWpPLLqz\nwjK1Na13vHc7TRyagY5T90suUBiNhBsOQQ6QCQFbSE9LrMEHp8k0J4mhSmBpvfO0rWNaFDwu93y5\n3/L+ZsHjtmXXOQLCs20KFUQiRQW7rEiL6JMgFdiitHvTBgt6D4WVOZ82NVdXU354e87pvMYYaA87\ntrsDviuZ1BPqqhY+GO+YzWZSOKJhE2BgCVTTaCitH4rTjNFS+BiJLvL4sOWvHxf8+4c7NodOWvqN\nXFwXPUGtcklum1wYkjk5DAp7HEIaqTDHWnjx/JTfv73iP//+FefzhmktZGV63vX1ur+joC7ydGrS\nOQmq9tDz8LDlr5/Ee1jvexI9rYTiDFVlOZ/X/P7VOd+/e86bF1dMm0pbt9nkrGSrUJSaXL/rA5tt\nz+PqwKEPhOShYqlKy2xa8rvXV/zw7jm/e3nNxEXiw4L77Za/LL7wcb3kfr8TTp4kDjXckFgN8zro\nP4zFIs23JUQo+Z7KGJpoORDpguOhi/xfqzuChQMBZzQHFaXZucgDQaYQIxSGs3nNfFJioqd3gVAk\nGKMXYyIa2i4QnLSCK63FBHIf4ewUq4FWYZkGiwmGIhjJAyUFkjD/yoBAhOhlD1pSeK4XmZSatgf1\nVmNUr2sEW/5qfJvGEr6HIA9Qa7ccVU/SNLd3mgwTtIE79BgnMbaQXKMIjLVTTF/SBKcwi1ox+RDr\ni6NgvZP0T7bYGEokX/VLFAuWqBhPfa0gcOPwlhRFKAxVWVBVZbYUB/MqYgrV2H3AbBy2larKYCOL\nvuXjdsndYcPOu6xoUrw3PfdZWfLfzq543kxZ9y17/zPLvuMQvSADkKKgke2gmyn7naSm1AYj8220\nKk2ROVVRSY9KvYoLjq7teHzc8fHLkpvHDQ+rPbtDL/A7xuGQhB5KHlQKT1lxL8WPfbo1tb6gMIam\ntLx+fsGb52e8fn7G2byiLCT/0DUViWK2LmspQLIF3nuqSUNZlTmRK17SoJxFG2tIIOHSkTBf33k2\n25b7hw1//fjI54cNuzbgg+YzbBQrqjDaoEGpIQz5mXPnel203AdVjQmDWK/zacmr61PePj/nfN7Q\nVKUaCuHJgU2BuxjNkxhuyg55H9lsWz7fLvnrh3tuHtdsDp16WlINayxMm5rr8wmvn5/y3esLrs9n\nTBTSGENQIclonZLhI0pkv+9YbvYsdy3OI/j6aCgqy+X5jLcvL/j+7TNeXJ3R1CWuPfCwWfHh4TP3\n7Y6172iVSMLHgDcINE83l09HLxqhusaAiRQEkQdm8K8KYAI4I96ox7P0SnRXaC2HqsIh5Drs83pS\n8fLFJc+fXTCfzzJRWAJcxBA47DruHlbsFzvO9gZbxhwiq20JRmDDCYTubWSPZxpLzQeQSfMElazK\nMRrlBiIrhHRKUsg1Bi0zTWFok171dxQjF0uiIHVOz8LSmLzZ81NpMdAgqJOFqc0R0paPv/pReeTz\nm6yx9IaRFEmOaxz/YvTXcZ5aQjwKuUuWRBxceDnQw+Ed+Px1YQ3Qe8w2UO4CZS/ieed77g9bPu1W\nrPsOF3xWAjnJFQ1Ta3k5mfLP59e8mMxZdC2f9lv+fbPgrtvjxo+geQThSNE5tlK1qXplFBhCG+4m\nFIm2CzOG3nlWqwM3d2s+3a74eLviYb1j23Zq+aaYXszNeseTa0gKM9+Yrnt6gcxNYS3zWc3V2ZQ/\nvL3k3csLnl3MFY6qDRcmtVQqgjbHldyDD4GqqkZ5iHQWBgvTpjnQryFE+k7QNovVltuHDZ/uVtw8\nblnveqmgTAcNZVmMUkmaO7zkZzRZoI+NiRRDNsi5n9QF1xdzXlydcn02Y1IVCjNWUZVhDV8d9iix\n6hgisYOu82x2HbcPaz7dLvnwZcFis6ftA0FDJGVhmE5KXlyd8vrZKa+en/Hs4oRZU2FUgaWeoUXS\nOKNzFUKgbSWJfb/Ystp3OK9nz1rms4bn16d8/+45L6/POJs1WGPYdz33+x0/7Za0QYp0vF5UxPkQ\nJhpXJiev12h+DP1eDJOBCrdCLPOeiI9wQIVk+s+KF2pUlhgjKJmyLpnPG55dX3J+dkbV1HnNjCpk\n1zn60PG4bQmHnjNfZcQNURPUSrstTJtCt9tFL0R+w0o+lU2KLc+prHTm0qHIBpbPciSdDfW1+bXx\nTQT5rJlmXRkSWgXpljNtJoQq0jtxd0xEeTdSY4OIN0H5h70kcWIKeQB6ONMhGsIe2sUjJrf6KVxv\nZLRmVzL9LIpj+DmQYsVBscMJmaDuoW4IFwLGCcVoMMLbYVXzxxAwB4dZdjRdQR0MwXsedls+b9bc\n7raC9IiDe53u04fIZdPwh/kZfzq7ZFrWzMuG//36LTvfs+wPujkU/6tvTJQI1gorYBJ4Ub2MgBec\nrx01IgCBTkXD4dDzl/d3/Mf7ez7cbaTFXQzZ6kxttEaygIz44Wm8N3XUSXFyUXbCQlhVludXc/7L\n9y/4/uW5CAabYs8lpoxA8yQ8lhanLCvhiWEQfElTxWQRG8Xtk8JLgbbtufuy5N9/uuHnuyUPu166\nricFkIRyTJa3boakLLKVn4SgGQn5pIBlF1ojZF5vn5+rQK0hpAIWuccYkoU29mpkPwcnVZu7Xcft\n44YPNwt+vl3yuNlzaBU5o5ZoNIbprOHVsxP+9P0rXl2fcj6f5Ov22pTaFCW2LMEWirpX1RFRQrAt\nn26WfL5dsd23oBz2poCLE0luvn1xwXxSURlL6APtoWPbtqyDyzUUck+WXHHJsCcYcW/3RCrVhUkg\n5iYmRgCPhTE0iEXekRQmEsYoCwnNWI0qW7CFZXZ2wsnJlPOzGWfnF9TNNGFuhn2KpYuGgzdsvaWm\nUA8h3asqGGORbjfyOdEYDsEzjaKoSpIsURZNbKYQyX7qSAgZYyHI+kUDZVGSeqwm5fQENz0a36b5\n8nZHVRbS2AB0pWLeyBhoyhpbBEobKTs5bL2XmfY2sLeebRm57qVrfB0LnsSqv4bp5GubLJjThCbY\nVNCDFmO6qZRK1TijzSdN7iNGwbsm6xwlV7WWoiqpJ0kAieAIacEiHLYdh9st/aeduGI+cOhaflre\n82W9pHOO1Cx4bNhaDJPC8seTc/7x7Bl1UWGwTIqK359c8qfDio3r+HG3zla5DTFXeqLWeFEI7rgs\nCmxhVZlq7NcFtQ6lh2rf9dw+bPj5ZsH7L48sNi3eyHwUUYlWzRhSOggwEeip5D4JCPmbNXbglDCG\npi44O53yw9tr3r045+X1CU1TaVzY5qKgIaAWh8S0Scus2HZlaUxCPOdbjSVYcZ2d91Lccrvk45cF\nP988sljv2R6cNiUgm0spOZr4UdKnWZPK3UfqxDCEQFThD5h4iflfKB/MbNIoxNJkgyYlMIe1LyRv\n5AKbTcvjYsuXhxWLzYHlpmW969i2PX0wmMJKWM2I53syr3n76pIf3j3n7YsLZnWpiXY5AC7KPFhj\nKDyE4AT2GQyubVltD9wvtny8eeT9lyWP271ymHvxTIxh2hTM6oLaQnSOtcbqP/70mdu7BePgWWLL\n8KBx7JjDxtJsgpzfSbms9DspChzQHtGIAJsAHVoUl7xjRYmlHWeNpalrvv/uHS9fPuf0dM7J2RRf\nFxyMGeXL5G597SkuTnn7pwumtxte3G+JnVGmUrn/5IENu8EwjQV1tNJSIjn9I8s6Ce+QZI4qyyFB\nUEh83mozk2TyJnTeWBiMxjdDrSSIV1kWOZTig/BTWGOwZaEWrweXWMkkDNMax64IrBs49QHvYj44\noILkVzyQrDSyla2WGqnDYYIpJkSMXi8MSAtiwsCi8MOnGeyIJNaqsqKpa4GfDQaZHB7vub/dsPy0\n4nC7ozaW6B1td+Bmt2TXtlq9GfMmSO55Ywte1xN+mJ/zdnaSG8CWxnJRT/jj6RVr1/HQtay9wwef\nP3+wyAervEgEUNYrQVzA947WB9res1OUwqfbFZ/uVix3LX02I1IIYbAcB1eGYXPqg8cwtkVUwcUC\nYwInswnXFye8fnnBD2+ueXY+Y9YMjZSz68nIKMmTrglLXWC5jQFamsI5ciuB6GHfdqzWO+4eNrz/\nvODj/Yq7xRqXQpPZ1NbjFkcwWdRKZ6jglU5L+lyj0ERyh7PLb2A6KTk/nXB2MqVReGrKgOXgj5Gf\niILN3+07Nps9dw8bbh9W3DwI6Vjbe9mDWoKe9klRCEb81fNzbSx9zfl8ijWKRTaiGKPThLd+xQS8\nr6QD1WLNxztZ9y8Paxbblr2W+eejZCJVYalLyWt451guN7z/dM/HT/ccVjtJ5sU4LFmScHGwxgcT\nbBBUY0E+3lMJgmcwwnVuYG4MzhYExb33JkoxEanBBOA9/eGAbw+YSc1uHWiV5CrhypMgl30kBGkn\ndclJVWE67Xs73sP6HAkfbtR+HuTPCBGXnjcO3mJaYzVtSMo/h+O+Ety/QKPp+DYFQUnjhkBhpAw4\nRCHNil6sl8IYDv0Bu+/xbUWMkiALRWRXeHZVwExqioPyZI8Cok8E+ZO5MPnvqY1b2ky5ptFookGv\nF0JCN8SMQ00L55WHG2Py4psoPCp1VdLUDVKAHjJfcu8Dh13P+5/vuf24ot16LJ4YOoJrca4XpQHq\nbmmTCUVfzMuSfzy95rv5KadVncMi6VG/P7nExcjP2zU/7dccolcLR4WLGb5mgiCLwDtV2Pa9Y7Pv\nuHvc8vluzYdbQUB0PgzzRhQmDSVfGsP5BrshZoKohBJ5yodtKQqoioI3Ly754+9e8A/fv2SmnXoI\nYWhHFoNYKrpmKdmMfh2O9qBMYlaAqmhAia8ci4UIm3/58xfu1gd2nSPVMsi9+pG8ibiY7sOQSrhT\nk11rCwpb5qOdhbsdQizRB7BQFjBrSs7mDdOm0nZ7wjs0rlxOn0GE1WrP5y8L3n+65+ZhzWJ74OC8\nhigGNTVsc6ljOJ1P+O7VNe9eXPHsbC6WOBEowFopM4+eHlHePZFoI23s2e96br888L/e3/PxfsOh\nl/0bQGNkWWQNhoE1dHvHYrXhp093PC63FK3jVFZLw3zD+tmsXnWeRwo63WkSmtk7MbrDYuJhiTTG\nMLElZtoQq5pYWKHI9Y6ld+x6IRNrN45/+5//yt3Hn3nz/IKzeUNdJk+1IMXRrU2NVCw+RmZtgT2U\nqjZExgS9SRMBH7CloOg6wpA3SzF30v5XtT7KeSRjx8BQa6DyJWYDRc/mWON9Nb5RY4maopCEgXOe\noBvMGkuvBExNXTFrGioqJq2hNMID7G3ENRbmJbOTOcXayaZPOCYdkSF2msVKPvBk1+3pvMT8+lTM\nnCYwFREEBlhi0AOeOrWItg1DwjZJfjH/CTGwWu/5+eMD9/dbtvteBV2PCQ4bvPBPYzS5iQgWAz4G\nzouKd5M5/3j+nGf1XO9wEFoAjSl5OT3hvz9/Q3/7gc1mQTvi60yWbUSqy5yXLj0hBg7bjofFlpv7\nNXfLHYvNnvW+Zdc69TxM9mgwaU7iIIDkRkgQT7LloR8/Ci8A1JVUM75Vq/HVs3NOmkosMC39z4Iz\neHxUGKb+y4VMcvpECecDZJS9UR1SI+GUtu1ZLPf8+f0Xfvz0yO16z8H5DLdD11DQHqPUUlALUVkT\nM+8C6rFpqMkaS7RCkRoSras1+TCXxlIWAmntdi2FD7hSvKM8P/p67zyHzvHhZsFPn4QWYN85ugCY\n1H0m6roOCn24f+HPwQtxW7RDIjaqgiwLw3w6EZqFCNiI6wNtkBL/zb6j7XUuzEhZyNakKCxVVVBW\n2rC5EB6UrxsSjzEk+Q9pfkZnDUSgieyS9R8MFTMIO5kmpkXNSd1w2cyYn84pZxN8LUyZu95xvzvw\nPx7uud3v8cEwO51w8WzO5bM55SBlSeExQGHFUVgukcIg46U5RjrSqXYkXaIMhiYY6lgIhpzk3ZN5\n2jGDYorkP6giGQr75Pzons0GyxPx9ovxTQR5WRYDBjZxbwCFLQg2pXOlaKYuLHWM2r6LjHQpKGh8\nSaG9HAcB+0thPuYniPkvg6uTrEiVcYP4T3/Pguipm+OjWOSYx7RmAAAbu0lEQVQ50kDaE1bbhiWu\nDhFKu33P3cOGjx8WbLc9zsmuCMFRBCcY66yhv4LlhcCzyYQ/zi54PZkzTWX/BBXi8uoCw3nV8Kfz\na97v1tx1B9b77ZONmkMUSGn5ofOst3vu7jd8edhy+7hjuT2w73thCszxueHdycomxaKzq6gTFkcb\n0CRLVQWuqsHL8ynvXpxLKOXyhNNpTWGG6t7smTwJaRhF3tiRlTPcV4abPvmt3Gvb9jwuNvz1wwN/\n/fTAzcNWce8xhfAH1zl5bjE9qzRpSI0W0nMloyoYxQMrL0lUBZ5j+noKQ4zCYX63otv3miuyFKWy\nYRZKX2AEVrhvHe9vFtw8bljtO43ba2LsVw52jGhSX9d237Fe7ygNuaahyEixIamZNr+xhu7gJRa/\nOrA7OO3WNMxn+tZaQ90UTJqKuiyzp2qNUj9ALlUnr0p2O+BJ2CSqKP8qlKDK01pDVAhiaY00AKkq\nLuopl/WUy3rCrJlSNg3MakxV0oXA9WTPsj3Q9o5H57i6POHNy0u+e3mZuYJktVJgRJpSh0w1HDld\nQtWOQodJUMgCZ4hhAl7kkxtDrt8Y5yjHhFm5NeU49JQ8rKQA9DUxge1/ZXwji3woPTVFMWwMIk2d\nEmMWYsC4gHWMinOgcFDuI7ULFE4eONHAps00eG3xF8+ewwNfuXKQjYAhURFV+5NI5RUREaVEP2tm\nvU6MBhKrYIxaPBBwPkiS6vOKLx9XsoBWSbWE2EOcz0EmY0Zbu8DwbnLKfz65ZlaUWnEaM3eHlA0b\nTIhMrFjlP5yec9Nu+fmwHeCPaatECSH1vedxteXHD3f85cMDj5uW3if2jCemNpFU4JNMjcEbGJBA\n6frynhzft0LAFLViszDw+vk53799xttnZ7KG3tP3hqFTDlmIR3jC/idV/7IjhFlS5ywHI6WYDFLD\nZM96s+PjzSP/8udP3G8O7HovllAY3F5BTsjnpcKfNFeoYs5QNVKFcIrbJgU5KBUzYFCJBjof+Xy/\n4X6xodJwRC4iKgvpM2oFwRWjoXOwaTsOfU9Iyjh5atljGW1iXRqvfOWPqy02RrbrvbJaFpKXIhVJ\n6ZkcVZsuN3tu7jbcLQ/sU+EP45CZfFBhYdpUTKqSAqRJeu8hQGVLiV/HpNTNk3OWpms4d8Kz80RO\n6q4LXjqDFTZQmpJpUXLWTHg+m/O8OeGsbGiMKFDrApU3MCmZ1JZ5aflhc8am7Vhv17y4PuP7N8/5\n4eWVoEOChD2DHTE2hcQSKfc5f79jstmNitjQtU9JZQn7esSbEErySMSLxNK1HM7fsF+yoZkMo2w1\nJmFuhyrrmDhYfjm+mSCHtL9VfyVUgHybbzxGKILYDcGKUKs9FCFQtR3WMWyQZFwMPspXGl6QMZGY\nuYrj8KdBhur7x9cZDIeY43wuSIm++kwkqzS5x0EXqescm92en36658vnlSSYiGrhddjoSAUqgcFt\nTNpkYkp+Pzvhj/NLXjQzIJLaF8SEmMhxN9kQzjvezE/4h/6Knw87ll1Lqy3mjAHnPMvlnpvHNTeP\nG24ed2wPDhe1om40n8MMDp7M+DcxDL/I9prRn7KAE0KhSGRSF1ydTXl9fc7l2ZxYiiAQBsGR4tXD\nLYpUJibF9tHnDCaoMhNhmTrLq7FEJNA7x2a95y8/3/Pnj/fcb1taH0mFVQKLHKymrMQ1txGCV0U7\neBbGFKpYTN7L6f5ST1ijFZwpyZl0jNOwS0eyBkWhSIeawcKT/WAEf53j8inBlvYcKhCHebcYQoDt\nzvHTpwWfb9cUxajyNMVuRzmE4Rmk7d/+0LPcdkINoUJGotxqRRpD1wcWyz3/9ufP3NwsmFQlwQdW\nuwN3iw2uc9RRoLfERCQVs7GVlMLgSanhYgYPOSnUCjgpa16dnHPeTDipKmZFybSUfIpA9yL0ATqH\naUpMaaGZ8N3lJdvg2VnH9emUaVUSepc9r6AFXll5mGRAaVewACYM4Q6MkWrdVG8RocXjjYAOCirp\n1RntUHmeH8+ooTmyxONX5ycp6hiRmN7QBORvhVe+HY1tfoChw43ev1paJh/IKkjMzSlUOWGAy8RQ\npyrcZq1vcrjDfPXZaTsqr/xoQ6HvjcMcy2WzcIzJPFfp1hO087chmqhoB6n28iHQ9R3Re9abPZ8/\nL/hys2SzOgjxEYEYHISe1Gkn9/hLxE4EamO5Lhv++ewF76anNGUxShglaKTcb0BcWR+lfPy0rHg3\nm/OPpxf8r9WCu3DA6eZdbvb820+33C23LHYt29YPnV7IIntkJWgo7BcbyQweSRIno0l/UtSgszqp\nC15fn3GVut6MBFHeFulzbGqEYPTeclZArm/tGATxC+XcdoK6+fB5wY+fFtw87mhdwIchP5L3nTHZ\nnDZqnSesY+IfSYJaWhJqgkwe9BfP+hRxRIa5xghDjdsQNTWebOmPrqIeZHrIrGVG92+SuyXKD7HW\n+xBZu254SL2uYiN+/XwYCXWmHpvZQs6kX8nfkPzK7hC5ud/wuNiJYotRKGd7R+OCKpw4vFf3V0Lc\n2/y5ab8M98nobxbDrKh4e3LOaV3T6GeVqpisUnwQIqHz2N5DVUJpOZ/PeOvP2dATdh2fP92zulsl\nihr5PJuaeyRhLcnYMlperAJTNxD1JWMoJ32tQIs9QakZhufMPozRqtPxHh15H3lZR0aUTF2Skap0\n/p5CK2M3Io42SyKxTzFCgmivMojA6o1Q24ZSCGyst3ik00yBTKodUT+mkRELJEE+0oAa10o3kbZp\nMCrQjdHNPYRjUqcfFwNdlIIAKdePuW2d84623RMcPDxs+fHHe5aPO1yrDTOCw8Re8a4x33Ky4NIt\nndiSd5M5//X8JdeThmBlh5jktYw8j0iK20szgwJ4Vtb8b2cX7NuO1jmWXkq3b5dbfjr0srkyI6BR\nYp9RfJgoCVgjBTvjiR1IqVTIpfkx49eMrD61rGd1yZtnp5zNGurCqlczCCZGRoowwKVyf0ZJyZiv\nrybqcA0j7Diu61ks9vz8ecH//PEL95sD+65/YgENfozJFYDpGRO3jS1CjtvrXxSVUjy1bJ8oLIb5\n+Grvp2+GQMUQHnx6TGUTpLDPEP8fW3Gjq+u5ysZfjBKzZ3gbJKhtsrK//kw1TFATKym3LH6U5U/3\nSO/Be5eMTVICzwKTYIZwJ8N9EQfm0q/STqMnN2oiyJrYCLUpuKxnzGppvdd6R6aV1iKjECPGeWzn\nofKEqqCsS56dneBN5F++3PLX918UbTQIb5vohPPvBF03NSVlnHMVJuCHFUv3ZSwSSjVQRJCqjic7\nAEhnyWQFmnJhTwAY+pZkxOYwpYkM8Ndfn69vIsh71w9dcVSzDpy+ZGFQGktlAoV2Qo0xYgIUXaCI\nkcpbvI/a+OArTHOehKTlZctm6vCkTCK52krGaKODJi50c447yyPdSHrtJp/eYKLwrddVSV2VfLxd\n8fHTirsvW6KTF/joIfZYLb/Py20gEd8bQavxZnLCP55dc1430kUJcfPzVMVkXam7rCXARnHLjSl4\nUU/557MrMJb/e3VHiFLo4/Nth/yMSUiOjeKEb01wqMHi5MlXgWkOCekU006HNwZHWRVMJyVnJw1l\nKddNCGr5wIBgsiVM0ntHiBIWSL0Z7BibP47NR1GEIQgvyO3dir9+lqrH+/WettckFmopJuHNKCQy\ndinUKIeI0SR8spdTz9nsTYwkkrxllKgdhQoS58ugupN9q9/rswwUuKOd+dUpNsnM189JVuBQ3m8Y\ni4khFR1HP41XVAV3zisMH5TCVCb/2mTDIxVbyVQO/lk0yYvVc6HGgJ7E9CmjMZqVrECgRApx1u2O\nD6sH3p1fclI3GJzMv1ICB2MlhhwjpnVEYwkWbFUysSXPZyd8Wq25Xe/5uNkO1r9+tRqiSdTDlTFc\nlBPezUuYTHNezBi1jFOxH9LADxOZqEGUHy0tzzgmnh9SgR1x2G95ZcxohZIyj/C3JPm3EeS9k0qy\nwgycGFH7/jGsYYxBBHe0A/OgEaFuPBgfsVEtyjw7v67i0xyMuTHGOOEnrzXJupA35b9q/DJGsVt6\n5Y9IWzcdOmtFmKxXez5/WnJ3u6FvgwqsQAw9RfQMdWejo6wPbw1clg3fTU/53eyc2tpBzuYnGhRO\nzNZksvDEa2lshS0ifzi9pMPwc7vlzvus0MY86vk4jzX/yGXP2R9Gzr/hKwEjyrJI1mGK9cUIMXA6\nnXBx2jCblJRW5syi9Av6urIQZZyw8xGUV0UsZMbrlX1/WUfnPOv1gbuHNT9+fODTw4aH9Z7W+bz+\ng5jTnZBc5VG8OCe8DZD8PEUNGCBHv9IlRneV13G0RrK+SQGqpc0w58Plh/fkUIx+gBlfP31i9qBG\nN5IvOHoexvc4UsTx62sOf5BCntGyk7wCVGk8DYF8PSySpK8snBYNp6ZgFkUot8HTRmFXSfsw02fo\nbYXRHEWkQnm5XXM9nTPX3qoJimqsMA7mGLSLmM5h9hImsmXB1Ba8nM253+75FDbsnVeZMyoeMyZD\nJ2traSqLb+TsCj48ZO9b2hKqNY6hMDajUJIyiGmjje2k9IS/IpNjUqb52EUV5P8fE823EuRdL4Km\nMJRlFApTEJzm+DhEqcKzphQu4BReIW2idNhVgOYDyZNJSnOXvhrdpDZPqkkeoVjbY20Yxu8dLhqQ\nqk6nGO3UxyZhY/f7jk+fHvn0ccFqsae0VmFNTgT5aD6SaJTrSFinsoZ3kznfzc54NpkjbqMZDl9S\n+mPuhpg+XzZV+keIvKobWgw/7test8uB8dAM95yvQ7Jw04do3WscEBt5ifKcxOFfFCVMEGz36A65\nOG14fj6lKcV9JYp1LRBNvVKM6vZKDDoplmF/D585ds0F4tlxc7vkxw8P/OXmkW3r6EMUaGc+UIMA\nGpTF8EwwWMaD0Ev3EbKyHXTcU8s3x1C/Fp0mCouffp8TEqO9ZdL32ZgZXcaMBCrJ6xzCYCk8Bmmu\nvoo1532Wbj7m3w1K7clTD4IkPddwK/m+4/CYTz6pRMjdzm3Bm+mc19WMZ7ah8z0H37MPPcFEZTQd\nwAOpoCbBezNHEmC9JzqpsCytViYr14kxZuiLKxekOHg6H6ApsFXJ6+mc9emBm82aT9u94MV1/0Xd\nTzGtXxCWxcR2opFqgXbGCFozAFAZobEtRvOKXivnT7K8Ia9dhmeqzEkRhHE+KjKs1N+KRX2bGLlB\n48x2dFC1Gkr5ea3GnRVmogsZcDEqqY9AtIKyJKg6VeE2xN0Ng2UjIRx5b+J2SAImCet0nFIYNlVl\njjVkiEJd2we5n/T6GAPWSCJtsTywftyxXnUEF1WjO4ieIhUNMYrLmuHw1Fiuqpp/urjk1WyeBWcK\n+pgxfNKOrLZsXWmCMN0vBgic2JLvp2f8+bDji+uGw68bbqhcHEyILJDUAkO9n0jMfDaDDTWqwFOh\nF41yCllhgzyfT7g4mVKWWn6v0ip1V4nJCo0hh9sStUByMaMqYzPe9D6y3zn++uGev3x84MPtmm0n\nPDii3FPWcqx8yB1uRCmpe81YEI/mAjm46WANiafB+DCj34jgG0q+Bwt/9FwxL5p+fZKuffoZ+bUK\nBtR7Hs72yGLWe86i2prROUhrlO40ZqWRC6yeWEPDG2JEz8NIYD3hTEjrYzgta37XTPh+dsLryZw3\n1Zxn5RTvHX2QJgqDMpRQ5Tg34zWUEVSIChw0MmkaKArWxgGKDFJESTCGgOSHbADjAiYGXHS44KmM\n4Xnd8J/Oztj2jse2EzSVQYjLotAXRCLBRm0cncKKEmoVhJNKipi8RW2CM9rTAkVWNRlGuYoszFED\nMuazllExo72Rz38+9L8c3wa1wmD9jjW5AWIQTRxCpIhRO26j9odOaNQo3tf+xljgpslKsmnkFg1X\nG145sqeGElkSGVbMi5Pi49IdSBvrMjyGNbDdt8RQsO0jsRPlEQgQvDRv0DcID4tYQemzI3BZN/yn\n+Tm/m59xVtcqpuPoYCZZaxjtm3wf+ecY6Lxj13d0rmfTdVJJGwZh9Iv5l6fQzxvuKwnCv2EQjK6Q\n/j/ckNyPeEFNVdBUZUYeJTVUJM4LL/cdgghuk+l7E26abCFiorIoRpbLHZ/vlvzHz3fcPG7ZHHot\nZIKx6/yV4T0SwX/r2UYTi6z/AAEbDAAQZVRVJU1TUldiLQ4hKLXm9ECnmGcIMYcQ0vMloyPGhGUX\nizEQf3GPgzD/+g/xyWt+6alm9T8WK8OCffX+YTo0XpsURNqTOj9BIXmlsbyZn/HD/IzvJnMuqobL\nasqlneSG1J4w7IM4hFJS+CErF4bkq9cz3hppCO7Q588PKj+nsJIJSgVgIt46irrmrGn47uyMm8Oe\nnsi689L4PCGg9IGtsdRGIISpN27iVHlCk6ZefHiqz4Z/aadnwzHNeVLCqQ5lMBzG+3LYu7+GGpPx\njeCHI+xzSDSo8jfZ0CJwC+2gkxocJTfPxIRgCE8nBUZPneUuyXpKQnccl07zbOMIXTGSYdEkQa4b\n2IgAdolfOY4Pgwjy3b4juIKIVCrGAnovvBY2NQ1ImuKrm66M4e1kzj+dX/NsMqcuhPnOjj4jjJTR\n8DUpnqjUuh4XPLuu5WG/xcfIQ3fg837NPjhlgEnwMH2CkaQb7MJITIQFNkENY57vZMUPgiSFYMiT\nmESGhNOs1BGosEgKpRDjBR/RatmIjyYjG9Qgl0/VALYPihHf9rz/9MBf3t/y4WFD28s9J4a8vENG\nSaWnhkSyfAabOh26dP9PNB7prA/zYa2hLgtOTxsuzmeczBqhLVZTS/zJiPNROEuiFIt5FdTSOi7t\n/ZAFvA+RrpXG113f570+PuImGQS6560dCnyyW2+S1xjzORpIwAQVlqqQY1IejAJGo7h+anyR50vP\nWOaoIVJbw7uTU76bn3FZ1tQp1JcqX40BUwiNgobw8i6OeceoApfPj1bCjiZGDjHQArsQ6dVLzmcg\n24eidMtohGLCi4c4rWteGPju9IS9D+z8TrHuhpjcQiM893VRiucfB2Mp+Vl2/L3G6p/cSLIEM/Xm\nWGkOSiD32Y2MZnxkZMX0uuE6X49v1FgideIQTupxl5V0TiOGEkuljQ0McqiLYHHBYwOEWJBiwvLW\nrybLoO2ejAryOOKhRjmE0woNExSDkEOFfOIhi38tapHu6gJLs5FMCBTU9KltQV3XVIWhdy2bnRey\neEWIWBgJO7l2aeDlZMofzy75w/kVhRFXr6DIByl9po8hozhkkeVghOBxvqfrO9b9gYfDjs/7NVvv\neOh7PnUHtrEXGKfzI3NLLQEVbBlOlzVbEtoDc0bGcJhB6EkMXVdAERoGpalVNE9RFIJCSpOgOHGD\nCCHpgRufKNYIGh6Q4xOi43DoWS53/PjxkZ9vl3x53NM6FT/mK9x5JvsS63YcwhhHksfCRBSVWIS5\nQBMV7KpcrDGURcG0KXl2ecKrZ2fSXGHeUJWl0tySN3dqLScWqJ71KCEN4ebXf0Ttwdnz5X7N3cOa\nu/s1nR8hr9LRHrnhtjCczCrOTqacncxEaRpRHN6HoVWdV4WvlL+pB6lznrZzdJ22PxuVsed/Fslv\nFVb6bKIKIgScLyiBedlwUlXU2kUpdaXKoR4z1HGohhlzDZNyP0Rkn6R3GnneMhrmlDjjJNyaGFDV\n+w1K4WAwWC8FRbGwCuCPTKLlh/kZ+96z6FrWbTJA0iLLeysYGVFJYQbwXgwcbfHWhJKagkIhvBF5\nwGjjCH00ZDZyTmRkH6T4ePbO9B2iY9SS+Xuq7LTKBx1CyJ2/Cdr7sEiwLiPtkLxwH2CkV6dNhzpZ\njyZZlNm+zvviiRWlGyApCQN6uJ7qyGQhpsOfNtQ4bolaNr+G+43RcFo1nJ+ecHl2Stu3PK471k4K\nf0a3M7qcbJC6qvjD1TXvzs45qSq60OUDGlWI98HR9T2d88KDEuS91haUtiTGSOd7tt2eL+2Wz4ct\nH/cbdt6zDp5FcLQmELSfYCY3SgL8iVCLWXENlquGQYxRq+3p3MRRzBkGISPPV+J95HDosCEId3Zh\nsWWpeRHyaxPs05DQAlEStwStWjxwe7/m45cl72/XLDYHDr3PBtFg4Xx1b/ocTyCAujdGy6t6U0I7\ndWE5mVU0tXAEeS/zYAvpODObNJydCA3v1dmM83nDpK6E1zvxmoyvnw2HwYpO/UOTcI363M55JlXJ\npCopC8tqe2B36Old7q+TvYu6KphPa15cnfDs8pTLsxOqctyHM/GwoJztg2fgvMP1jrZ3bLYHVps9\nq21L23V0vcNrKbE1hqK0nJ7MODuZcjqbiNz1Aa8sgzbCiSk5LyaUWntgld5iOF/pjP3SwnwSch8f\nmPxS4WhpsNTW0oZIP7IEs7eVDRNBvBROON2pDEVRcD6d8to7HlzHX9wSlwjr8t6PYkiODMUkd7L5\nE6GIhjpa6oH1f2xzZ/jpEyv7yW6L47qp4ZHNYINnAMYv3i/j24RWrMH7gHNONqw2WiYGilhSlpp0\nUrCz91F6T1ooPLlbtQgJFebEPE8DtpgnbqchCXIVWUkZ6F/Hnkz6SxK940keXjfekunD4bRueHV6\nyqvrC+7XC3ZbCL170iwX5WnISRNraOqSdxdXXE/nFKqfTLbeJC7fe8eh79h3Pa1zOC9WdVmUNGUN\nUXqirtoDt4c9nw47PrV72hjZx8jeRKErZdiOiYs9Ce0xxEx20VBCNSQuk3UpczlMkgQRhgrFZBkL\nva9znt2uJfSOoiooq4oqGqGtJQl9mZtcbo94QLKWFucDm82Bm7slf/30wP22o3cxhw7M6HbS2mRO\nbP17xuUaQ2qKkT9TBW/0IjBq7Ul5MqspSmHsJEaKAubTCeenc67OTzg7mdBUBaWVMpVCqz+jSbh1\nkjGuIZDh2IdopHgniIJM4cdYl2rQi0IwKbm974YcgJFk5nRac3Ux5+3LS15en3N5OqeubG4SkhpY\nyOdrXDcJctfTdR2HzvG43HD3uKYo16x2EfaRrpPmE2VpaZqSF89OePnskhdX5zJvzuPaHuc8JkSa\nYDhZlhRd2siD30w6o2YIgZFs1Sz9xkaYSfqWFMLBREqDlMTbSGuCwJBtBBM0XGOG3RkjxkVwgVgK\nn3Bd1VzFGW/6jo+rNVttjzdWLYVJLJriPljViimFnUMrMVE3mByCHTzafCuDVM4qbThqY+Gf1nXY\nx095mL4e5usig+M4juM4juP4bQ37//+S4ziO4ziO4/h7HkdBfhzHcRzH8RsfR0F+HMdxHMfxGx9H\nQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+\nHMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzH\ncRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ec\nx/EbH0dBfhzHcRzH8Rsf/y8kbXZODisB/AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n77ryEsbvRQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nXDEErE5QeabrOg77HWKcdo3zzBx1wZazErxL1lCVUgSphRasQ86ilz803ru+Lta1CWLZyxSlnUoT\nDCyvy2JdsUB7OkDVtROO7SKOMa9waC2CN+CcQmuh961bz5RkHmAOqQojLYwYFpxb07YqbdGIwnga\nnN7eP2sas22BrFi78nX6WhesCreYZumwiIoWVkxFX59qoDTqbLGV43xEPEgAlwqbXc/2sGV7ccD3\ne6zbIATNEDWVMp+4u73hdH5LyhN28ozO0htDPI3EKZOLYILTZef/z9y79UiWXXd+v7Vv50REZl2a\nEiXNyJrBwOPv/yUGGBieebEB681DSZRMkeyuqsy4nLMvyw//faLEcb83E0g2QLKyKyPi7L3W/1oC\nbburaHur9DDIW2bUjdAqLCdyiIx9JwynhEMd8adfvxBG7jNvYlqsTatULlpvWpf2dUy1iruz3Su3\nt03SnoccNXVvkzg03APWB21v7DFweV05nV85nV8ZDLbm7DdXUM8M3nELnF9fKCVj0fjNP/2G//Hb\n37Bezrx++EBKgTUHrHXev7zzz+1/8Pvf/QPX9//EX/zqVR2bKZNT5m//w9/yh7e/4/df/5nH7UHb\nd96u3/jH3/6G83KakkjH48ToIvjsB1XXog52KwbV9X0cRB1yUah9nqobe8DedjxsvL//EbfOh88f\nCSOQyWwj0rdBDbAHo6wLo3cebzuPdx2acyzh0FXj6ju8jwZ247S88PLDB+6PGyklllJotXM67+xt\nU1ZMm9j/VDiErp8V0IHsFrAlEosummUpMh+NIfkcA5pxvz0Y1hnBSSXhydh9EOpOaQn3FeudOAZx\nDOGwrVJbI5cz+HlOgxW3LszY+yTQhghIAuZxWrsP/iA+E+W8asL1LllbSYFzKVyWQoyD2gePttG2\nxt6mlKw7hK6p9t/wBWZGCgpcK3lh4NwfN8ZoWBjToFWxIBlmHZ37due+PUSsDiO6YKkco0qog1P7\nzq1ufL298e32xn270+o+FTOylR/xs0rTlECjd+Vcfz/vJqk4jTr9mf2NDsDZSG+z37N3bb1S9uuz\nouTIyPW+05vglGVhbmQDCTx1KOaUp6TxoCUE4Tzny3Fkzsyfrb63yVFqazhcsDanbzsOcv8uJpA/\n6zA96NuiDuze58biQAhyVs6+0xGNYTIpkqO05hboriKLNjS0fPRPpLVQfCqrIgyXhNW88nh85X5/\n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\nQkIdRMpROQs4o2ktLwKkWV/P2bfzXkrKklQHjYksPM/t8Bqp/H49/gcd5N/f3iAVLEp+FJMIZPFP\nwJWxfvDx6wlBy8P9Lrt7yYnbrRD3yDUbvZ389P4P3L/9xLc/f+df/t9/VSX+/zP3bj2SZdt13jfX\nbe+IzKo+N0sURR5BkKgbYRj2g/37/TMMw4Ys0hTJ07eqzIjYe92mH8aKbMlsAn6w0CeBc/qlK6sz\ncu+15mWMbzRt8nPKXMuVtEwzbdSl+U5SvvhTY64KWTl9k9GaKuwh9GoMkZeXq9yUjGUtPvV94orz\nWkaEH394Y8uZ7bJzeb1Q0qrCTURFVR9BPXVwLSbRMmQrBhO2y0ZrnbCixszBmubQI8ADLd5yLuzb\nroWS1gFiOU+HqCCCiJGRi3RdU1gOMIUPDQRV5a4upp2dSOf6+Uow6P3k6/s7j6Mzu7IbwxYhCw4W\n4pOQGLkfVSyVOfn0WW7JrWzk7ULKBaPzfp/02Yi5QIjKqjwPbm932inFycunizjqMYiTM6RqqT44\n2sH5eFDapGwwt8i271SGiJHu7KGw71IRPCWcOUV8RKFxx1hvhHCwtd44jjutHlyvF66XC2A86sHR\nKhqwT87qMAdxBobp+8whlnS0vCibRuiRjY2QFZhwyS+KkgPq8UZvp3jyQYEFqeyknvj97/6C3+R/\nxl//73/Hp3/7W/7iz/895VL4X99/5P/6m/+N98edc8ib4CtS7RkCsl+kEIohrp1wwCY83m7c32/0\nVrmUjW0r7C8X4Va3nW3b8GgagZ0PNaRBkse4JcJYh3hyznpS652zPRjZuexXXl5fxL8PzsWEZnWM\nF5dE8v128vXLO3PJz9TpNNJRV/WaFgo2cT8q9VRntl+va7xmhKKuJwQj5bQ8KAYM4S5K/Hi/xnxG\nHK7Ze5BseUztproLX9D65PpcVp+DUU/hJs4qVPMeSBeNSkNUkVDPkzYPZtEOIhZV5q02em3U1lSl\n52fghJgIAu+di/EUmBYIeV2ordN6ZY6NUpL0FqMzRvs4W2JIAu19MJn+4dcvM1oZqzGxSF7289EH\nly3yu9++kIJYy63LNBBD4vXzxvW1cLkWXn61YaFz+3rnqJWcdBBeXxKjG8YkumnT7wk/tW3uvVMu\nQtGCtNq2APBnVcagBbk5azuptTJ8sO075WlvX4uHLW9qofo6/FeOYS6Zy36lbGXd4isUev2Mw7QM\n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\nROkMnut9BfMAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nHG9oOnG6VJ7frdy8e+Dm7Ynl7ZGb371GfnnF6k1r14vyN79s/PruyNMl87xd83jOvD/D/XPlzdOF\nt88XfuTCc0usAnnJ/Jd/+Tu28yP//j+957k1a3I5b3ApaKlciZKuZ74typtT4V01ynGWTG0lFh4h\n8cPbM+/efc3/9W/+YDN8m8tQY233m8D3Pz5xOV+4v594XqvRKusz21ZZW7FRkc0y1MuadmcyOrNd\n12mCrUyom8fO1f/gXFmnaaVl4e3bt/y4NdIizLeFmyTMsyBZIE/Icku5vKNsha3A77965N/98Z6/\n+2HjzVq5FKOCZgm4bZxlEWFZjK3SopD2weujGPL/9r//7/j97/8jf/f731v3JRtpsgM5L8JhSQgz\ncswmiFRNn7dUgJnWZpBrluNn/OLTT7m+fYUsNzw8vOHp8UcuT+99Mk+hlNXSkdpILhWaRJEpsRwz\n1Mp62ZiYyD437/p6Yc529GrFWQZKqSHu3ni8CA/nwruz8vYkvDvbNI8W0Tgvy3Y2TCLs24gc42VU\nTNwS2msfSasGT33AD5bppWGAfvIa793/WzzaiCtMWJv4zWHis7uFL24Tb95trKsQ8Ij9vPFbJTWP\nIpvdWDgwv54+tMMj9qTdbPpVjfh7xDr2OeGQxGmYAogvnOzXbOdApEcxAU91G9CdS+/N7T8ejiwo\nXsrOpvvve1XAM6TBfPqQVy72ENHWuqGNprzkdxj/jmzA7i+iOjqTQbN1G0/JRtRdZeGYQwBsd9+7\np26FbEPfbfiKN7ppfZEaqO+DqoVtLWxPhbIq96Xx/alw97xyns4sJNJtNt2gYjWs7bxSLhutCXcH\n4fYgfHEDv319xfN64HmtPNXG+yI8lkR++IaynvnsSnlcN1ppbGfIVF7dHfjk5kBt8HZt/PF04blu\nVK3kFBltyDEray1Oty0dekOqB022p89WJaUAa1GKU/uq+mDy6JTWkNq1bM+eh4GJAS82D44642k8\nOT8L40xWbZwfn7lcFM3wSU28utmYAdWJx7Py/vwjqWzMDWZJXE/wxZ3wvAqXd80kr5NJLhiPfDBX\nAO9t+dOvj2LI/+pf/jXfvvmK0/mBtTTmuXF7O7GuFxuW7NHOlBNZBS2JtFaLrNPEeVOe1sRF77j+\n5Ld8+eWvuX79C969+5b7t9/y/u33pGmilgvn53sent7x+PDI4+lsMqaTGqQwSWcQkK3AJxlTBJyS\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_net = solver.test_nets[0]\n", + "for image_index in range(5):\n", + " plt.figure()\n", + " plt.imshow(transformer.deprocess(copy(test_net.blobs['data'].data[image_index, ...])))\n", + " gtlist = test_net.blobs['label'].data[image_index, ...].astype(np.int)\n", + " estlist = test_net.blobs['score'].data[image_index, ...] > 0\n", + " plt.title('GT: {} \\n EST: {}'.format(classes[np.where(gtlist)], classes[np.where(estlist)]))\n", + " plt.axis('off')" + ] + } + ], + "metadata": { + "description": "Multilabel classification on PASCAL VOC using a Python data layer.", + "example_name": "Multilabel Classification with Python Data Layer", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + }, + "priority": 5 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/pycaffe/caffenet.py b/3rdparty/caffe/examples/pycaffe/caffenet.py new file mode 100644 index 00000000..82af2294 --- /dev/null +++ b/3rdparty/caffe/examples/pycaffe/caffenet.py @@ -0,0 +1,55 @@ +from __future__ import print_function +from caffe import layers as L, params as P, to_proto +from caffe.proto import caffe_pb2 + +# helper function for common structures + +def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1): + conv = L.Convolution(bottom, kernel_size=ks, stride=stride, + num_output=nout, pad=pad, group=group) + return conv, L.ReLU(conv, in_place=True) + +def fc_relu(bottom, nout): + fc = L.InnerProduct(bottom, num_output=nout) + return fc, L.ReLU(fc, in_place=True) + +def max_pool(bottom, ks, stride=1): + return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride) + +def caffenet(lmdb, batch_size=256, include_acc=False): + data, label = L.Data(source=lmdb, backend=P.Data.LMDB, batch_size=batch_size, ntop=2, + transform_param=dict(crop_size=227, mean_value=[104, 117, 123], mirror=True)) + + # the net itself + conv1, relu1 = conv_relu(data, 11, 96, stride=4) + pool1 = max_pool(relu1, 3, stride=2) + norm1 = L.LRN(pool1, local_size=5, alpha=1e-4, beta=0.75) + conv2, relu2 = conv_relu(norm1, 5, 256, pad=2, group=2) + pool2 = max_pool(relu2, 3, stride=2) + norm2 = L.LRN(pool2, local_size=5, alpha=1e-4, beta=0.75) + conv3, relu3 = conv_relu(norm2, 3, 384, pad=1) + conv4, relu4 = conv_relu(relu3, 3, 384, pad=1, group=2) + conv5, relu5 = conv_relu(relu4, 3, 256, pad=1, group=2) + pool5 = max_pool(relu5, 3, stride=2) + fc6, relu6 = fc_relu(pool5, 4096) + drop6 = L.Dropout(relu6, in_place=True) + fc7, relu7 = fc_relu(drop6, 4096) + drop7 = L.Dropout(relu7, in_place=True) + fc8 = L.InnerProduct(drop7, num_output=1000) + loss = L.SoftmaxWithLoss(fc8, label) + + if include_acc: + acc = L.Accuracy(fc8, label) + return to_proto(loss, acc) + else: + return to_proto(loss) + +def make_net(): + with open('train.prototxt', 'w') as f: + print(caffenet('/path/to/caffe-train-lmdb'), file=f) + + with open('test.prototxt', 'w') as f: + print(caffenet('/path/to/caffe-val-lmdb', batch_size=50, include_acc=True), file=f) + +if __name__ == '__main__': + make_net() diff --git a/3rdparty/caffe/examples/pycaffe/layers/pascal_multilabel_datalayers.py b/3rdparty/caffe/examples/pycaffe/layers/pascal_multilabel_datalayers.py new file mode 100644 index 00000000..9420cb32 --- /dev/null +++ b/3rdparty/caffe/examples/pycaffe/layers/pascal_multilabel_datalayers.py @@ -0,0 +1,216 @@ +# imports +import json +import time +import pickle +import scipy.misc +import skimage.io +import caffe + +import numpy as np +import os.path as osp + +from xml.dom import minidom +from random import shuffle +from threading import Thread +from PIL import Image + +from tools import SimpleTransformer + + +class PascalMultilabelDataLayerSync(caffe.Layer): + + """ + This is a simple synchronous datalayer for training a multilabel model on + PASCAL. + """ + + def setup(self, bottom, top): + + self.top_names = ['data', 'label'] + + # === Read input parameters === + + # params is a python dictionary with layer parameters. + params = eval(self.param_str) + + # Check the parameters for validity. + check_params(params) + + # store input as class variables + self.batch_size = params['batch_size'] + + # Create a batch loader to load the images. + self.batch_loader = BatchLoader(params, None) + + # === reshape tops === + # since we use a fixed input image size, we can shape the data layer + # once. Else, we'd have to do it in the reshape call. + top[0].reshape( + self.batch_size, 3, params['im_shape'][0], params['im_shape'][1]) + # Note the 20 channels (because PASCAL has 20 classes.) + top[1].reshape(self.batch_size, 20) + + print_info("PascalMultilabelDataLayerSync", params) + + def forward(self, bottom, top): + """ + Load data. + """ + for itt in range(self.batch_size): + # Use the batch loader to load the next image. + im, multilabel = self.batch_loader.load_next_image() + + # Add directly to the caffe data layer + top[0].data[itt, ...] = im + top[1].data[itt, ...] = multilabel + + def reshape(self, bottom, top): + """ + There is no need to reshape the data, since the input is of fixed size + (rows and columns) + """ + pass + + def backward(self, top, propagate_down, bottom): + """ + These layers does not back propagate + """ + pass + + +class BatchLoader(object): + + """ + This class abstracts away the loading of images. + Images can either be loaded singly, or in a batch. The latter is used for + the asyncronous data layer to preload batches while other processing is + performed. + """ + + def __init__(self, params, result): + self.result = result + self.batch_size = params['batch_size'] + self.pascal_root = params['pascal_root'] + self.im_shape = params['im_shape'] + # get list of image indexes. + list_file = params['split'] + '.txt' + self.indexlist = [line.rstrip('\n') for line in open( + osp.join(self.pascal_root, 'ImageSets/Main', list_file))] + self._cur = 0 # current image + # this class does some simple data-manipulations + self.transformer = SimpleTransformer() + + print "BatchLoader initialized with {} images".format( + len(self.indexlist)) + + def load_next_image(self): + """ + Load the next image in a batch. + """ + # Did we finish an epoch? + if self._cur == len(self.indexlist): + self._cur = 0 + shuffle(self.indexlist) + + # Load an image + index = self.indexlist[self._cur] # Get the image index + image_file_name = index + '.jpg' + im = np.asarray(Image.open( + osp.join(self.pascal_root, 'JPEGImages', image_file_name))) + im = scipy.misc.imresize(im, self.im_shape) # resize + + # do a simple horizontal flip as data augmentation + flip = np.random.choice(2)*2-1 + im = im[:, ::flip, :] + + # Load and prepare ground truth + multilabel = np.zeros(20).astype(np.float32) + anns = load_pascal_annotation(index, self.pascal_root) + for label in anns['gt_classes']: + # in the multilabel problem we don't care how MANY instances + # there are of each class. Only if they are present. + # The "-1" is b/c we are not interested in the background + # class. + multilabel[label - 1] = 1 + + self._cur += 1 + return self.transformer.preprocess(im), multilabel + + +def load_pascal_annotation(index, pascal_root): + """ + This code is borrowed from Ross Girshick's FAST-RCNN code + (https://github.com/rbgirshick/fast-rcnn). + It parses the PASCAL .xml metadata files. + See publication for further details: (http://arxiv.org/abs/1504.08083). + + Thanks Ross! + + """ + classes = ('__background__', # always index 0 + 'aeroplane', 'bicycle', 'bird', 'boat', + 'bottle', 'bus', 'car', 'cat', 'chair', + 'cow', 'diningtable', 'dog', 'horse', + 'motorbike', 'person', 'pottedplant', + 'sheep', 'sofa', 'train', 'tvmonitor') + class_to_ind = dict(zip(classes, xrange(21))) + + filename = osp.join(pascal_root, 'Annotations', index + '.xml') + # print 'Loading: {}'.format(filename) + + def get_data_from_tag(node, tag): + return node.getElementsByTagName(tag)[0].childNodes[0].data + + with open(filename) as f: + data = minidom.parseString(f.read()) + + objs = data.getElementsByTagName('object') + num_objs = len(objs) + + boxes = np.zeros((num_objs, 4), dtype=np.uint16) + gt_classes = np.zeros((num_objs), dtype=np.int32) + overlaps = np.zeros((num_objs, 21), dtype=np.float32) + + # Load object bounding boxes into a data frame. + for ix, obj in enumerate(objs): + # Make pixel indexes 0-based + x1 = float(get_data_from_tag(obj, 'xmin')) - 1 + y1 = float(get_data_from_tag(obj, 'ymin')) - 1 + x2 = float(get_data_from_tag(obj, 'xmax')) - 1 + y2 = float(get_data_from_tag(obj, 'ymax')) - 1 + cls = class_to_ind[ + str(get_data_from_tag(obj, "name")).lower().strip()] + boxes[ix, :] = [x1, y1, x2, y2] + gt_classes[ix] = cls + overlaps[ix, cls] = 1.0 + + overlaps = scipy.sparse.csr_matrix(overlaps) + + return {'boxes': boxes, + 'gt_classes': gt_classes, + 'gt_overlaps': overlaps, + 'flipped': False, + 'index': index} + + +def check_params(params): + """ + A utility function to check the parameters for the data layers. + """ + assert 'split' in params.keys( + ), 'Params must include split (train, val, or test).' + + required = ['batch_size', 'pascal_root', 'im_shape'] + for r in required: + assert r in params.keys(), 'Params must include {}'.format(r) + + +def print_info(name, params): + """ + Output some info regarding the class + """ + print "{} initialized for split: {}, with bs: {}, im_shape: {}.".format( + name, + params['split'], + params['batch_size'], + params['im_shape']) diff --git a/3rdparty/caffe/examples/pycaffe/layers/pyloss.py b/3rdparty/caffe/examples/pycaffe/layers/pyloss.py new file mode 100644 index 00000000..6200e6bb --- /dev/null +++ b/3rdparty/caffe/examples/pycaffe/layers/pyloss.py @@ -0,0 +1,37 @@ +import caffe +import numpy as np + + +class EuclideanLossLayer(caffe.Layer): + """ + Compute the Euclidean Loss in the same manner as the C++ EuclideanLossLayer + to demonstrate the class interface for developing layers in Python. + """ + + def setup(self, bottom, top): + # check input pair + if len(bottom) != 2: + raise Exception("Need two inputs to compute distance.") + + def reshape(self, bottom, top): + # check input dimensions match + if bottom[0].count != bottom[1].count: + raise Exception("Inputs must have the same dimension.") + # difference is shape of inputs + self.diff = np.zeros_like(bottom[0].data, dtype=np.float32) + # loss output is scalar + top[0].reshape(1) + + def forward(self, bottom, top): + self.diff[...] = bottom[0].data - bottom[1].data + top[0].data[...] = np.sum(self.diff**2) / bottom[0].num / 2. + + def backward(self, top, propagate_down, bottom): + for i in range(2): + if not propagate_down[i]: + continue + if i == 0: + sign = 1 + else: + sign = -1 + bottom[i].diff[...] = sign * self.diff / bottom[i].num diff --git a/3rdparty/caffe/examples/pycaffe/linreg.prototxt b/3rdparty/caffe/examples/pycaffe/linreg.prototxt new file mode 100644 index 00000000..c0fb0776 --- /dev/null +++ b/3rdparty/caffe/examples/pycaffe/linreg.prototxt @@ -0,0 +1,60 @@ +name: 'LinearRegressionExample' +# define a simple network for linear regression on dummy data +# that computes the loss by a PythonLayer. +layer { + type: 'DummyData' + name: 'x' + top: 'x' + dummy_data_param { + shape: { dim: 10 dim: 3 dim: 2 } + data_filler: { type: 'gaussian' } + } +} +layer { + type: 'DummyData' + name: 'y' + top: 'y' + dummy_data_param { + shape: { dim: 10 dim: 3 dim: 2 } + data_filler: { type: 'gaussian' } + } +} +# include InnerProduct layers for parameters +# so the net will need backward +layer { + type: 'InnerProduct' + name: 'ipx' + top: 'ipx' + bottom: 'x' + inner_product_param { + num_output: 10 + weight_filler { type: 'xavier' } + } +} +layer { + type: 'InnerProduct' + name: 'ipy' + top: 'ipy' + bottom: 'y' + inner_product_param { + num_output: 10 + weight_filler { type: 'xavier' } + } +} +layer { + type: 'Python' + name: 'loss' + top: 'loss' + bottom: 'ipx' + bottom: 'ipy' + python_param { + # the module name -- usually the filename -- that needs to be in $PYTHONPATH + module: 'pyloss' + # the layer name -- the class name in the module + layer: 'EuclideanLossLayer' + } + # set loss weight so Caffe knows this is a loss layer. + # since PythonLayer inherits directly from Layer, this isn't automatically + # known to Caffe + loss_weight: 1 +} diff --git a/3rdparty/caffe/examples/pycaffe/tools.py b/3rdparty/caffe/examples/pycaffe/tools.py new file mode 100644 index 00000000..7f6c2d83 --- /dev/null +++ b/3rdparty/caffe/examples/pycaffe/tools.py @@ -0,0 +1,121 @@ +import numpy as np + + +class SimpleTransformer: + + """ + SimpleTransformer is a simple class for preprocessing and deprocessing + images for caffe. + """ + + def __init__(self, mean=[128, 128, 128]): + self.mean = np.array(mean, dtype=np.float32) + self.scale = 1.0 + + def set_mean(self, mean): + """ + Set the mean to subtract for centering the data. + """ + self.mean = mean + + def set_scale(self, scale): + """ + Set the data scaling. + """ + self.scale = scale + + def preprocess(self, im): + """ + preprocess() emulate the pre-processing occurring in the vgg16 caffe + prototxt. + """ + + im = np.float32(im) + im = im[:, :, ::-1] # change to BGR + im -= self.mean + im *= self.scale + im = im.transpose((2, 0, 1)) + + return im + + def deprocess(self, im): + """ + inverse of preprocess() + """ + im = im.transpose(1, 2, 0) + im /= self.scale + im += self.mean + im = im[:, :, ::-1] # change to RGB + + return np.uint8(im) + + +class CaffeSolver: + + """ + Caffesolver is a class for creating a solver.prototxt file. It sets default + values and can export a solver parameter file. + Note that all parameters are stored as strings. Strings variables are + stored as strings in strings. + """ + + def __init__(self, testnet_prototxt_path="testnet.prototxt", + trainnet_prototxt_path="trainnet.prototxt", debug=False): + + self.sp = {} + + # critical: + self.sp['base_lr'] = '0.001' + self.sp['momentum'] = '0.9' + + # speed: + self.sp['test_iter'] = '100' + self.sp['test_interval'] = '250' + + # looks: + self.sp['display'] = '25' + self.sp['snapshot'] = '2500' + self.sp['snapshot_prefix'] = '"snapshot"' # string within a string! + + # learning rate policy + self.sp['lr_policy'] = '"fixed"' + + # important, but rare: + self.sp['gamma'] = '0.1' + self.sp['weight_decay'] = '0.0005' + self.sp['train_net'] = '"' + trainnet_prototxt_path + '"' + self.sp['test_net'] = '"' + testnet_prototxt_path + '"' + + # pretty much never change these. + self.sp['max_iter'] = '100000' + self.sp['test_initialization'] = 'false' + self.sp['average_loss'] = '25' # this has to do with the display. + self.sp['iter_size'] = '1' # this is for accumulating gradients + + if (debug): + self.sp['max_iter'] = '12' + self.sp['test_iter'] = '1' + self.sp['test_interval'] = '4' + self.sp['display'] = '1' + + def add_from_file(self, filepath): + """ + Reads a caffe solver prototxt file and updates the Caffesolver + instance parameters. + """ + with open(filepath, 'r') as f: + for line in f: + if line[0] == '#': + continue + splitLine = line.split(':') + self.sp[splitLine[0].strip()] = splitLine[1].strip() + + def write(self, filepath): + """ + Export solver parameters to INPUT "filepath". Sorted alphabetically. + """ + f = open(filepath, 'w') + for key, value in sorted(self.sp.items()): + if not(type(value) is str): + raise TypeError('All solver parameters must be strings') + f.write('%s: %s\n' % (key, value)) diff --git a/3rdparty/caffe/examples/siamese/convert_mnist_siamese_data.cpp b/3rdparty/caffe/examples/siamese/convert_mnist_siamese_data.cpp new file mode 100644 index 00000000..928b3fbf --- /dev/null +++ b/3rdparty/caffe/examples/siamese/convert_mnist_siamese_data.cpp @@ -0,0 +1,129 @@ +// +// This script converts the MNIST dataset to the leveldb format used +// by caffe to train siamese network. +// Usage: +// convert_mnist_data input_image_file input_label_file output_db_file +// The MNIST dataset could be downloaded at +// http://yann.lecun.com/exdb/mnist/ +#include // NOLINT(readability/streams) +#include + +#include "glog/logging.h" +#include "google/protobuf/text_format.h" +#include "stdint.h" + +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/format.hpp" +#include "caffe/util/math_functions.hpp" + +#ifdef USE_LEVELDB +#include "leveldb/db.h" + +uint32_t swap_endian(uint32_t val) { + val = ((val << 8) & 0xFF00FF00) | ((val >> 8) & 0xFF00FF); + return (val << 16) | (val >> 16); +} + +void read_image(std::ifstream* image_file, std::ifstream* label_file, + uint32_t index, uint32_t rows, uint32_t cols, + char* pixels, char* label) { + image_file->seekg(index * rows * cols + 16); + image_file->read(pixels, rows * cols); + label_file->seekg(index + 8); + label_file->read(label, 1); +} + +void convert_dataset(const char* image_filename, const char* label_filename, + const char* db_filename) { + // Open files + std::ifstream image_file(image_filename, std::ios::in | std::ios::binary); + std::ifstream label_file(label_filename, std::ios::in | std::ios::binary); + CHECK(image_file) << "Unable to open file " << image_filename; + CHECK(label_file) << "Unable to open file " << label_filename; + // Read the magic and the meta data + uint32_t magic; + uint32_t num_items; + uint32_t num_labels; + uint32_t rows; + uint32_t cols; + + image_file.read(reinterpret_cast(&magic), 4); + magic = swap_endian(magic); + CHECK_EQ(magic, 2051) << "Incorrect image file magic."; + label_file.read(reinterpret_cast(&magic), 4); + magic = swap_endian(magic); + CHECK_EQ(magic, 2049) << "Incorrect label file magic."; + image_file.read(reinterpret_cast(&num_items), 4); + num_items = swap_endian(num_items); + label_file.read(reinterpret_cast(&num_labels), 4); + num_labels = swap_endian(num_labels); + CHECK_EQ(num_items, num_labels); + image_file.read(reinterpret_cast(&rows), 4); + rows = swap_endian(rows); + image_file.read(reinterpret_cast(&cols), 4); + cols = swap_endian(cols); + + // Open leveldb + leveldb::DB* db; + leveldb::Options options; + options.create_if_missing = true; + options.error_if_exists = true; + leveldb::Status status = leveldb::DB::Open( + options, db_filename, &db); + CHECK(status.ok()) << "Failed to open leveldb " << db_filename + << ". Is it already existing?"; + + char label_i; + char label_j; + char* pixels = new char[2 * rows * cols]; + std::string value; + + caffe::Datum datum; + datum.set_channels(2); // one channel for each image in the pair + datum.set_height(rows); + datum.set_width(cols); + LOG(INFO) << "A total of " << num_items << " items."; + LOG(INFO) << "Rows: " << rows << " Cols: " << cols; + for (int itemid = 0; itemid < num_items; ++itemid) { + int i = caffe::caffe_rng_rand() % num_items; // pick a random pair + int j = caffe::caffe_rng_rand() % num_items; + read_image(&image_file, &label_file, i, rows, cols, + pixels, &label_i); + read_image(&image_file, &label_file, j, rows, cols, + pixels + (rows * cols), &label_j); + datum.set_data(pixels, 2*rows*cols); + if (label_i == label_j) { + datum.set_label(1); + } else { + datum.set_label(0); + } + datum.SerializeToString(&value); + std::string key_str = caffe::format_int(itemid, 8); + db->Put(leveldb::WriteOptions(), key_str, value); + } + + delete db; + delete [] pixels; +} + +int main(int argc, char** argv) { + if (argc != 4) { + printf("This script converts the MNIST dataset to the leveldb format used\n" + "by caffe to train a siamese network.\n" + "Usage:\n" + " convert_mnist_data input_image_file input_label_file " + "output_db_file\n" + "The MNIST dataset could be downloaded at\n" + " http://yann.lecun.com/exdb/mnist/\n" + "You should gunzip them after downloading.\n"); + } else { + google::InitGoogleLogging(argv[0]); + convert_dataset(argv[1], argv[2], argv[3]); + } + return 0; +} +#else +int main(int argc, char** argv) { + LOG(FATAL) << "This example requires LevelDB; compile with USE_LEVELDB."; +} +#endif // USE_LEVELDB diff --git a/3rdparty/caffe/examples/siamese/create_mnist_siamese.sh b/3rdparty/caffe/examples/siamese/create_mnist_siamese.sh new file mode 100755 index 00000000..03adce54 --- /dev/null +++ b/3rdparty/caffe/examples/siamese/create_mnist_siamese.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env sh +# This script converts the mnist data into leveldb format. +set -e + +EXAMPLES=./build/examples/siamese +DATA=./data/mnist + +echo "Creating leveldb..." + +rm -rf ./examples/siamese/mnist_siamese_train_leveldb +rm -rf ./examples/siamese/mnist_siamese_test_leveldb + +$EXAMPLES/convert_mnist_siamese_data.bin \ + $DATA/train-images-idx3-ubyte \ + $DATA/train-labels-idx1-ubyte \ + ./examples/siamese/mnist_siamese_train_leveldb +$EXAMPLES/convert_mnist_siamese_data.bin \ + $DATA/t10k-images-idx3-ubyte \ + $DATA/t10k-labels-idx1-ubyte \ + ./examples/siamese/mnist_siamese_test_leveldb + +echo "Done." diff --git a/3rdparty/caffe/examples/siamese/mnist_siamese.ipynb b/3rdparty/caffe/examples/siamese/mnist_siamese.ipynb new file mode 100644 index 00000000..1a4e30ed --- /dev/null +++ b/3rdparty/caffe/examples/siamese/mnist_siamese.ipynb @@ -0,0 +1,1909 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup\n", + "\n", + "Import Caffe and the usual modules." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "# Make sure that caffe is on the python path:\n", + "caffe_root = '../../' # this file is expected to be in {caffe_root}/examples/siamese\n", + "import sys\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "\n", + "import caffe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load the trained net\n", + "\n", + "Load the model definition and weights and set to CPU mode TEST phase computation with input scaling." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "MODEL_FILE = 'mnist_siamese.prototxt'\n", + "# decrease if you want to preview during training\n", + "PRETRAINED_FILE = 'mnist_siamese_iter_50000.caffemodel' \n", + "caffe.set_mode_cpu()\n", + "net = caffe.Net(MODEL_FILE, PRETRAINED_FILE, caffe.TEST)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load some MNIST test data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TEST_DATA_FILE = '../../data/mnist/t10k-images-idx3-ubyte'\n", + "TEST_LABEL_FILE = '../../data/mnist/t10k-labels-idx1-ubyte'\n", + "n = 10000\n", + "\n", + "with open(TEST_DATA_FILE, 'rb') as f:\n", + " f.read(16) # skip the header\n", + " raw_data = np.fromstring(f.read(n * 28*28), dtype=np.uint8)\n", + "\n", + "with open(TEST_LABEL_FILE, 'rb') as f:\n", + " f.read(8) # skip the header\n", + " labels = np.fromstring(f.read(n), dtype=np.uint8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate the Siamese features" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# reshape and preprocess\n", + "caffe_in = raw_data.reshape(n, 1, 28, 28) * 0.00390625 # manually scale data instead of using `caffe.io.Transformer`\n", + "out = net.forward_all(data=caffe_in)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualize the learned Siamese embedding" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "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\n", + "AABAVv1/lzHCzGUnjVoAAAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = out['feat']\n", + "f = plt.figure(figsize=(16,9))\n", + "c = ['#ff0000', '#ffff00', '#00ff00', '#00ffff', '#0000ff', \n", + " '#ff00ff', '#990000', '#999900', '#009900', '#009999']\n", + "for i in range(10):\n", + " plt.plot(feat[labels==i,0].flatten(), feat[labels==i,1].flatten(), '.', c=c[i])\n", + "plt.legend(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])\n", + "plt.grid()\n", + "plt.show()" + ] + } + ], + "metadata": { + "description": "Extracting features and plotting the Siamese network embedding.", + "example_name": "Siamese network embedding", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + }, + "priority": 7 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/3rdparty/caffe/examples/siamese/mnist_siamese.prototxt b/3rdparty/caffe/examples/siamese/mnist_siamese.prototxt new file mode 100644 index 00000000..5d783ba0 --- /dev/null +++ b/3rdparty/caffe/examples/siamese/mnist_siamese.prototxt @@ -0,0 +1,116 @@ +name: "mnist_siamese" +layer { + name: "data" + type: "Input" + top: "data" + input_param { + shape: { dim: 10000 dim: 1 dim: 28 dim: 28 } + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 20 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "pool1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 50 + kernel_size: 5 + stride: 1 + } +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool2" + top: "ip1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 500 + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "ip1" + top: "ip1" +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 10 + } +} +layer { + name: "feat" + type: "InnerProduct" + bottom: "ip2" + top: "feat" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + inner_product_param { + num_output: 2 + } +} diff --git a/3rdparty/caffe/examples/siamese/mnist_siamese_solver.prototxt b/3rdparty/caffe/examples/siamese/mnist_siamese_solver.prototxt new file mode 100644 index 00000000..d4d994d1 --- /dev/null +++ b/3rdparty/caffe/examples/siamese/mnist_siamese_solver.prototxt @@ -0,0 +1,25 @@ +# The train/test net protocol buffer definition +net: "examples/siamese/mnist_siamese_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.01 +momentum: 0.9 +weight_decay: 0.0000 +# The learning rate policy +lr_policy: "inv" +gamma: 0.0001 +power: 0.75 +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 50000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "examples/siamese/mnist_siamese" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/3rdparty/caffe/examples/siamese/mnist_siamese_train_test.prototxt b/3rdparty/caffe/examples/siamese/mnist_siamese_train_test.prototxt new file mode 100644 index 00000000..8ff864f5 --- /dev/null +++ b/3rdparty/caffe/examples/siamese/mnist_siamese_train_test.prototxt @@ -0,0 +1,349 @@ +name: "mnist_siamese_train_test" +layer { + name: "pair_data" + type: "Data" + top: "pair_data" + top: "sim" + include { + phase: TRAIN + } + transform_param { + scale: 0.00390625 + } + data_param { + source: "examples/siamese/mnist_siamese_train_leveldb" + batch_size: 64 + } +} +layer { + name: "pair_data" + type: "Data" + top: "pair_data" + top: "sim" + include { + phase: TEST + } + transform_param { + scale: 0.00390625 + } + data_param { + source: "examples/siamese/mnist_siamese_test_leveldb" + batch_size: 100 + } +} +layer { + name: "slice_pair" + type: "Slice" + bottom: "pair_data" + top: "data" + top: "data_p" + slice_param { + slice_dim: 1 + slice_point: 1 + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + name: "conv1_w" + lr_mult: 1 + } + param { + name: "conv1_b" + lr_mult: 2 + } + convolution_param { + num_output: 20 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "pool1" + top: "conv2" + param { + name: "conv2_w" + lr_mult: 1 + } + param { + name: "conv2_b" + lr_mult: 2 + } + convolution_param { + num_output: 50 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool2" + top: "ip1" + param { + name: "ip1_w" + lr_mult: 1 + } + param { + name: "ip1_b" + lr_mult: 2 + } + inner_product_param { + num_output: 500 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "ip1" + top: "ip1" +} +layer { + name: "ip2" + type: "InnerProduct" + bottom: "ip1" + top: "ip2" + param { + name: "ip2_w" + lr_mult: 1 + } + param { + name: "ip2_b" + lr_mult: 2 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "feat" + type: "InnerProduct" + bottom: "ip2" + top: "feat" + param { + name: "feat_w" + lr_mult: 1 + } + param { + name: "feat_b" + lr_mult: 2 + } + inner_product_param { + num_output: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "conv1_p" + type: "Convolution" + bottom: "data_p" + top: "conv1_p" + param { + name: "conv1_w" + lr_mult: 1 + } + param { + name: "conv1_b" + lr_mult: 2 + } + convolution_param { + num_output: 20 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1_p" + type: "Pooling" + bottom: "conv1_p" + top: "pool1_p" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv2_p" + type: "Convolution" + bottom: "pool1_p" + top: "conv2_p" + param { + name: "conv2_w" + lr_mult: 1 + } + param { + name: "conv2_b" + lr_mult: 2 + } + convolution_param { + num_output: 50 + kernel_size: 5 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool2_p" + type: "Pooling" + bottom: "conv2_p" + top: "pool2_p" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "ip1_p" + type: "InnerProduct" + bottom: "pool2_p" + top: "ip1_p" + param { + name: "ip1_w" + lr_mult: 1 + } + param { + name: "ip1_b" + lr_mult: 2 + } + inner_product_param { + num_output: 500 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "relu1_p" + type: "ReLU" + bottom: "ip1_p" + top: "ip1_p" +} +layer { + name: "ip2_p" + type: "InnerProduct" + bottom: "ip1_p" + top: "ip2_p" + param { + name: "ip2_w" + lr_mult: 1 + } + param { + name: "ip2_b" + lr_mult: 2 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "feat_p" + type: "InnerProduct" + bottom: "ip2_p" + top: "feat_p" + param { + name: "feat_w" + lr_mult: 1 + } + param { + name: "feat_b" + lr_mult: 2 + } + inner_product_param { + num_output: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "loss" + type: "ContrastiveLoss" + bottom: "feat" + bottom: "feat_p" + bottom: "sim" + top: "loss" + contrastive_loss_param { + margin: 1 + } +} diff --git a/3rdparty/caffe/examples/siamese/readme.md b/3rdparty/caffe/examples/siamese/readme.md new file mode 100644 index 00000000..83db8c94 --- /dev/null +++ b/3rdparty/caffe/examples/siamese/readme.md @@ -0,0 +1,187 @@ +--- +title: Siamese Network Tutorial +description: Train and test a siamese network on MNIST data. +category: example +include_in_docs: true +layout: default +priority: 100 +--- + +# Siamese Network Training with Caffe +This example shows how you can use weight sharing and a contrastive loss +function to learn a model using a siamese network in Caffe. + +We will assume that you have caffe successfully compiled. If not, please refer +to the [Installation page](../../installation.html). This example builds on the +[MNIST tutorial](mnist.html) so it would be a good idea to read that before +continuing. + +*The guide specifies all paths and assumes all commands are executed from the +root caffe directory* + +## Prepare Datasets + +You will first need to download and convert the data from the MNIST +website. To do this, simply run the following commands: + + ./data/mnist/get_mnist.sh + ./examples/siamese/create_mnist_siamese.sh + +After running the script there should be two datasets, +`./examples/siamese/mnist_siamese_train_leveldb`, and +`./examples/siamese/mnist_siamese_test_leveldb`. + +## The Model +First, we will define the model that we want to train using the siamese network. +We will use the convolutional net defined in +`./examples/siamese/mnist_siamese.prototxt`. This model is almost +exactly the same as the [LeNet model](mnist.html), the only difference is that +we have replaced the top layers that produced probabilities over the 10 digit +classes with a linear "feature" layer that produces a 2 dimensional vector. + + layer { + name: "feat" + type: "InnerProduct" + bottom: "ip2" + top: "feat" + param { + name: "feat_w" + lr_mult: 1 + } + param { + name: "feat_b" + lr_mult: 2 + } + inner_product_param { + num_output: 2 + } + } + +## Define the Siamese Network + +In this section we will define the siamese network used for training. The +resulting network is defined in +`./examples/siamese/mnist_siamese_train_test.prototxt`. + +### Reading in the Pair Data + +We start with a data layer that reads from the LevelDB database we created +earlier. Each entry in this database contains the image data for a pair of +images (`pair_data`) and a binary label saying if they belong to the same class +or different classes (`sim`). + + layer { + name: "pair_data" + type: "Data" + top: "pair_data" + top: "sim" + include { phase: TRAIN } + transform_param { + scale: 0.00390625 + } + data_param { + source: "examples/siamese/mnist_siamese_train_leveldb" + batch_size: 64 + } + } + +In order to pack a pair of images into the same blob in the database we pack one +image per channel. We want to be able to work with these two images separately, +so we add a slice layer after the data layer. This takes the `pair_data` and +slices it along the channel dimension so that we have a single image in `data` +and its paired image in `data_p.` + + layer { + name: "slice_pair" + type: "Slice" + bottom: "pair_data" + top: "data" + top: "data_p" + slice_param { + slice_dim: 1 + slice_point: 1 + } + } + +### Building the First Side of the Siamese Net + +Now we can specify the first side of the siamese net. This side operates on +`data` and produces `feat`. Starting from the net in +`./examples/siamese/mnist_siamese.prototxt` we add default weight fillers. Then +we name the parameters of the convolutional and inner product layers. Naming the +parameters allows Caffe to share the parameters between layers on both sides of +the siamese net. In the definition this looks like: + + ... + param { name: "conv1_w" ... } + param { name: "conv1_b" ... } + ... + param { name: "conv2_w" ... } + param { name: "conv2_b" ... } + ... + param { name: "ip1_w" ... } + param { name: "ip1_b" ... } + ... + param { name: "ip2_w" ... } + param { name: "ip2_b" ... } + ... + +### Building the Second Side of the Siamese Net + +Now we need to create the second path that operates on `data_p` and produces +`feat_p`. This path is exactly the same as the first. So we can just copy and +paste it. Then we change the name of each layer, input, and output by appending +`_p` to differentiate the "paired" layers from the originals. + +### Adding the Contrastive Loss Function + +To train the network we will optimize a contrastive loss function proposed in: +Raia Hadsell, Sumit Chopra, and Yann LeCun "Dimensionality Reduction by Learning +an Invariant Mapping". This loss function encourages matching pairs to be close +together in feature space while pushing non-matching pairs apart. This cost +function is implemented with the `CONTRASTIVE_LOSS` layer: + + layer { + name: "loss" + type: "ContrastiveLoss" + contrastive_loss_param { + margin: 1.0 + } + bottom: "feat" + bottom: "feat_p" + bottom: "sim" + top: "loss" + } + +## Define the Solver + +Nothing special needs to be done to the solver besides pointing it at the +correct model file. The solver is defined in +`./examples/siamese/mnist_siamese_solver.prototxt`. + +## Training and Testing the Model + +Training the model is simple after you have written the network definition +protobuf and solver protobuf files. Simply run +`./examples/siamese/train_mnist_siamese.sh`: + + ./examples/siamese/train_mnist_siamese.sh + +# Plotting the results + +First, we can draw the model and siamese networks by running the following +commands that draw the DAGs defined in the .prototxt files: + + ./python/draw_net.py \ + ./examples/siamese/mnist_siamese.prototxt \ + ./examples/siamese/mnist_siamese.png + + ./python/draw_net.py \ + ./examples/siamese/mnist_siamese_train_test.prototxt \ + ./examples/siamese/mnist_siamese_train_test.png + +Second, we can load the learned model and plot the features using the iPython +notebook: + + ipython notebook ./examples/siamese/mnist_siamese.ipynb + diff --git a/3rdparty/caffe/examples/siamese/train_mnist_siamese.sh b/3rdparty/caffe/examples/siamese/train_mnist_siamese.sh new file mode 100755 index 00000000..e01ac2ce --- /dev/null +++ b/3rdparty/caffe/examples/siamese/train_mnist_siamese.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +set -e + +TOOLS=./build/tools + +$TOOLS/caffe train --solver=examples/siamese/mnist_siamese_solver.prototxt $@ diff --git a/3rdparty/caffe/examples/web_demo/app.py b/3rdparty/caffe/examples/web_demo/app.py new file mode 100644 index 00000000..09411f33 --- /dev/null +++ b/3rdparty/caffe/examples/web_demo/app.py @@ -0,0 +1,227 @@ +import os +import time +import cPickle +import datetime +import logging +import flask +import werkzeug +import optparse +import tornado.wsgi +import tornado.httpserver +import numpy as np +import pandas as pd +from PIL import Image +import cStringIO as StringIO +import urllib +import exifutil + +import caffe + +REPO_DIRNAME = os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/../..') +UPLOAD_FOLDER = '/tmp/caffe_demos_uploads' +ALLOWED_IMAGE_EXTENSIONS = set(['png', 'bmp', 'jpg', 'jpe', 'jpeg', 'gif']) + +# Obtain the flask app object +app = flask.Flask(__name__) + + +@app.route('/') +def index(): + return flask.render_template('index.html', has_result=False) + + +@app.route('/classify_url', methods=['GET']) +def classify_url(): + imageurl = flask.request.args.get('imageurl', '') + try: + string_buffer = StringIO.StringIO( + urllib.urlopen(imageurl).read()) + image = caffe.io.load_image(string_buffer) + + except Exception as err: + # For any exception we encounter in reading the image, we will just + # not continue. + logging.info('URL Image open error: %s', err) + return flask.render_template( + 'index.html', has_result=True, + result=(False, 'Cannot open image from URL.') + ) + + logging.info('Image: %s', imageurl) + result = app.clf.classify_image(image) + return flask.render_template( + 'index.html', has_result=True, result=result, imagesrc=imageurl) + + +@app.route('/classify_upload', methods=['POST']) +def classify_upload(): + try: + # We will save the file to disk for possible data collection. + imagefile = flask.request.files['imagefile'] + filename_ = str(datetime.datetime.now()).replace(' ', '_') + \ + werkzeug.secure_filename(imagefile.filename) + filename = os.path.join(UPLOAD_FOLDER, filename_) + imagefile.save(filename) + logging.info('Saving to %s.', filename) + image = exifutil.open_oriented_im(filename) + + except Exception as err: + logging.info('Uploaded image open error: %s', err) + return flask.render_template( + 'index.html', has_result=True, + result=(False, 'Cannot open uploaded image.') + ) + + result = app.clf.classify_image(image) + return flask.render_template( + 'index.html', has_result=True, result=result, + imagesrc=embed_image_html(image) + ) + + +def embed_image_html(image): + """Creates an image embedded in HTML base64 format.""" + image_pil = Image.fromarray((255 * image).astype('uint8')) + image_pil = image_pil.resize((256, 256)) + string_buf = StringIO.StringIO() + image_pil.save(string_buf, format='png') + data = string_buf.getvalue().encode('base64').replace('\n', '') + return 'data:image/png;base64,' + data + + +def allowed_file(filename): + return ( + '.' in filename and + filename.rsplit('.', 1)[1] in ALLOWED_IMAGE_EXTENSIONS + ) + + +class ImagenetClassifier(object): + default_args = { + 'model_def_file': ( + '{}/models/bvlc_reference_caffenet/deploy.prototxt'.format(REPO_DIRNAME)), + 'pretrained_model_file': ( + '{}/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'.format(REPO_DIRNAME)), + 'mean_file': ( + '{}/python/caffe/imagenet/ilsvrc_2012_mean.npy'.format(REPO_DIRNAME)), + 'class_labels_file': ( + '{}/data/ilsvrc12/synset_words.txt'.format(REPO_DIRNAME)), + 'bet_file': ( + '{}/data/ilsvrc12/imagenet.bet.pickle'.format(REPO_DIRNAME)), + } + for key, val in default_args.iteritems(): + if not os.path.exists(val): + raise Exception( + "File for {} is missing. Should be at: {}".format(key, val)) + default_args['image_dim'] = 256 + default_args['raw_scale'] = 255. + + def __init__(self, model_def_file, pretrained_model_file, mean_file, + raw_scale, class_labels_file, bet_file, image_dim, gpu_mode): + logging.info('Loading net and associated files...') + if gpu_mode: + caffe.set_mode_gpu() + else: + caffe.set_mode_cpu() + self.net = caffe.Classifier( + model_def_file, pretrained_model_file, + image_dims=(image_dim, image_dim), raw_scale=raw_scale, + mean=np.load(mean_file).mean(1).mean(1), channel_swap=(2, 1, 0) + ) + + with open(class_labels_file) as f: + labels_df = pd.DataFrame([ + { + 'synset_id': l.strip().split(' ')[0], + 'name': ' '.join(l.strip().split(' ')[1:]).split(',')[0] + } + for l in f.readlines() + ]) + self.labels = labels_df.sort('synset_id')['name'].values + + self.bet = cPickle.load(open(bet_file)) + # A bias to prefer children nodes in single-chain paths + # I am setting the value to 0.1 as a quick, simple model. + # We could use better psychological models here... + self.bet['infogain'] -= np.array(self.bet['preferences']) * 0.1 + + def classify_image(self, image): + try: + starttime = time.time() + scores = self.net.predict([image], oversample=True).flatten() + endtime = time.time() + + indices = (-scores).argsort()[:5] + predictions = self.labels[indices] + + # In addition to the prediction text, we will also produce + # the length for the progress bar visualization. + meta = [ + (p, '%.5f' % scores[i]) + for i, p in zip(indices, predictions) + ] + logging.info('result: %s', str(meta)) + + # Compute expected information gain + expected_infogain = np.dot( + self.bet['probmat'], scores[self.bet['idmapping']]) + expected_infogain *= self.bet['infogain'] + + # sort the scores + infogain_sort = expected_infogain.argsort()[::-1] + bet_result = [(self.bet['words'][v], '%.5f' % expected_infogain[v]) + for v in infogain_sort[:5]] + logging.info('bet result: %s', str(bet_result)) + + return (True, meta, bet_result, '%.3f' % (endtime - starttime)) + + except Exception as err: + logging.info('Classification error: %s', err) + return (False, 'Something went wrong when classifying the ' + 'image. Maybe try another one?') + + +def start_tornado(app, port=5000): + http_server = tornado.httpserver.HTTPServer( + tornado.wsgi.WSGIContainer(app)) + http_server.listen(port) + print("Tornado server starting on port {}".format(port)) + tornado.ioloop.IOLoop.instance().start() + + +def start_from_terminal(app): + """ + Parse command line options and start the server. + """ + parser = optparse.OptionParser() + parser.add_option( + '-d', '--debug', + help="enable debug mode", + action="store_true", default=False) + parser.add_option( + '-p', '--port', + help="which port to serve content on", + type='int', default=5000) + parser.add_option( + '-g', '--gpu', + help="use gpu mode", + action='store_true', default=False) + + opts, args = parser.parse_args() + ImagenetClassifier.default_args.update({'gpu_mode': opts.gpu}) + + # Initialize classifier + warm start by forward for allocation + app.clf = ImagenetClassifier(**ImagenetClassifier.default_args) + app.clf.net.forward() + + if opts.debug: + app.run(debug=True, host='0.0.0.0', port=opts.port) + else: + start_tornado(app, opts.port) + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.INFO) + if not os.path.exists(UPLOAD_FOLDER): + os.makedirs(UPLOAD_FOLDER) + start_from_terminal(app) diff --git a/3rdparty/caffe/examples/web_demo/exifutil.py b/3rdparty/caffe/examples/web_demo/exifutil.py new file mode 100644 index 00000000..01918b2a --- /dev/null +++ b/3rdparty/caffe/examples/web_demo/exifutil.py @@ -0,0 +1,39 @@ +""" +This script handles the skimage exif problem. +""" + +from PIL import Image +import numpy as np + +ORIENTATIONS = { # used in apply_orientation + 2: (Image.FLIP_LEFT_RIGHT,), + 3: (Image.ROTATE_180,), + 4: (Image.FLIP_TOP_BOTTOM,), + 5: (Image.FLIP_LEFT_RIGHT, Image.ROTATE_90), + 6: (Image.ROTATE_270,), + 7: (Image.FLIP_LEFT_RIGHT, Image.ROTATE_270), + 8: (Image.ROTATE_90,) +} + + +def open_oriented_im(im_path): + im = Image.open(im_path) + if hasattr(im, '_getexif'): + exif = im._getexif() + if exif is not None and 274 in exif: + orientation = exif[274] + im = apply_orientation(im, orientation) + img = np.asarray(im).astype(np.float32) / 255. + if img.ndim == 2: + img = img[:, :, np.newaxis] + img = np.tile(img, (1, 1, 3)) + elif img.shape[2] == 4: + img = img[:, :, :3] + return img + + +def apply_orientation(im, orientation): + if orientation in ORIENTATIONS: + for method in ORIENTATIONS[orientation]: + im = im.transpose(method) + return im diff --git a/3rdparty/caffe/examples/web_demo/readme.md b/3rdparty/caffe/examples/web_demo/readme.md new file mode 100644 index 00000000..fe74b9ef --- /dev/null +++ b/3rdparty/caffe/examples/web_demo/readme.md @@ -0,0 +1,41 @@ +--- +title: Web demo +description: Image classification demo running as a Flask web server. +category: example +include_in_docs: true +priority: 10 +--- + +# Web Demo + +## Requirements + +The demo server requires Python with some dependencies. +To make sure you have the dependencies, please run `pip install -r examples/web_demo/requirements.txt`, and also make sure that you've compiled the Python Caffe interface and that it is on your `PYTHONPATH` (see [installation instructions](/installation.html)). + +Make sure that you have obtained the Reference CaffeNet Model and the ImageNet Auxiliary Data: + + ./scripts/download_model_binary.py models/bvlc_reference_caffenet + ./data/ilsvrc12/get_ilsvrc_aux.sh + +NOTE: if you run into trouble, try re-downloading the auxiliary files. + +## Run + +Running `python examples/web_demo/app.py` will bring up the demo server, accessible at `http://0.0.0.0:5000`. +You can enable debug mode of the web server, or switch to a different port: + + % python examples/web_demo/app.py -h + Usage: app.py [options] + + Options: + -h, --help show this help message and exit + -d, --debug enable debug mode + -p PORT, --port=PORT which port to serve content on + +## How are the "maximally accurate" results generated? + +In a nutshell: ImageNet predictions are made at the leaf nodes, but the organization of the project allows leaf nodes to be united via more general parent nodes, with 'entity' at the very top. +To give "maximally accurate" results, we "back off" from maximally specific predictions to maintain a high accuracy. +The `bet_file` that is loaded in the demo provides the graph structure and names of all relevant ImageNet nodes as well as measures of information gain between them. +Please see the "Hedging your bets" paper from [CVPR 2012](http://www.image-net.org/projects/hedging/) for further information. diff --git a/3rdparty/caffe/examples/web_demo/requirements.txt b/3rdparty/caffe/examples/web_demo/requirements.txt new file mode 100644 index 00000000..43e1b98c --- /dev/null +++ b/3rdparty/caffe/examples/web_demo/requirements.txt @@ -0,0 +1,7 @@ +werkzeug +flask +tornado +numpy +pandas +pillow +pyyaml diff --git a/3rdparty/caffe/examples/web_demo/templates/index.html b/3rdparty/caffe/examples/web_demo/templates/index.html new file mode 100644 index 00000000..87893341 --- /dev/null +++ b/3rdparty/caffe/examples/web_demo/templates/index.html @@ -0,0 +1,138 @@ + + + + + + + + + Caffe Demos + + + + + + + + + + + + + + +

    + + +
    +

    Classification

    + Click for a Quick Example +
    + + {% if has_result %} + {% if not result[0] %} + +
    {{ result[1] }} Did you provide a valid URL or a valid image file?
    + {% else %} +
    + +
    +
    + +
    +
    +
      + {% for single_pred in result[2] %} +
    • + {{ single_pred[1] }} +

      + {{ single_pred[0] }} +

      +
    • + {% endfor %} +
    +
    +
    +
      + {% for single_pred in result[1] %} +
    • + {{ single_pred[1] }} +

      + {{ single_pred[0] }} +

      +
    • + {% endfor %} +
    +
    +
    +
    + +
    +
    +

    CNN took {{ result[3] }} seconds.

    + {% endif %} +
    + {% endif %} + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + + +
    + +
    +
    + +
    + + + diff --git a/3rdparty/caffe/include/caffe/blob.hpp b/3rdparty/caffe/include/caffe/blob.hpp new file mode 100644 index 00000000..2f59471c --- /dev/null +++ b/3rdparty/caffe/include/caffe/blob.hpp @@ -0,0 +1,282 @@ +#ifndef CAFFE_BLOB_HPP_ +#define CAFFE_BLOB_HPP_ + +#include +#include +#include + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/syncedmem.hpp" + +const int kMaxBlobAxes = 32; + +namespace caffe { + +/** + * @brief A wrapper around SyncedMemory holders serving as the basic + * computational unit through which Layer%s, Net%s, and Solver%s + * interact. + * + * TODO(dox): more thorough description. + */ +template +class Blob { + public: + Blob() + : data_(), diff_(), count_(0), capacity_(0) {} + + /// @brief Deprecated; use Blob(const vector& shape). + explicit Blob(const int num, const int channels, const int height, + const int width); + explicit Blob(const vector& shape); + + /// @brief Deprecated; use Reshape(const vector& shape). + void Reshape(const int num, const int channels, const int height, + const int width); + /** + * @brief Change the dimensions of the blob, allocating new memory if + * necessary. + * + * This function can be called both to create an initial allocation + * of memory, and to adjust the dimensions of a top blob during Layer::Reshape + * or Layer::Forward. When changing the size of blob, memory will only be + * reallocated if sufficient memory does not already exist, and excess memory + * will never be freed. + * + * Note that reshaping an input blob and immediately calling Net::Backward is + * an error; either Net::Forward or Net::Reshape need to be called to + * propagate the new input shape to higher layers. + */ + void Reshape(const vector& shape); + void Reshape(const BlobShape& shape); + void ReshapeLike(const Blob& other); + inline string shape_string() const { + ostringstream stream; + for (int i = 0; i < shape_.size(); ++i) { + stream << shape_[i] << " "; + } + stream << "(" << count_ << ")"; + return stream.str(); + } + inline const vector& shape() const { return shape_; } + /** + * @brief Returns the dimension of the index-th axis (or the negative index-th + * axis from the end, if index is negative). + * + * @param index the axis index, which may be negative as it will be + * "canonicalized" using CanonicalAxisIndex. + * Dies on out of range index. + */ + inline int shape(int index) const { + return shape_[CanonicalAxisIndex(index)]; + } + inline int num_axes() const { return shape_.size(); } + inline int count() const { return count_; } + + /** + * @brief Compute the volume of a slice; i.e., the product of dimensions + * among a range of axes. + * + * @param start_axis The first axis to include in the slice. + * + * @param end_axis The first axis to exclude from the slice. + */ + inline int count(int start_axis, int end_axis) const { + CHECK_LE(start_axis, end_axis); + CHECK_GE(start_axis, 0); + CHECK_GE(end_axis, 0); + CHECK_LE(start_axis, num_axes()); + CHECK_LE(end_axis, num_axes()); + int count = 1; + for (int i = start_axis; i < end_axis; ++i) { + count *= shape(i); + } + return count; + } + /** + * @brief Compute the volume of a slice spanning from a particular first + * axis to the final axis. + * + * @param start_axis The first axis to include in the slice. + */ + inline int count(int start_axis) const { + return count(start_axis, num_axes()); + } + + /** + * @brief Returns the 'canonical' version of a (usually) user-specified axis, + * allowing for negative indexing (e.g., -1 for the last axis). + * + * @param axis_index the axis index. + * If 0 <= index < num_axes(), return index. + * If -num_axes <= index <= -1, return (num_axes() - (-index)), + * e.g., the last axis index (num_axes() - 1) if index == -1, + * the second to last if index == -2, etc. + * Dies on out of range index. + */ + inline int CanonicalAxisIndex(int axis_index) const { + CHECK_GE(axis_index, -num_axes()) + << "axis " << axis_index << " out of range for " << num_axes() + << "-D Blob with shape " << shape_string(); + CHECK_LT(axis_index, num_axes()) + << "axis " << axis_index << " out of range for " << num_axes() + << "-D Blob with shape " << shape_string(); + if (axis_index < 0) { + return axis_index + num_axes(); + } + return axis_index; + } + + /// @brief Deprecated legacy shape accessor num: use shape(0) instead. + inline int num() const { return LegacyShape(0); } + /// @brief Deprecated legacy shape accessor channels: use shape(1) instead. + inline int channels() const { return LegacyShape(1); } + /// @brief Deprecated legacy shape accessor height: use shape(2) instead. + inline int height() const { return LegacyShape(2); } + /// @brief Deprecated legacy shape accessor width: use shape(3) instead. + inline int width() const { return LegacyShape(3); } + inline int LegacyShape(int index) const { + CHECK_LE(num_axes(), 4) + << "Cannot use legacy accessors on Blobs with > 4 axes."; + CHECK_LT(index, 4); + CHECK_GE(index, -4); + if (index >= num_axes() || index < -num_axes()) { + // Axis is out of range, but still in [0, 3] (or [-4, -1] for reverse + // indexing) -- this special case simulates the one-padding used to fill + // extraneous axes of legacy blobs. + return 1; + } + return shape(index); + } + + inline int offset(const int n, const int c = 0, const int h = 0, + const int w = 0) const { + CHECK_GE(n, 0); + CHECK_LE(n, num()); + CHECK_GE(channels(), 0); + CHECK_LE(c, channels()); + CHECK_GE(height(), 0); + CHECK_LE(h, height()); + CHECK_GE(width(), 0); + CHECK_LE(w, width()); + return ((n * channels() + c) * height() + h) * width() + w; + } + + inline int offset(const vector& indices) const { + CHECK_LE(indices.size(), num_axes()); + int offset = 0; + for (int i = 0; i < num_axes(); ++i) { + offset *= shape(i); + if (indices.size() > i) { + CHECK_GE(indices[i], 0); + CHECK_LT(indices[i], shape(i)); + offset += indices[i]; + } + } + return offset; + } + /** + * @brief Copy from a source Blob. + * + * @param source the Blob to copy from + * @param copy_diff if false, copy the data; if true, copy the diff + * @param reshape if false, require this Blob to be pre-shaped to the shape + * of other (and die otherwise); if true, Reshape this Blob to other's + * shape if necessary + */ + void CopyFrom(const Blob& source, bool copy_diff = false, + bool reshape = false); + + inline Dtype data_at(const int n, const int c, const int h, + const int w) const { + return cpu_data()[offset(n, c, h, w)]; + } + + inline Dtype diff_at(const int n, const int c, const int h, + const int w) const { + return cpu_diff()[offset(n, c, h, w)]; + } + + inline Dtype data_at(const vector& index) const { + return cpu_data()[offset(index)]; + } + + inline Dtype diff_at(const vector& index) const { + return cpu_diff()[offset(index)]; + } + + inline const shared_ptr& data() const { + CHECK(data_); + return data_; + } + + inline const shared_ptr& diff() const { + CHECK(diff_); + return diff_; + } + + const Dtype* cpu_data() const; + void set_cpu_data(Dtype* data); + const int* gpu_shape() const; + const Dtype* gpu_data() const; + void set_gpu_data(Dtype* data); + const Dtype* cpu_diff() const; + const Dtype* gpu_diff() const; + Dtype* mutable_cpu_data(); + Dtype* mutable_gpu_data(); + Dtype* mutable_cpu_diff(); + Dtype* mutable_gpu_diff(); + void Update(); + void FromProto(const BlobProto& proto, bool reshape = true); + void ToProto(BlobProto* proto, bool write_diff = false) const; + + /// @brief Compute the sum of absolute values (L1 norm) of the data. + Dtype asum_data() const; + /// @brief Compute the sum of absolute values (L1 norm) of the diff. + Dtype asum_diff() const; + /// @brief Compute the sum of squares (L2 norm squared) of the data. + Dtype sumsq_data() const; + /// @brief Compute the sum of squares (L2 norm squared) of the diff. + Dtype sumsq_diff() const; + + /// @brief Scale the blob data by a constant factor. + void scale_data(Dtype scale_factor); + /// @brief Scale the blob diff by a constant factor. + void scale_diff(Dtype scale_factor); + + /** + * @brief Set the data_ shared_ptr to point to the SyncedMemory holding the + * data_ of Blob other -- useful in Layer%s which simply perform a copy + * in their Forward pass. + * + * This deallocates the SyncedMemory holding this Blob's data_, as + * shared_ptr calls its destructor when reset with the "=" operator. + */ + void ShareData(const Blob& other); + /** + * @brief Set the diff_ shared_ptr to point to the SyncedMemory holding the + * diff_ of Blob other -- useful in Layer%s which simply perform a copy + * in their Forward pass. + * + * This deallocates the SyncedMemory holding this Blob's diff_, as + * shared_ptr calls its destructor when reset with the "=" operator. + */ + void ShareDiff(const Blob& other); + + bool ShapeEquals(const BlobProto& other); + + protected: + shared_ptr data_; + shared_ptr diff_; + shared_ptr shape_data_; + vector shape_; + int count_; + int capacity_; + + DISABLE_COPY_AND_ASSIGN(Blob); +}; // class Blob + +} // namespace caffe + +#endif // CAFFE_BLOB_HPP_ diff --git a/3rdparty/caffe/include/caffe/caffe.hpp b/3rdparty/caffe/include/caffe/caffe.hpp new file mode 100644 index 00000000..06882096 --- /dev/null +++ b/3rdparty/caffe/include/caffe/caffe.hpp @@ -0,0 +1,21 @@ +// caffe.hpp is the header file that you need to include in your code. It wraps +// all the internal caffe header files into one for simpler inclusion. + +#ifndef CAFFE_CAFFE_HPP_ +#define CAFFE_CAFFE_HPP_ + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layer_factory.hpp" +#include "caffe/net.hpp" +#include "caffe/parallel.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/solver.hpp" +#include "caffe/solver_factory.hpp" +#include "caffe/util/benchmark.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +#endif // CAFFE_CAFFE_HPP_ diff --git a/3rdparty/caffe/include/caffe/common.hpp b/3rdparty/caffe/include/caffe/common.hpp new file mode 100644 index 00000000..4904d1d8 --- /dev/null +++ b/3rdparty/caffe/include/caffe/common.hpp @@ -0,0 +1,193 @@ +#ifndef CAFFE_COMMON_HPP_ +#define CAFFE_COMMON_HPP_ + +#include +#include +#include + +#include +#include +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include +#include +#include +#include +#include // pair +#include + +#include "caffe/util/device_alternate.hpp" + +// Convert macro to string +#define STRINGIFY(m) #m +#define AS_STRING(m) STRINGIFY(m) + +// gflags 2.1 issue: namespace google was changed to gflags without warning. +// Luckily we will be able to use GFLAGS_GFLAGS_H_ to detect if it is version +// 2.1. If yes, we will add a temporary solution to redirect the namespace. +// TODO(Yangqing): Once gflags solves the problem in a more elegant way, let's +// remove the following hack. +#ifndef GFLAGS_GFLAGS_H_ +namespace gflags = google; +#endif // GFLAGS_GFLAGS_H_ + +// Disable the copy and assignment operator for a class. +#define DISABLE_COPY_AND_ASSIGN(classname) \ +private:\ + classname(const classname&);\ + classname& operator=(const classname&) + +// Instantiate a class with float and double specifications. +#define INSTANTIATE_CLASS(classname) \ + char gInstantiationGuard##classname; \ + template class classname; \ + template class classname + +#define INSTANTIATE_LAYER_GPU_FORWARD(classname) \ + template void classname::Forward_gpu( \ + const std::vector*>& bottom, \ + const std::vector*>& top); \ + template void classname::Forward_gpu( \ + const std::vector*>& bottom, \ + const std::vector*>& top); + +#define INSTANTIATE_LAYER_GPU_BACKWARD(classname) \ + template void classname::Backward_gpu( \ + const std::vector*>& top, \ + const std::vector& propagate_down, \ + const std::vector*>& bottom); \ + template void classname::Backward_gpu( \ + const std::vector*>& top, \ + const std::vector& propagate_down, \ + const std::vector*>& bottom) + +#define INSTANTIATE_LAYER_GPU_FUNCS(classname) \ + INSTANTIATE_LAYER_GPU_FORWARD(classname); \ + INSTANTIATE_LAYER_GPU_BACKWARD(classname) + +// A simple macro to mark codes that are not implemented, so that when the code +// is executed we will see a fatal log. +#define NOT_IMPLEMENTED LOG(FATAL) << "Not Implemented Yet" + +// See PR #1236 +namespace cv { class Mat; } + +namespace caffe { + +// We will use the boost shared_ptr instead of the new C++11 one mainly +// because cuda does not work (at least now) well with C++11 features. +using boost::shared_ptr; + +// Common functions and classes from std that caffe often uses. +using std::fstream; +using std::ios; +using std::isnan; +using std::isinf; +using std::iterator; +using std::make_pair; +using std::map; +using std::ostringstream; +using std::pair; +using std::set; +using std::string; +using std::stringstream; +using std::vector; + +// A global initialization function that you should call in your main function. +// Currently it initializes google flags and google logging. +void GlobalInit(int* pargc, char*** pargv); + +// A singleton class to hold common caffe stuff, such as the handler that +// caffe is going to use for cublas, curand, etc. +class Caffe { + public: + ~Caffe(); + + // Thread local context for Caffe. Moved to common.cpp instead of + // including boost/thread.hpp to avoid a boost/NVCC issues (#1009, #1010) + // on OSX. Also fails on Linux with CUDA 7.0.18. + static Caffe& Get(); + + enum Brew { CPU, GPU }; + + // This random number generator facade hides boost and CUDA rng + // implementation from one another (for cross-platform compatibility). + class RNG { + public: + RNG(); + explicit RNG(unsigned int seed); + explicit RNG(const RNG&); + RNG& operator=(const RNG&); + void* generator(); + private: + class Generator; + shared_ptr generator_; + }; + + // Getters for boost rng, curand, and cublas handles + inline static RNG& rng_stream() { + if (!Get().random_generator_) { + Get().random_generator_.reset(new RNG()); + } + return *(Get().random_generator_); + } +#ifndef CPU_ONLY + inline static cublasHandle_t cublas_handle() { return Get().cublas_handle_; } + inline static curandGenerator_t curand_generator() { + return Get().curand_generator_; + } +#endif + + // Returns the mode: running on CPU or GPU. + inline static Brew mode() { return Get().mode_; } + // The setters for the variables + // Sets the mode. It is recommended that you don't change the mode halfway + // into the program since that may cause allocation of pinned memory being + // freed in a non-pinned way, which may cause problems - I haven't verified + // it personally but better to note it here in the header file. + inline static void set_mode(Brew mode) { Get().mode_ = mode; } + // Sets the random seed of both boost and curand + static void set_random_seed(const unsigned int seed); + // Sets the device. Since we have cublas and curand stuff, set device also + // requires us to reset those values. + static void SetDevice(const int device_id); + // Prints the current GPU status. + static void DeviceQuery(); + // Check if specified device is available + static bool CheckDevice(const int device_id); + // Search from start_id to the highest possible device ordinal, + // return the ordinal of the first available device. + static int FindDevice(const int start_id = 0); + // Parallel training + inline static int solver_count() { return Get().solver_count_; } + inline static void set_solver_count(int val) { Get().solver_count_ = val; } + inline static int solver_rank() { return Get().solver_rank_; } + inline static void set_solver_rank(int val) { Get().solver_rank_ = val; } + inline static bool multiprocess() { return Get().multiprocess_; } + inline static void set_multiprocess(bool val) { Get().multiprocess_ = val; } + inline static bool root_solver() { return Get().solver_rank_ == 0; } + + protected: +#ifndef CPU_ONLY + cublasHandle_t cublas_handle_; + curandGenerator_t curand_generator_; +#endif + shared_ptr random_generator_; + + Brew mode_; + + // Parallel training + int solver_count_; + int solver_rank_; + bool multiprocess_; + + private: + // The private constructor to avoid duplicate instantiation. + Caffe(); + + DISABLE_COPY_AND_ASSIGN(Caffe); +}; + +} // namespace caffe + +#endif // CAFFE_COMMON_HPP_ diff --git a/3rdparty/caffe/include/caffe/data_transformer.hpp b/3rdparty/caffe/include/caffe/data_transformer.hpp new file mode 100644 index 00000000..97b4ee6a --- /dev/null +++ b/3rdparty/caffe/include/caffe/data_transformer.hpp @@ -0,0 +1,154 @@ +#ifndef CAFFE_DATA_TRANSFORMER_HPP +#define CAFFE_DATA_TRANSFORMER_HPP + +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Applies common transformations to the input data, such as + * scaling, mirroring, substracting the image mean... + */ +template +class DataTransformer { + public: + explicit DataTransformer(const TransformationParameter& param, Phase phase); + virtual ~DataTransformer() {} + + /** + * @brief Initialize the Random number generations if needed by the + * transformation. + */ + void InitRand(); + + /** + * @brief Applies the transformation defined in the data layer's + * transform_param block to the data. + * + * @param datum + * Datum containing the data to be transformed. + * @param transformed_blob + * This is destination blob. It can be part of top blob's data if + * set_cpu_data() is used. See data_layer.cpp for an example. + */ + void Transform(const Datum& datum, Blob* transformed_blob); + + /** + * @brief Applies the transformation defined in the data layer's + * transform_param block to a vector of Datum. + * + * @param datum_vector + * A vector of Datum containing the data to be transformed. + * @param transformed_blob + * This is destination blob. It can be part of top blob's data if + * set_cpu_data() is used. See memory_layer.cpp for an example. + */ + void Transform(const vector & datum_vector, + Blob* transformed_blob); + +#ifdef USE_OPENCV + /** + * @brief Applies the transformation defined in the data layer's + * transform_param block to a vector of Mat. + * + * @param mat_vector + * A vector of Mat containing the data to be transformed. + * @param transformed_blob + * This is destination blob. It can be part of top blob's data if + * set_cpu_data() is used. See memory_layer.cpp for an example. + */ + void Transform(const vector & mat_vector, + Blob* transformed_blob); + + /** + * @brief Applies the transformation defined in the data layer's + * transform_param block to a cv::Mat + * + * @param cv_img + * cv::Mat containing the data to be transformed. + * @param transformed_blob + * This is destination blob. It can be part of top blob's data if + * set_cpu_data() is used. See image_data_layer.cpp for an example. + */ + void Transform(const cv::Mat& cv_img, Blob* transformed_blob); +#endif // USE_OPENCV + + /** + * @brief Applies the same transformation defined in the data layer's + * transform_param block to all the num images in a input_blob. + * + * @param input_blob + * A Blob containing the data to be transformed. It applies the same + * transformation to all the num images in the blob. + * @param transformed_blob + * This is destination blob, it will contain as many images as the + * input blob. It can be part of top blob's data. + */ + void Transform(Blob* input_blob, Blob* transformed_blob); + + /** + * @brief Infers the shape of transformed_blob will have when + * the transformation is applied to the data. + * + * @param datum + * Datum containing the data to be transformed. + */ + vector InferBlobShape(const Datum& datum); + /** + * @brief Infers the shape of transformed_blob will have when + * the transformation is applied to the data. + * It uses the first element to infer the shape of the blob. + * + * @param datum_vector + * A vector of Datum containing the data to be transformed. + */ + vector InferBlobShape(const vector & datum_vector); + /** + * @brief Infers the shape of transformed_blob will have when + * the transformation is applied to the data. + * It uses the first element to infer the shape of the blob. + * + * @param mat_vector + * A vector of Mat containing the data to be transformed. + */ +#ifdef USE_OPENCV + vector InferBlobShape(const vector & mat_vector); + /** + * @brief Infers the shape of transformed_blob will have when + * the transformation is applied to the data. + * + * @param cv_img + * cv::Mat containing the data to be transformed. + */ + vector InferBlobShape(const cv::Mat& cv_img); +#endif // USE_OPENCV + + protected: + /** + * @brief Generates a random integer from Uniform({0, 1, ..., n-1}). + * + * @param n + * The upperbound (exclusive) value of the random number. + * @return + * A uniformly random integer value from ({0, 1, ..., n-1}). + */ + virtual int Rand(int n); + + void Transform(const Datum& datum, Dtype* transformed_data); + // Tranformation parameters + TransformationParameter param_; + + + shared_ptr rng_; + Phase phase_; + Blob data_mean_; + vector mean_values_; +}; + +} // namespace caffe + +#endif // CAFFE_DATA_TRANSFORMER_HPP_ diff --git a/3rdparty/caffe/include/caffe/filler.hpp b/3rdparty/caffe/include/caffe/filler.hpp new file mode 100644 index 00000000..dad9ad46 --- /dev/null +++ b/3rdparty/caffe/include/caffe/filler.hpp @@ -0,0 +1,295 @@ +// Fillers are random number generators that fills a blob using the specified +// algorithm. The expectation is that they are only going to be used during +// initialization time and will not involve any GPUs. + +#ifndef CAFFE_FILLER_HPP +#define CAFFE_FILLER_HPP + +#include + +#include "caffe/blob.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/syncedmem.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +/// @brief Fills a Blob with constant or randomly-generated data. +template +class Filler { + public: + explicit Filler(const FillerParameter& param) : filler_param_(param) {} + virtual ~Filler() {} + virtual void Fill(Blob* blob) = 0; + protected: + FillerParameter filler_param_; +}; // class Filler + + +/// @brief Fills a Blob with constant values @f$ x = 0 @f$. +template +class ConstantFiller : public Filler { + public: + explicit ConstantFiller(const FillerParameter& param) + : Filler(param) {} + virtual void Fill(Blob* blob) { + Dtype* data = blob->mutable_cpu_data(); + const int count = blob->count(); + const Dtype value = this->filler_param_.value(); + CHECK(count); + for (int i = 0; i < count; ++i) { + data[i] = value; + } + CHECK_EQ(this->filler_param_.sparse(), -1) + << "Sparsity not supported by this Filler."; + } +}; + +/// @brief Fills a Blob with uniformly distributed values @f$ x\sim U(a, b) @f$. +template +class UniformFiller : public Filler { + public: + explicit UniformFiller(const FillerParameter& param) + : Filler(param) {} + virtual void Fill(Blob* blob) { + CHECK(blob->count()); + caffe_rng_uniform(blob->count(), Dtype(this->filler_param_.min()), + Dtype(this->filler_param_.max()), blob->mutable_cpu_data()); + CHECK_EQ(this->filler_param_.sparse(), -1) + << "Sparsity not supported by this Filler."; + } +}; + +/// @brief Fills a Blob with Gaussian-distributed values @f$ x = a @f$. +template +class GaussianFiller : public Filler { + public: + explicit GaussianFiller(const FillerParameter& param) + : Filler(param) {} + virtual void Fill(Blob* blob) { + Dtype* data = blob->mutable_cpu_data(); + CHECK(blob->count()); + caffe_rng_gaussian(blob->count(), Dtype(this->filler_param_.mean()), + Dtype(this->filler_param_.std()), blob->mutable_cpu_data()); + int sparse = this->filler_param_.sparse(); + CHECK_GE(sparse, -1); + if (sparse >= 0) { + // Sparse initialization is implemented for "weight" blobs; i.e. matrices. + // These have num == channels == 1; width is number of inputs; height is + // number of outputs. The 'sparse' variable specifies the mean number + // of non-zero input weights for a given output. + CHECK_GE(blob->num_axes(), 1); + const int num_outputs = blob->shape(0); + Dtype non_zero_probability = Dtype(sparse) / Dtype(num_outputs); + rand_vec_.reset(new SyncedMemory(blob->count() * sizeof(int))); + int* mask = reinterpret_cast(rand_vec_->mutable_cpu_data()); + caffe_rng_bernoulli(blob->count(), non_zero_probability, mask); + for (int i = 0; i < blob->count(); ++i) { + data[i] *= mask[i]; + } + } + } + + protected: + shared_ptr rand_vec_; +}; + +/** @brief Fills a Blob with values @f$ x \in [0, 1] @f$ + * such that @f$ \forall i \sum_j x_{ij} = 1 @f$. + */ +template +class PositiveUnitballFiller : public Filler { + public: + explicit PositiveUnitballFiller(const FillerParameter& param) + : Filler(param) {} + virtual void Fill(Blob* blob) { + Dtype* data = blob->mutable_cpu_data(); + DCHECK(blob->count()); + caffe_rng_uniform(blob->count(), 0, 1, blob->mutable_cpu_data()); + // We expect the filler to not be called very frequently, so we will + // just use a simple implementation + int dim = blob->count() / blob->num(); + CHECK(dim); + for (int i = 0; i < blob->num(); ++i) { + Dtype sum = 0; + for (int j = 0; j < dim; ++j) { + sum += data[i * dim + j]; + } + for (int j = 0; j < dim; ++j) { + data[i * dim + j] /= sum; + } + } + CHECK_EQ(this->filler_param_.sparse(), -1) + << "Sparsity not supported by this Filler."; + } +}; + +/** + * @brief Fills a Blob with values @f$ x \sim U(-a, +a) @f$ where @f$ a @f$ is + * set inversely proportional to number of incoming nodes, outgoing + * nodes, or their average. + * + * A Filler based on the paper [Bengio and Glorot 2010]: Understanding + * the difficulty of training deep feedforward neuralnetworks. + * + * It fills the incoming matrix by randomly sampling uniform data from [-scale, + * scale] where scale = sqrt(3 / n) where n is the fan_in, fan_out, or their + * average, depending on the variance_norm option. You should make sure the + * input blob has shape (num, a, b, c) where a * b * c = fan_in and num * b * c + * = fan_out. Note that this is currently not the case for inner product layers. + * + * TODO(dox): make notation in above comment consistent with rest & use LaTeX. + */ +template +class XavierFiller : public Filler { + public: + explicit XavierFiller(const FillerParameter& param) + : Filler(param) {} + virtual void Fill(Blob* blob) { + CHECK(blob->count()); + int fan_in = blob->count() / blob->num(); + int fan_out = blob->count() / blob->channels(); + Dtype n = fan_in; // default to fan_in + if (this->filler_param_.variance_norm() == + FillerParameter_VarianceNorm_AVERAGE) { + n = (fan_in + fan_out) / Dtype(2); + } else if (this->filler_param_.variance_norm() == + FillerParameter_VarianceNorm_FAN_OUT) { + n = fan_out; + } + Dtype scale = sqrt(Dtype(3) / n); + caffe_rng_uniform(blob->count(), -scale, scale, + blob->mutable_cpu_data()); + CHECK_EQ(this->filler_param_.sparse(), -1) + << "Sparsity not supported by this Filler."; + } +}; + +/** + * @brief Fills a Blob with values @f$ x \sim N(0, \sigma^2) @f$ where + * @f$ \sigma^2 @f$ is set inversely proportional to number of incoming + * nodes, outgoing nodes, or their average. + * + * A Filler based on the paper [He, Zhang, Ren and Sun 2015]: Specifically + * accounts for ReLU nonlinearities. + * + * Aside: for another perspective on the scaling factor, see the derivation of + * [Saxe, McClelland, and Ganguli 2013 (v3)]. + * + * It fills the incoming matrix by randomly sampling Gaussian data with std = + * sqrt(2 / n) where n is the fan_in, fan_out, or their average, depending on + * the variance_norm option. You should make sure the input blob has shape (num, + * a, b, c) where a * b * c = fan_in and num * b * c = fan_out. Note that this + * is currently not the case for inner product layers. + */ +template +class MSRAFiller : public Filler { + public: + explicit MSRAFiller(const FillerParameter& param) + : Filler(param) {} + virtual void Fill(Blob* blob) { + CHECK(blob->count()); + int fan_in = blob->count() / blob->num(); + int fan_out = blob->count() / blob->channels(); + Dtype n = fan_in; // default to fan_in + if (this->filler_param_.variance_norm() == + FillerParameter_VarianceNorm_AVERAGE) { + n = (fan_in + fan_out) / Dtype(2); + } else if (this->filler_param_.variance_norm() == + FillerParameter_VarianceNorm_FAN_OUT) { + n = fan_out; + } + Dtype std = sqrt(Dtype(2) / n); + caffe_rng_gaussian(blob->count(), Dtype(0), std, + blob->mutable_cpu_data()); + CHECK_EQ(this->filler_param_.sparse(), -1) + << "Sparsity not supported by this Filler."; + } +}; + +/*! +@brief Fills a Blob with coefficients for bilinear interpolation. + +A common use case is with the DeconvolutionLayer acting as upsampling. +You can upsample a feature map with shape of (B, C, H, W) by any integer factor +using the following proto. +\code +layer { + name: "upsample", type: "Deconvolution" + bottom: "{{bottom_name}}" top: "{{top_name}}" + convolution_param { + kernel_size: {{2 * factor - factor % 2}} stride: {{factor}} + num_output: {{C}} group: {{C}} + pad: {{ceil((factor - 1) / 2.)}} + weight_filler: { type: "bilinear" } bias_term: false + } + param { lr_mult: 0 decay_mult: 0 } +} +\endcode +Please use this by replacing `{{}}` with your values. By specifying +`num_output: {{C}} group: {{C}}`, it behaves as +channel-wise convolution. The filter shape of this deconvolution layer will be +(C, 1, K, K) where K is `kernel_size`, and this filler will set a (K, K) +interpolation kernel for every channel of the filter identically. The resulting +shape of the top feature map will be (B, C, factor * H, factor * W). +Note that the learning rate and the +weight decay are set to 0 in order to keep coefficient values of bilinear +interpolation unchanged during training. If you apply this to an image, this +operation is equivalent to the following call in Python with Scikit.Image. +\code{.py} +out = skimage.transform.rescale(img, factor, mode='constant', cval=0) +\endcode + */ +template +class BilinearFiller : public Filler { + public: + explicit BilinearFiller(const FillerParameter& param) + : Filler(param) {} + virtual void Fill(Blob* blob) { + CHECK_EQ(blob->num_axes(), 4) << "Blob must be 4 dim."; + CHECK_EQ(blob->width(), blob->height()) << "Filter must be square"; + Dtype* data = blob->mutable_cpu_data(); + int f = ceil(blob->width() / 2.); + float c = (2 * f - 1 - f % 2) / (2. * f); + for (int i = 0; i < blob->count(); ++i) { + float x = i % blob->width(); + float y = (i / blob->width()) % blob->height(); + data[i] = (1 - fabs(x / f - c)) * (1 - fabs(y / f - c)); + } + CHECK_EQ(this->filler_param_.sparse(), -1) + << "Sparsity not supported by this Filler."; + } +}; + +/** + * @brief Get a specific filler from the specification given in FillerParameter. + * + * Ideally this would be replaced by a factory pattern, but we will leave it + * this way for now. + */ +template +Filler* GetFiller(const FillerParameter& param) { + const std::string& type = param.type(); + if (type == "constant") { + return new ConstantFiller(param); + } else if (type == "gaussian") { + return new GaussianFiller(param); + } else if (type == "positive_unitball") { + return new PositiveUnitballFiller(param); + } else if (type == "uniform") { + return new UniformFiller(param); + } else if (type == "xavier") { + return new XavierFiller(param); + } else if (type == "msra") { + return new MSRAFiller(param); + } else if (type == "bilinear") { + return new BilinearFiller(param); + } else { + CHECK(false) << "Unknown filler name: " << param.type(); + } + return (Filler*)(NULL); +} + +} // namespace caffe + +#endif // CAFFE_FILLER_HPP_ diff --git a/3rdparty/caffe/include/caffe/internal_thread.hpp b/3rdparty/caffe/include/caffe/internal_thread.hpp new file mode 100644 index 00000000..0ba67665 --- /dev/null +++ b/3rdparty/caffe/include/caffe/internal_thread.hpp @@ -0,0 +1,53 @@ +#ifndef CAFFE_INTERNAL_THREAD_HPP_ +#define CAFFE_INTERNAL_THREAD_HPP_ + +#include "caffe/common.hpp" + +/** + Forward declare boost::thread instead of including boost/thread.hpp + to avoid a boost/NVCC issues (#1009, #1010) on OSX. + */ +namespace boost { class thread; } + +namespace caffe { + +/** + * Virtual class encapsulate boost::thread for use in base class + * The child class will acquire the ability to run a single thread, + * by reimplementing the virtual function InternalThreadEntry. + */ +class InternalThread { + public: + InternalThread() : thread_() {} + virtual ~InternalThread(); + + /** + * Caffe's thread local state will be initialized using the current + * thread values, e.g. device id, solver index etc. The random seed + * is initialized using caffe_rng_rand. + */ + void StartInternalThread(); + + /** Will not return until the internal thread has exited. */ + void StopInternalThread(); + + bool is_started() const; + + protected: + /* Implement this method in your subclass + with the code you want your thread to run. */ + virtual void InternalThreadEntry() {} + + /* Should be tested when running loops to exit when requested. */ + bool must_stop(); + + private: + void entry(int device, Caffe::Brew mode, int rand_seed, + int solver_count, int solver_rank, bool multiprocess); + + shared_ptr thread_; +}; + +} // namespace caffe + +#endif // CAFFE_INTERNAL_THREAD_HPP_ diff --git a/3rdparty/caffe/include/caffe/layer.hpp b/3rdparty/caffe/include/caffe/layer.hpp new file mode 100644 index 00000000..30dbfd53 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layer.hpp @@ -0,0 +1,477 @@ +#ifndef CAFFE_LAYER_H_ +#define CAFFE_LAYER_H_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer_factory.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/math_functions.hpp" + +/** + Forward declare boost::thread instead of including boost/thread.hpp + to avoid a boost/NVCC issues (#1009, #1010) on OSX. + */ +namespace boost { class mutex; } + +namespace caffe { + +/** + * @brief An interface for the units of computation which can be composed into a + * Net. + * + * Layer%s must implement a Forward function, in which they take their input + * (bottom) Blob%s (if any) and compute their output Blob%s (if any). + * They may also implement a Backward function, in which they compute the error + * gradients with respect to their input Blob%s, given the error gradients with + * their output Blob%s. + */ +template +class Layer { + public: + /** + * You should not implement your own constructor. Any set up code should go + * to SetUp(), where the dimensions of the bottom blobs are provided to the + * layer. + */ + explicit Layer(const LayerParameter& param) + : layer_param_(param) { + // Set phase and copy blobs (if there are any). + phase_ = param.phase(); + if (layer_param_.blobs_size() > 0) { + blobs_.resize(layer_param_.blobs_size()); + for (int i = 0; i < layer_param_.blobs_size(); ++i) { + blobs_[i].reset(new Blob()); + blobs_[i]->FromProto(layer_param_.blobs(i)); + } + } + } + virtual ~Layer() {} + + /** + * @brief Implements common layer setup functionality. + * + * @param bottom the preshaped input blobs + * @param top + * the allocated but unshaped output blobs, to be shaped by Reshape + * + * Checks that the number of bottom and top blobs is correct. + * Calls LayerSetUp to do special layer setup for individual layer types, + * followed by Reshape to set up sizes of top blobs and internal buffers. + * Sets up the loss weight multiplier blobs for any non-zero loss weights. + * This method may not be overridden. + */ + void SetUp(const vector*>& bottom, + const vector*>& top) { + CheckBlobCounts(bottom, top); + LayerSetUp(bottom, top); + Reshape(bottom, top); + SetLossWeights(top); + } + + /** + * @brief Does layer-specific setup: your layer should implement this function + * as well as Reshape. + * + * @param bottom + * the preshaped input blobs, whose data fields store the input data for + * this layer + * @param top + * the allocated but unshaped output blobs + * + * This method should do one-time layer specific setup. This includes reading + * and processing relevent parameters from the layer_param_. + * Setting up the shapes of top blobs and internal buffers should be done in + * Reshape, which will be called before the forward pass to + * adjust the top blob sizes. + */ + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top) {} + + /** + * @brief Adjust the shapes of top blobs and internal buffers to accommodate + * the shapes of the bottom blobs. + * + * @param bottom the input blobs, with the requested input shapes + * @param top the top blobs, which should be reshaped as needed + * + * This method should reshape top blobs as needed according to the shapes + * of the bottom (input) blobs, as well as reshaping any internal buffers + * and making any other necessary adjustments so that the layer can + * accommodate the bottom blobs. + */ + virtual void Reshape(const vector*>& bottom, + const vector*>& top) = 0; + + /** + * @brief Given the bottom blobs, compute the top blobs and the loss. + * + * @param bottom + * the input blobs, whose data fields store the input data for this layer + * @param top + * the preshaped output blobs, whose data fields will store this layers' + * outputs + * \return The total loss from the layer. + * + * The Forward wrapper calls the relevant device wrapper function + * (Forward_cpu or Forward_gpu) to compute the top blob values given the + * bottom blobs. If the layer has any non-zero loss_weights, the wrapper + * then computes and returns the loss. + * + * Your layer should implement Forward_cpu and (optionally) Forward_gpu. + */ + inline Dtype Forward(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Given the top blob error gradients, compute the bottom blob error + * gradients. + * + * @param top + * the output blobs, whose diff fields store the gradient of the error + * with respect to themselves + * @param propagate_down + * a vector with equal length to bottom, with each index indicating + * whether to propagate the error gradients down to the bottom blob at + * the corresponding index + * @param bottom + * the input blobs, whose diff fields will store the gradient of the error + * with respect to themselves after Backward is run + * + * The Backward wrapper calls the relevant device wrapper function + * (Backward_cpu or Backward_gpu) to compute the bottom blob diffs given the + * top blob diffs. + * + * Your layer should implement Backward_cpu and (optionally) Backward_gpu. + */ + inline void Backward(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom); + + /** + * @brief Returns the vector of learnable parameter blobs. + */ + vector > >& blobs() { + return blobs_; + } + + /** + * @brief Returns the layer parameter. + */ + const LayerParameter& layer_param() const { return layer_param_; } + + /** + * @brief Writes the layer parameter to a protocol buffer + */ + virtual void ToProto(LayerParameter* param, bool write_diff = false); + + /** + * @brief Returns the scalar loss associated with a top blob at a given index. + */ + inline Dtype loss(const int top_index) const { + return (loss_.size() > top_index) ? loss_[top_index] : Dtype(0); + } + + /** + * @brief Sets the loss associated with a top blob at a given index. + */ + inline void set_loss(const int top_index, const Dtype value) { + if (loss_.size() <= top_index) { + loss_.resize(top_index + 1, Dtype(0)); + } + loss_[top_index] = value; + } + + /** + * @brief Returns the layer type. + */ + virtual inline const char* type() const { return ""; } + + /** + * @brief Returns the exact number of bottom blobs required by the layer, + * or -1 if no exact number is required. + * + * This method should be overridden to return a non-negative value if your + * layer expects some exact number of bottom blobs. + */ + virtual inline int ExactNumBottomBlobs() const { return -1; } + /** + * @brief Returns the minimum number of bottom blobs required by the layer, + * or -1 if no minimum number is required. + * + * This method should be overridden to return a non-negative value if your + * layer expects some minimum number of bottom blobs. + */ + virtual inline int MinBottomBlobs() const { return -1; } + /** + * @brief Returns the maximum number of bottom blobs required by the layer, + * or -1 if no maximum number is required. + * + * This method should be overridden to return a non-negative value if your + * layer expects some maximum number of bottom blobs. + */ + virtual inline int MaxBottomBlobs() const { return -1; } + /** + * @brief Returns the exact number of top blobs required by the layer, + * or -1 if no exact number is required. + * + * This method should be overridden to return a non-negative value if your + * layer expects some exact number of top blobs. + */ + virtual inline int ExactNumTopBlobs() const { return -1; } + /** + * @brief Returns the minimum number of top blobs required by the layer, + * or -1 if no minimum number is required. + * + * This method should be overridden to return a non-negative value if your + * layer expects some minimum number of top blobs. + */ + virtual inline int MinTopBlobs() const { return -1; } + /** + * @brief Returns the maximum number of top blobs required by the layer, + * or -1 if no maximum number is required. + * + * This method should be overridden to return a non-negative value if your + * layer expects some maximum number of top blobs. + */ + virtual inline int MaxTopBlobs() const { return -1; } + /** + * @brief Returns true if the layer requires an equal number of bottom and + * top blobs. + * + * This method should be overridden to return true if your layer expects an + * equal number of bottom and top blobs. + */ + virtual inline bool EqualNumBottomTopBlobs() const { return false; } + + /** + * @brief Return whether "anonymous" top blobs are created automatically + * by the layer. + * + * If this method returns true, Net::Init will create enough "anonymous" top + * blobs to fulfill the requirement specified by ExactNumTopBlobs() or + * MinTopBlobs(). + */ + virtual inline bool AutoTopBlobs() const { return false; } + + /** + * @brief Return whether to allow force_backward for a given bottom blob + * index. + * + * If AllowForceBackward(i) == false, we will ignore the force_backward + * setting and backpropagate to blob i only if it needs gradient information + * (as is done when force_backward == false). + */ + virtual inline bool AllowForceBackward(const int bottom_index) const { + return true; + } + + /** + * @brief Specifies whether the layer should compute gradients w.r.t. a + * parameter at a particular index given by param_id. + * + * You can safely ignore false values and always compute gradients + * for all parameters, but possibly with wasteful computation. + */ + inline bool param_propagate_down(const int param_id) { + return (param_propagate_down_.size() > param_id) ? + param_propagate_down_[param_id] : false; + } + /** + * @brief Sets whether the layer should compute gradients w.r.t. a + * parameter at a particular index given by param_id. + */ + inline void set_param_propagate_down(const int param_id, const bool value) { + if (param_propagate_down_.size() <= param_id) { + param_propagate_down_.resize(param_id + 1, true); + } + param_propagate_down_[param_id] = value; + } + + + protected: + /** The protobuf that stores the layer parameters */ + LayerParameter layer_param_; + /** The phase: TRAIN or TEST */ + Phase phase_; + /** The vector that stores the learnable parameters as a set of blobs. */ + vector > > blobs_; + /** Vector indicating whether to compute the diff of each param blob. */ + vector param_propagate_down_; + + /** The vector that indicates whether each top blob has a non-zero weight in + * the objective function. */ + vector loss_; + + /** @brief Using the CPU device, compute the layer output. */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) = 0; + /** + * @brief Using the GPU device, compute the layer output. + * Fall back to Forward_cpu() if unavailable. + */ + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top) { + // LOG(WARNING) << "Using CPU code as backup."; + return Forward_cpu(bottom, top); + } + + /** + * @brief Using the CPU device, compute the gradients for any parameters and + * for the bottom blobs if propagate_down is true. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) = 0; + /** + * @brief Using the GPU device, compute the gradients for any parameters and + * for the bottom blobs if propagate_down is true. + * Fall back to Backward_cpu() if unavailable. + */ + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + // LOG(WARNING) << "Using CPU code as backup."; + Backward_cpu(top, propagate_down, bottom); + } + + /** + * Called by the parent Layer's SetUp to check that the number of bottom + * and top Blobs provided as input match the expected numbers specified by + * the {ExactNum,Min,Max}{Bottom,Top}Blobs() functions. + */ + virtual void CheckBlobCounts(const vector*>& bottom, + const vector*>& top) { + if (ExactNumBottomBlobs() >= 0) { + CHECK_EQ(ExactNumBottomBlobs(), bottom.size()) + << type() << " Layer takes " << ExactNumBottomBlobs() + << " bottom blob(s) as input."; + } + if (MinBottomBlobs() >= 0) { + CHECK_LE(MinBottomBlobs(), bottom.size()) + << type() << " Layer takes at least " << MinBottomBlobs() + << " bottom blob(s) as input."; + } + if (MaxBottomBlobs() >= 0) { + CHECK_GE(MaxBottomBlobs(), bottom.size()) + << type() << " Layer takes at most " << MaxBottomBlobs() + << " bottom blob(s) as input."; + } + if (ExactNumTopBlobs() >= 0) { + CHECK_EQ(ExactNumTopBlobs(), top.size()) + << type() << " Layer produces " << ExactNumTopBlobs() + << " top blob(s) as output."; + } + if (MinTopBlobs() >= 0) { + CHECK_LE(MinTopBlobs(), top.size()) + << type() << " Layer produces at least " << MinTopBlobs() + << " top blob(s) as output."; + } + if (MaxTopBlobs() >= 0) { + CHECK_GE(MaxTopBlobs(), top.size()) + << type() << " Layer produces at most " << MaxTopBlobs() + << " top blob(s) as output."; + } + if (EqualNumBottomTopBlobs()) { + CHECK_EQ(bottom.size(), top.size()) + << type() << " Layer produces one top blob as output for each " + << "bottom blob input."; + } + } + + /** + * Called by SetUp to initialize the weights associated with any top blobs in + * the loss function. Store non-zero loss weights in the diff blob. + */ + inline void SetLossWeights(const vector*>& top) { + const int num_loss_weights = layer_param_.loss_weight_size(); + if (num_loss_weights) { + CHECK_EQ(top.size(), num_loss_weights) << "loss_weight must be " + "unspecified or specified once per top blob."; + for (int top_id = 0; top_id < top.size(); ++top_id) { + const Dtype loss_weight = layer_param_.loss_weight(top_id); + if (loss_weight == Dtype(0)) { continue; } + this->set_loss(top_id, loss_weight); + const int count = top[top_id]->count(); + Dtype* loss_multiplier = top[top_id]->mutable_cpu_diff(); + caffe_set(count, loss_weight, loss_multiplier); + } + } + } + + private: + DISABLE_COPY_AND_ASSIGN(Layer); +}; // class Layer + +// Forward and backward wrappers. You should implement the cpu and +// gpu specific implementations instead, and should not change these +// functions. +template +inline Dtype Layer::Forward(const vector*>& bottom, + const vector*>& top) { + Dtype loss = 0; + Reshape(bottom, top); + switch (Caffe::mode()) { + case Caffe::CPU: + Forward_cpu(bottom, top); + for (int top_id = 0; top_id < top.size(); ++top_id) { + if (!this->loss(top_id)) { continue; } + const int count = top[top_id]->count(); + const Dtype* data = top[top_id]->cpu_data(); + const Dtype* loss_weights = top[top_id]->cpu_diff(); + loss += caffe_cpu_dot(count, data, loss_weights); + } + break; + case Caffe::GPU: + Forward_gpu(bottom, top); +#ifndef CPU_ONLY + for (int top_id = 0; top_id < top.size(); ++top_id) { + if (!this->loss(top_id)) { continue; } + const int count = top[top_id]->count(); + const Dtype* data = top[top_id]->gpu_data(); + const Dtype* loss_weights = top[top_id]->gpu_diff(); + Dtype blob_loss = 0; + caffe_gpu_dot(count, data, loss_weights, &blob_loss); + loss += blob_loss; + } +#endif + break; + default: + LOG(FATAL) << "Unknown caffe mode."; + } + return loss; +} + +template +inline void Layer::Backward(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + switch (Caffe::mode()) { + case Caffe::CPU: + Backward_cpu(top, propagate_down, bottom); + break; + case Caffe::GPU: + Backward_gpu(top, propagate_down, bottom); + break; + default: + LOG(FATAL) << "Unknown caffe mode."; + } +} + +// Serialize LayerParameter to protocol buffer +template +void Layer::ToProto(LayerParameter* param, bool write_diff) { + param->Clear(); + param->CopyFrom(layer_param_); + param->clear_blobs(); + for (int i = 0; i < blobs_.size(); ++i) { + blobs_[i]->ToProto(param->add_blobs(), write_diff); + } +} + +} // namespace caffe + +#endif // CAFFE_LAYER_H_ diff --git a/3rdparty/caffe/include/caffe/layer_factory.hpp b/3rdparty/caffe/include/caffe/layer_factory.hpp new file mode 100644 index 00000000..2369c132 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layer_factory.hpp @@ -0,0 +1,141 @@ +/** + * @brief A layer factory that allows one to register layers. + * During runtime, registered layers can be called by passing a LayerParameter + * protobuffer to the CreateLayer function: + * + * LayerRegistry::CreateLayer(param); + * + * There are two ways to register a layer. Assuming that we have a layer like: + * + * template + * class MyAwesomeLayer : public Layer { + * // your implementations + * }; + * + * and its type is its C++ class name, but without the "Layer" at the end + * ("MyAwesomeLayer" -> "MyAwesome"). + * + * If the layer is going to be created simply by its constructor, in your c++ + * file, add the following line: + * + * REGISTER_LAYER_CLASS(MyAwesome); + * + * Or, if the layer is going to be created by another creator function, in the + * format of: + * + * template + * Layer GetMyAwesomeLayer(const LayerParameter& param) { + * // your implementation + * } + * + * (for example, when your layer has multiple backends, see GetConvolutionLayer + * for a use case), then you can register the creator function instead, like + * + * REGISTER_LAYER_CREATOR(MyAwesome, GetMyAwesomeLayer) + * + * Note that each layer type should only be registered once. + */ + +#ifndef CAFFE_LAYER_FACTORY_H_ +#define CAFFE_LAYER_FACTORY_H_ + +#include +#include +#include + +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +template +class Layer; + +template +class LayerRegistry { + public: + typedef shared_ptr > (*Creator)(const LayerParameter&); + typedef std::map CreatorRegistry; + + static CreatorRegistry& Registry() { + static CreatorRegistry* g_registry_ = new CreatorRegistry(); + return *g_registry_; + } + + // Adds a creator. + static void AddCreator(const string& type, Creator creator) { + CreatorRegistry& registry = Registry(); + CHECK_EQ(registry.count(type), 0) + << "Layer type " << type << " already registered."; + registry[type] = creator; + } + + // Get a layer using a LayerParameter. + static shared_ptr > CreateLayer(const LayerParameter& param) { + if (Caffe::root_solver()) { + LOG(INFO) << "Creating layer " << param.name(); + } + const string& type = param.type(); + CreatorRegistry& registry = Registry(); + CHECK_EQ(registry.count(type), 1) << "Unknown layer type: " << type + << " (known types: " << LayerTypeListString() << ")"; + return registry[type](param); + } + + static vector LayerTypeList() { + CreatorRegistry& registry = Registry(); + vector layer_types; + for (typename CreatorRegistry::iterator iter = registry.begin(); + iter != registry.end(); ++iter) { + layer_types.push_back(iter->first); + } + return layer_types; + } + + private: + // Layer registry should never be instantiated - everything is done with its + // static variables. + LayerRegistry() {} + + static string LayerTypeListString() { + vector layer_types = LayerTypeList(); + string layer_types_str; + for (vector::iterator iter = layer_types.begin(); + iter != layer_types.end(); ++iter) { + if (iter != layer_types.begin()) { + layer_types_str += ", "; + } + layer_types_str += *iter; + } + return layer_types_str; + } +}; + + +template +class LayerRegisterer { + public: + LayerRegisterer(const string& type, + shared_ptr > (*creator)(const LayerParameter&)) { + // LOG(INFO) << "Registering layer type: " << type; + LayerRegistry::AddCreator(type, creator); + } +}; + + +#define REGISTER_LAYER_CREATOR(type, creator) \ + static LayerRegisterer g_creator_f_##type(#type, creator); \ + static LayerRegisterer g_creator_d_##type(#type, creator) \ + +#define REGISTER_LAYER_CLASS(type) \ + template \ + shared_ptr > Creator_##type##Layer(const LayerParameter& param) \ + { \ + return shared_ptr >(new type##Layer(param)); \ + } \ + REGISTER_LAYER_CREATOR(type, Creator_##type##Layer) + +} // namespace caffe + +#endif // CAFFE_LAYER_FACTORY_H_ diff --git a/3rdparty/caffe/include/caffe/layers/absval_layer.hpp b/3rdparty/caffe/include/caffe/layers/absval_layer.hpp new file mode 100644 index 00000000..9b5305dc --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/absval_layer.hpp @@ -0,0 +1,68 @@ +#ifndef CAFFE_ABSVAL_LAYER_HPP_ +#define CAFFE_ABSVAL_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = |x| @f$ + * + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ y = |x| @f$ + */ +template +class AbsValLayer : public NeuronLayer { + public: + explicit AbsValLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "AbsVal"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /// @copydoc AbsValLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the absolute value inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \mathrm{sign}(x) \frac{\partial E}{\partial y} + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_ABSVAL_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/accuracy_layer.hpp b/3rdparty/caffe/include/caffe/layers/accuracy_layer.hpp new file mode 100644 index 00000000..a9ad3225 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/accuracy_layer.hpp @@ -0,0 +1,95 @@ +#ifndef CAFFE_ACCURACY_LAYER_HPP_ +#define CAFFE_ACCURACY_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the classification accuracy for a one-of-many + * classification task. + */ +template +class AccuracyLayer : public Layer { + public: + /** + * @param param provides AccuracyParameter accuracy_param, + * with AccuracyLayer options: + * - top_k (\b optional, default 1). + * Sets the maximum rank @f$ k @f$ at which a prediction is considered + * correct. For example, if @f$ k = 5 @f$, a prediction is counted + * correct if the correct label is among the top 5 predicted labels. + */ + explicit AccuracyLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Accuracy"; } + virtual inline int ExactNumBottomBlobs() const { return 2; } + + // If there are two top blobs, then the second blob will contain + // accuracies per class. + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlobs() const { return 2; } + + protected: + /** + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ x @f$, a Blob with values in + * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of + * the @f$ K = CHW @f$ classes. Each @f$ x_n @f$ is mapped to a predicted + * label @f$ \hat{l}_n @f$ given by its maximal index: + * @f$ \hat{l}_n = \arg\max\limits_k x_{nk} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed accuracy: @f$ + * \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} + * @f$, where @f$ + * \delta\{\mathrm{condition}\} = \left\{ + * \begin{array}{lr} + * 1 & \mbox{if condition} \\ + * 0 & \mbox{otherwise} + * \end{array} \right. + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + + /// @brief Not implemented -- AccuracyLayer cannot be used as a loss. + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + for (int i = 0; i < propagate_down.size(); ++i) { + if (propagate_down[i]) { NOT_IMPLEMENTED; } + } + } + + int label_axis_, outer_num_, inner_num_; + + int top_k_; + + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; + /// Keeps counts of the number of samples per class. + Blob nums_buffer_; +}; + +} // namespace caffe + +#endif // CAFFE_ACCURACY_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/argmax_layer.hpp b/3rdparty/caffe/include/caffe/layers/argmax_layer.hpp new file mode 100644 index 00000000..4fef363e --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/argmax_layer.hpp @@ -0,0 +1,77 @@ +#ifndef CAFFE_ARGMAX_LAYER_HPP_ +#define CAFFE_ARGMAX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Compute the index of the @f$ K @f$ max values for each datum across + * all dimensions @f$ (C \times H \times W) @f$. + * + * Intended for use after a classification layer to produce a prediction. + * If parameter out_max_val is set to true, output is a vector of pairs + * (max_ind, max_val) for each image. The axis parameter specifies an axis + * along which to maximise. + * + * NOTE: does not implement Backwards operation. + */ +template +class ArgMaxLayer : public Layer { + public: + /** + * @param param provides ArgMaxParameter argmax_param, + * with ArgMaxLayer options: + * - top_k (\b optional uint, default 1). + * the number @f$ K @f$ of maximal items to output. + * - out_max_val (\b optional bool, default false). + * if set, output a vector of pairs (max_ind, max_val) unless axis is set then + * output max_val along the specified axis. + * - axis (\b optional int). + * if set, maximise along the specified axis else maximise the flattened + * trailing dimensions for each index of the first / num dimension. + */ + explicit ArgMaxLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "ArgMax"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times 1 \times K) @f$ or, if out_max_val + * @f$ (N \times 2 \times K) @f$ unless axis set than e.g. + * @f$ (N \times K \times H \times W) @f$ if axis == 1 + * the computed outputs @f$ + * y_n = \arg\max\limits_i x_{ni} + * @f$ (for @f$ K = 1 @f$). + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + /// @brief Not implemented (non-differentiable function) + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + NOT_IMPLEMENTED; + } + bool out_max_val_; + size_t top_k_; + bool has_axis_; + int axis_; +}; + +} // namespace caffe + +#endif // CAFFE_ARGMAX_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/base_conv_layer.hpp b/3rdparty/caffe/include/caffe/layers/base_conv_layer.hpp new file mode 100644 index 00000000..0160a833 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/base_conv_layer.hpp @@ -0,0 +1,174 @@ +#ifndef CAFFE_BASE_CONVOLUTION_LAYER_HPP_ +#define CAFFE_BASE_CONVOLUTION_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/im2col.hpp" + +namespace caffe { + +/** + * @brief Abstract base class that factors out the BLAS code common to + * ConvolutionLayer and DeconvolutionLayer. + */ +template +class BaseConvolutionLayer : public Layer { + public: + explicit BaseConvolutionLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline bool EqualNumBottomTopBlobs() const { return true; } + + protected: + // Helper functions that abstract away the column buffer and gemm arguments. + // The last argument in forward_cpu_gemm is so that we can skip the im2col if + // we just called weight_cpu_gemm with the same input. + void forward_cpu_gemm(const Dtype* input, const Dtype* weights, + Dtype* output, bool skip_im2col = false); + void forward_cpu_bias(Dtype* output, const Dtype* bias); + void backward_cpu_gemm(const Dtype* input, const Dtype* weights, + Dtype* output); + void weight_cpu_gemm(const Dtype* input, const Dtype* output, Dtype* + weights); + void backward_cpu_bias(Dtype* bias, const Dtype* input); + +#ifndef CPU_ONLY + void forward_gpu_gemm(const Dtype* col_input, const Dtype* weights, + Dtype* output, bool skip_im2col = false); + void forward_gpu_bias(Dtype* output, const Dtype* bias); + void backward_gpu_gemm(const Dtype* input, const Dtype* weights, + Dtype* col_output); + void weight_gpu_gemm(const Dtype* col_input, const Dtype* output, Dtype* + weights); + void backward_gpu_bias(Dtype* bias, const Dtype* input); +#endif + + /// @brief The spatial dimensions of the input. + inline int input_shape(int i) { + return (*bottom_shape_)[channel_axis_ + i]; + } + // reverse_dimensions should return true iff we are implementing deconv, so + // that conv helpers know which dimensions are which. + virtual bool reverse_dimensions() = 0; + // Compute height_out_ and width_out_ from other parameters. + virtual void compute_output_shape() = 0; + + /// @brief The spatial dimensions of a filter kernel. + Blob kernel_shape_; + /// @brief The spatial dimensions of the stride. + Blob stride_; + /// @brief The spatial dimensions of the padding. + Blob pad_; + /// @brief The spatial dimensions of the dilation. + Blob dilation_; + /// @brief The spatial dimensions of the convolution input. + Blob conv_input_shape_; + /// @brief The spatial dimensions of the col_buffer. + vector col_buffer_shape_; + /// @brief The spatial dimensions of the output. + vector output_shape_; + const vector* bottom_shape_; + + int num_spatial_axes_; + int bottom_dim_; + int top_dim_; + + int channel_axis_; + int num_; + int channels_; + int group_; + int out_spatial_dim_; + int weight_offset_; + int num_output_; + bool bias_term_; + bool is_1x1_; + bool force_nd_im2col_; + + private: + // wrap im2col/col2im so we don't have to remember the (long) argument lists + inline void conv_im2col_cpu(const Dtype* data, Dtype* col_buff) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_cpu(data, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], col_buff); + } else { + im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(), + col_buffer_shape_.data(), kernel_shape_.cpu_data(), + pad_.cpu_data(), stride_.cpu_data(), dilation_.cpu_data(), col_buff); + } + } + inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_cpu(col_buff, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], data); + } else { + col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(), + col_buffer_shape_.data(), kernel_shape_.cpu_data(), + pad_.cpu_data(), stride_.cpu_data(), dilation_.cpu_data(), data); + } + } +#ifndef CPU_ONLY + inline void conv_im2col_gpu(const Dtype* data, Dtype* col_buff) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_gpu(data, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], col_buff); + } else { + im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_, + conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), + kernel_shape_.gpu_data(), pad_.gpu_data(), + stride_.gpu_data(), dilation_.gpu_data(), col_buff); + } + } + inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_gpu(col_buff, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], data); + } else { + col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_, + conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), + kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), + dilation_.gpu_data(), data); + } + } +#endif + + int num_kernels_im2col_; + int num_kernels_col2im_; + int conv_out_channels_; + int conv_in_channels_; + int conv_out_spatial_dim_; + int kernel_dim_; + int col_offset_; + int output_offset_; + + Blob col_buffer_; + Blob bias_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_BASE_CONVOLUTION_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/base_data_layer.hpp b/3rdparty/caffe/include/caffe/layers/base_data_layer.hpp new file mode 100644 index 00000000..c8b6998c --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/base_data_layer.hpp @@ -0,0 +1,82 @@ +#ifndef CAFFE_DATA_LAYERS_HPP_ +#define CAFFE_DATA_LAYERS_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/blocking_queue.hpp" + +namespace caffe { + +/** + * @brief Provides base for data layers that feed blobs to the Net. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class BaseDataLayer : public Layer { + public: + explicit BaseDataLayer(const LayerParameter& param); + // LayerSetUp: implements common data layer setup functionality, and calls + // DataLayerSetUp to do special data layer setup for individual layer types. + // This method may not be overridden except by the BasePrefetchingDataLayer. + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top) {} + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + + protected: + TransformationParameter transform_param_; + shared_ptr > data_transformer_; + bool output_labels_; +}; + +template +class Batch { + public: + Blob data_, label_; +}; + +template +class BasePrefetchingDataLayer : + public BaseDataLayer, public InternalThread { + public: + explicit BasePrefetchingDataLayer(const LayerParameter& param); + // LayerSetUp: implements common data layer setup functionality, and calls + // DataLayerSetUp to do special data layer setup for individual layer types. + // This method may not be overridden. + void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + protected: + virtual void InternalThreadEntry(); + virtual void load_batch(Batch* batch) = 0; + + vector > > prefetch_; + BlockingQueue*> prefetch_free_; + BlockingQueue*> prefetch_full_; + Batch* prefetch_current_; + + Blob transformed_data_; +}; + +} // namespace caffe + +#endif // CAFFE_DATA_LAYERS_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/batch_norm_layer.hpp b/3rdparty/caffe/include/caffe/layers/batch_norm_layer.hpp new file mode 100644 index 00000000..43f7b28b --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/batch_norm_layer.hpp @@ -0,0 +1,78 @@ +#ifndef CAFFE_BATCHNORM_LAYER_HPP_ +#define CAFFE_BATCHNORM_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Normalizes the input to have 0-mean and/or unit (1) variance across + * the batch. + * + * This layer computes Batch Normalization as described in [1]. For each channel + * in the data (i.e. axis 1), it subtracts the mean and divides by the variance, + * where both statistics are computed across both spatial dimensions and across + * the different examples in the batch. + * + * By default, during training time, the network is computing global + * mean/variance statistics via a running average, which is then used at test + * time to allow deterministic outputs for each input. You can manually toggle + * whether the network is accumulating or using the statistics via the + * use_global_stats option. For reference, these statistics are kept in the + * layer's three blobs: (0) mean, (1) variance, and (2) moving average factor. + * + * Note that the original paper also included a per-channel learned bias and + * scaling factor. To implement this in Caffe, define a `ScaleLayer` configured + * with `bias_term: true` after each `BatchNormLayer` to handle both the bias + * and scaling factor. + * + * [1] S. Ioffe and C. Szegedy, "Batch Normalization: Accelerating Deep Network + * Training by Reducing Internal Covariate Shift." arXiv preprint + * arXiv:1502.03167 (2015). + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class BatchNormLayer : public Layer { + public: + explicit BatchNormLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "BatchNorm"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob mean_, variance_, temp_, x_norm_; + bool use_global_stats_; + Dtype moving_average_fraction_; + int channels_; + Dtype eps_; + + // extra temporarary variables is used to carry out sums/broadcasting + // using BLAS + Blob batch_sum_multiplier_; + Blob num_by_chans_; + Blob spatial_sum_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_BATCHNORM_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/batch_reindex_layer.hpp b/3rdparty/caffe/include/caffe/layers/batch_reindex_layer.hpp new file mode 100644 index 00000000..ebb3a567 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/batch_reindex_layer.hpp @@ -0,0 +1,83 @@ +#ifndef CAFFE_BATCHREINDEX_LAYER_HPP_ +#define CAFFE_BATCHREINDEX_LAYER_HPP_ + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Index into the input blob along its first axis. + * + * This layer can be used to select, reorder, and even replicate examples in a + * batch. The second blob is cast to int and treated as an index into the + * first axis of the first blob. + */ +template +class BatchReindexLayer : public Layer { + public: + explicit BatchReindexLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "BatchReindex"; } + virtual inline int ExactNumBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times ...) @f$ + * the inputs @f$ x_1 @f$ + * -# @f$ (M) @f$ + * the inputs @f$ x_2 @f$ + * @param top output Blob vector (length 1) + * -# @f$ (M \times ...) @f$: + * the reindexed array @f$ + * y = x_1[x_2] + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the reordered input. + * + * @param top output Blob vector (length 1), providing the error gradient + * with respect to the outputs + * -# @f$ (M \times ...) @f$: + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to concatenated outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2): + * - @f$ \frac{\partial E}{\partial y} @f$ is de-indexed (summing where + * required) back to the input x_1 + * - This layer cannot backprop to x_2, i.e. propagate_down[1] must be + * false. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + private: + struct pair_sort_first { + bool operator()(const std::pair &left, + const std::pair &right) { + return left.first < right.first; + } + }; + void check_batch_reindex(int initial_num, int final_num, + const Dtype* ridx_data); +}; + +} // namespace caffe + +#endif // CAFFE_BATCHREINDEX_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/bias_layer.hpp b/3rdparty/caffe/include/caffe/layers/bias_layer.hpp new file mode 100644 index 00000000..9639c9cd --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/bias_layer.hpp @@ -0,0 +1,54 @@ +#ifndef CAFFE_BIAS_LAYER_HPP_ +#define CAFFE_BIAS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Computes a sum of two input Blobs, with the shape of the latter Blob + * "broadcast" to match the shape of the former. Equivalent to tiling + * the latter Blob, then computing the elementwise sum. + * + * The second input may be omitted, in which case it's learned as a parameter + * of the layer. Note: in case bias and scaling are desired, both operations can + * be handled by `ScaleLayer` configured with `bias_term: true`. + */ +template +class BiasLayer : public Layer { + public: + explicit BiasLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Bias"; } + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int MaxBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + private: + Blob bias_multiplier_; + int outer_dim_, bias_dim_, inner_dim_, dim_; +}; + + + +} // namespace caffe + +#endif // CAFFE_BIAS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/bnll_layer.hpp b/3rdparty/caffe/include/caffe/layers/bnll_layer.hpp new file mode 100644 index 00000000..be07c748 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/bnll_layer.hpp @@ -0,0 +1,70 @@ +#ifndef CAFFE_BNLL_LAYER_HPP_ +#define CAFFE_BNLL_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = x + \log(1 + \exp(-x)) @f$ if @f$ x > 0 @f$; + * @f$ y = \log(1 + \exp(x)) @f$ otherwise. + * + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \left\{ + * \begin{array}{ll} + * x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ + * \log(1 + \exp(x)) & \mbox{otherwise} + * \end{array} \right. + * @f$ + */ +template +class BNLLLayer : public NeuronLayer { + public: + explicit BNLLLayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "BNLL"; } + + protected: + /// @copydoc BNLLLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the BNLL inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_BNLL_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/concat_layer.hpp b/3rdparty/caffe/include/caffe/layers/concat_layer.hpp new file mode 100644 index 00000000..a1570249 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/concat_layer.hpp @@ -0,0 +1,87 @@ +#ifndef CAFFE_CONCAT_LAYER_HPP_ +#define CAFFE_CONCAT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes at least two Blob%s and concatenates them along either the num + * or channel dimension, outputting the result. + */ +template +class ConcatLayer : public Layer { + public: + explicit ConcatLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Concat"; } + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x_1 @f$ + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x_2 @f$ + * -# ... + * - K @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x_K @f$ + * @param top output Blob vector (length 1) + * -# @f$ (KN \times C \times H \times W) @f$ if axis == 0, or + * @f$ (N \times KC \times H \times W) @f$ if axis == 1: + * the concatenated output @f$ + * y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the concatenate inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (KN \times C \times H \times W) @f$ if axis == 0, or + * @f$ (N \times KC \times H \times W) @f$ if axis == 1: + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to concatenated outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length K), into which the top gradient + * @f$ \frac{\partial E}{\partial y} @f$ is deconcatenated back to the + * inputs @f$ + * \left[ \begin{array}{cccc} + * \frac{\partial E}{\partial x_1} & + * \frac{\partial E}{\partial x_2} & + * ... & + * \frac{\partial E}{\partial x_K} + * \end{array} \right] = + * \frac{\partial E}{\partial y} + * @f$ + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int count_; + int num_concats_; + int concat_input_size_; + int concat_axis_; +}; + +} // namespace caffe + +#endif // CAFFE_CONCAT_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/contrastive_loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/contrastive_loss_layer.hpp new file mode 100644 index 00000000..e890afb8 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/contrastive_loss_layer.hpp @@ -0,0 +1,101 @@ +#ifndef CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_ +#define CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the contrastive loss @f$ + * E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + + * \left(1-y\right) \max \left(margin-d, 0\right)^2 + * @f$ where @f$ + * d = \left| \left| a_n - b_n \right| \right|_2 @f$. This can be + * used to train siamese networks. + * + * @param bottom input Blob vector (length 3) + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$ a \in [-\infty, +\infty]@f$ + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$ b \in [-\infty, +\infty]@f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the binary similarity @f$ s \in [0, 1]@f$ + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed contrastive loss: @f$ E = + * \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + + * \left(1-y\right) \max \left(margin-d, 0\right)^2 + * @f$ where @f$ + * d = \left| \left| a_n - b_n \right| \right|_2 @f$. + * This can be used to train siamese networks. + */ +template +class ContrastiveLossLayer : public LossLayer { + public: + explicit ContrastiveLossLayer(const LayerParameter& param) + : LossLayer(param), diff_() {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline int ExactNumBottomBlobs() const { return 3; } + virtual inline const char* type() const { return "ContrastiveLoss"; } + /** + * Unlike most loss layers, in the ContrastiveLossLayer we can backpropagate + * to the first two inputs. + */ + virtual inline bool AllowForceBackward(const int bottom_index) const { + return bottom_index != 2; + } + + protected: + /// @copydoc ContrastiveLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the Contrastive error gradient w.r.t. the inputs. + * + * Computes the gradients with respect to the two input vectors (bottom[0] and + * bottom[1]), but not the similarity label (bottom[2]). + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$a@f$; Backward fills their diff with + * gradients if propagate_down[0] + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$b@f$; Backward fills their diff with gradients if + * propagate_down[1] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob diff_; // cached for backward pass + Blob dist_sq_; // cached for backward pass + Blob diff_sq_; // tmp storage for gpu forward pass + Blob summer_vec_; // tmp storage for gpu forward pass +}; + +} // namespace caffe + +#endif // CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/conv_layer.hpp b/3rdparty/caffe/include/caffe/layers/conv_layer.hpp new file mode 100644 index 00000000..93a618dd --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/conv_layer.hpp @@ -0,0 +1,84 @@ +#ifndef CAFFE_CONV_LAYER_HPP_ +#define CAFFE_CONV_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_conv_layer.hpp" + +namespace caffe { + +/** + * @brief Convolves the input image with a bank of learned filters, + * and (optionally) adds biases. + * + * Caffe convolves by reduction to matrix multiplication. This achieves + * high-throughput and generality of input and filter dimensions but comes at + * the cost of memory for matrices. This makes use of efficiency in BLAS. + * + * The input is "im2col" transformed to a channel K' x H x W data matrix + * for multiplication with the N x K' x H x W filter matrix to yield a + * N' x H x W output matrix that is then "col2im" restored. K' is the + * input channel * kernel height * kernel width dimension of the unrolled + * inputs so that the im2col matrix has a column for each input region to + * be filtered. col2im restores the output spatial structure by rolling up + * the output channel N' columns of the output matrix. + */ +template +class ConvolutionLayer : public BaseConvolutionLayer { + public: + /** + * @param param provides ConvolutionParameter convolution_param, + * with ConvolutionLayer options: + * - num_output. The number of filters. + * - kernel_size / kernel_h / kernel_w. The filter dimensions, given by + * kernel_size for square filters or kernel_h and kernel_w for rectangular + * filters. + * - stride / stride_h / stride_w (\b optional, default 1). The filter + * stride, given by stride_size for equal dimensions or stride_h and stride_w + * for different strides. By default the convolution is dense with stride 1. + * - pad / pad_h / pad_w (\b optional, default 0). The zero-padding for + * convolution, given by pad for equal dimensions or pad_h and pad_w for + * different padding. Input padding is computed implicitly instead of + * actually padding. + * - dilation (\b optional, default 1). The filter + * dilation, given by dilation_size for equal dimensions for different + * dilation. By default the convolution has dilation 1. + * - group (\b optional, default 1). The number of filter groups. Group + * convolution is a method for reducing parameterization by selectively + * connecting input and output channels. The input and output channel dimensions must be divisible + * by the number of groups. For group @f$ \geq 1 @f$, the + * convolutional filters' input and output channels are separated s.t. each + * group takes 1 / group of the input channels and makes 1 / group of the + * output channels. Concretely 4 input channels, 8 output channels, and + * 2 groups separate input channels 1-2 and output channels 1-4 into the + * first group and input channels 3-4 and output channels 5-8 into the second + * group. + * - bias_term (\b optional, default true). Whether to have a bias. + * - engine: convolution has CAFFE (matrix multiplication) and CUDNN (library + * kernels + stream parallelism) engines. + */ + explicit ConvolutionLayer(const LayerParameter& param) + : BaseConvolutionLayer(param) {} + + virtual inline const char* type() const { return "Convolution"; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual inline bool reverse_dimensions() { return false; } + virtual void compute_output_shape(); +}; + +} // namespace caffe + +#endif // CAFFE_CONV_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/crop_layer.hpp b/3rdparty/caffe/include/caffe/layers/crop_layer.hpp new file mode 100644 index 00000000..c4fda122 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/crop_layer.hpp @@ -0,0 +1,76 @@ +#ifndef CAFFE_CROP_LAYER_HPP_ +#define CAFFE_CROP_LAYER_HPP_ + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes a Blob and crop it, to the shape specified by the second input + * Blob, across all dimensions after the specified axis. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ + +template +class CropLayer : public Layer { + public: + explicit CropLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Crop"; } + virtual inline int ExactNumBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + vector offsets; + + private: + // Recursive copy function. + void crop_copy(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward); + + // Recursive copy function: this is similar to crop_copy() but loops over all + // but the last two dimensions to allow for ND cropping while still relying on + // a CUDA kernel for the innermost two dimensions for performance reasons. An + // alterantive implementation could rely on the kernel more by passing + // offsets, but this is problematic because of its variable length. + // Since in the standard (N,C,W,H) case N,C are usually not cropped a speedup + // could be achieved by not looping the application of the copy_kernel around + // these dimensions. + void crop_copy_gpu(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward); +}; +} // namespace caffe + +#endif // CAFFE_CROP_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_conv_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_conv_layer.hpp new file mode 100644 index 00000000..31fe49a7 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_conv_layer.hpp @@ -0,0 +1,72 @@ +#ifndef CAFFE_CUDNN_CONV_LAYER_HPP_ +#define CAFFE_CUDNN_CONV_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/conv_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/* + * @brief cuDNN implementation of ConvolutionLayer. + * Fallback to ConvolutionLayer for CPU mode. + * + * cuDNN accelerates convolution through forward kernels for filtering and bias + * plus backward kernels for the gradient w.r.t. the filters, biases, and + * inputs. Caffe + cuDNN further speeds up the computation through forward + * parallelism across groups and backward parallelism across gradients. + * + * The CUDNN engine does not have memory overhead for matrix buffers. For many + * input and filter regimes the CUDNN engine is faster than the CAFFE engine, + * but for fully-convolutional models and large inputs the CAFFE engine can be + * faster as long as it fits in memory. +*/ +template +class CuDNNConvolutionLayer : public ConvolutionLayer { + public: + explicit CuDNNConvolutionLayer(const LayerParameter& param) + : ConvolutionLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNConvolutionLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t* handle_; + cudaStream_t* stream_; + + // algorithms for forward and backwards convolutions + cudnnConvolutionFwdAlgo_t *fwd_algo_; + cudnnConvolutionBwdFilterAlgo_t *bwd_filter_algo_; + cudnnConvolutionBwdDataAlgo_t *bwd_data_algo_; + + vector bottom_descs_, top_descs_; + cudnnTensorDescriptor_t bias_desc_; + cudnnFilterDescriptor_t filter_desc_; + vector conv_descs_; + int bottom_offset_, top_offset_, bias_offset_; + + size_t *workspace_fwd_sizes_; + size_t *workspace_bwd_data_sizes_; + size_t *workspace_bwd_filter_sizes_; + size_t workspaceSizeInBytes; // size of underlying storage + void *workspaceData; // underlying storage + void **workspace; // aliases into workspaceData +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_CONV_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_lcn_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_lcn_layer.hpp new file mode 100644 index 00000000..74cf4775 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_lcn_layer.hpp @@ -0,0 +1,49 @@ +#ifndef CAFFE_CUDNN_LCN_LAYER_HPP_ +#define CAFFE_CUDNN_LCN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/lrn_layer.hpp" +#include "caffe/layers/power_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +template +class CuDNNLCNLayer : public LRNLayer { + public: + explicit CuDNNLCNLayer(const LayerParameter& param) + : LRNLayer(param), handles_setup_(false), tempDataSize(0), + tempData1(NULL), tempData2(NULL) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNLCNLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnLRNDescriptor_t norm_desc_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + + int size_, pre_pad_; + Dtype alpha_, beta_, k_; + + size_t tempDataSize; + void *tempData1, *tempData2; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_LCN_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_lrn_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_lrn_layer.hpp new file mode 100644 index 00000000..000ccc36 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_lrn_layer.hpp @@ -0,0 +1,44 @@ +#ifndef CAFFE_CUDNN_LRN_LAYER_HPP_ +#define CAFFE_CUDNN_LRN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/lrn_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +template +class CuDNNLRNLayer : public LRNLayer { + public: + explicit CuDNNLRNLayer(const LayerParameter& param) + : LRNLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNLRNLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnLRNDescriptor_t norm_desc_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + + int size_; + Dtype alpha_, beta_, k_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_LRN_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_pooling_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_pooling_layer.hpp new file mode 100644 index 00000000..6d0db47d --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_pooling_layer.hpp @@ -0,0 +1,49 @@ +#ifndef CAFFE_CUDNN_POOLING_LAYER_HPP_ +#define CAFFE_CUDNN_POOLING_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/pooling_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/* + * @brief cuDNN implementation of PoolingLayer. + * Fallback to PoolingLayer for CPU mode. +*/ +template +class CuDNNPoolingLayer : public PoolingLayer { + public: + explicit CuDNNPoolingLayer(const LayerParameter& param) + : PoolingLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNPoolingLayer(); + // Currently, cuDNN does not support the extra top blob. + virtual inline int MinTopBlobs() const { return -1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + cudnnPoolingDescriptor_t pooling_desc_; + cudnnPoolingMode_t mode_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_POOLING_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_relu_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_relu_layer.hpp new file mode 100644 index 00000000..a1cb29e7 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_relu_layer.hpp @@ -0,0 +1,46 @@ +#ifndef CAFFE_CUDNN_RELU_LAYER_HPP_ +#define CAFFE_CUDNN_RELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/relu_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief CuDNN acceleration of ReLULayer. + */ +template +class CuDNNReLULayer : public ReLULayer { + public: + explicit CuDNNReLULayer(const LayerParameter& param) + : ReLULayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNReLULayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; + cudnnActivationDescriptor_t activ_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_RELU_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_sigmoid_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_sigmoid_layer.hpp new file mode 100644 index 00000000..7b3486f8 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_sigmoid_layer.hpp @@ -0,0 +1,46 @@ +#ifndef CAFFE_CUDNN_SIGMOID_LAYER_HPP_ +#define CAFFE_CUDNN_SIGMOID_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief CuDNN acceleration of SigmoidLayer. + */ +template +class CuDNNSigmoidLayer : public SigmoidLayer { + public: + explicit CuDNNSigmoidLayer(const LayerParameter& param) + : SigmoidLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNSigmoidLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; + cudnnActivationDescriptor_t activ_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_SIGMOID_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_softmax_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_softmax_layer.hpp new file mode 100644 index 00000000..174368e4 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_softmax_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_CUDNN_SOFTMAX_LAYER_HPP_ +#define CAFFE_CUDNN_SOFTMAX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/softmax_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief cuDNN implementation of SoftmaxLayer. + * Fallback to SoftmaxLayer for CPU mode. + */ +template +class CuDNNSoftmaxLayer : public SoftmaxLayer { + public: + explicit CuDNNSoftmaxLayer(const LayerParameter& param) + : SoftmaxLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNSoftmaxLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_SOFTMAX_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/cudnn_tanh_layer.hpp b/3rdparty/caffe/include/caffe/layers/cudnn_tanh_layer.hpp new file mode 100644 index 00000000..59e758d7 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/cudnn_tanh_layer.hpp @@ -0,0 +1,46 @@ +#ifndef CAFFE_CUDNN_TANH_LAYER_HPP_ +#define CAFFE_CUDNN_TANH_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/tanh_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief CuDNN acceleration of TanHLayer. + */ +template +class CuDNNTanHLayer : public TanHLayer { + public: + explicit CuDNNTanHLayer(const LayerParameter& param) + : TanHLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNTanHLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; + cudnnActivationDescriptor_t activ_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_TANH_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/data_layer.hpp b/3rdparty/caffe/include/caffe/layers/data_layer.hpp new file mode 100644 index 00000000..667a4ae4 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/data_layer.hpp @@ -0,0 +1,40 @@ +#ifndef CAFFE_DATA_LAYER_HPP_ +#define CAFFE_DATA_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" + +namespace caffe { + +template +class DataLayer : public BasePrefetchingDataLayer { + public: + explicit DataLayer(const LayerParameter& param); + virtual ~DataLayer(); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual inline const char* type() const { return "Data"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlobs() const { return 2; } + + protected: + void Next(); + bool Skip(); + virtual void load_batch(Batch* batch); + + shared_ptr db_; + shared_ptr cursor_; + uint64_t offset_; +}; + +} // namespace caffe + +#endif // CAFFE_DATA_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/deconv_layer.hpp b/3rdparty/caffe/include/caffe/layers/deconv_layer.hpp new file mode 100644 index 00000000..23ae887e --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/deconv_layer.hpp @@ -0,0 +1,51 @@ +#ifndef CAFFE_DECONV_LAYER_HPP_ +#define CAFFE_DECONV_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_conv_layer.hpp" + +namespace caffe { + +/** + * @brief Convolve the input with a bank of learned filters, and (optionally) + * add biases, treating filters and convolution parameters in the + * opposite sense as ConvolutionLayer. + * + * ConvolutionLayer computes each output value by dotting an input window with + * a filter; DeconvolutionLayer multiplies each input value by a filter + * elementwise, and sums over the resulting output windows. In other words, + * DeconvolutionLayer is ConvolutionLayer with the forward and backward passes + * reversed. DeconvolutionLayer reuses ConvolutionParameter for its + * parameters, but they take the opposite sense as in ConvolutionLayer (so + * padding is removed from the output rather than added to the input, and + * stride results in upsampling rather than downsampling). + */ +template +class DeconvolutionLayer : public BaseConvolutionLayer { + public: + explicit DeconvolutionLayer(const LayerParameter& param) + : BaseConvolutionLayer(param) {} + + virtual inline const char* type() const { return "Deconvolution"; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual inline bool reverse_dimensions() { return true; } + virtual void compute_output_shape(); +}; + +} // namespace caffe + +#endif // CAFFE_DECONV_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/dropout_layer.hpp b/3rdparty/caffe/include/caffe/layers/dropout_layer.hpp new file mode 100644 index 00000000..e83143bc --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/dropout_layer.hpp @@ -0,0 +1,80 @@ +#ifndef CAFFE_DROPOUT_LAYER_HPP_ +#define CAFFE_DROPOUT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief During training only, sets a random portion of @f$x@f$ to 0, adjusting + * the rest of the vector magnitude accordingly. + * + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ y = |x| @f$ + */ +template +class DropoutLayer : public NeuronLayer { + public: + /** + * @param param provides DropoutParameter dropout_param, + * with DropoutLayer options: + * - dropout_ratio (\b optional, default 0.5). + * Sets the probability @f$ p @f$ that any given unit is dropped. + */ + explicit DropoutLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Dropout"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs. At training time, we have @f$ + * y_{\mbox{train}} = \left\{ + * \begin{array}{ll} + * \frac{x}{1 - p} & \mbox{if } u > p \\ + * 0 & \mbox{otherwise} + * \end{array} \right. + * @f$, where @f$ u \sim U(0, 1)@f$ is generated independently for each + * input at each iteration. At test time, we simply have + * @f$ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// when divided by UINT_MAX, the randomly generated values @f$u\sim U(0,1)@f$ + Blob rand_vec_; + /// the probability @f$ p @f$ of dropping any input + Dtype threshold_; + /// the scale for undropped inputs at train time @f$ 1 / (1 - p) @f$ + Dtype scale_; + unsigned int uint_thres_; +}; + +} // namespace caffe + +#endif // CAFFE_DROPOUT_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/dummy_data_layer.hpp b/3rdparty/caffe/include/caffe/layers/dummy_data_layer.hpp new file mode 100644 index 00000000..13a63d47 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/dummy_data_layer.hpp @@ -0,0 +1,47 @@ +#ifndef CAFFE_DUMMY_DATA_LAYER_HPP_ +#define CAFFE_DUMMY_DATA_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net generated by a Filler. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class DummyDataLayer : public Layer { + public: + explicit DummyDataLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "DummyData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + + vector > > fillers_; + vector refill_; +}; + +} // namespace caffe + +#endif // CAFFE_DUMMY_DATA_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/eltwise_layer.hpp b/3rdparty/caffe/include/caffe/layers/eltwise_layer.hpp new file mode 100644 index 00000000..091de834 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/eltwise_layer.hpp @@ -0,0 +1,51 @@ +#ifndef CAFFE_ELTWISE_LAYER_HPP_ +#define CAFFE_ELTWISE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Compute elementwise operations, such as product and sum, + * along multiple input Blobs. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class EltwiseLayer : public Layer { + public: + explicit EltwiseLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Eltwise"; } + virtual inline int MinBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + EltwiseParameter_EltwiseOp op_; + vector coeffs_; + Blob max_idx_; + + bool stable_prod_grad_; +}; + +} // namespace caffe + +#endif // CAFFE_ELTWISE_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/elu_layer.hpp b/3rdparty/caffe/include/caffe/layers/elu_layer.hpp new file mode 100644 index 00000000..0796e898 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/elu_layer.hpp @@ -0,0 +1,86 @@ +#ifndef CAFFE_ELU_LAYER_HPP_ +#define CAFFE_ELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Exponential Linear Unit non-linearity @f$ + * y = \left\{ + * \begin{array}{lr} + * x & \mathrm{if} \; x > 0 \\ + * \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 + * \end{array} \right. + * @f$. + */ +template +class ELULayer : public NeuronLayer { + public: + /** + * @param param provides ELUParameter elu_param, + * with ELULayer options: + * - alpha (\b optional, default 1). + * the value @f$ \alpha @f$ by which controls saturation for negative inputs. + */ + explicit ELULayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "ELU"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \left\{ + * \begin{array}{lr} + * x & \mathrm{if} \; x > 0 \\ + * \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 + * \end{array} \right. + * @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the ELU inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = \left\{ + * \begin{array}{lr} + * 1 & \mathrm{if} \; x > 0 \\ + * y + \alpha & \mathrm{if} \; x \le 0 + * \end{array} \right. + * @f$ if propagate_down[0]. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + + +} // namespace caffe + +#endif // CAFFE_ELU_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/embed_layer.hpp b/3rdparty/caffe/include/caffe/layers/embed_layer.hpp new file mode 100644 index 00000000..36137a62 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/embed_layer.hpp @@ -0,0 +1,52 @@ +#ifndef CAFFE_EMBED_LAYER_HPP_ +#define CAFFE_EMBED_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief A layer for learning "embeddings" of one-hot vector input. + * Equivalent to an InnerProductLayer with one-hot vectors as input, but + * for efficiency the input is the "hot" index of each column itself. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class EmbedLayer : public Layer { + public: + explicit EmbedLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Embed"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int M_; + int K_; + int N_; + bool bias_term_; + Blob bias_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_EMBED_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/euclidean_loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/euclidean_loss_layer.hpp new file mode 100644 index 00000000..f564569e --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/euclidean_loss_layer.hpp @@ -0,0 +1,107 @@ +#ifndef CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_ +#define CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the Euclidean (L2) loss @f$ + * E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n + * \right| \right|_2^2 @f$ for real-valued regression tasks. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{y} \in [-\infty, +\infty]@f$ + * -# @f$ (N \times C \times H \times W) @f$ + * the targets @f$ y \in [-\infty, +\infty]@f$ + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed Euclidean loss: @f$ E = + * \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n + * \right| \right|_2^2 @f$ + * + * This can be used for least-squares regression tasks. An InnerProductLayer + * input to a EuclideanLossLayer exactly formulates a linear least squares + * regression problem. With non-zero weight decay the problem becomes one of + * ridge regression -- see src/caffe/test/test_sgd_solver.cpp for a concrete + * example wherein we check that the gradients computed for a Net with exactly + * this structure match hand-computed gradient formulas for ridge regression. + * + * (Note: Caffe, and SGD in general, is certainly \b not the best way to solve + * linear least squares problems! We use it only as an instructive example.) + */ +template +class EuclideanLossLayer : public LossLayer { + public: + explicit EuclideanLossLayer(const LayerParameter& param) + : LossLayer(param), diff_() {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "EuclideanLoss"; } + /** + * Unlike most loss layers, in the EuclideanLossLayer we can backpropagate + * to both inputs -- override to return true and always allow force_backward. + */ + virtual inline bool AllowForceBackward(const int bottom_index) const { + return true; + } + + protected: + /// @copydoc EuclideanLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the Euclidean error gradient w.r.t. the inputs. + * + * Unlike other children of LossLayer, EuclideanLossLayer \b can compute + * gradients with respect to the label inputs bottom[1] (but still only will + * if propagate_down[1] is set, due to being produced by learnable parameters + * or if force_backward is set). In fact, this layer is "commutative" -- the + * result is the same regardless of the order of the two bottoms. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$\hat{y}@f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial \hat{y}} = + * \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) + * @f$ if propagate_down[0] + * -# @f$ (N \times C \times H \times W) @f$ + * the targets @f$y@f$; Backward fills their diff with gradients + * @f$ \frac{\partial E}{\partial y} = + * \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) + * @f$ if propagate_down[1] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob diff_; +}; + +} // namespace caffe + +#endif // CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/exp_layer.hpp b/3rdparty/caffe/include/caffe/layers/exp_layer.hpp new file mode 100644 index 00000000..9fc8c396 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/exp_layer.hpp @@ -0,0 +1,80 @@ +#ifndef CAFFE_EXP_LAYER_HPP_ +#define CAFFE_EXP_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = \gamma ^ {\alpha x + \beta} @f$, + * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, + * and base @f$ \gamma @f$. + */ +template +class ExpLayer : public NeuronLayer { + public: + /** + * @param param provides ExpParameter exp_param, + * with ExpLayer options: + * - scale (\b optional, default 1) the scale @f$ \alpha @f$ + * - shift (\b optional, default 0) the shift @f$ \beta @f$ + * - base (\b optional, default -1 for a value of @f$ e \approx 2.718 @f$) + * the base @f$ \gamma @f$ + */ + explicit ExpLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Exp"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \gamma ^ {\alpha x + \beta} + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the exp inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \frac{\partial E}{\partial y} y \alpha \log_e(gamma) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Dtype inner_scale_, outer_scale_; +}; + +} // namespace caffe + +#endif // CAFFE_EXP_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/filter_layer.hpp b/3rdparty/caffe/include/caffe/layers/filter_layer.hpp new file mode 100644 index 00000000..e040e666 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/filter_layer.hpp @@ -0,0 +1,77 @@ +#ifndef CAFFE_FILTER_LAYER_HPP_ +#define CAFFE_FILTER_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes two+ Blobs, interprets last Blob as a selector and + * filter remaining Blobs accordingly with selector data (0 means that + * the corresponding item has to be filtered, non-zero means that corresponding + * item needs to stay). + */ +template +class FilterLayer : public Layer { + public: + explicit FilterLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Filter"; } + virtual inline int MinBottomBlobs() const { return 2; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs to be filtered @f$ x_1 @f$ + * -# ... + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs to be filtered @f$ x_K @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the selector blob + * @param top output Blob vector (length 1+) + * -# @f$ (S \times C \times H \times W) @f$ () + * the filtered output @f$ x_1 @f$ + * where S is the number of items + * that haven't been filtered + * @f$ (S \times C \times H \times W) @f$ + * the filtered output @f$ x_K @f$ + * where S is the number of items + * that haven't been filtered + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the forwarded inputs. + * + * @param top output Blob vector (length 1+), providing the error gradient with + * respect to the outputs + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2+), into which the top error + * gradient is copied + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool first_reshape_; + vector indices_to_forward_; +}; + +} // namespace caffe + +#endif // CAFFE_FILTER_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/flatten_layer.hpp b/3rdparty/caffe/include/caffe/layers/flatten_layer.hpp new file mode 100644 index 00000000..e494bbb5 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/flatten_layer.hpp @@ -0,0 +1,61 @@ +#ifndef CAFFE_FLATTEN_LAYER_HPP_ +#define CAFFE_FLATTEN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Reshapes the input Blob into flat vectors. + * + * Note: because this layer does not change the input values -- merely the + * dimensions -- it can simply copy the input. The copy happens "virtually" + * (thus taking effectively 0 real time) by setting, in Forward, the data + * pointer of the top Blob to that of the bottom Blob (see Blob::ShareData), + * and in Backward, the diff pointer of the bottom Blob to that of the top Blob + * (see Blob::ShareDiff). + */ +template +class FlattenLayer : public Layer { + public: + explicit FlattenLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Flatten"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs + * @param top output Blob vector (length 1) + * -# @f$ (N \times CHW \times 1 \times 1) @f$ + * the outputs -- i.e., the (virtually) copied, flattened inputs + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the concatenate inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length K), into which the top error + * gradient is (virtually) copied + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_FLATTEN_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/hdf5_data_layer.hpp b/3rdparty/caffe/include/caffe/layers/hdf5_data_layer.hpp new file mode 100644 index 00000000..601b36c6 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/hdf5_data_layer.hpp @@ -0,0 +1,64 @@ +#ifndef CAFFE_HDF5_DATA_LAYER_HPP_ +#define CAFFE_HDF5_DATA_LAYER_HPP_ + +#include "hdf5.h" + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_data_layer.hpp" + +namespace caffe { + +/** + * @brief Provides data to the Net from HDF5 files. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class HDF5DataLayer : public Layer { + public: + explicit HDF5DataLayer(const LayerParameter& param) + : Layer(param), offset_() {} + virtual ~HDF5DataLayer(); + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "HDF5Data"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + void Next(); + bool Skip(); + + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void LoadHDF5FileData(const char* filename); + + std::vector hdf_filenames_; + unsigned int num_files_; + unsigned int current_file_; + hsize_t current_row_; + std::vector > > hdf_blobs_; + std::vector data_permutation_; + std::vector file_permutation_; + uint64_t offset_; +}; + +} // namespace caffe + +#endif // CAFFE_HDF5_DATA_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/hdf5_output_layer.hpp b/3rdparty/caffe/include/caffe/layers/hdf5_output_layer.hpp new file mode 100644 index 00000000..061e279d --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/hdf5_output_layer.hpp @@ -0,0 +1,62 @@ +#ifndef CAFFE_HDF5_OUTPUT_LAYER_HPP_ +#define CAFFE_HDF5_OUTPUT_LAYER_HPP_ + +#include "hdf5.h" + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +#define HDF5_DATA_DATASET_NAME "data" +#define HDF5_DATA_LABEL_NAME "label" + +/** + * @brief Write blobs to disk as HDF5 files. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class HDF5OutputLayer : public Layer { + public: + explicit HDF5OutputLayer(const LayerParameter& param) + : Layer(param), file_opened_(false) {} + virtual ~HDF5OutputLayer(); + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "HDF5Output"; } + // TODO: no limit on the number of blobs + virtual inline int ExactNumBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 0; } + + inline std::string file_name() const { return file_name_; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void SaveBlobs(); + + bool file_opened_; + std::string file_name_; + hid_t file_id_; + Blob data_blob_; + Blob label_blob_; +}; + +} // namespace caffe + +#endif // CAFFE_HDF5_OUTPUT_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/hinge_loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/hinge_loss_layer.hpp new file mode 100644 index 00000000..54e42bd4 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/hinge_loss_layer.hpp @@ -0,0 +1,104 @@ +#ifndef CAFFE_HINGE_LOSS_LAYER_HPP_ +#define CAFFE_HINGE_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the hinge loss for a one-of-many classification task. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ t @f$, a Blob with values in + * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of + * the @f$ K = CHW @f$ classes. In an SVM, @f$ t @f$ is the result of + * taking the inner product @f$ X^T W @f$ of the D-dimensional features + * @f$ X \in \mathcal{R}^{D \times N} @f$ and the learned hyperplane + * parameters @f$ W \in \mathcal{R}^{D \times K} @f$, so a Net with just + * an InnerProductLayer (with num_output = D) providing predictions to a + * HingeLossLayer and no other learnable parameters or losses is + * equivalent to an SVM. + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed hinge loss: @f$ E = + * \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K + * [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p + * @f$, for the @f$ L^p @f$ norm + * (defaults to @f$ p = 1 @f$, the L1 norm; L2 norm, as in L2-SVM, + * is also available), and @f$ + * \delta\{\mathrm{condition}\} = \left\{ + * \begin{array}{lr} + * 1 & \mbox{if condition} \\ + * -1 & \mbox{otherwise} + * \end{array} \right. + * @f$ + * + * In an SVM, @f$ t \in \mathcal{R}^{N \times K} @f$ is the result of taking + * the inner product @f$ X^T W @f$ of the features + * @f$ X \in \mathcal{R}^{D \times N} @f$ + * and the learned hyperplane parameters + * @f$ W \in \mathcal{R}^{D \times K} @f$. So, a Net with just an + * InnerProductLayer (with num_output = @f$k@f$) providing predictions to a + * HingeLossLayer is equivalent to an SVM (assuming it has no other learned + * outside the InnerProductLayer and no other losses outside the + * HingeLossLayer). + */ +template +class HingeLossLayer : public LossLayer { + public: + explicit HingeLossLayer(const LayerParameter& param) + : LossLayer(param) {} + + virtual inline const char* type() const { return "HingeLoss"; } + + protected: + /// @copydoc HingeLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the hinge loss error gradient w.r.t. the predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$t@f$; Backward computes diff + * @f$ \frac{\partial E}{\partial t} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + + +} // namespace caffe + +#endif // CAFFE_HINGE_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/im2col_layer.hpp b/3rdparty/caffe/include/caffe/layers/im2col_layer.hpp new file mode 100644 index 00000000..71e32f74 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/im2col_layer.hpp @@ -0,0 +1,65 @@ +#ifndef CAFFE_IM2COL_LAYER_HPP_ +#define CAFFE_IM2COL_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief A helper for image operations that rearranges image regions into + * column vectors. Used by ConvolutionLayer to perform convolution + * by matrix multiplication. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class Im2colLayer : public Layer { + public: + explicit Im2colLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Im2col"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief The spatial dimensions of a filter kernel. + Blob kernel_shape_; + /// @brief The spatial dimensions of the stride. + Blob stride_; + /// @brief The spatial dimensions of the padding. + Blob pad_; + /// @brief The spatial dimensions of the dilation. + Blob dilation_; + + int num_spatial_axes_; + int bottom_dim_; + int top_dim_; + + int channel_axis_; + int num_; + int channels_; + + bool force_nd_im2col_; +}; + +} // namespace caffe + +#endif // CAFFE_IM2COL_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/image_data_layer.hpp b/3rdparty/caffe/include/caffe/layers/image_data_layer.hpp new file mode 100644 index 00000000..a0d3384e --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/image_data_layer.hpp @@ -0,0 +1,47 @@ +#ifndef CAFFE_IMAGE_DATA_LAYER_HPP_ +#define CAFFE_IMAGE_DATA_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net from image files. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class ImageDataLayer : public BasePrefetchingDataLayer { + public: + explicit ImageDataLayer(const LayerParameter& param) + : BasePrefetchingDataLayer(param) {} + virtual ~ImageDataLayer(); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "ImageData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + protected: + shared_ptr prefetch_rng_; + virtual void ShuffleImages(); + virtual void load_batch(Batch* batch); + + vector > lines_; + int lines_id_; +}; + + +} // namespace caffe + +#endif // CAFFE_IMAGE_DATA_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/infogain_loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/infogain_loss_layer.hpp new file mode 100644 index 00000000..edecde82 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/infogain_loss_layer.hpp @@ -0,0 +1,145 @@ +#ifndef CAFFE_INFOGAIN_LOSS_LAYER_HPP_ +#define CAFFE_INFOGAIN_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/softmax_layer.hpp" + +namespace caffe { + +/** + * @brief A generalization of MultinomialLogisticLossLayer that takes an + * "information gain" (infogain) matrix specifying the "value" of all label + * pairs. + * + * Equivalent to the MultinomialLogisticLossLayer if the infogain matrix is the + * identity. + * + * @param bottom input Blob vector (length 2-3) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$, a Blob with values in + * @f$ [0, 1] @f$ indicating the predicted probability of each of the + * @f$ K = CHW @f$ classes. Each prediction vector @f$ \hat{p}_n @f$ + * should sum to 1 as in a probability distribution: @f$ + * \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 @f$. + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * -# @f$ (1 \times 1 \times K \times K) @f$ + * (\b optional) the infogain matrix @f$ H @f$. This must be provided as + * the third bottom blob input if not provided as the infogain_mat in the + * InfogainLossParameter. If @f$ H = I @f$, this layer is equivalent to the + * MultinomialLogisticLossLayer. + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed infogain multinomial logistic loss: @f$ E = + * \frac{-1}{N} \sum\limits_{n=1}^N H_{l_n} \log(\hat{p}_n) = + * \frac{-1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^{K} H_{l_n,k} + * \log(\hat{p}_{n,k}) + * @f$, where @f$ H_{l_n} @f$ denotes row @f$l_n@f$ of @f$H@f$. + */ +template +class InfogainLossLayer : public LossLayer { + public: + explicit InfogainLossLayer(const LayerParameter& param) + : LossLayer(param), infogain_() {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should + // be the infogain matrix. (Otherwise the infogain matrix is loaded from a + // file specified by LayerParameter.) + virtual inline int ExactNumBottomBlobs() const { return -1; } + virtual inline int MinBottomBlobs() const { return 2; } + virtual inline int MaxBottomBlobs() const { return 3; } + + // InfogainLossLayer computes softmax prob internally. + // optional second "top" outputs the softmax prob + virtual inline int ExactNumTopBlobs() const { return -1; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlobs() const { return 2; } + + virtual inline const char* type() const { return "InfogainLoss"; } + + protected: + /// @copydoc InfogainLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the infogain loss error gradient w.r.t. the predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. (The same applies to the infogain matrix, if + * provided as bottom[2] rather than in the layer_param.) + * + * @param top output Blob vector (length 1), providing the error gradient + * with respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels (similarly for propagate_down[2] and the + * infogain matrix, if provided as bottom[2]) + * @param bottom input Blob vector (length 2-3) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$; Backward computes diff + * @f$ \frac{\partial E}{\partial \hat{p}} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + * -# @f$ (1 \times 1 \times K \times K) @f$ + * (\b optional) the information gain matrix -- ignored as its error + * gradient computation is not implemented. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// Read the normalization mode parameter and compute the normalizer based + /// on the blob size. If normalization_mode is VALID, the count of valid + /// outputs will be read from valid_count, unless it is -1 in which case + /// all outputs are assumed to be valid. + virtual Dtype get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count); + /// fill sum_rows_H_ according to matrix H + virtual void sum_rows_of_H(const Blob* H); + + /// The internal SoftmaxLayer used to map predictions to a distribution. + shared_ptr > softmax_layer_; + /// prob stores the output probability predictions from the SoftmaxLayer. + Blob prob_; + /// bottom vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_bottom_vec_; + /// top vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_top_vec_; + + Blob infogain_; + Blob sum_rows_H_; // cache the row sums of H. + + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; + /// How to normalize the output loss. + LossParameter_NormalizationMode normalization_; + + int infogain_axis_, outer_num_, inner_num_, num_labels_; +}; + +} // namespace caffe + +#endif // CAFFE_INFOGAIN_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/inner_product_layer.hpp b/3rdparty/caffe/include/caffe/layers/inner_product_layer.hpp new file mode 100644 index 00000000..18d0d619 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/inner_product_layer.hpp @@ -0,0 +1,52 @@ +#ifndef CAFFE_INNER_PRODUCT_LAYER_HPP_ +#define CAFFE_INNER_PRODUCT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Also known as a "fully-connected" layer, computes an inner product + * with a set of learned weights, and (optionally) adds biases. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class InnerProductLayer : public Layer { + public: + explicit InnerProductLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "InnerProduct"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int M_; + int K_; + int N_; + bool bias_term_; + Blob bias_multiplier_; + bool transpose_; ///< if true, assume transposed weights +}; + +} // namespace caffe + +#endif // CAFFE_INNER_PRODUCT_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/input_layer.hpp b/3rdparty/caffe/include/caffe/layers/input_layer.hpp new file mode 100644 index 00000000..0ffdc724 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/input_layer.hpp @@ -0,0 +1,42 @@ +#ifndef CAFFE_INPUT_LAYER_HPP_ +#define CAFFE_INPUT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net by assigning tops directly. + * + * This data layer is a container that merely holds the data assigned to it; + * forward, backward, and reshape are all no-ops. + */ +template +class InputLayer : public Layer { + public: + explicit InputLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "Input"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) {} + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} +}; + +} // namespace caffe + +#endif // CAFFE_INPUT_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/log_layer.hpp b/3rdparty/caffe/include/caffe/layers/log_layer.hpp new file mode 100644 index 00000000..7d037d2b --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/log_layer.hpp @@ -0,0 +1,82 @@ +#ifndef CAFFE_LOG_LAYER_HPP_ +#define CAFFE_LOG_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = log_{\gamma}(\alpha x + \beta) @f$, + * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, + * and base @f$ \gamma @f$. + */ +template +class LogLayer : public NeuronLayer { + public: + /** + * @param param provides LogParameter log_param, + * with LogLayer options: + * - scale (\b optional, default 1) the scale @f$ \alpha @f$ + * - shift (\b optional, default 0) the shift @f$ \beta @f$ + * - base (\b optional, default -1 for a value of @f$ e \approx 2.718 @f$) + * the base @f$ \gamma @f$ + */ + explicit LogLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Log"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = log_{\gamma}(\alpha x + \beta) + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the exp inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \frac{\partial E}{\partial y} y \alpha \log_e(gamma) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Dtype base_scale_; + Dtype input_scale_, input_shift_; + Dtype backward_num_scale_; +}; + +} // namespace caffe + +#endif // CAFFE_LOG_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/loss_layer.hpp new file mode 100644 index 00000000..dbdf612c --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/loss_layer.hpp @@ -0,0 +1,53 @@ +#ifndef CAFFE_LOSS_LAYER_HPP_ +#define CAFFE_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +const float kLOG_THRESHOLD = 1e-20; + +/** + * @brief An interface for Layer%s that take two Blob%s as input -- usually + * (1) predictions and (2) ground-truth labels -- and output a + * singleton Blob representing the loss. + * + * LossLayers are typically only capable of backpropagating to their first input + * -- the predictions. + */ +template +class LossLayer : public Layer { + public: + explicit LossLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp( + const vector*>& bottom, const vector*>& top); + virtual void Reshape( + const vector*>& bottom, const vector*>& top); + + virtual inline int ExactNumBottomBlobs() const { return 2; } + + /** + * @brief For convenience and backwards compatibility, instruct the Net to + * automatically allocate a single top Blob for LossLayers, into which + * they output their singleton loss, (even if the user didn't specify + * one in the prototxt, etc.). + */ + virtual inline bool AutoTopBlobs() const { return true; } + virtual inline int ExactNumTopBlobs() const { return 1; } + /** + * We usually cannot backpropagate to the labels; ignore force_backward for + * these inputs. + */ + virtual inline bool AllowForceBackward(const int bottom_index) const { + return bottom_index != 1; + } +}; + +} // namespace caffe + +#endif // CAFFE_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/lrn_layer.hpp b/3rdparty/caffe/include/caffe/layers/lrn_layer.hpp new file mode 100644 index 00000000..06cf71a9 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/lrn_layer.hpp @@ -0,0 +1,94 @@ +#ifndef CAFFE_LRN_LAYER_HPP_ +#define CAFFE_LRN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/eltwise_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/power_layer.hpp" +#include "caffe/layers/split_layer.hpp" + +namespace caffe { + +/** + * @brief Normalize the input in a local region across or within feature maps. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class LRNLayer : public Layer { + public: + explicit LRNLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "LRN"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + virtual void CrossChannelForward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void CrossChannelForward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void WithinChannelForward(const vector*>& bottom, + const vector*>& top); + virtual void CrossChannelBackward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void CrossChannelBackward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void WithinChannelBackward(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int size_; + int pre_pad_; + Dtype alpha_; + Dtype beta_; + Dtype k_; + int num_; + int channels_; + int height_; + int width_; + + // Fields used for normalization ACROSS_CHANNELS + // scale_ stores the intermediate summing results + Blob scale_; + + // Fields used for normalization WITHIN_CHANNEL + shared_ptr > split_layer_; + vector*> split_top_vec_; + shared_ptr > square_layer_; + Blob square_input_; + Blob square_output_; + vector*> square_bottom_vec_; + vector*> square_top_vec_; + shared_ptr > pool_layer_; + Blob pool_output_; + vector*> pool_top_vec_; + shared_ptr > power_layer_; + Blob power_output_; + vector*> power_top_vec_; + shared_ptr > product_layer_; + Blob product_input_; + vector*> product_bottom_vec_; +}; + +} // namespace caffe + +#endif // CAFFE_LRN_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/lstm_layer.hpp b/3rdparty/caffe/include/caffe/layers/lstm_layer.hpp new file mode 100644 index 00000000..a0e67c9d --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/lstm_layer.hpp @@ -0,0 +1,154 @@ +#ifndef CAFFE_LSTM_LAYER_HPP_ +#define CAFFE_LSTM_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/net.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +template class RecurrentLayer; + +/** + * @brief Processes sequential inputs using a "Long Short-Term Memory" (LSTM) + * [1] style recurrent neural network (RNN). Implemented by unrolling + * the LSTM computation through time. + * + * The specific architecture used in this implementation is as described in + * "Learning to Execute" [2], reproduced below: + * i_t := \sigmoid[ W_{hi} * h_{t-1} + W_{xi} * x_t + b_i ] + * f_t := \sigmoid[ W_{hf} * h_{t-1} + W_{xf} * x_t + b_f ] + * o_t := \sigmoid[ W_{ho} * h_{t-1} + W_{xo} * x_t + b_o ] + * g_t := \tanh[ W_{hg} * h_{t-1} + W_{xg} * x_t + b_g ] + * c_t := (f_t .* c_{t-1}) + (i_t .* g_t) + * h_t := o_t .* \tanh[c_t] + * In the implementation, the i, f, o, and g computations are performed as a + * single inner product. + * + * Notably, this implementation lacks the "diagonal" gates, as used in the + * LSTM architectures described by Alex Graves [3] and others. + * + * [1] Hochreiter, Sepp, and Schmidhuber, Jürgen. "Long short-term memory." + * Neural Computation 9, no. 8 (1997): 1735-1780. + * + * [2] Zaremba, Wojciech, and Sutskever, Ilya. "Learning to execute." + * arXiv preprint arXiv:1410.4615 (2014). + * + * [3] Graves, Alex. "Generating sequences with recurrent neural networks." + * arXiv preprint arXiv:1308.0850 (2013). + */ +template +class LSTMLayer : public RecurrentLayer { + public: + explicit LSTMLayer(const LayerParameter& param) + : RecurrentLayer(param) {} + + virtual inline const char* type() const { return "LSTM"; } + + protected: + virtual void FillUnrolledNet(NetParameter* net_param) const; + virtual void RecurrentInputBlobNames(vector* names) const; + virtual void RecurrentOutputBlobNames(vector* names) const; + virtual void RecurrentInputShapes(vector* shapes) const; + virtual void OutputBlobNames(vector* names) const; +}; + +/** + * @brief A helper for LSTMLayer: computes a single timestep of the + * non-linearity of the LSTM, producing the updated cell and hidden + * states. + */ +template +class LSTMUnitLayer : public Layer { + public: + explicit LSTMUnitLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "LSTMUnit"; } + virtual inline int ExactNumBottomBlobs() const { return 3; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + virtual inline bool AllowForceBackward(const int bottom_index) const { + // Can't propagate to sequence continuation indicators. + return bottom_index != 2; + } + + protected: + /** + * @param bottom input Blob vector (length 3) + * -# @f$ (1 \times N \times D) @f$ + * the previous timestep cell state @f$ c_{t-1} @f$ + * -# @f$ (1 \times N \times 4D) @f$ + * the "gate inputs" @f$ [i_t', f_t', o_t', g_t'] @f$ + * -# @f$ (1 \times N) @f$ + * the sequence continuation indicators @f$ \delta_t @f$ + * @param top output Blob vector (length 2) + * -# @f$ (1 \times N \times D) @f$ + * the updated cell state @f$ c_t @f$, computed as: + * i_t := \sigmoid[i_t'] + * f_t := \sigmoid[f_t'] + * o_t := \sigmoid[o_t'] + * g_t := \tanh[g_t'] + * c_t := cont_t * (f_t .* c_{t-1}) + (i_t .* g_t) + * -# @f$ (1 \times N \times D) @f$ + * the updated hidden state @f$ h_t @f$, computed as: + * h_t := o_t .* \tanh[c_t] + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the LSTMUnit inputs. + * + * @param top output Blob vector (length 2), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times N \times D) @f$: + * containing error gradients @f$ \frac{\partial E}{\partial c_t} @f$ + * with respect to the updated cell state @f$ c_t @f$ + * -# @f$ (1 \times N \times D) @f$: + * containing error gradients @f$ \frac{\partial E}{\partial h_t} @f$ + * with respect to the updated cell state @f$ h_t @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 3), into which the error gradients + * with respect to the LSTMUnit inputs @f$ c_{t-1} @f$ and the gate + * inputs are computed. Computatation of the error gradients w.r.t. + * the sequence indicators is not implemented. + * -# @f$ (1 \times N \times D) @f$ + * the error gradient w.r.t. the previous timestep cell state + * @f$ c_{t-1} @f$ + * -# @f$ (1 \times N \times 4D) @f$ + * the error gradient w.r.t. the "gate inputs" + * @f$ [ + * \frac{\partial E}{\partial i_t} + * \frac{\partial E}{\partial f_t} + * \frac{\partial E}{\partial o_t} + * \frac{\partial E}{\partial g_t} + * ] @f$ + * -# @f$ (1 \times 1 \times N) @f$ + * the gradient w.r.t. the sequence continuation indicators + * @f$ \delta_t @f$ is currently not computed. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief The hidden and output dimension. + int hidden_dim_; + Blob X_acts_; +}; + +} // namespace caffe + +#endif // CAFFE_LSTM_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/memory_data_layer.hpp b/3rdparty/caffe/include/caffe/layers/memory_data_layer.hpp new file mode 100644 index 00000000..8abcc8c1 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/memory_data_layer.hpp @@ -0,0 +1,63 @@ +#ifndef CAFFE_MEMORY_DATA_LAYER_HPP_ +#define CAFFE_MEMORY_DATA_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_data_layer.hpp" + +namespace caffe { + +/** + * @brief Provides data to the Net from memory. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class MemoryDataLayer : public BaseDataLayer { + public: + explicit MemoryDataLayer(const LayerParameter& param) + : BaseDataLayer(param), has_new_data_(false) {} + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "MemoryData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + virtual void AddDatumVector(const vector& datum_vector); +#ifdef USE_OPENCV + virtual void AddMatVector(const vector& mat_vector, + const vector& labels); +#endif // USE_OPENCV + + // Reset should accept const pointers, but can't, because the memory + // will be given to Blob, which is mutable + void Reset(Dtype* data, Dtype* label, int n); + void set_batch_size(int new_size); + + int batch_size() { return batch_size_; } + int channels() { return channels_; } + int height() { return height_; } + int width() { return width_; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + int batch_size_, channels_, height_, width_, size_; + Dtype* data_; + Dtype* labels_; + int n_; + size_t pos_; + Blob added_data_; + Blob added_label_; + bool has_new_data_; +}; + +} // namespace caffe + +#endif // CAFFE_MEMORY_DATA_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/multinomial_logistic_loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/multinomial_logistic_loss_layer.hpp new file mode 100644 index 00000000..3977cf9e --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/multinomial_logistic_loss_layer.hpp @@ -0,0 +1,92 @@ +#ifndef CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_ +#define CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the multinomial logistic loss for a one-of-many + * classification task, directly taking a predicted probability + * distribution as input. + * + * When predictions are not already a probability distribution, you should + * instead use the SoftmaxWithLossLayer, which maps predictions to a + * distribution using the SoftmaxLayer, before computing the multinomial + * logistic loss. The SoftmaxWithLossLayer should be preferred over separate + * SoftmaxLayer + MultinomialLogisticLossLayer + * as its gradient computation is more numerically stable. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$, a Blob with values in + * @f$ [0, 1] @f$ indicating the predicted probability of each of the + * @f$ K = CHW @f$ classes. Each prediction vector @f$ \hat{p}_n @f$ + * should sum to 1 as in a probability distribution: @f$ + * \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 @f$. + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed multinomial logistic loss: @f$ E = + * \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) + * @f$ + */ +template +class MultinomialLogisticLossLayer : public LossLayer { + public: + explicit MultinomialLogisticLossLayer(const LayerParameter& param) + : LossLayer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "MultinomialLogisticLoss"; } + + protected: + /// @copydoc MultinomialLogisticLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the multinomial logistic loss error gradient w.r.t. the + * predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$; Backward computes diff + * @f$ \frac{\partial E}{\partial \hat{p}} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/mvn_layer.hpp b/3rdparty/caffe/include/caffe/layers/mvn_layer.hpp new file mode 100644 index 00000000..3a235cec --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/mvn_layer.hpp @@ -0,0 +1,48 @@ +#ifndef CAFFE_MVN_LAYER_HPP_ +#define CAFFE_MVN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Normalizes the input to have 0-mean and/or unit (1) variance. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class MVNLayer : public Layer { + public: + explicit MVNLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "MVN"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob mean_, variance_, temp_; + + /// sum_multiplier is used to carry out sum using BLAS + Blob sum_multiplier_; + Dtype eps_; +}; + +} // namespace caffe + +#endif // CAFFE_MVN_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/neuron_layer.hpp b/3rdparty/caffe/include/caffe/layers/neuron_layer.hpp new file mode 100644 index 00000000..10c108ce --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/neuron_layer.hpp @@ -0,0 +1,32 @@ +#ifndef CAFFE_NEURON_LAYER_HPP_ +#define CAFFE_NEURON_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief An interface for layers that take one blob as input (@f$ x @f$) + * and produce one equally-sized blob as output (@f$ y @f$), where + * each element of the output depends only on the corresponding input + * element. + */ +template +class NeuronLayer : public Layer { + public: + explicit NeuronLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } +}; + +} // namespace caffe + +#endif // CAFFE_NEURON_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/parameter_layer.hpp b/3rdparty/caffe/include/caffe/layers/parameter_layer.hpp new file mode 100644 index 00000000..188b92ac --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/parameter_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_PARAMETER_LAYER_HPP_ +#define CAFFE_PARAMETER_LAYER_HPP_ + +#include + +#include "caffe/layer.hpp" + +namespace caffe { + +template +class ParameterLayer : public Layer { + public: + explicit ParameterLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top) { + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + this->blobs_.resize(1); + this->blobs_[0].reset(new Blob()); + this->blobs_[0]->Reshape(this->layer_param_.parameter_param().shape()); + } + top[0]->Reshape(this->layer_param_.parameter_param().shape()); + } + virtual void Reshape(const vector*>& bottom, + const vector*>& top) { } + virtual inline const char* type() const { return "Parameter"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) { + top[0]->ShareData(*(this->blobs_[0])); + top[0]->ShareDiff(*(this->blobs_[0])); + } + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) + { } +}; + +} // namespace caffe + +#endif diff --git a/3rdparty/caffe/include/caffe/layers/pooling_layer.hpp b/3rdparty/caffe/include/caffe/layers/pooling_layer.hpp new file mode 100644 index 00000000..f4d6803b --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/pooling_layer.hpp @@ -0,0 +1,60 @@ +#ifndef CAFFE_POOLING_LAYER_HPP_ +#define CAFFE_POOLING_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Pools the input image by taking the max, average, etc. within regions. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class PoolingLayer : public Layer { + public: + explicit PoolingLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Pooling"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + // MAX POOL layers can output an extra top blob for the mask; + // others can only output the pooled inputs. + virtual inline int MaxTopBlobs() const { + return (this->layer_param_.pooling_param().pool() == + PoolingParameter_PoolMethod_MAX) ? 2 : 1; + } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int kernel_h_, kernel_w_; + int stride_h_, stride_w_; + int pad_h_, pad_w_; + int channels_; + int height_, width_; + int pooled_height_, pooled_width_; + bool global_pooling_; + Blob rand_idx_; + Blob max_idx_; +}; + +} // namespace caffe + +#endif // CAFFE_POOLING_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/power_layer.hpp b/3rdparty/caffe/include/caffe/layers/power_layer.hpp new file mode 100644 index 00000000..6ecbafca --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/power_layer.hpp @@ -0,0 +1,89 @@ +#ifndef CAFFE_POWER_LAYER_HPP_ +#define CAFFE_POWER_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = (\alpha x + \beta) ^ \gamma @f$, + * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, + * and power @f$ \gamma @f$. + */ +template +class PowerLayer : public NeuronLayer { + public: + /** + * @param param provides PowerParameter power_param, + * with PowerLayer options: + * - scale (\b optional, default 1) the scale @f$ \alpha @f$ + * - shift (\b optional, default 0) the shift @f$ \beta @f$ + * - power (\b optional, default 1) the power @f$ \gamma @f$ + */ + explicit PowerLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Power"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = (\alpha x + \beta) ^ \gamma + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the power inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \frac{\partial E}{\partial y} + * \alpha \gamma (\alpha x + \beta) ^ {\gamma - 1} = + * \frac{\partial E}{\partial y} + * \frac{\alpha \gamma y}{\alpha x + \beta} + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief @f$ \gamma @f$ from layer_param_.power_param() + Dtype power_; + /// @brief @f$ \alpha @f$ from layer_param_.power_param() + Dtype scale_; + /// @brief @f$ \beta @f$ from layer_param_.power_param() + Dtype shift_; + /// @brief Result of @f$ \alpha \gamma @f$ + Dtype diff_scale_; +}; + +} // namespace caffe + +#endif // CAFFE_POWER_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/prelu_layer.hpp b/3rdparty/caffe/include/caffe/layers/prelu_layer.hpp new file mode 100644 index 00000000..3ddfb484 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/prelu_layer.hpp @@ -0,0 +1,101 @@ +#ifndef CAFFE_PRELU_LAYER_HPP_ +#define CAFFE_PRELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Parameterized Rectified Linear Unit non-linearity @f$ + * y_i = \max(0, x_i) + a_i \min(0, x_i) + * @f$. The differences from ReLULayer are 1) negative slopes are + * learnable though backprop and 2) negative slopes can vary across + * channels. The number of axes of input blob should be greater than or + * equal to 2. The 1st axis (0-based) is seen as channels. + */ +template +class PReLULayer : public NeuronLayer { + public: + /** + * @param param provides PReLUParameter prelu_param, + * with PReLULayer options: + * - filler (\b optional, FillerParameter, + * default {'type': constant 'value':0.25}). + * - channel_shared (\b optional, default false). + * negative slopes are shared across channels. + */ + explicit PReLULayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "PReLU"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the computed outputs for each channel @f$i@f$ @f$ + * y_i = \max(0, x_i) + a_i \min(0, x_i) + * @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the PReLU inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times ...) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the inputs @f$ x @f$; For each channel @f$i@f$, backward fills their + * diff with gradients @f$ + * \frac{\partial E}{\partial x_i} = \left\{ + * \begin{array}{lr} + * a_i \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i \le 0 \\ + * \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i > 0 + * \end{array} \right. + * @f$. + * If param_propagate_down_[0] is true, it fills the diff with gradients + * @f$ + * \frac{\partial E}{\partial a_i} = \left\{ + * \begin{array}{lr} + * \sum_{x_i} x_i \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i \le 0 \\ + * 0 & \mathrm{if} \; x_i > 0 + * \end{array} \right. + * @f$. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool channel_shared_; + Blob multiplier_; // dot multiplier for backward computation of params + Blob backward_buff_; // temporary buffer for backward computation + Blob bottom_memory_; // memory for in-place computation +}; + +} // namespace caffe + +#endif // CAFFE_PRELU_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/python_layer.hpp b/3rdparty/caffe/include/caffe/layers/python_layer.hpp new file mode 100644 index 00000000..1407d921 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/python_layer.hpp @@ -0,0 +1,55 @@ +#ifndef CAFFE_PYTHON_LAYER_HPP_ +#define CAFFE_PYTHON_LAYER_HPP_ + +#include +#include + +#include "caffe/layer.hpp" + +namespace bp = boost::python; + +namespace caffe { + +template +class PythonLayer : public Layer { + public: + PythonLayer(PyObject* self, const LayerParameter& param) + : Layer(param), self_(bp::handle<>(bp::borrowed(self))) { } + + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top) { + // Disallow PythonLayer in MultiGPU training stage, due to GIL issues + // Details: https://github.com/BVLC/caffe/issues/2936 + if (this->phase_ == TRAIN && Caffe::solver_count() > 1 + && !Caffe::multiprocess()) { + LOG(FATAL) << "PythonLayer does not support CLI Multi-GPU, use train.py"; + } + self_.attr("param_str") = bp::str( + this->layer_param_.python_param().param_str()); + self_.attr("phase") = static_cast(this->phase_); + self_.attr("setup")(bottom, top); + } + virtual void Reshape(const vector*>& bottom, + const vector*>& top) { + self_.attr("reshape")(bottom, top); + } + + virtual inline const char* type() const { return "Python"; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) { + self_.attr("forward")(bottom, top); + } + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + self_.attr("backward")(top, propagate_down, bottom); + } + + private: + bp::object self_; +}; + +} // namespace caffe + +#endif diff --git a/3rdparty/caffe/include/caffe/layers/recurrent_layer.hpp b/3rdparty/caffe/include/caffe/layers/recurrent_layer.hpp new file mode 100644 index 00000000..ca17371b --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/recurrent_layer.hpp @@ -0,0 +1,187 @@ +#ifndef CAFFE_RECURRENT_LAYER_HPP_ +#define CAFFE_RECURRENT_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/net.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/format.hpp" + +namespace caffe { + +template class RecurrentLayer; + +/** + * @brief An abstract class for implementing recurrent behavior inside of an + * unrolled network. This Layer type cannot be instantiated -- instead, + * you should use one of its implementations which defines the recurrent + * architecture, such as RNNLayer or LSTMLayer. + */ +template +class RecurrentLayer : public Layer { + public: + explicit RecurrentLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual void Reset(); + + virtual inline const char* type() const { return "Recurrent"; } + virtual inline int MinBottomBlobs() const { + int min_bottoms = 2; + if (this->layer_param_.recurrent_param().expose_hidden()) { + vector inputs; + this->RecurrentInputBlobNames(&inputs); + min_bottoms += inputs.size(); + } + return min_bottoms; + } + virtual inline int MaxBottomBlobs() const { return MinBottomBlobs() + 1; } + virtual inline int ExactNumTopBlobs() const { + int num_tops = 1; + if (this->layer_param_.recurrent_param().expose_hidden()) { + vector outputs; + this->RecurrentOutputBlobNames(&outputs); + num_tops += outputs.size(); + } + return num_tops; + } + + virtual inline bool AllowForceBackward(const int bottom_index) const { + // Can't propagate to sequence continuation indicators. + return bottom_index != 1; + } + + protected: + /** + * @brief Fills net_param with the recurrent network architecture. Subclasses + * should define this -- see RNNLayer and LSTMLayer for examples. + */ + virtual void FillUnrolledNet(NetParameter* net_param) const = 0; + + /** + * @brief Fills names with the names of the 0th timestep recurrent input + * Blob&s. Subclasses should define this -- see RNNLayer and LSTMLayer + * for examples. + */ + virtual void RecurrentInputBlobNames(vector* names) const = 0; + + /** + * @brief Fills shapes with the shapes of the recurrent input Blob&s. + * Subclasses should define this -- see RNNLayer and LSTMLayer + * for examples. + */ + virtual void RecurrentInputShapes(vector* shapes) const = 0; + + /** + * @brief Fills names with the names of the Tth timestep recurrent output + * Blob&s. Subclasses should define this -- see RNNLayer and LSTMLayer + * for examples. + */ + virtual void RecurrentOutputBlobNames(vector* names) const = 0; + + /** + * @brief Fills names with the names of the output blobs, concatenated across + * all timesteps. Should return a name for each top Blob. + * Subclasses should define this -- see RNNLayer and LSTMLayer for + * examples. + */ + virtual void OutputBlobNames(vector* names) const = 0; + + /** + * @param bottom input Blob vector (length 2-3) + * + * -# @f$ (T \times N \times ...) @f$ + * the time-varying input @f$ x @f$. After the first two axes, whose + * dimensions must correspond to the number of timesteps @f$ T @f$ and + * the number of independent streams @f$ N @f$, respectively, its + * dimensions may be arbitrary. Note that the ordering of dimensions -- + * @f$ (T \times N \times ...) @f$, rather than + * @f$ (N \times T \times ...) @f$ -- means that the @f$ N @f$ + * independent input streams must be "interleaved". + * + * -# @f$ (T \times N) @f$ + * the sequence continuation indicators @f$ \delta @f$. + * These inputs should be binary (0 or 1) indicators, where + * @f$ \delta_{t,n} = 0 @f$ means that timestep @f$ t @f$ of stream + * @f$ n @f$ is the beginning of a new sequence, and hence the previous + * hidden state @f$ h_{t-1} @f$ is multiplied by @f$ \delta_t = 0 @f$ + * and has no effect on the cell's output at timestep @f$ t @f$, and + * a value of @f$ \delta_{t,n} = 1 @f$ means that timestep @f$ t @f$ of + * stream @f$ n @f$ is a continuation from the previous timestep + * @f$ t-1 @f$, and the previous hidden state @f$ h_{t-1} @f$ affects the + * updated hidden state and output. + * + * -# @f$ (N \times ...) @f$ (optional) + * the static (non-time-varying) input @f$ x_{static} @f$. + * After the first axis, whose dimension must be the number of + * independent streams, its dimensions may be arbitrary. + * This is mathematically equivalent to using a time-varying input of + * @f$ x'_t = [x_t; x_{static}] @f$ -- i.e., tiling the static input + * across the @f$ T @f$ timesteps and concatenating with the time-varying + * input. Note that if this input is used, all timesteps in a single + * batch within a particular one of the @f$ N @f$ streams must share the + * same static input, even if the sequence continuation indicators + * suggest that difference sequences are ending and beginning within a + * single batch. This may require padding and/or truncation for uniform + * length. + * + * @param top output Blob vector (length 1) + * -# @f$ (T \times N \times D) @f$ + * the time-varying output @f$ y @f$, where @f$ D @f$ is + * recurrent_param.num_output(). + * Refer to documentation for particular RecurrentLayer implementations + * (such as RNNLayer and LSTMLayer) for the definition of @f$ y @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief A Net to implement the Recurrent functionality. + shared_ptr > unrolled_net_; + + /// @brief The number of independent streams to process simultaneously. + int N_; + + /** + * @brief The number of timesteps in the layer's input, and the number of + * timesteps over which to backpropagate through time. + */ + int T_; + + /// @brief Whether the layer has a "static" input copied across all timesteps. + bool static_input_; + + /** + * @brief The last layer to run in the network. (Any later layers are losses + * added to force the recurrent net to do backprop.) + */ + int last_layer_index_; + + /** + * @brief Whether the layer's hidden state at the first and last timesteps + * are layer inputs and outputs, respectively. + */ + bool expose_hidden_; + + vector* > recur_input_blobs_; + vector* > recur_output_blobs_; + vector* > output_blobs_; + Blob* x_input_blob_; + Blob* x_static_input_blob_; + Blob* cont_input_blob_; +}; + +} // namespace caffe + +#endif // CAFFE_RECURRENT_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/reduction_layer.hpp b/3rdparty/caffe/include/caffe/layers/reduction_layer.hpp new file mode 100644 index 00000000..804a495b --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/reduction_layer.hpp @@ -0,0 +1,59 @@ +#ifndef CAFFE_REDUCTION_LAYER_HPP_ +#define CAFFE_REDUCTION_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Compute "reductions" -- operations that return a scalar output Blob + * for an input Blob of arbitrary size, such as the sum, absolute sum, + * and sum of squares. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class ReductionLayer : public Layer { + public: + explicit ReductionLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Reduction"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief the reduction operation performed by the layer + ReductionParameter_ReductionOp op_; + /// @brief a scalar coefficient applied to all outputs + Dtype coeff_; + /// @brief the index of the first input axis to reduce + int axis_; + /// @brief the number of reductions performed + int num_; + /// @brief the input size of each reduction + int dim_; + /// @brief a helper Blob used for summation (op_ == SUM) + Blob sum_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_REDUCTION_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/relu_layer.hpp b/3rdparty/caffe/include/caffe/layers/relu_layer.hpp new file mode 100644 index 00000000..d7a73f7a --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/relu_layer.hpp @@ -0,0 +1,85 @@ +#ifndef CAFFE_RELU_LAYER_HPP_ +#define CAFFE_RELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Rectified Linear Unit non-linearity @f$ y = \max(0, x) @f$. + * The simple max is fast to compute, and the function does not saturate. + */ +template +class ReLULayer : public NeuronLayer { + public: + /** + * @param param provides ReLUParameter relu_param, + * with ReLULayer options: + * - negative_slope (\b optional, default 0). + * the value @f$ \nu @f$ by which negative values are multiplied. + */ + explicit ReLULayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "ReLU"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \max(0, x) + * @f$ by default. If a non-zero negative_slope @f$ \nu @f$ is provided, + * the computed outputs are @f$ y = \max(0, x) + \nu \min(0, x) @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the ReLU inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = \left\{ + * \begin{array}{lr} + * 0 & \mathrm{if} \; x \le 0 \\ + * \frac{\partial E}{\partial y} & \mathrm{if} \; x > 0 + * \end{array} \right. + * @f$ if propagate_down[0], by default. + * If a non-zero negative_slope @f$ \nu @f$ is provided, + * the computed gradients are @f$ + * \frac{\partial E}{\partial x} = \left\{ + * \begin{array}{lr} + * \nu \frac{\partial E}{\partial y} & \mathrm{if} \; x \le 0 \\ + * \frac{\partial E}{\partial y} & \mathrm{if} \; x > 0 + * \end{array} \right. + * @f$. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_RELU_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/reshape_layer.hpp b/3rdparty/caffe/include/caffe/layers/reshape_layer.hpp new file mode 100644 index 00000000..d11e0638 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/reshape_layer.hpp @@ -0,0 +1,52 @@ +#ifndef CAFFE_XXX_LAYER_HPP_ +#define CAFFE_XXX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/* + * @brief Reshapes the input Blob into an arbitrary-sized output Blob. + * + * Note: similarly to FlattenLayer, this layer does not change the input values + * (see FlattenLayer, Blob::ShareData and Blob::ShareDiff). + */ +template +class ReshapeLayer : public Layer { + public: + explicit ReshapeLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Reshape"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) {} + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + + /// @brief vector of axes indices whose dimensions we'll copy from the bottom + vector copy_axes_; + /// @brief the index of the axis whose dimension we infer, or -1 if none + int inferred_axis_; + /// @brief the product of the "constant" output dimensions + int constant_count_; +}; + +} // namespace caffe + +#endif // CAFFE_XXX_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/rnn_layer.hpp b/3rdparty/caffe/include/caffe/layers/rnn_layer.hpp new file mode 100644 index 00000000..6dce238a --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/rnn_layer.hpp @@ -0,0 +1,47 @@ +#ifndef CAFFE_RNN_LAYER_HPP_ +#define CAFFE_RNN_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/net.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +template class RecurrentLayer; + +/** + * @brief Processes time-varying inputs using a simple recurrent neural network + * (RNN). Implemented as a network unrolling the RNN computation in time. + * + * Given time-varying inputs @f$ x_t @f$, computes hidden state @f$ + * h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] + * @f$, and outputs @f$ + * o_t := \tanh[ W_{ho} h_t + b_o ] + * @f$. + */ +template +class RNNLayer : public RecurrentLayer { + public: + explicit RNNLayer(const LayerParameter& param) + : RecurrentLayer(param) {} + + virtual inline const char* type() const { return "RNN"; } + + protected: + virtual void FillUnrolledNet(NetParameter* net_param) const; + virtual void RecurrentInputBlobNames(vector* names) const; + virtual void RecurrentOutputBlobNames(vector* names) const; + virtual void RecurrentInputShapes(vector* shapes) const; + virtual void OutputBlobNames(vector* names) const; +}; + +} // namespace caffe + +#endif // CAFFE_RNN_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/scale_layer.hpp b/3rdparty/caffe/include/caffe/layers/scale_layer.hpp new file mode 100644 index 00000000..45b714d4 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/scale_layer.hpp @@ -0,0 +1,85 @@ +#ifndef CAFFE_SCALE_LAYER_HPP_ +#define CAFFE_SCALE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/bias_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the elementwise product of two input Blobs, with the shape of + * the latter Blob "broadcast" to match the shape of the former. + * Equivalent to tiling the latter Blob, then computing the elementwise + * product. Note: for efficiency and convenience, this layer can + * additionally perform a "broadcast" sum too when `bias_term: true` + * is set. + * + * The latter, scale input may be omitted, in which case it's learned as + * parameter of the layer (as is the bias, if it is included). + */ +template +class ScaleLayer: public Layer { + public: + explicit ScaleLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Scale"; } + // Scale + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int MaxBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * In the below shape specifications, @f$ i @f$ denotes the value of the + * `axis` field given by `this->layer_param_.scale_param().axis()`, after + * canonicalization (i.e., conversion from negative to positive index, + * if applicable). + * + * @param bottom input Blob vector (length 2) + * -# @f$ (d_0 \times ... \times + * d_i \times ... \times d_j \times ... \times d_n) @f$ + * the first factor @f$ x @f$ + * -# @f$ (d_i \times ... \times d_j) @f$ + * the second factor @f$ y @f$ + * @param top output Blob vector (length 1) + * -# @f$ (d_0 \times ... \times + * d_i \times ... \times d_j \times ... \times d_n) @f$ + * the product @f$ z = x y @f$ computed after "broadcasting" y. + * Equivalent to tiling @f$ y @f$ to have the same shape as @f$ x @f$, + * then computing the elementwise product. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + shared_ptr > bias_layer_; + vector*> bias_bottom_vec_; + vector bias_propagate_down_; + int bias_param_id_; + + Blob sum_multiplier_; + Blob sum_result_; + Blob temp_; + int axis_; + int outer_dim_, scale_dim_, inner_dim_; +}; + + +} // namespace caffe + +#endif // CAFFE_SCALE_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp new file mode 100644 index 00000000..3d925244 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp @@ -0,0 +1,128 @@ +#ifndef CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ +#define CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the cross-entropy (logistic) loss @f$ + * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ + * p_n \log \hat{p}_n + + * (1 - p_n) \log(1 - \hat{p}_n) + * \right] + * @f$, often used for predicting targets interpreted as probabilities. + * + * This layer is implemented rather than separate + * SigmoidLayer + CrossEntropyLayer + * as its gradient computation is more numerically stable. + * At test time, this layer can be replaced simply by a SigmoidLayer. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the scores @f$ x \in [-\infty, +\infty]@f$, + * which this layer maps to probability predictions + * @f$ \hat{p}_n = \sigma(x_n) \in [0, 1] @f$ + * using the sigmoid function @f$ \sigma(.) @f$ (see SigmoidLayer). + * -# @f$ (N \times C \times H \times W) @f$ + * the targets @f$ y \in [0, 1] @f$ + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed cross-entropy loss: @f$ + * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ + * p_n \log \hat{p}_n + (1 - p_n) \log(1 - \hat{p}_n) + * \right] + * @f$ + */ +template +class SigmoidCrossEntropyLossLayer : public LossLayer { + public: + explicit SigmoidCrossEntropyLossLayer(const LayerParameter& param) + : LossLayer(param), + sigmoid_layer_(new SigmoidLayer(param)), + sigmoid_output_(new Blob()) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "SigmoidCrossEntropyLoss"; } + + protected: + /// @copydoc SigmoidCrossEntropyLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the sigmoid cross-entropy loss error gradient w.r.t. the + * predictions. + * + * Gradients cannot be computed with respect to the target inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as gradient computation with respect + * to the targets is not implemented. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$x@f$; Backward computes diff + * @f$ \frac{\partial E}{\partial x} = + * \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) + * @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// Read the normalization mode parameter and compute the normalizer based + /// on the blob size. If normalization_mode is VALID, the count of valid + /// outputs will be read from valid_count, unless it is -1 in which case + /// all outputs are assumed to be valid. + virtual Dtype get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count); + + /// The internal SigmoidLayer used to map predictions to probabilities. + shared_ptr > sigmoid_layer_; + /// sigmoid_output stores the output of the SigmoidLayer. + shared_ptr > sigmoid_output_; + /// bottom vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_bottom_vec_; + /// top vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_top_vec_; + + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; + /// How to normalize the loss. + LossParameter_NormalizationMode normalization_; + Dtype normalizer_; + int outer_num_, inner_num_; +}; + +} // namespace caffe + +#endif // CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/sigmoid_layer.hpp b/3rdparty/caffe/include/caffe/layers/sigmoid_layer.hpp new file mode 100644 index 00000000..ac0f6927 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/sigmoid_layer.hpp @@ -0,0 +1,71 @@ +#ifndef CAFFE_SIGMOID_LAYER_HPP_ +#define CAFFE_SIGMOID_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Sigmoid function non-linearity @f$ + * y = (1 + \exp(-x))^{-1} + * @f$, a classic choice in neural networks. + * + * Note that the gradient vanishes as the values move away from 0. + * The ReLULayer is often a better choice for this reason. + */ +template +class SigmoidLayer : public NeuronLayer { + public: + explicit SigmoidLayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "Sigmoid"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = (1 + \exp(-x))^{-1} + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the sigmoid inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} + * = \frac{\partial E}{\partial y} y (1 - y) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_SIGMOID_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/silence_layer.hpp b/3rdparty/caffe/include/caffe/layers/silence_layer.hpp new file mode 100644 index 00000000..fba087fc --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/silence_layer.hpp @@ -0,0 +1,43 @@ +#ifndef CAFFE_SILENCE_LAYER_HPP_ +#define CAFFE_SILENCE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Ignores bottom blobs while producing no top blobs. (This is useful + * to suppress outputs during testing.) + */ +template +class SilenceLayer : public Layer { + public: + explicit SilenceLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "Silence"; } + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 0; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) {} + // We can't define Forward_gpu here, since STUB_GPU will provide + // its own definition for CPU_ONLY mode. + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_SILENCE_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/slice_layer.hpp b/3rdparty/caffe/include/caffe/layers/slice_layer.hpp new file mode 100644 index 00000000..10a0abb6 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/slice_layer.hpp @@ -0,0 +1,51 @@ +#ifndef CAFFE_SLICE_LAYER_HPP_ +#define CAFFE_SLICE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes a Blob and slices it along either the num or channel dimension, + * outputting multiple sliced Blob results. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class SliceLayer : public Layer { + public: + explicit SliceLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Slice"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int count_; + int num_slices_; + int slice_size_; + int slice_axis_; + vector slice_point_; +}; + +} // namespace caffe + +#endif // CAFFE_SLICE_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/softmax_layer.hpp b/3rdparty/caffe/include/caffe/layers/softmax_layer.hpp new file mode 100644 index 00000000..c65b8703 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/softmax_layer.hpp @@ -0,0 +1,50 @@ +#ifndef CAFFE_SOFTMAX_LAYER_HPP_ +#define CAFFE_SOFTMAX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Computes the softmax function. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class SoftmaxLayer : public Layer { + public: + explicit SoftmaxLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Softmax"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int outer_num_; + int inner_num_; + int softmax_axis_; + /// sum_multiplier is used to carry out sum using BLAS + Blob sum_multiplier_; + /// scale is an intermediate Blob to hold temporary results. + Blob scale_; +}; + +} // namespace caffe + +#endif // CAFFE_SOFTMAX_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/softmax_loss_layer.hpp b/3rdparty/caffe/include/caffe/layers/softmax_loss_layer.hpp new file mode 100644 index 00000000..f07e8a02 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/softmax_loss_layer.hpp @@ -0,0 +1,130 @@ +#ifndef CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_ +#define CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/softmax_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the multinomial logistic loss for a one-of-many + * classification task, passing real-valued predictions through a + * softmax to get a probability distribution over classes. + * + * This layer should be preferred over separate + * SoftmaxLayer + MultinomialLogisticLossLayer + * as its gradient computation is more numerically stable. + * At test time, this layer can be replaced simply by a SoftmaxLayer. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ x @f$, a Blob with values in + * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of + * the @f$ K = CHW @f$ classes. This layer maps these scores to a + * probability distribution over classes using the softmax function + * @f$ \hat{p}_{nk} = \exp(x_{nk}) / + * \left[\sum_{k'} \exp(x_{nk'})\right] @f$ (see SoftmaxLayer). + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed cross-entropy classification loss: @f$ E = + * \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) + * @f$, for softmax output class probabilites @f$ \hat{p} @f$ + */ +template +class SoftmaxWithLossLayer : public LossLayer { + public: + /** + * @param param provides LossParameter loss_param, with options: + * - ignore_label (optional) + * Specify a label value that should be ignored when computing the loss. + * - normalize (optional, default true) + * If true, the loss is normalized by the number of (nonignored) labels + * present; otherwise the loss is simply summed over spatial locations. + */ + explicit SoftmaxWithLossLayer(const LayerParameter& param) + : LossLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "SoftmaxWithLoss"; } + virtual inline int ExactNumTopBlobs() const { return -1; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlobs() const { return 2; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + /** + * @brief Computes the softmax loss error gradient w.r.t. the predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ x @f$; Backward computes diff + * @f$ \frac{\partial E}{\partial x} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// Read the normalization mode parameter and compute the normalizer based + /// on the blob size. If normalization_mode is VALID, the count of valid + /// outputs will be read from valid_count, unless it is -1 in which case + /// all outputs are assumed to be valid. + virtual Dtype get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count); + + /// The internal SoftmaxLayer used to map predictions to a distribution. + shared_ptr > softmax_layer_; + /// prob stores the output probability predictions from the SoftmaxLayer. + Blob prob_; + /// bottom vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_bottom_vec_; + /// top vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_top_vec_; + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; + /// How to normalize the output loss. + LossParameter_NormalizationMode normalization_; + + int softmax_axis_, outer_num_, inner_num_; +}; + +} // namespace caffe + +#endif // CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/split_layer.hpp b/3rdparty/caffe/include/caffe/layers/split_layer.hpp new file mode 100644 index 00000000..8140dfc7 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/split_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_SPLIT_LAYER_HPP_ +#define CAFFE_SPLIT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Creates a "split" path in the network by copying the bottom Blob + * into multiple top Blob%s to be used by multiple consuming layers. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class SplitLayer : public Layer { + public: + explicit SplitLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Split"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int count_; +}; + +} // namespace caffe + +#endif // CAFFE_SPLIT_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/spp_layer.hpp b/3rdparty/caffe/include/caffe/layers/spp_layer.hpp new file mode 100644 index 00000000..9f145cc7 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/spp_layer.hpp @@ -0,0 +1,76 @@ +#ifndef CAFFE_SPP_LAYER_HPP_ +#define CAFFE_SPP_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Does spatial pyramid pooling on the input image + * by taking the max, average, etc. within regions + * so that the result vector of different sized + * images are of the same size. + */ +template +class SPPLayer : public Layer { + public: + explicit SPPLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "SPP"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + // calculates the kernel and stride dimensions for the pooling layer, + // returns a correctly configured LayerParameter for a PoolingLayer + virtual LayerParameter GetPoolingParam(const int pyramid_level, + const int bottom_h, const int bottom_w, const SPPParameter spp_param); + + int pyramid_height_; + int bottom_h_, bottom_w_; + int num_; + int channels_; + int kernel_h_, kernel_w_; + int pad_h_, pad_w_; + bool reshaped_first_time_; + + /// the internal Split layer that feeds the pooling layers + shared_ptr > split_layer_; + /// top vector holder used in call to the underlying SplitLayer::Forward + vector*> split_top_vec_; + /// bottom vector holder used in call to the underlying PoolingLayer::Forward + vector*>*> pooling_bottom_vecs_; + /// the internal Pooling layers of different kernel sizes + vector > > pooling_layers_; + /// top vector holders used in call to the underlying PoolingLayer::Forward + vector*>*> pooling_top_vecs_; + /// pooling_outputs stores the outputs of the PoolingLayers + vector*> pooling_outputs_; + /// the internal Flatten layers that the Pooling layers feed into + vector*> flatten_layers_; + /// top vector holders used in call to the underlying FlattenLayer::Forward + vector*>*> flatten_top_vecs_; + /// flatten_outputs stores the outputs of the FlattenLayers + vector*> flatten_outputs_; + /// bottom vector holder used in call to the underlying ConcatLayer::Forward + vector*> concat_bottom_vec_; + /// the internal Concat layers that the Flatten layers feed into + shared_ptr > concat_layer_; +}; + +} // namespace caffe + +#endif // CAFFE_SPP_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/tanh_layer.hpp b/3rdparty/caffe/include/caffe/layers/tanh_layer.hpp new file mode 100644 index 00000000..8f95e932 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/tanh_layer.hpp @@ -0,0 +1,73 @@ +#ifndef CAFFE_TANH_LAYER_HPP_ +#define CAFFE_TANH_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief TanH hyperbolic tangent non-linearity @f$ + * y = \frac{\exp(2x) - 1}{\exp(2x) + 1} + * @f$, popular in auto-encoders. + * + * Note that the gradient vanishes as the values move away from 0. + * The ReLULayer is often a better choice for this reason. + */ +template +class TanHLayer : public NeuronLayer { + public: + explicit TanHLayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "TanH"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \frac{\exp(2x) - 1}{\exp(2x) + 1} + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the sigmoid inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} + * = \frac{\partial E}{\partial y} + * \left(1 - \left[\frac{\exp(2x) - 1}{exp(2x) + 1} \right]^2 \right) + * = \frac{\partial E}{\partial y} (1 - y^2) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_TANH_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/threshold_layer.hpp b/3rdparty/caffe/include/caffe/layers/threshold_layer.hpp new file mode 100644 index 00000000..3bf4db63 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/threshold_layer.hpp @@ -0,0 +1,64 @@ +#ifndef CAFFE_THRESHOLD_LAYER_HPP_ +#define CAFFE_THRESHOLD_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Tests whether the input exceeds a threshold: outputs 1 for inputs + * above threshold; 0 otherwise. + */ +template +class ThresholdLayer : public NeuronLayer { + public: + /** + * @param param provides ThresholdParameter threshold_param, + * with ThresholdLayer options: + * - threshold (\b optional, default 0). + * the threshold value @f$ t @f$ to which the input values are compared. + */ + explicit ThresholdLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Threshold"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \left\{ + * \begin{array}{lr} + * 0 & \mathrm{if} \; x \le t \\ + * 1 & \mathrm{if} \; x > t + * \end{array} \right. + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + /// @brief Not implemented (non-differentiable function) + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + NOT_IMPLEMENTED; + } + + Dtype threshold_; +}; + +} // namespace caffe + +#endif // CAFFE_THRESHOLD_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/tile_layer.hpp b/3rdparty/caffe/include/caffe/layers/tile_layer.hpp new file mode 100644 index 00000000..fbdbe2f0 --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/tile_layer.hpp @@ -0,0 +1,43 @@ +#ifndef CAFFE_TILE_LAYER_HPP_ +#define CAFFE_TILE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Copy a Blob along specified dimensions. + */ +template +class TileLayer : public Layer { + public: + explicit TileLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Tile"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + unsigned int axis_, tiles_, outer_dim_, inner_dim_; +}; + +} // namespace caffe + +#endif // CAFFE_TILE_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/layers/window_data_layer.hpp b/3rdparty/caffe/include/caffe/layers/window_data_layer.hpp new file mode 100644 index 00000000..b9b66b7c --- /dev/null +++ b/3rdparty/caffe/include/caffe/layers/window_data_layer.hpp @@ -0,0 +1,56 @@ +#ifndef CAFFE_WINDOW_DATA_LAYER_HPP_ +#define CAFFE_WINDOW_DATA_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net from windows of images files, specified + * by a window data file. This layer is *DEPRECATED* and only kept for + * archival purposes for use by the original R-CNN. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class WindowDataLayer : public BasePrefetchingDataLayer { + public: + explicit WindowDataLayer(const LayerParameter& param) + : BasePrefetchingDataLayer(param) {} + virtual ~WindowDataLayer(); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "WindowData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + protected: + virtual unsigned int PrefetchRand(); + virtual void load_batch(Batch* batch); + + shared_ptr prefetch_rng_; + vector > > image_database_; + enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM }; + vector > fg_windows_; + vector > bg_windows_; + Blob data_mean_; + vector mean_values_; + bool has_mean_file_; + bool has_mean_values_; + bool cache_images_; + vector > image_database_cache_; +}; + +} // namespace caffe + +#endif // CAFFE_WINDOW_DATA_LAYER_HPP_ diff --git a/3rdparty/caffe/include/caffe/net.hpp b/3rdparty/caffe/include/caffe/net.hpp new file mode 100644 index 00000000..d3c9306e --- /dev/null +++ b/3rdparty/caffe/include/caffe/net.hpp @@ -0,0 +1,345 @@ +#ifndef CAFFE_NET_HPP_ +#define CAFFE_NET_HPP_ + +#include +#include +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Connects Layer%s together into a directed acyclic graph (DAG) + * specified by a NetParameter. + * + * TODO(dox): more thorough description. + */ +template +class Net { + public: + explicit Net(const NetParameter& param); + explicit Net(const string& param_file, Phase phase, + const int level = 0, const vector* stages = NULL); + virtual ~Net() {} + + /// @brief Initialize a network with a NetParameter. + void Init(const NetParameter& param); + + /** + * @brief Run Forward and return the result. + * + */ + const vector*>& Forward(Dtype* loss = NULL); + /// @brief DEPRECATED; use Forward() instead. + const vector*>& ForwardPrefilled(Dtype* loss = NULL) { + LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: ForwardPrefilled() " + << "will be removed in a future version. Use Forward()."; + return Forward(loss); + } + + /** + * The From and To variants of Forward and Backward operate on the + * (topological) ordering by which the net is specified. For general DAG + * networks, note that (1) computing from one layer to another might entail + * extra computation on unrelated branches, and (2) computation starting in + * the middle may be incorrect if all of the layers of a fan-in are not + * included. + */ + Dtype ForwardFromTo(int start, int end); + Dtype ForwardFrom(int start); + Dtype ForwardTo(int end); + /// @brief DEPRECATED; set input blobs then use Forward() instead. + const vector*>& Forward(const vector* > & bottom, + Dtype* loss = NULL); + + /** + * @brief Zeroes out the diffs of all net parameters. + * Should be run before Backward. + */ + void ClearParamDiffs(); + + /** + * The network backward should take no input and output, since it solely + * computes the gradient w.r.t the parameters, and the data has already been + * provided during the forward pass. + */ + void Backward(); + void BackwardFromTo(int start, int end); + void BackwardFrom(int start); + void BackwardTo(int end); + + /** + * @brief Reshape all layers from bottom to top. + * + * This is useful to propagate changes to layer sizes without running + * a forward pass, e.g. to compute output feature size. + */ + void Reshape(); + + Dtype ForwardBackward() { + Dtype loss; + Forward(&loss); + Backward(); + return loss; + } + + /// @brief Updates the network weights based on the diff values computed. + void Update(); + /** + * @brief Shares weight data of owner blobs with shared blobs. + * + * Note: this is called by Net::Init, and thus should normally not be + * called manually. + */ + void ShareWeights(); + + /** + * @brief For an already initialized net, implicitly copies (i.e., using no + * additional memory) the pre-trained layers from another Net. + */ + void ShareTrainedLayersWith(const Net* other); + // For an already initialized net, CopyTrainedLayersFrom() copies the already + // trained layers from another net parameter instance. + /** + * @brief For an already initialized net, copies the pre-trained layers from + * another Net. + */ + void CopyTrainedLayersFrom(const NetParameter& param); + void CopyTrainedLayersFrom(const string trained_filename); + void CopyTrainedLayersFromBinaryProto(const string trained_filename); + void CopyTrainedLayersFromHDF5(const string trained_filename); + /// @brief Writes the net to a proto. + void ToProto(NetParameter* param, bool write_diff = false) const; + /// @brief Writes the net to an HDF5 file. + void ToHDF5(const string& filename, bool write_diff = false) const; + + /// @brief returns the network name. + inline const string& name() const { return name_; } + /// @brief returns the layer names + inline const vector& layer_names() const { return layer_names_; } + /// @brief returns the blob names + inline const vector& blob_names() const { return blob_names_; } + /// @brief returns the blobs + inline const vector > >& blobs() const { + return blobs_; + } + /// @brief returns the layers + inline const vector > >& layers() const { + return layers_; + } + /// @brief returns the phase: TRAIN or TEST + inline Phase phase() const { return phase_; } + /** + * @brief returns the bottom vecs for each layer -- usually you won't + * need this unless you do per-layer checks such as gradients. + */ + inline const vector*> >& bottom_vecs() const { + return bottom_vecs_; + } + /** + * @brief returns the top vecs for each layer -- usually you won't + * need this unless you do per-layer checks such as gradients. + */ + inline const vector*> >& top_vecs() const { + return top_vecs_; + } + /// @brief returns the ids of the top blobs of layer i + inline const vector & top_ids(int i) const { + CHECK_GE(i, 0) << "Invalid layer id"; + CHECK_LT(i, top_id_vecs_.size()) << "Invalid layer id"; + return top_id_vecs_[i]; + } + /// @brief returns the ids of the bottom blobs of layer i + inline const vector & bottom_ids(int i) const { + CHECK_GE(i, 0) << "Invalid layer id"; + CHECK_LT(i, bottom_id_vecs_.size()) << "Invalid layer id"; + return bottom_id_vecs_[i]; + } + inline const vector >& bottom_need_backward() const { + return bottom_need_backward_; + } + inline const vector& blob_loss_weights() const { + return blob_loss_weights_; + } + inline const vector& layer_need_backward() const { + return layer_need_backward_; + } + /// @brief returns the parameters + inline const vector > >& params() const { + return params_; + } + inline const vector*>& learnable_params() const { + return learnable_params_; + } + /// @brief returns the learnable parameter learning rate multipliers + inline const vector& params_lr() const { return params_lr_; } + inline const vector& has_params_lr() const { return has_params_lr_; } + /// @brief returns the learnable parameter decay multipliers + inline const vector& params_weight_decay() const { + return params_weight_decay_; + } + inline const vector& has_params_decay() const { + return has_params_decay_; + } + const map& param_names_index() const { + return param_names_index_; + } + inline const vector& param_owners() const { return param_owners_; } + inline const vector& param_display_names() const { + return param_display_names_; + } + /// @brief Input and output blob numbers + inline int num_inputs() const { return net_input_blobs_.size(); } + inline int num_outputs() const { return net_output_blobs_.size(); } + inline const vector*>& input_blobs() const { + return net_input_blobs_; + } + inline const vector*>& output_blobs() const { + return net_output_blobs_; + } + inline const vector& input_blob_indices() const { + return net_input_blob_indices_; + } + inline const vector& output_blob_indices() const { + return net_output_blob_indices_; + } + bool has_blob(const string& blob_name) const; + const shared_ptr > blob_by_name(const string& blob_name) const; + bool has_layer(const string& layer_name) const; + const shared_ptr > layer_by_name(const string& layer_name) const; + + void set_debug_info(const bool value) { debug_info_ = value; } + + // Helpers for Init. + /** + * @brief Remove layers that the user specified should be excluded given the current + * phase, level, and stage. + */ + static void FilterNet(const NetParameter& param, + NetParameter* param_filtered); + /// @brief return whether NetState state meets NetStateRule rule + static bool StateMeetsRule(const NetState& state, const NetStateRule& rule, + const string& layer_name); + + // Invoked at specific points during an iteration + class Callback { + protected: + virtual void run(int layer) = 0; + + template + friend class Net; + }; + const vector& before_forward() const { return before_forward_; } + void add_before_forward(Callback* value) { + before_forward_.push_back(value); + } + const vector& after_forward() const { return after_forward_; } + void add_after_forward(Callback* value) { + after_forward_.push_back(value); + } + const vector& before_backward() const { return before_backward_; } + void add_before_backward(Callback* value) { + before_backward_.push_back(value); + } + const vector& after_backward() const { return after_backward_; } + void add_after_backward(Callback* value) { + after_backward_.push_back(value); + } + + protected: + // Helpers for Init. + /// @brief Append a new top blob to the net. + void AppendTop(const NetParameter& param, const int layer_id, + const int top_id, set* available_blobs, + map* blob_name_to_idx); + /// @brief Append a new bottom blob to the net. + int AppendBottom(const NetParameter& param, const int layer_id, + const int bottom_id, set* available_blobs, + map* blob_name_to_idx); + /// @brief Append a new parameter blob to the net. + void AppendParam(const NetParameter& param, const int layer_id, + const int param_id); + + /// @brief Helper for displaying debug info in Forward. + void ForwardDebugInfo(const int layer_id); + /// @brief Helper for displaying debug info in Backward. + void BackwardDebugInfo(const int layer_id); + /// @brief Helper for displaying debug info in Update. + void UpdateDebugInfo(const int param_id); + + /// @brief The network name + string name_; + /// @brief The phase: TRAIN or TEST + Phase phase_; + /// @brief Individual layers in the net + vector > > layers_; + vector layer_names_; + map layer_names_index_; + vector layer_need_backward_; + /// @brief the blobs storing intermediate results between the layer. + vector > > blobs_; + vector blob_names_; + map blob_names_index_; + vector blob_need_backward_; + /// bottom_vecs stores the vectors containing the input for each layer. + /// They don't actually host the blobs (blobs_ does), so we simply store + /// pointers. + vector*> > bottom_vecs_; + vector > bottom_id_vecs_; + vector > bottom_need_backward_; + /// top_vecs stores the vectors containing the output for each layer + vector*> > top_vecs_; + vector > top_id_vecs_; + /// Vector of weight in the loss (or objective) function of each net blob, + /// indexed by blob_id. + vector blob_loss_weights_; + vector > param_id_vecs_; + vector param_owners_; + vector param_display_names_; + vector > param_layer_indices_; + map param_names_index_; + /// blob indices for the input and the output of the net + vector net_input_blob_indices_; + vector net_output_blob_indices_; + vector*> net_input_blobs_; + vector*> net_output_blobs_; + /// The parameters in the network. + vector > > params_; + vector*> learnable_params_; + /** + * The mapping from params_ -> learnable_params_: we have + * learnable_param_ids_.size() == params_.size(), + * and learnable_params_[learnable_param_ids_[i]] == params_[i].get() + * if and only if params_[i] is an "owner"; otherwise, params_[i] is a sharer + * and learnable_params_[learnable_param_ids_[i]] gives its owner. + */ + vector learnable_param_ids_; + /// the learning rate multipliers for learnable_params_ + vector params_lr_; + vector has_params_lr_; + /// the weight decay multipliers for learnable_params_ + vector params_weight_decay_; + vector has_params_decay_; + /// The bytes of memory used by this net + size_t memory_used_; + /// Whether to compute and display debug info for the net. + bool debug_info_; + // Callbacks + vector before_forward_; + vector after_forward_; + vector before_backward_; + vector after_backward_; + +DISABLE_COPY_AND_ASSIGN(Net); +}; + + +} // namespace caffe + +#endif // CAFFE_NET_HPP_ diff --git a/3rdparty/caffe/include/caffe/parallel.hpp b/3rdparty/caffe/include/caffe/parallel.hpp new file mode 100644 index 00000000..64bb48e6 --- /dev/null +++ b/3rdparty/caffe/include/caffe/parallel.hpp @@ -0,0 +1,123 @@ +#ifndef CAFFE_PARALLEL_HPP_ +#define CAFFE_PARALLEL_HPP_ + +#ifdef USE_NCCL + +#include + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/solver.hpp" +#include "caffe/syncedmem.hpp" +#include "caffe/util/blocking_queue.hpp" +#include "caffe/util/nccl.hpp" + +namespace caffe { + +// Represents a net parameters. Once a net is created, its parameter buffers can +// be replaced by ones from Params, to allow parallelization. Params ensures +// parameters are allocated in one consecutive array. +template +class Params { + public: + explicit Params(shared_ptr > root_solver); + virtual ~Params() { + } + + inline size_t size() const { + return size_; + } + inline Dtype* data() const { + return data_; + } + inline Dtype* diff() const { + return diff_; + } + + protected: + const size_t size_; // Size of buffers + Dtype* data_; // Network parameters + Dtype* diff_; // Gradient + +DISABLE_COPY_AND_ASSIGN(Params); +}; + +// Params stored in GPU memory. +template +class GPUParams : public Params { + public: + GPUParams(shared_ptr > root_solver, int device); + virtual ~GPUParams(); + + void Configure(Solver* solver) const; + + protected: + using Params::size_; + using Params::data_; + using Params::diff_; +}; + +template +class NCCL : public GPUParams, + public Solver::Callback, + public Net::Callback { + public: + /** + * Single process version. + */ + explicit NCCL(shared_ptr > solver); + /** + * In multi-process settings, first create a NCCL id (new_uid), then + * pass it to each process to create connected instances. + */ + NCCL(shared_ptr > solver, const string& uid); + ~NCCL(); + + boost::barrier* barrier(); + void set_barrier(boost::barrier* value); + + /** + * In single process settings, create instances without uids and + * call this to connect them. + */ + static void InitSingleProcess(vector*>* nccls); + + static string new_uid(); + + /** + * Broadcast weights from rank 0 other solvers. + */ + void Broadcast(); + + /** + * Single process multi-GPU. + */ + void Run(const vector& gpus, const char* restore); + + protected: + void Init(); + void on_start() {} + void run(int layer); // Net callback + void on_gradients_ready(); + + ncclComm_t comm_; + cudaStream_t stream_; + + shared_ptr > solver_; + // Should not be necessary, https://github.com/NVIDIA/nccl/issues/37 + boost::barrier* barrier_; + using Params::size_; + using Params::data_; + using Params::diff_; +}; + +} // namespace caffe + +#endif // USE_NCCL +#endif // header diff --git a/3rdparty/caffe/include/caffe/sgd_solvers.hpp b/3rdparty/caffe/include/caffe/sgd_solvers.hpp new file mode 100644 index 00000000..1fc52d87 --- /dev/null +++ b/3rdparty/caffe/include/caffe/sgd_solvers.hpp @@ -0,0 +1,148 @@ +#ifndef CAFFE_SGD_SOLVERS_HPP_ +#define CAFFE_SGD_SOLVERS_HPP_ + +#include +#include + +#include "caffe/solver.hpp" + +namespace caffe { + +/** + * @brief Optimizes the parameters of a Net using + * stochastic gradient descent (SGD) with momentum. + */ +template +class SGDSolver : public Solver { + public: + explicit SGDSolver(const SolverParameter& param) + : Solver(param) { PreSolve(); } + explicit SGDSolver(const string& param_file) + : Solver(param_file) { PreSolve(); } + virtual inline const char* type() const { return "SGD"; } + + const vector > >& history() { return history_; } + + protected: + void PreSolve(); + Dtype GetLearningRate(); + virtual void ApplyUpdate(); + virtual void Normalize(int param_id); + virtual void Regularize(int param_id); + virtual void ComputeUpdateValue(int param_id, Dtype rate); + virtual void ClipGradients(); + virtual void SnapshotSolverState(const string& model_filename); + virtual void SnapshotSolverStateToBinaryProto(const string& model_filename); + virtual void SnapshotSolverStateToHDF5(const string& model_filename); + virtual void RestoreSolverStateFromHDF5(const string& state_file); + virtual void RestoreSolverStateFromBinaryProto(const string& state_file); + // history maintains the historical momentum data. + // update maintains update related data and is not needed in snapshots. + // temp maintains other information that might be needed in computation + // of gradients/updates and is not needed in snapshots + vector > > history_, update_, temp_; + + DISABLE_COPY_AND_ASSIGN(SGDSolver); +}; + +template +class NesterovSolver : public SGDSolver { + public: + explicit NesterovSolver(const SolverParameter& param) + : SGDSolver(param) {} + explicit NesterovSolver(const string& param_file) + : SGDSolver(param_file) {} + virtual inline const char* type() const { return "Nesterov"; } + + protected: + virtual void ComputeUpdateValue(int param_id, Dtype rate); + + DISABLE_COPY_AND_ASSIGN(NesterovSolver); +}; + +template +class AdaGradSolver : public SGDSolver { + public: + explicit AdaGradSolver(const SolverParameter& param) + : SGDSolver(param) { constructor_sanity_check(); } + explicit AdaGradSolver(const string& param_file) + : SGDSolver(param_file) { constructor_sanity_check(); } + virtual inline const char* type() const { return "AdaGrad"; } + + protected: + virtual void ComputeUpdateValue(int param_id, Dtype rate); + void constructor_sanity_check() { + CHECK_EQ(0, this->param_.momentum()) + << "Momentum cannot be used with AdaGrad."; + } + + DISABLE_COPY_AND_ASSIGN(AdaGradSolver); +}; + + +template +class RMSPropSolver : public SGDSolver { + public: + explicit RMSPropSolver(const SolverParameter& param) + : SGDSolver(param) { constructor_sanity_check(); } + explicit RMSPropSolver(const string& param_file) + : SGDSolver(param_file) { constructor_sanity_check(); } + virtual inline const char* type() const { return "RMSProp"; } + + protected: + virtual void ComputeUpdateValue(int param_id, Dtype rate); + void constructor_sanity_check() { + CHECK_EQ(0, this->param_.momentum()) + << "Momentum cannot be used with RMSProp."; + CHECK_GE(this->param_.rms_decay(), 0) + << "rms_decay should lie between 0 and 1."; + CHECK_LT(this->param_.rms_decay(), 1) + << "rms_decay should lie between 0 and 1."; + } + + DISABLE_COPY_AND_ASSIGN(RMSPropSolver); +}; + +template +class AdaDeltaSolver : public SGDSolver { + public: + explicit AdaDeltaSolver(const SolverParameter& param) + : SGDSolver(param) { AdaDeltaPreSolve(); } + explicit AdaDeltaSolver(const string& param_file) + : SGDSolver(param_file) { AdaDeltaPreSolve(); } + virtual inline const char* type() const { return "AdaDelta"; } + + protected: + void AdaDeltaPreSolve(); + virtual void ComputeUpdateValue(int param_id, Dtype rate); + + DISABLE_COPY_AND_ASSIGN(AdaDeltaSolver); +}; + +/** + * @brief AdamSolver, an algorithm for first-order gradient-based optimization + * of stochastic objective functions, based on adaptive estimates of + * lower-order moments. Described in [1]. + * + * [1] D. P. Kingma and J. L. Ba, "ADAM: A Method for Stochastic Optimization." + * arXiv preprint arXiv:1412.6980v8 (2014). + */ +template +class AdamSolver : public SGDSolver { + public: + explicit AdamSolver(const SolverParameter& param) + : SGDSolver(param) { AdamPreSolve();} + explicit AdamSolver(const string& param_file) + : SGDSolver(param_file) { AdamPreSolve(); } + virtual inline const char* type() const { return "Adam"; } + + protected: + void AdamPreSolve(); + virtual void ComputeUpdateValue(int param_id, Dtype rate); + + DISABLE_COPY_AND_ASSIGN(AdamSolver); +}; + +} // namespace caffe + +#endif // CAFFE_SGD_SOLVERS_HPP_ diff --git a/3rdparty/caffe/include/caffe/solver.hpp b/3rdparty/caffe/include/caffe/solver.hpp new file mode 100644 index 00000000..a28d8cb8 --- /dev/null +++ b/3rdparty/caffe/include/caffe/solver.hpp @@ -0,0 +1,137 @@ +#ifndef CAFFE_SOLVER_HPP_ +#define CAFFE_SOLVER_HPP_ +#include +#include +#include + +#include "caffe/net.hpp" +#include "caffe/solver_factory.hpp" +#include "caffe/util/benchmark.hpp" + +namespace caffe { + +/** + * @brief Enumeration of actions that a client of the Solver may request by + * implementing the Solver's action request function, which a + * client may optionally provide in order to request early termination + * or saving a snapshot without exiting. In the executable caffe, this + * mechanism is used to allow the snapshot to be saved when stopping + * execution with a SIGINT (Ctrl-C). + */ + namespace SolverAction { + enum Enum { + NONE = 0, // Take no special action. + STOP = 1, // Stop training. snapshot_after_train controls whether a + // snapshot is created. + SNAPSHOT = 2 // Take a snapshot, and keep training. + }; + } + +/** + * @brief Type of a function that returns a Solver Action enumeration. + */ +typedef boost::function ActionCallback; + +/** + * @brief An interface for classes that perform optimization on Net%s. + * + * Requires implementation of ApplyUpdate to compute a parameter update + * given the current state of the Net parameters. + */ +template +class Solver { + public: + explicit Solver(const SolverParameter& param); + explicit Solver(const string& param_file); + void Init(const SolverParameter& param); + void InitTrainNet(); + void InitTestNets(); + + // Client of the Solver optionally may call this in order to set the function + // that the solver uses to see what action it should take (e.g. snapshot or + // exit training early). + void SetActionFunction(ActionCallback func); + SolverAction::Enum GetRequestedAction(); + // The main entry of the solver function. In default, iter will be zero. Pass + // in a non-zero iter number to resume training for a pre-trained net. + virtual void Solve(const char* resume_file = NULL); + inline void Solve(const string resume_file) { Solve(resume_file.c_str()); } + void Step(int iters); + // The Restore method simply dispatches to one of the + // RestoreSolverStateFrom___ protected methods. You should implement these + // methods to restore the state from the appropriate snapshot type. + void Restore(const char* resume_file); + // The Solver::Snapshot function implements the basic snapshotting utility + // that stores the learned net. You should implement the SnapshotSolverState() + // function that produces a SolverState protocol buffer that needs to be + // written to disk together with the learned net. + void Snapshot(); + virtual ~Solver() {} + inline const SolverParameter& param() const { return param_; } + inline shared_ptr > net() { return net_; } + inline const vector > >& test_nets() { + return test_nets_; + } + int iter() const { return iter_; } + + // Invoked at specific points during an iteration + class Callback { + protected: + virtual void on_start() = 0; + virtual void on_gradients_ready() = 0; + + template + friend class Solver; + }; + const vector& callbacks() const { return callbacks_; } + void add_callback(Callback* value) { + callbacks_.push_back(value); + } + + void CheckSnapshotWritePermissions(); + /** + * @brief Returns the solver type. + */ + virtual inline const char* type() const { return ""; } + + protected: + // Make and apply the update value for the current iteration. + virtual void ApplyUpdate() = 0; + string SnapshotFilename(const string extension); + string SnapshotToBinaryProto(); + string SnapshotToHDF5(); + // The test routine + void TestAll(); + void Test(const int test_net_id = 0); + virtual void SnapshotSolverState(const string& model_filename) = 0; + virtual void RestoreSolverStateFromHDF5(const string& state_file) = 0; + virtual void RestoreSolverStateFromBinaryProto(const string& state_file) = 0; + void DisplayOutputBlobs(const int net_id); + void UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss); + + SolverParameter param_; + int iter_; + int current_step_; + shared_ptr > net_; + vector > > test_nets_; + vector callbacks_; + vector losses_; + Dtype smoothed_loss_; + + // A function that can be set by a client of the Solver to provide indication + // that it wants a snapshot saved and/or to exit early. + ActionCallback action_request_function_; + + // True iff a request to stop early was received. + bool requested_early_exit_; + + // Timing information, handy to tune e.g. nbr of GPUs + Timer iteration_timer_; + float iterations_last_; + + DISABLE_COPY_AND_ASSIGN(Solver); +}; + +} // namespace caffe + +#endif // CAFFE_SOLVER_HPP_ diff --git a/3rdparty/caffe/include/caffe/solver_factory.hpp b/3rdparty/caffe/include/caffe/solver_factory.hpp new file mode 100644 index 00000000..a5b16073 --- /dev/null +++ b/3rdparty/caffe/include/caffe/solver_factory.hpp @@ -0,0 +1,137 @@ +/** + * @brief A solver factory that allows one to register solvers, similar to + * layer factory. During runtime, registered solvers could be called by passing + * a SolverParameter protobuffer to the CreateSolver function: + * + * SolverRegistry::CreateSolver(param); + * + * There are two ways to register a solver. Assuming that we have a solver like: + * + * template + * class MyAwesomeSolver : public Solver { + * // your implementations + * }; + * + * and its type is its C++ class name, but without the "Solver" at the end + * ("MyAwesomeSolver" -> "MyAwesome"). + * + * If the solver is going to be created simply by its constructor, in your C++ + * file, add the following line: + * + * REGISTER_SOLVER_CLASS(MyAwesome); + * + * Or, if the solver is going to be created by another creator function, in the + * format of: + * + * template + * Solver GetMyAwesomeSolver(const SolverParameter& param) { + * // your implementation + * } + * + * then you can register the creator function instead, like + * + * REGISTER_SOLVER_CREATOR(MyAwesome, GetMyAwesomeSolver) + * + * Note that each solver type should only be registered once. + */ + +#ifndef CAFFE_SOLVER_FACTORY_H_ +#define CAFFE_SOLVER_FACTORY_H_ + +#include +#include +#include + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +template +class Solver; + +template +class SolverRegistry { + public: + typedef Solver* (*Creator)(const SolverParameter&); + typedef std::map CreatorRegistry; + + static CreatorRegistry& Registry() { + static CreatorRegistry* g_registry_ = new CreatorRegistry(); + return *g_registry_; + } + + // Adds a creator. + static void AddCreator(const string& type, Creator creator) { + CreatorRegistry& registry = Registry(); + CHECK_EQ(registry.count(type), 0) + << "Solver type " << type << " already registered."; + registry[type] = creator; + } + + // Get a solver using a SolverParameter. + static Solver* CreateSolver(const SolverParameter& param) { + const string& type = param.type(); + CreatorRegistry& registry = Registry(); + CHECK_EQ(registry.count(type), 1) << "Unknown solver type: " << type + << " (known types: " << SolverTypeListString() << ")"; + return registry[type](param); + } + + static vector SolverTypeList() { + CreatorRegistry& registry = Registry(); + vector solver_types; + for (typename CreatorRegistry::iterator iter = registry.begin(); + iter != registry.end(); ++iter) { + solver_types.push_back(iter->first); + } + return solver_types; + } + + private: + // Solver registry should never be instantiated - everything is done with its + // static variables. + SolverRegistry() {} + + static string SolverTypeListString() { + vector solver_types = SolverTypeList(); + string solver_types_str; + for (vector::iterator iter = solver_types.begin(); + iter != solver_types.end(); ++iter) { + if (iter != solver_types.begin()) { + solver_types_str += ", "; + } + solver_types_str += *iter; + } + return solver_types_str; + } +}; + + +template +class SolverRegisterer { + public: + SolverRegisterer(const string& type, + Solver* (*creator)(const SolverParameter&)) { + // LOG(INFO) << "Registering solver type: " << type; + SolverRegistry::AddCreator(type, creator); + } +}; + + +#define REGISTER_SOLVER_CREATOR(type, creator) \ + static SolverRegisterer g_creator_f_##type(#type, creator); \ + static SolverRegisterer g_creator_d_##type(#type, creator) \ + +#define REGISTER_SOLVER_CLASS(type) \ + template \ + Solver* Creator_##type##Solver( \ + const SolverParameter& param) \ + { \ + return new type##Solver(param); \ + } \ + REGISTER_SOLVER_CREATOR(type, Creator_##type##Solver) + +} // namespace caffe + +#endif // CAFFE_SOLVER_FACTORY_H_ diff --git a/3rdparty/caffe/include/caffe/syncedmem.hpp b/3rdparty/caffe/include/caffe/syncedmem.hpp new file mode 100644 index 00000000..317ce29a --- /dev/null +++ b/3rdparty/caffe/include/caffe/syncedmem.hpp @@ -0,0 +1,95 @@ +#ifndef CAFFE_SYNCEDMEM_HPP_ +#define CAFFE_SYNCEDMEM_HPP_ + +#include + +#ifdef USE_MKL + #include "mkl.h" +#endif + +#include "caffe/common.hpp" + +namespace caffe { + +// If CUDA is available and in GPU mode, host memory will be allocated pinned, +// using cudaMallocHost. It avoids dynamic pinning for transfers (DMA). +// The improvement in performance seems negligible in the single GPU case, +// but might be more significant for parallel training. Most importantly, +// it improved stability for large models on many GPUs. +inline void CaffeMallocHost(void** ptr, size_t size, bool* use_cuda) { +#ifndef CPU_ONLY + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaMallocHost(ptr, size)); + *use_cuda = true; + return; + } +#endif +#ifdef USE_MKL + *ptr = mkl_malloc(size ? size:1, 64); +#else + *ptr = malloc(size); +#endif + *use_cuda = false; + CHECK(*ptr) << "host allocation of size " << size << " failed"; +} + +inline void CaffeFreeHost(void* ptr, bool use_cuda) { +#ifndef CPU_ONLY + if (use_cuda) { + CUDA_CHECK(cudaFreeHost(ptr)); + return; + } +#endif +#ifdef USE_MKL + mkl_free(ptr); +#else + free(ptr); +#endif +} + + +/** + * @brief Manages memory allocation and synchronization between the host (CPU) + * and device (GPU). + * + * TODO(dox): more thorough description. + */ +class SyncedMemory { + public: + SyncedMemory(); + explicit SyncedMemory(size_t size); + ~SyncedMemory(); + const void* cpu_data(); + void set_cpu_data(void* data); + const void* gpu_data(); + void set_gpu_data(void* data); + void* mutable_cpu_data(); + void* mutable_gpu_data(); + enum SyncedHead { UNINITIALIZED, HEAD_AT_CPU, HEAD_AT_GPU, SYNCED }; + SyncedHead head() { return head_; } + size_t size() { return size_; } + +#ifndef CPU_ONLY + void async_gpu_push(const cudaStream_t& stream); +#endif + + private: + void check_device(); + + void to_cpu(); + void to_gpu(); + void* cpu_ptr_; + void* gpu_ptr_; + size_t size_; + SyncedHead head_; + bool own_cpu_data_; + bool cpu_malloc_use_cuda_; + bool own_gpu_data_; + int device_; + + DISABLE_COPY_AND_ASSIGN(SyncedMemory); +}; // class SyncedMemory + +} // namespace caffe + +#endif // CAFFE_SYNCEDMEM_HPP_ diff --git a/3rdparty/caffe/include/caffe/test/test_caffe_main.hpp b/3rdparty/caffe/include/caffe/test/test_caffe_main.hpp new file mode 100644 index 00000000..294f7e50 --- /dev/null +++ b/3rdparty/caffe/include/caffe/test/test_caffe_main.hpp @@ -0,0 +1,77 @@ +// The main caffe test code. Your test cpp code should include this hpp +// to allow a main function to be compiled into the binary. +#ifndef CAFFE_TEST_TEST_CAFFE_MAIN_HPP_ +#define CAFFE_TEST_TEST_CAFFE_MAIN_HPP_ + +#include +#include + +#include +#include + +#include "caffe/common.hpp" + +using std::cout; +using std::endl; + +#ifdef CMAKE_BUILD + #include "caffe_config.h" +#else + #define CUDA_TEST_DEVICE -1 + #define EXAMPLES_SOURCE_DIR "examples/" + #define ABS_TEST_DATA_DIR "src/caffe/test/test_data" +#endif + +int main(int argc, char** argv); + +namespace caffe { + +template +class MultiDeviceTest : public ::testing::Test { + public: + typedef typename TypeParam::Dtype Dtype; + protected: + MultiDeviceTest() { + Caffe::set_mode(TypeParam::device); + } + virtual ~MultiDeviceTest() {} +}; + +typedef ::testing::Types TestDtypes; + +template +struct CPUDevice { + typedef TypeParam Dtype; + static const Caffe::Brew device = Caffe::CPU; +}; + +template +class CPUDeviceTest : public MultiDeviceTest > { +}; + +#ifdef CPU_ONLY + +typedef ::testing::Types, + CPUDevice > TestDtypesAndDevices; + +#else + +template +struct GPUDevice { + typedef TypeParam Dtype; + static const Caffe::Brew device = Caffe::GPU; +}; + +template +class GPUDeviceTest : public MultiDeviceTest > { +}; + +typedef ::testing::Types, CPUDevice, + GPUDevice, GPUDevice > + TestDtypesAndDevices; + +#endif + +} // namespace caffe + +#endif // CAFFE_TEST_TEST_CAFFE_MAIN_HPP_ diff --git a/3rdparty/caffe/include/caffe/test/test_gradient_check_util.hpp b/3rdparty/caffe/include/caffe/test/test_gradient_check_util.hpp new file mode 100644 index 00000000..b25a8487 --- /dev/null +++ b/3rdparty/caffe/include/caffe/test/test_gradient_check_util.hpp @@ -0,0 +1,266 @@ +#ifndef CAFFE_TEST_GRADIENT_CHECK_UTIL_H_ +#define CAFFE_TEST_GRADIENT_CHECK_UTIL_H_ + +#include +#include + +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/net.hpp" + +namespace caffe { + +// The gradient checker adds a L2 normalization loss function on top of the +// top blobs, and checks the gradient. +template +class GradientChecker { + public: + // kink and kink_range specify an ignored nonsmooth region of the form + // kink - kink_range <= |feature value| <= kink + kink_range, + // which accounts for all nonsmoothness in use by caffe + GradientChecker(const Dtype stepsize, const Dtype threshold, + const unsigned int seed = 1701, const Dtype kink = 0., + const Dtype kink_range = -1) + : stepsize_(stepsize), threshold_(threshold), seed_(seed), + kink_(kink), kink_range_(kink_range) {} + // Checks the gradient of a layer, with provided bottom layers and top + // layers. + // Note that after the gradient check, we do not guarantee that the data + // stored in the layer parameters and the blobs are unchanged. + void CheckGradient(Layer* layer, const vector*>& bottom, + const vector*>& top, int check_bottom = -1) { + layer->SetUp(bottom, top); + CheckGradientSingle(layer, bottom, top, check_bottom, -1, -1); + } + void CheckGradientExhaustive(Layer* layer, + const vector*>& bottom, const vector*>& top, + int check_bottom = -1); + + // CheckGradientEltwise can be used to test layers that perform element-wise + // computation only (e.g., neuron layers) -- where (d y_i) / (d x_j) = 0 when + // i != j. + void CheckGradientEltwise(Layer* layer, + const vector*>& bottom, const vector*>& top); + + // Checks the gradient of a single output with respect to particular input + // blob(s). If check_bottom = i >= 0, check only the ith bottom Blob. + // If check_bottom == -1, check everything -- all bottom Blobs and all + // param Blobs. Otherwise (if check_bottom < -1), check only param Blobs. + void CheckGradientSingle(Layer* layer, + const vector*>& bottom, const vector*>& top, + int check_bottom, int top_id, int top_data_id, bool element_wise = false); + + // Checks the gradient of a network. This network should not have any data + // layers or loss layers, since the function does not explicitly deal with + // such cases yet. All input blobs and parameter blobs are going to be + // checked, layer-by-layer to avoid numerical problems to accumulate. + void CheckGradientNet(const Net& net, + const vector*>& input); + + protected: + Dtype GetObjAndGradient(const Layer& layer, + const vector*>& top, int top_id = -1, int top_data_id = -1); + Dtype stepsize_; + Dtype threshold_; + unsigned int seed_; + Dtype kink_; + Dtype kink_range_; +}; + + +template +void GradientChecker::CheckGradientSingle(Layer* layer, + const vector*>& bottom, const vector*>& top, + int check_bottom, int top_id, int top_data_id, bool element_wise) { + if (element_wise) { + CHECK_EQ(0, layer->blobs().size()); + CHECK_LE(0, top_id); + CHECK_LE(0, top_data_id); + const int top_count = top[top_id]->count(); + for (int blob_id = 0; blob_id < bottom.size(); ++blob_id) { + CHECK_EQ(top_count, bottom[blob_id]->count()); + } + } + // First, figure out what blobs we need to check against, and zero init + // parameter blobs. + vector*> blobs_to_check; + vector propagate_down(bottom.size(), check_bottom == -1); + for (int i = 0; i < layer->blobs().size(); ++i) { + Blob* blob = layer->blobs()[i].get(); + caffe_set(blob->count(), static_cast(0), blob->mutable_cpu_diff()); + blobs_to_check.push_back(blob); + } + if (check_bottom == -1) { + for (int i = 0; i < bottom.size(); ++i) { + blobs_to_check.push_back(bottom[i]); + } + } else if (check_bottom >= 0) { + CHECK_LT(check_bottom, bottom.size()); + blobs_to_check.push_back(bottom[check_bottom]); + propagate_down[check_bottom] = true; + } + CHECK_GT(blobs_to_check.size(), 0) << "No blobs to check."; + // Compute the gradient analytically using Backward + Caffe::set_random_seed(seed_); + // Ignore the loss from the layer (it's just the weighted sum of the losses + // from the top blobs, whose gradients we may want to test individually). + layer->Forward(bottom, top); + // Get additional loss from the objective + GetObjAndGradient(*layer, top, top_id, top_data_id); + layer->Backward(top, propagate_down, bottom); + // Store computed gradients for all checked blobs + vector > > + computed_gradient_blobs(blobs_to_check.size()); + for (int blob_id = 0; blob_id < blobs_to_check.size(); ++blob_id) { + Blob* current_blob = blobs_to_check[blob_id]; + computed_gradient_blobs[blob_id].reset(new Blob()); + computed_gradient_blobs[blob_id]->ReshapeLike(*current_blob); + const int count = blobs_to_check[blob_id]->count(); + const Dtype* diff = blobs_to_check[blob_id]->cpu_diff(); + Dtype* computed_gradients = + computed_gradient_blobs[blob_id]->mutable_cpu_data(); + caffe_copy(count, diff, computed_gradients); + } + // Compute derivative of top w.r.t. each bottom and parameter input using + // finite differencing. + // LOG(ERROR) << "Checking " << blobs_to_check.size() << " blobs."; + for (int blob_id = 0; blob_id < blobs_to_check.size(); ++blob_id) { + Blob* current_blob = blobs_to_check[blob_id]; + const Dtype* computed_gradients = + computed_gradient_blobs[blob_id]->cpu_data(); + // LOG(ERROR) << "Blob " << blob_id << ": checking " + // << current_blob->count() << " parameters."; + for (int feat_id = 0; feat_id < current_blob->count(); ++feat_id) { + // For an element-wise layer, we only need to do finite differencing to + // compute the derivative of top[top_id][top_data_id] w.r.t. + // bottom[blob_id][i] only for i == top_data_id. For any other + // i != top_data_id, we know the derivative is 0 by definition, and simply + // check that that's true. + Dtype estimated_gradient = 0; + Dtype positive_objective = 0; + Dtype negative_objective = 0; + if (!element_wise || (feat_id == top_data_id)) { + // Do finite differencing. + // Compute loss with stepsize_ added to input. + current_blob->mutable_cpu_data()[feat_id] += stepsize_; + Caffe::set_random_seed(seed_); + layer->Forward(bottom, top); + positive_objective = + GetObjAndGradient(*layer, top, top_id, top_data_id); + // Compute loss with stepsize_ subtracted from input. + current_blob->mutable_cpu_data()[feat_id] -= stepsize_ * 2; + Caffe::set_random_seed(seed_); + layer->Forward(bottom, top); + negative_objective = + GetObjAndGradient(*layer, top, top_id, top_data_id); + // Recover original input value. + current_blob->mutable_cpu_data()[feat_id] += stepsize_; + estimated_gradient = (positive_objective - negative_objective) / + stepsize_ / 2.; + } + Dtype computed_gradient = computed_gradients[feat_id]; + Dtype feature = current_blob->cpu_data()[feat_id]; + // LOG(ERROR) << "debug: " << current_blob->cpu_data()[feat_id] << " " + // << current_blob->cpu_diff()[feat_id]; + if (kink_ - kink_range_ > fabs(feature) + || fabs(feature) > kink_ + kink_range_) { + // We check relative accuracy, but for too small values, we threshold + // the scale factor by 1. + Dtype scale = std::max( + std::max(fabs(computed_gradient), fabs(estimated_gradient)), + Dtype(1.)); + EXPECT_NEAR(computed_gradient, estimated_gradient, threshold_ * scale) + << "debug: (top_id, top_data_id, blob_id, feat_id)=" + << top_id << "," << top_data_id << "," << blob_id << "," << feat_id + << "; feat = " << feature + << "; objective+ = " << positive_objective + << "; objective- = " << negative_objective; + } + // LOG(ERROR) << "Feature: " << current_blob->cpu_data()[feat_id]; + // LOG(ERROR) << "computed gradient: " << computed_gradient + // << " estimated_gradient: " << estimated_gradient; + } + } +} + +template +void GradientChecker::CheckGradientExhaustive(Layer* layer, + const vector*>& bottom, const vector*>& top, + int check_bottom) { + layer->SetUp(bottom, top); + CHECK_GT(top.size(), 0) << "Exhaustive mode requires at least one top blob."; + // LOG(ERROR) << "Exhaustive Mode."; + for (int i = 0; i < top.size(); ++i) { + // LOG(ERROR) << "Exhaustive: blob " << i << " size " << top[i]->count(); + for (int j = 0; j < top[i]->count(); ++j) { + // LOG(ERROR) << "Exhaustive: blob " << i << " data " << j; + CheckGradientSingle(layer, bottom, top, check_bottom, i, j); + } + } +} + +template +void GradientChecker::CheckGradientEltwise(Layer* layer, + const vector*>& bottom, const vector*>& top) { + layer->SetUp(bottom, top); + CHECK_GT(top.size(), 0) << "Eltwise mode requires at least one top blob."; + const int check_bottom = -1; + const bool element_wise = true; + for (int i = 0; i < top.size(); ++i) { + for (int j = 0; j < top[i]->count(); ++j) { + CheckGradientSingle(layer, bottom, top, check_bottom, i, j, element_wise); + } + } +} + +template +void GradientChecker::CheckGradientNet( + const Net& net, const vector*>& input) { + const vector > >& layers = net.layers(); + vector*> >& bottom_vecs = net.bottom_vecs(); + vector*> >& top_vecs = net.top_vecs(); + for (int i = 0; i < layers.size(); ++i) { + net.Forward(input); + LOG(ERROR) << "Checking gradient for " << layers[i]->layer_param().name(); + CheckGradientExhaustive(*(layers[i].get()), bottom_vecs[i], top_vecs[i]); + } +} + +template +Dtype GradientChecker::GetObjAndGradient(const Layer& layer, + const vector*>& top, int top_id, int top_data_id) { + Dtype loss = 0; + if (top_id < 0) { + // the loss will be half of the sum of squares of all outputs + for (int i = 0; i < top.size(); ++i) { + Blob* top_blob = top[i]; + const Dtype* top_blob_data = top_blob->cpu_data(); + Dtype* top_blob_diff = top_blob->mutable_cpu_diff(); + int count = top_blob->count(); + for (int j = 0; j < count; ++j) { + loss += top_blob_data[j] * top_blob_data[j]; + } + // set the diff: simply the data. + caffe_copy(top_blob->count(), top_blob_data, top_blob_diff); + } + loss /= 2.; + } else { + // the loss will be the top_data_id-th element in the top_id-th blob. + for (int i = 0; i < top.size(); ++i) { + Blob* top_blob = top[i]; + Dtype* top_blob_diff = top_blob->mutable_cpu_diff(); + caffe_set(top_blob->count(), Dtype(0), top_blob_diff); + } + const Dtype loss_weight = 2; + loss = top[top_id]->cpu_data()[top_data_id] * loss_weight; + top[top_id]->mutable_cpu_diff()[top_data_id] = loss_weight; + } + return loss; +} + +} // namespace caffe + +#endif // CAFFE_TEST_GRADIENT_CHECK_UTIL_H_ diff --git a/3rdparty/caffe/include/caffe/util/benchmark.hpp b/3rdparty/caffe/include/caffe/util/benchmark.hpp new file mode 100644 index 00000000..d6358277 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/benchmark.hpp @@ -0,0 +1,52 @@ +#ifndef CAFFE_UTIL_BENCHMARK_H_ +#define CAFFE_UTIL_BENCHMARK_H_ + +#include + +#include "caffe/util/device_alternate.hpp" + +namespace caffe { + +class Timer { + public: + Timer(); + virtual ~Timer(); + virtual void Start(); + virtual void Stop(); + virtual float MilliSeconds(); + virtual float MicroSeconds(); + virtual float Seconds(); + + inline bool initted() { return initted_; } + inline bool running() { return running_; } + inline bool has_run_at_least_once() { return has_run_at_least_once_; } + + protected: + void Init(); + + bool initted_; + bool running_; + bool has_run_at_least_once_; +#ifndef CPU_ONLY + cudaEvent_t start_gpu_; + cudaEvent_t stop_gpu_; +#endif + boost::posix_time::ptime start_cpu_; + boost::posix_time::ptime stop_cpu_; + float elapsed_milliseconds_; + float elapsed_microseconds_; +}; + +class CPUTimer : public Timer { + public: + explicit CPUTimer(); + virtual ~CPUTimer() {} + virtual void Start(); + virtual void Stop(); + virtual float MilliSeconds(); + virtual float MicroSeconds(); +}; + +} // namespace caffe + +#endif // CAFFE_UTIL_BENCHMARK_H_ diff --git a/3rdparty/caffe/include/caffe/util/blocking_queue.hpp b/3rdparty/caffe/include/caffe/util/blocking_queue.hpp new file mode 100644 index 00000000..d3de2e59 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/blocking_queue.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_UTIL_BLOCKING_QUEUE_HPP_ +#define CAFFE_UTIL_BLOCKING_QUEUE_HPP_ + +#include +#include + +namespace caffe { + +template +class BlockingQueue { + public: + explicit BlockingQueue(); + + void push(const T& t); + + bool try_pop(T* t); + + // This logs a message if the threads needs to be blocked + // useful for detecting e.g. when data feeding is too slow + T pop(const string& log_on_wait = ""); + + bool try_peek(T* t); + + // Return element without removing it + T peek(); + + size_t size() const; + + protected: + /** + Move synchronization fields out instead of including boost/thread.hpp + to avoid a boost/NVCC issues (#1009, #1010) on OSX. Also fails on + Linux CUDA 7.0.18. + */ + class sync; + + std::queue queue_; + shared_ptr sync_; + +DISABLE_COPY_AND_ASSIGN(BlockingQueue); +}; + +} // namespace caffe + +#endif diff --git a/3rdparty/caffe/include/caffe/util/cudnn.hpp b/3rdparty/caffe/include/caffe/util/cudnn.hpp new file mode 100644 index 00000000..498cfe38 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/cudnn.hpp @@ -0,0 +1,163 @@ +#ifndef CAFFE_UTIL_CUDNN_H_ +#define CAFFE_UTIL_CUDNN_H_ +#ifdef USE_CUDNN + +#include + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" + +#define CUDNN_VERSION_MIN(major, minor, patch) \ + (CUDNN_VERSION >= (major * 1000 + minor * 100 + patch)) + +#define CUDNN_CHECK(condition) \ + do { \ + cudnnStatus_t status = condition; \ + CHECK_EQ(status, CUDNN_STATUS_SUCCESS) << " "\ + << cudnnGetErrorString(status); \ + } while (0) + +inline const char* cudnnGetErrorString(cudnnStatus_t status) { + switch (status) { + case CUDNN_STATUS_SUCCESS: + return "CUDNN_STATUS_SUCCESS"; + case CUDNN_STATUS_NOT_INITIALIZED: + return "CUDNN_STATUS_NOT_INITIALIZED"; + case CUDNN_STATUS_ALLOC_FAILED: + return "CUDNN_STATUS_ALLOC_FAILED"; + case CUDNN_STATUS_BAD_PARAM: + return "CUDNN_STATUS_BAD_PARAM"; + case CUDNN_STATUS_INTERNAL_ERROR: + return "CUDNN_STATUS_INTERNAL_ERROR"; + case CUDNN_STATUS_INVALID_VALUE: + return "CUDNN_STATUS_INVALID_VALUE"; + case CUDNN_STATUS_ARCH_MISMATCH: + return "CUDNN_STATUS_ARCH_MISMATCH"; + case CUDNN_STATUS_MAPPING_ERROR: + return "CUDNN_STATUS_MAPPING_ERROR"; + case CUDNN_STATUS_EXECUTION_FAILED: + return "CUDNN_STATUS_EXECUTION_FAILED"; + case CUDNN_STATUS_NOT_SUPPORTED: + return "CUDNN_STATUS_NOT_SUPPORTED"; + case CUDNN_STATUS_LICENSE_ERROR: + return "CUDNN_STATUS_LICENSE_ERROR"; +#if CUDNN_VERSION_MIN(6, 0, 0) + case CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING: + return "CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING"; +#endif + } + return "Unknown cudnn status"; +} + +namespace caffe { + +namespace cudnn { + +template class dataType; +template<> class dataType { + public: + static const cudnnDataType_t type = CUDNN_DATA_FLOAT; + static float oneval, zeroval; + static const void *one, *zero; +}; +template<> class dataType { + public: + static const cudnnDataType_t type = CUDNN_DATA_DOUBLE; + static double oneval, zeroval; + static const void *one, *zero; +}; + +template +inline void createTensor4dDesc(cudnnTensorDescriptor_t* desc) { + CUDNN_CHECK(cudnnCreateTensorDescriptor(desc)); +} + +template +inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc, + int n, int c, int h, int w, + int stride_n, int stride_c, int stride_h, int stride_w) { + CUDNN_CHECK(cudnnSetTensor4dDescriptorEx(*desc, dataType::type, + n, c, h, w, stride_n, stride_c, stride_h, stride_w)); +} + +template +inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc, + int n, int c, int h, int w) { + const int stride_w = 1; + const int stride_h = w * stride_w; + const int stride_c = h * stride_h; + const int stride_n = c * stride_c; + setTensor4dDesc(desc, n, c, h, w, + stride_n, stride_c, stride_h, stride_w); +} + +template +inline void createFilterDesc(cudnnFilterDescriptor_t* desc, + int n, int c, int h, int w) { + CUDNN_CHECK(cudnnCreateFilterDescriptor(desc)); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnSetFilter4dDescriptor(*desc, dataType::type, + CUDNN_TENSOR_NCHW, n, c, h, w)); +#else + CUDNN_CHECK(cudnnSetFilter4dDescriptor_v4(*desc, dataType::type, + CUDNN_TENSOR_NCHW, n, c, h, w)); +#endif +} + +template +inline void createConvolutionDesc(cudnnConvolutionDescriptor_t* conv) { + CUDNN_CHECK(cudnnCreateConvolutionDescriptor(conv)); +} + +template +inline void setConvolutionDesc(cudnnConvolutionDescriptor_t* conv, + cudnnTensorDescriptor_t bottom, cudnnFilterDescriptor_t filter, + int pad_h, int pad_w, int stride_h, int stride_w) { +#if CUDNN_VERSION_MIN(6, 0, 0) + CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv, + pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION, + dataType::type)); +#else + CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv, + pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION)); +#endif +} + +template +inline void createPoolingDesc(cudnnPoolingDescriptor_t* pool_desc, + PoolingParameter_PoolMethod poolmethod, cudnnPoolingMode_t* mode, + int h, int w, int pad_h, int pad_w, int stride_h, int stride_w) { + switch (poolmethod) { + case PoolingParameter_PoolMethod_MAX: + *mode = CUDNN_POOLING_MAX; + break; + case PoolingParameter_PoolMethod_AVE: + *mode = CUDNN_POOLING_AVERAGE_COUNT_INCLUDE_PADDING; + break; + default: + LOG(FATAL) << "Unknown pooling method."; + } + CUDNN_CHECK(cudnnCreatePoolingDescriptor(pool_desc)); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool_desc, *mode, + CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w)); +#else + CUDNN_CHECK(cudnnSetPooling2dDescriptor_v4(*pool_desc, *mode, + CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w)); +#endif +} + +template +inline void createActivationDescriptor(cudnnActivationDescriptor_t* activ_desc, + cudnnActivationMode_t mode) { + CUDNN_CHECK(cudnnCreateActivationDescriptor(activ_desc)); + CUDNN_CHECK(cudnnSetActivationDescriptor(*activ_desc, mode, + CUDNN_PROPAGATE_NAN, Dtype(0))); +} + +} // namespace cudnn + +} // namespace caffe + +#endif // USE_CUDNN +#endif // CAFFE_UTIL_CUDNN_H_ diff --git a/3rdparty/caffe/include/caffe/util/db.hpp b/3rdparty/caffe/include/caffe/util/db.hpp new file mode 100644 index 00000000..59ec3d39 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/db.hpp @@ -0,0 +1,54 @@ +#ifndef CAFFE_UTIL_DB_HPP +#define CAFFE_UTIL_DB_HPP + +#include + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { namespace db { + +enum Mode { READ, WRITE, NEW }; + +class Cursor { + public: + Cursor() { } + virtual ~Cursor() { } + virtual void SeekToFirst() = 0; + virtual void Next() = 0; + virtual string key() = 0; + virtual string value() = 0; + virtual bool valid() = 0; + + DISABLE_COPY_AND_ASSIGN(Cursor); +}; + +class Transaction { + public: + Transaction() { } + virtual ~Transaction() { } + virtual void Put(const string& key, const string& value) = 0; + virtual void Commit() = 0; + + DISABLE_COPY_AND_ASSIGN(Transaction); +}; + +class DB { + public: + DB() { } + virtual ~DB() { } + virtual void Open(const string& source, Mode mode) = 0; + virtual void Close() = 0; + virtual Cursor* NewCursor() = 0; + virtual Transaction* NewTransaction() = 0; + + DISABLE_COPY_AND_ASSIGN(DB); +}; + +DB* GetDB(DataParameter::DB backend); +DB* GetDB(const string& backend); + +} // namespace db +} // namespace caffe + +#endif // CAFFE_UTIL_DB_HPP diff --git a/3rdparty/caffe/include/caffe/util/db_leveldb.hpp b/3rdparty/caffe/include/caffe/util/db_leveldb.hpp new file mode 100644 index 00000000..4cdb6db9 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/db_leveldb.hpp @@ -0,0 +1,78 @@ +#ifdef USE_LEVELDB +#ifndef CAFFE_UTIL_DB_LEVELDB_HPP +#define CAFFE_UTIL_DB_LEVELDB_HPP + +#include + +#include "leveldb/db.h" +#include "leveldb/write_batch.h" + +#include "caffe/util/db.hpp" + +namespace caffe { namespace db { + +class LevelDBCursor : public Cursor { + public: + explicit LevelDBCursor(leveldb::Iterator* iter) + : iter_(iter) { + SeekToFirst(); + CHECK(iter_->status().ok()) << iter_->status().ToString(); + } + ~LevelDBCursor() { delete iter_; } + virtual void SeekToFirst() { iter_->SeekToFirst(); } + virtual void Next() { iter_->Next(); } + virtual string key() { return iter_->key().ToString(); } + virtual string value() { return iter_->value().ToString(); } + virtual bool valid() { return iter_->Valid(); } + + private: + leveldb::Iterator* iter_; +}; + +class LevelDBTransaction : public Transaction { + public: + explicit LevelDBTransaction(leveldb::DB* db) : db_(db) { CHECK_NOTNULL(db_); } + virtual void Put(const string& key, const string& value) { + batch_.Put(key, value); + } + virtual void Commit() { + leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch_); + CHECK(status.ok()) << "Failed to write batch to leveldb " + << std::endl << status.ToString(); + } + + private: + leveldb::DB* db_; + leveldb::WriteBatch batch_; + + DISABLE_COPY_AND_ASSIGN(LevelDBTransaction); +}; + +class LevelDB : public DB { + public: + LevelDB() : db_(NULL) { } + virtual ~LevelDB() { Close(); } + virtual void Open(const string& source, Mode mode); + virtual void Close() { + if (db_ != NULL) { + delete db_; + db_ = NULL; + } + } + virtual LevelDBCursor* NewCursor() { + return new LevelDBCursor(db_->NewIterator(leveldb::ReadOptions())); + } + virtual LevelDBTransaction* NewTransaction() { + return new LevelDBTransaction(db_); + } + + private: + leveldb::DB* db_; +}; + + +} // namespace db +} // namespace caffe + +#endif // CAFFE_UTIL_DB_LEVELDB_HPP +#endif // USE_LEVELDB diff --git a/3rdparty/caffe/include/caffe/util/db_lmdb.hpp b/3rdparty/caffe/include/caffe/util/db_lmdb.hpp new file mode 100644 index 00000000..ee370322 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/db_lmdb.hpp @@ -0,0 +1,96 @@ +#ifdef USE_LMDB +#ifndef CAFFE_UTIL_DB_LMDB_HPP +#define CAFFE_UTIL_DB_LMDB_HPP + +#include +#include + +#include "lmdb.h" + +#include "caffe/util/db.hpp" + +namespace caffe { namespace db { + +inline void MDB_CHECK(int mdb_status) { + CHECK_EQ(mdb_status, MDB_SUCCESS) << mdb_strerror(mdb_status); +} + +class LMDBCursor : public Cursor { + public: + explicit LMDBCursor(MDB_txn* mdb_txn, MDB_cursor* mdb_cursor) + : mdb_txn_(mdb_txn), mdb_cursor_(mdb_cursor), valid_(false) { + SeekToFirst(); + } + virtual ~LMDBCursor() { + mdb_cursor_close(mdb_cursor_); + mdb_txn_abort(mdb_txn_); + } + virtual void SeekToFirst() { Seek(MDB_FIRST); } + virtual void Next() { Seek(MDB_NEXT); } + virtual string key() { + return string(static_cast(mdb_key_.mv_data), mdb_key_.mv_size); + } + virtual string value() { + return string(static_cast(mdb_value_.mv_data), + mdb_value_.mv_size); + } + virtual bool valid() { return valid_; } + + private: + void Seek(MDB_cursor_op op) { + int mdb_status = mdb_cursor_get(mdb_cursor_, &mdb_key_, &mdb_value_, op); + if (mdb_status == MDB_NOTFOUND) { + valid_ = false; + } else { + MDB_CHECK(mdb_status); + valid_ = true; + } + } + + MDB_txn* mdb_txn_; + MDB_cursor* mdb_cursor_; + MDB_val mdb_key_, mdb_value_; + bool valid_; +}; + +class LMDBTransaction : public Transaction { + public: + explicit LMDBTransaction(MDB_env* mdb_env) + : mdb_env_(mdb_env) { } + virtual void Put(const string& key, const string& value); + virtual void Commit(); + + private: + MDB_env* mdb_env_; + vector keys, values; + + void DoubleMapSize(); + + DISABLE_COPY_AND_ASSIGN(LMDBTransaction); +}; + +class LMDB : public DB { + public: + LMDB() : mdb_env_(NULL) { } + virtual ~LMDB() { Close(); } + virtual void Open(const string& source, Mode mode); + virtual void Close() { + if (mdb_env_ != NULL) { + mdb_dbi_close(mdb_env_, mdb_dbi_); + mdb_env_close(mdb_env_); + mdb_env_ = NULL; + } + } + virtual LMDBCursor* NewCursor(); + virtual LMDBTransaction* NewTransaction(); + + private: + MDB_env* mdb_env_; + MDB_dbi mdb_dbi_; +}; + +} // namespace db +} // namespace caffe + +#endif // CAFFE_UTIL_DB_LMDB_HPP +#endif // USE_LMDB diff --git a/3rdparty/caffe/include/caffe/util/device_alternate.hpp b/3rdparty/caffe/include/caffe/util/device_alternate.hpp new file mode 100644 index 00000000..e3fe4fe2 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/device_alternate.hpp @@ -0,0 +1,96 @@ +#ifndef CAFFE_UTIL_DEVICE_ALTERNATE_H_ +#define CAFFE_UTIL_DEVICE_ALTERNATE_H_ + +#ifdef CPU_ONLY // CPU-only Caffe. + +#include + +// Stub out GPU calls as unavailable. + +#define NO_GPU LOG(FATAL) << "Cannot use GPU in CPU-only Caffe: check mode." + +#define STUB_GPU(classname) \ +template \ +void classname::Forward_gpu(const vector*>& bottom, \ + const vector*>& top) { NO_GPU; } \ +template \ +void classname::Backward_gpu(const vector*>& top, \ + const vector& propagate_down, \ + const vector*>& bottom) { NO_GPU; } \ + +#define STUB_GPU_FORWARD(classname, funcname) \ +template \ +void classname::funcname##_##gpu(const vector*>& bottom, \ + const vector*>& top) { NO_GPU; } \ + +#define STUB_GPU_BACKWARD(classname, funcname) \ +template \ +void classname::funcname##_##gpu(const vector*>& top, \ + const vector& propagate_down, \ + const vector*>& bottom) { NO_GPU; } \ + +#else // Normal GPU + CPU Caffe. + +#include +#include +#include +#include +#include // cuda driver types +#ifdef USE_CUDNN // cuDNN acceleration library. +#include "caffe/util/cudnn.hpp" +#endif + +// +// CUDA macros +// + +// CUDA: various checks for different function calls. +#define CUDA_CHECK(condition) \ + /* Code block avoids redefinition of cudaError_t error */ \ + do { \ + cudaError_t error = condition; \ + CHECK_EQ(error, cudaSuccess) << " " << cudaGetErrorString(error); \ + } while (0) + +#define CUBLAS_CHECK(condition) \ + do { \ + cublasStatus_t status = condition; \ + CHECK_EQ(status, CUBLAS_STATUS_SUCCESS) << " " \ + << caffe::cublasGetErrorString(status); \ + } while (0) + +#define CURAND_CHECK(condition) \ + do { \ + curandStatus_t status = condition; \ + CHECK_EQ(status, CURAND_STATUS_SUCCESS) << " " \ + << caffe::curandGetErrorString(status); \ + } while (0) + +// CUDA: grid stride looping +#define CUDA_KERNEL_LOOP(i, n) \ + for (int i = blockIdx.x * blockDim.x + threadIdx.x; \ + i < (n); \ + i += blockDim.x * gridDim.x) + +// CUDA: check for error after kernel execution and exit loudly if there is one. +#define CUDA_POST_KERNEL_CHECK CUDA_CHECK(cudaPeekAtLastError()) + +namespace caffe { + +// CUDA: library error reporting. +const char* cublasGetErrorString(cublasStatus_t error); +const char* curandGetErrorString(curandStatus_t error); + +// CUDA: use 512 threads per block +const int CAFFE_CUDA_NUM_THREADS = 512; + +// CUDA: number of blocks for threads. +inline int CAFFE_GET_BLOCKS(const int N) { + return (N + CAFFE_CUDA_NUM_THREADS - 1) / CAFFE_CUDA_NUM_THREADS; +} + +} // namespace caffe + +#endif // CPU_ONLY + +#endif // CAFFE_UTIL_DEVICE_ALTERNATE_H_ diff --git a/3rdparty/caffe/include/caffe/util/format.hpp b/3rdparty/caffe/include/caffe/util/format.hpp new file mode 100644 index 00000000..925ad2e0 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/format.hpp @@ -0,0 +1,18 @@ +#ifndef CAFFE_UTIL_FORMAT_H_ +#define CAFFE_UTIL_FORMAT_H_ + +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include + +namespace caffe { + +inline std::string format_int(int n, int numberOfLeadingZeros = 0 ) { + std::ostringstream s; + s << std::setw(numberOfLeadingZeros) << std::setfill('0') << n; + return s.str(); +} + +} + +#endif // CAFFE_UTIL_FORMAT_H_ diff --git a/3rdparty/caffe/include/caffe/util/gpu_util.cuh b/3rdparty/caffe/include/caffe/util/gpu_util.cuh new file mode 100644 index 00000000..994202f2 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/gpu_util.cuh @@ -0,0 +1,35 @@ +#ifndef CAFFE_UTIL_GPU_UTIL_H_ +#define CAFFE_UTIL_GPU_UTIL_H_ + +namespace caffe { + +template +inline __device__ Dtype caffe_gpu_atomic_add(const Dtype val, Dtype* address); + +template <> +inline __device__ +float caffe_gpu_atomic_add(const float val, float* address) { + return atomicAdd(address, val); +} + +// double atomicAdd implementation taken from: +// http://docs.nvidia.com/cuda/cuda-c-programming-guide/#axzz3PVCpVsEG +template <> +inline __device__ +double caffe_gpu_atomic_add(const double val, double* address) { + unsigned long long int* address_as_ull = // NOLINT(runtime/int) + // NOLINT_NEXT_LINE(runtime/int) + reinterpret_cast(address); + unsigned long long int old = *address_as_ull; // NOLINT(runtime/int) + unsigned long long int assumed; // NOLINT(runtime/int) + do { + assumed = old; + old = atomicCAS(address_as_ull, assumed, + __double_as_longlong(val + __longlong_as_double(assumed))); + } while (assumed != old); + return __longlong_as_double(old); +} + +} // namespace caffe + +#endif // CAFFE_UTIL_GPU_UTIL_H_ diff --git a/3rdparty/caffe/include/caffe/util/hdf5.hpp b/3rdparty/caffe/include/caffe/util/hdf5.hpp new file mode 100644 index 00000000..71549c1c --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/hdf5.hpp @@ -0,0 +1,39 @@ +#ifndef CAFFE_UTIL_HDF5_H_ +#define CAFFE_UTIL_HDF5_H_ + +#include + +#include "hdf5.h" +#include "hdf5_hl.h" + +#include "caffe/blob.hpp" + +namespace caffe { + +template +void hdf5_load_nd_dataset_helper( + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, + Blob* blob, bool reshape); + +template +void hdf5_load_nd_dataset( + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, + Blob* blob, bool reshape = false); + +template +void hdf5_save_nd_dataset( + const hid_t file_id, const string& dataset_name, const Blob& blob, + bool write_diff = false); + +int hdf5_load_int(hid_t loc_id, const string& dataset_name); +void hdf5_save_int(hid_t loc_id, const string& dataset_name, int i); +string hdf5_load_string(hid_t loc_id, const string& dataset_name); +void hdf5_save_string(hid_t loc_id, const string& dataset_name, + const string& s); + +int hdf5_get_num_links(hid_t loc_id); +string hdf5_get_name_by_idx(hid_t loc_id, int idx); + +} // namespace caffe + +#endif // CAFFE_UTIL_HDF5_H_ diff --git a/3rdparty/caffe/include/caffe/util/im2col.hpp b/3rdparty/caffe/include/caffe/util/im2col.hpp new file mode 100644 index 00000000..a35bc6e0 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/im2col.hpp @@ -0,0 +1,60 @@ +#ifndef _CAFFE_UTIL_IM2COL_HPP_ +#define _CAFFE_UTIL_IM2COL_HPP_ + +namespace caffe { + +template +void im2col_nd_cpu(const Dtype* data_im, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_col); + +template +void im2col_cpu(const Dtype* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_col); + +template +void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_im); + +template +void col2im_cpu(const Dtype* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_im); + +template +void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes, + const int col_size, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_col); + +template +void im2col_gpu(const Dtype* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_col); + +template +void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, + const int im_size, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_im); + +template +void col2im_gpu(const Dtype* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_im); + +} // namespace caffe + +#endif // CAFFE_UTIL_IM2COL_HPP_ diff --git a/3rdparty/caffe/include/caffe/util/insert_splits.hpp b/3rdparty/caffe/include/caffe/util/insert_splits.hpp new file mode 100644 index 00000000..446abb81 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/insert_splits.hpp @@ -0,0 +1,26 @@ +#ifndef _CAFFE_UTIL_INSERT_SPLITS_HPP_ +#define _CAFFE_UTIL_INSERT_SPLITS_HPP_ + +#include + +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +// Copy NetParameters with SplitLayers added to replace any shared bottom +// blobs with unique bottom blobs provided by the SplitLayer. +void InsertSplits(const NetParameter& param, NetParameter* param_split); + +void ConfigureSplitLayer(const string& layer_name, const string& blob_name, + const int blob_idx, const int split_count, const float loss_weight, + LayerParameter* split_layer_param); + +string SplitLayerName(const string& layer_name, const string& blob_name, + const int blob_idx); + +string SplitBlobName(const string& layer_name, const string& blob_name, + const int blob_idx, const int split_idx); + +} // namespace caffe + +#endif // CAFFE_UTIL_INSERT_SPLITS_HPP_ diff --git a/3rdparty/caffe/include/caffe/util/io.hpp b/3rdparty/caffe/include/caffe/util/io.hpp new file mode 100644 index 00000000..1a599883 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/io.hpp @@ -0,0 +1,152 @@ +#ifndef CAFFE_UTIL_IO_H_ +#define CAFFE_UTIL_IO_H_ + +#include +#include +#include // NOLINT(readability/streams) +#include + +#include "google/protobuf/message.h" + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/format.hpp" + +#ifndef CAFFE_TMP_DIR_RETRIES +#define CAFFE_TMP_DIR_RETRIES 100 +#endif + +namespace caffe { + +using ::google::protobuf::Message; +using ::boost::filesystem::path; + +inline void MakeTempDir(string* temp_dirname) { + temp_dirname->clear(); + const path& model = + boost::filesystem::temp_directory_path()/"caffe_test.%%%%-%%%%"; + for ( int i = 0; i < CAFFE_TMP_DIR_RETRIES; i++ ) { + const path& dir = boost::filesystem::unique_path(model).string(); + bool done = boost::filesystem::create_directory(dir); + if ( done ) { + *temp_dirname = dir.string(); + return; + } + } + LOG(FATAL) << "Failed to create a temporary directory."; +} + +inline void MakeTempFilename(string* temp_filename) { + static path temp_files_subpath; + static uint64_t next_temp_file = 0; + temp_filename->clear(); + if ( temp_files_subpath.empty() ) { + string path_string=""; + MakeTempDir(&path_string); + temp_files_subpath = path_string; + } + *temp_filename = + (temp_files_subpath/caffe::format_int(next_temp_file++, 9)).string(); +} + +bool ReadProtoFromTextFile(const char* filename, Message* proto); + +inline bool ReadProtoFromTextFile(const string& filename, Message* proto) { + return ReadProtoFromTextFile(filename.c_str(), proto); +} + +inline void ReadProtoFromTextFileOrDie(const char* filename, Message* proto) { + CHECK(ReadProtoFromTextFile(filename, proto)); +} + +inline void ReadProtoFromTextFileOrDie(const string& filename, Message* proto) { + ReadProtoFromTextFileOrDie(filename.c_str(), proto); +} + +void WriteProtoToTextFile(const Message& proto, const char* filename); +inline void WriteProtoToTextFile(const Message& proto, const string& filename) { + WriteProtoToTextFile(proto, filename.c_str()); +} + +bool ReadProtoFromBinaryFile(const char* filename, Message* proto); + +inline bool ReadProtoFromBinaryFile(const string& filename, Message* proto) { + return ReadProtoFromBinaryFile(filename.c_str(), proto); +} + +inline void ReadProtoFromBinaryFileOrDie(const char* filename, Message* proto) { + CHECK(ReadProtoFromBinaryFile(filename, proto)); +} + +inline void ReadProtoFromBinaryFileOrDie(const string& filename, + Message* proto) { + ReadProtoFromBinaryFileOrDie(filename.c_str(), proto); +} + + +void WriteProtoToBinaryFile(const Message& proto, const char* filename); +inline void WriteProtoToBinaryFile( + const Message& proto, const string& filename) { + WriteProtoToBinaryFile(proto, filename.c_str()); +} + +bool ReadFileToDatum(const string& filename, const int label, Datum* datum); + +inline bool ReadFileToDatum(const string& filename, Datum* datum) { + return ReadFileToDatum(filename, -1, datum); +} + +bool ReadImageToDatum(const string& filename, const int label, + const int height, const int width, const bool is_color, + const std::string & encoding, Datum* datum); + +inline bool ReadImageToDatum(const string& filename, const int label, + const int height, const int width, const bool is_color, Datum* datum) { + return ReadImageToDatum(filename, label, height, width, is_color, + "", datum); +} + +inline bool ReadImageToDatum(const string& filename, const int label, + const int height, const int width, Datum* datum) { + return ReadImageToDatum(filename, label, height, width, true, datum); +} + +inline bool ReadImageToDatum(const string& filename, const int label, + const bool is_color, Datum* datum) { + return ReadImageToDatum(filename, label, 0, 0, is_color, datum); +} + +inline bool ReadImageToDatum(const string& filename, const int label, + Datum* datum) { + return ReadImageToDatum(filename, label, 0, 0, true, datum); +} + +inline bool ReadImageToDatum(const string& filename, const int label, + const std::string & encoding, Datum* datum) { + return ReadImageToDatum(filename, label, 0, 0, true, encoding, datum); +} + +bool DecodeDatumNative(Datum* datum); +bool DecodeDatum(Datum* datum, bool is_color); + +#ifdef USE_OPENCV +cv::Mat ReadImageToCVMat(const string& filename, + const int height, const int width, const bool is_color); + +cv::Mat ReadImageToCVMat(const string& filename, + const int height, const int width); + +cv::Mat ReadImageToCVMat(const string& filename, + const bool is_color); + +cv::Mat ReadImageToCVMat(const string& filename); + +cv::Mat DecodeDatumToCVMatNative(const Datum& datum); +cv::Mat DecodeDatumToCVMat(const Datum& datum, bool is_color); + +void CVMatToDatum(const cv::Mat& cv_img, Datum* datum); +#endif // USE_OPENCV + +} // namespace caffe + +#endif // CAFFE_UTIL_IO_H_ diff --git a/3rdparty/caffe/include/caffe/util/math_functions.hpp b/3rdparty/caffe/include/caffe/util/math_functions.hpp new file mode 100644 index 00000000..e549120a --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/math_functions.hpp @@ -0,0 +1,284 @@ +#ifndef CAFFE_UTIL_MATH_FUNCTIONS_H_ +#define CAFFE_UTIL_MATH_FUNCTIONS_H_ + +#include +#include // for std::fabs and std::signbit + +#include "glog/logging.h" + +#include "caffe/common.hpp" +#include "caffe/util/device_alternate.hpp" +#include "caffe/util/mkl_alternate.hpp" + +namespace caffe { + +// Caffe gemm provides a simpler interface to the gemm functions, with the +// limitation that the data has to be contiguous in memory. +template +void caffe_cpu_gemm(const CBLAS_TRANSPOSE TransA, + const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, + const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta, + Dtype* C); + +template +void caffe_cpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N, + const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta, + Dtype* y); + +template +void caffe_axpy(const int N, const Dtype alpha, const Dtype* X, + Dtype* Y); + +template +void caffe_cpu_axpby(const int N, const Dtype alpha, const Dtype* X, + const Dtype beta, Dtype* Y); + +template +void caffe_copy(const int N, const Dtype *X, Dtype *Y); + +template +void caffe_set(const int N, const Dtype alpha, Dtype *X); + +inline void caffe_memset(const size_t N, const int alpha, void* X) { + memset(X, alpha, N); // NOLINT(caffe/alt_fn) +} + +template +void caffe_add_scalar(const int N, const Dtype alpha, Dtype *X); + +template +void caffe_scal(const int N, const Dtype alpha, Dtype *X); + +template +void caffe_sqr(const int N, const Dtype* a, Dtype* y); + +template +void caffe_sqrt(const int N, const Dtype* a, Dtype* y); + +template +void caffe_add(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_div(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_powx(const int n, const Dtype* a, const Dtype b, Dtype* y); + +unsigned int caffe_rng_rand(); + +template +Dtype caffe_nextafter(const Dtype b); + +template +void caffe_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r); + +template +void caffe_rng_gaussian(const int n, const Dtype mu, const Dtype sigma, + Dtype* r); + +template +void caffe_rng_bernoulli(const int n, const Dtype p, int* r); + +template +void caffe_rng_bernoulli(const int n, const Dtype p, unsigned int* r); + +template +void caffe_exp(const int n, const Dtype* a, Dtype* y); + +template +void caffe_log(const int n, const Dtype* a, Dtype* y); + +template +void caffe_abs(const int n, const Dtype* a, Dtype* y); + +template +Dtype caffe_cpu_dot(const int n, const Dtype* x, const Dtype* y); + +template +Dtype caffe_cpu_strided_dot(const int n, const Dtype* x, const int incx, + const Dtype* y, const int incy); + +// Returns the sum of the absolute values of the elements of vector x +template +Dtype caffe_cpu_asum(const int n, const Dtype* x); + +// the branchless, type-safe version from +// http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c +template +inline int8_t caffe_sign(Dtype val) { + return (Dtype(0) < val) - (val < Dtype(0)); +} + +// The following two macros are modifications of DEFINE_VSL_UNARY_FUNC +// in include/caffe/util/mkl_alternate.hpp authored by @Rowland Depp. +// Please refer to commit 7e8ef25c7 of the boost-eigen branch. +// Git cherry picking that commit caused a conflict hard to resolve and +// copying that file in convenient for code reviewing. +// So they have to be pasted here temporarily. +#define DEFINE_CAFFE_CPU_UNARY_FUNC(name, operation) \ + template \ + void caffe_cpu_##name(const int n, const Dtype* x, Dtype* y) { \ + CHECK_GT(n, 0); CHECK(x); CHECK(y); \ + for (int i = 0; i < n; ++i) { \ + operation; \ + } \ + } + +// output is 1 for the positives, 0 for zero, and -1 for the negatives +DEFINE_CAFFE_CPU_UNARY_FUNC(sign, y[i] = caffe_sign(x[i])) + +// This returns a nonzero value if the input has its sign bit set. +// The name sngbit is meant to avoid conflicts with std::signbit in the macro. +// The extra parens are needed because CUDA < 6.5 defines signbit as a macro, +// and we don't want that to expand here when CUDA headers are also included. +DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, \ + y[i] = static_cast((std::signbit)(x[i]))) + +DEFINE_CAFFE_CPU_UNARY_FUNC(fabs, y[i] = std::fabs(x[i])) + +template +void caffe_cpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y); + +#ifndef CPU_ONLY // GPU + +// Decaf gpu gemm provides an interface that is almost the same as the cpu +// gemm function - following the c convention and calling the fortran-order +// gpu code under the hood. +template +void caffe_gpu_gemm(const CBLAS_TRANSPOSE TransA, + const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, + const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta, + Dtype* C); + +template +void caffe_gpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N, + const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta, + Dtype* y); + +template +void caffe_gpu_axpy(const int N, const Dtype alpha, const Dtype* X, + Dtype* Y); + +template +void caffe_gpu_axpby(const int N, const Dtype alpha, const Dtype* X, + const Dtype beta, Dtype* Y); + +void caffe_gpu_memcpy(const size_t N, const void *X, void *Y); + +template +void caffe_gpu_set(const int N, const Dtype alpha, Dtype *X); + +inline void caffe_gpu_memset(const size_t N, const int alpha, void* X) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaMemset(X, alpha, N)); // NOLINT(caffe/alt_fn) +#else + NO_GPU; +#endif +} + +template +void caffe_gpu_add_scalar(const int N, const Dtype alpha, Dtype *X); + +template +void caffe_gpu_scal(const int N, const Dtype alpha, Dtype *X); + +#ifndef CPU_ONLY +template +void caffe_gpu_scal(const int N, const Dtype alpha, Dtype* X, cudaStream_t str); +#endif + +template +void caffe_gpu_add(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_gpu_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_gpu_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_gpu_div(const int N, const Dtype* a, const Dtype* b, Dtype* y); + +template +void caffe_gpu_abs(const int n, const Dtype* a, Dtype* y); + +template +void caffe_gpu_exp(const int n, const Dtype* a, Dtype* y); + +template +void caffe_gpu_log(const int n, const Dtype* a, Dtype* y); + +template +void caffe_gpu_powx(const int n, const Dtype* a, const Dtype b, Dtype* y); + +template +void caffe_gpu_sqrt(const int n, const Dtype* a, Dtype* y); + +// caffe_gpu_rng_uniform with two arguments generates integers in the range +// [0, UINT_MAX]. +void caffe_gpu_rng_uniform(const int n, unsigned int* r); + +// caffe_gpu_rng_uniform with four arguments generates floats in the range +// (a, b] (strictly greater than a, less than or equal to b) due to the +// specification of curandGenerateUniform. With a = 0, b = 1, just calls +// curandGenerateUniform; with other limits will shift and scale the outputs +// appropriately after calling curandGenerateUniform. +template +void caffe_gpu_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r); + +template +void caffe_gpu_rng_gaussian(const int n, const Dtype mu, const Dtype sigma, + Dtype* r); + +template +void caffe_gpu_rng_bernoulli(const int n, const Dtype p, int* r); + +template +void caffe_gpu_dot(const int n, const Dtype* x, const Dtype* y, Dtype* out); + +template +void caffe_gpu_asum(const int n, const Dtype* x, Dtype* y); + +template +void caffe_gpu_sign(const int n, const Dtype* x, Dtype* y); + +template +void caffe_gpu_sgnbit(const int n, const Dtype* x, Dtype* y); + +template +void caffe_gpu_fabs(const int n, const Dtype* x, Dtype* y); + +template +void caffe_gpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y); + +#define DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(name, operation) \ +template \ +__global__ void name##_kernel(const int n, const Dtype* x, Dtype* y) { \ + CUDA_KERNEL_LOOP(index, n) { \ + operation; \ + } \ +} \ +template <> \ +void caffe_gpu_##name(const int n, const float* x, float* y) { \ + /* NOLINT_NEXT_LINE(whitespace/operators) */ \ + name##_kernel<<>>( \ + n, x, y); \ +} \ +template <> \ +void caffe_gpu_##name(const int n, const double* x, double* y) { \ + /* NOLINT_NEXT_LINE(whitespace/operators) */ \ + name##_kernel<<>>( \ + n, x, y); \ +} + +#endif // !CPU_ONLY + +} // namespace caffe + +#endif // CAFFE_UTIL_MATH_FUNCTIONS_H_ diff --git a/3rdparty/caffe/include/caffe/util/mkl_alternate.hpp b/3rdparty/caffe/include/caffe/util/mkl_alternate.hpp new file mode 100644 index 00000000..8c2294c7 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/mkl_alternate.hpp @@ -0,0 +1,103 @@ +#ifndef CAFFE_UTIL_MKL_ALTERNATE_H_ +#define CAFFE_UTIL_MKL_ALTERNATE_H_ + +#ifdef USE_MKL + +#include + +#else // If use MKL, simply include the MKL header + +#ifdef USE_ACCELERATE +#include +#else +extern "C" { +#include +} +#endif // USE_ACCELERATE + +#include + +// Functions that caffe uses but are not present if MKL is not linked. + +// A simple way to define the vsl unary functions. The operation should +// be in the form e.g. y[i] = sqrt(a[i]) +#define DEFINE_VSL_UNARY_FUNC(name, operation) \ + template \ + void v##name(const int n, const Dtype* a, Dtype* y) { \ + CHECK_GT(n, 0); CHECK(a); CHECK(y); \ + for (int i = 0; i < n; ++i) { operation; } \ + } \ + inline void vs##name( \ + const int n, const float* a, float* y) { \ + v##name(n, a, y); \ + } \ + inline void vd##name( \ + const int n, const double* a, double* y) { \ + v##name(n, a, y); \ + } + +DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i]) +DEFINE_VSL_UNARY_FUNC(Sqrt, y[i] = sqrt(a[i])) +DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i])) +DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i])) +DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i])) + +// A simple way to define the vsl unary functions with singular parameter b. +// The operation should be in the form e.g. y[i] = pow(a[i], b) +#define DEFINE_VSL_UNARY_FUNC_WITH_PARAM(name, operation) \ + template \ + void v##name(const int n, const Dtype* a, const Dtype b, Dtype* y) { \ + CHECK_GT(n, 0); CHECK(a); CHECK(y); \ + for (int i = 0; i < n; ++i) { operation; } \ + } \ + inline void vs##name( \ + const int n, const float* a, const float b, float* y) { \ + v##name(n, a, b, y); \ + } \ + inline void vd##name( \ + const int n, const double* a, const float b, double* y) { \ + v##name(n, a, b, y); \ + } + +DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b)) + +// A simple way to define the vsl binary functions. The operation should +// be in the form e.g. y[i] = a[i] + b[i] +#define DEFINE_VSL_BINARY_FUNC(name, operation) \ + template \ + void v##name(const int n, const Dtype* a, const Dtype* b, Dtype* y) { \ + CHECK_GT(n, 0); CHECK(a); CHECK(b); CHECK(y); \ + for (int i = 0; i < n; ++i) { operation; } \ + } \ + inline void vs##name( \ + const int n, const float* a, const float* b, float* y) { \ + v##name(n, a, b, y); \ + } \ + inline void vd##name( \ + const int n, const double* a, const double* b, double* y) { \ + v##name(n, a, b, y); \ + } + +DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i]) +DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i]) +DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i]) +DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i]) + +// In addition, MKL comes with an additional function axpby that is not present +// in standard blas. We will simply use a two-step (inefficient, of course) way +// to mimic that. +inline void cblas_saxpby(const int N, const float alpha, const float* X, + const int incX, const float beta, float* Y, + const int incY) { + cblas_sscal(N, beta, Y, incY); + cblas_saxpy(N, alpha, X, incX, Y, incY); +} +inline void cblas_daxpby(const int N, const double alpha, const double* X, + const int incX, const double beta, double* Y, + const int incY) { + cblas_dscal(N, beta, Y, incY); + cblas_daxpy(N, alpha, X, incX, Y, incY); +} + +#endif // USE_MKL +#endif // CAFFE_UTIL_MKL_ALTERNATE_H_ diff --git a/3rdparty/caffe/include/caffe/util/nccl.hpp b/3rdparty/caffe/include/caffe/util/nccl.hpp new file mode 100644 index 00000000..e01fb745 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/nccl.hpp @@ -0,0 +1,37 @@ +#ifndef CAFFE_UTIL_NCCL_H_ +#define CAFFE_UTIL_NCCL_H_ +#ifdef USE_NCCL + +#include + +#include "caffe/common.hpp" + +#define NCCL_CHECK(condition) \ +{ \ + ncclResult_t result = condition; \ + CHECK_EQ(result, ncclSuccess) << " " \ + << ncclGetErrorString(result); \ +} + +namespace caffe { + +namespace nccl { + +template class dataType; + +template<> class dataType { + public: + static const ncclDataType_t type = ncclFloat; +}; +template<> class dataType { + public: + static const ncclDataType_t type = ncclDouble; +}; + +} // namespace nccl + +} // namespace caffe + +#endif // end USE_NCCL + +#endif // CAFFE_UTIL_NCCL_H_ diff --git a/3rdparty/caffe/include/caffe/util/rng.hpp b/3rdparty/caffe/include/caffe/util/rng.hpp new file mode 100644 index 00000000..8f1cf0d1 --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/rng.hpp @@ -0,0 +1,43 @@ +#ifndef CAFFE_RNG_CPP_HPP_ +#define CAFFE_RNG_CPP_HPP_ + +#include +#include + +#include "boost/random/mersenne_twister.hpp" +#include "boost/random/uniform_int.hpp" + +#include "caffe/common.hpp" + +namespace caffe { + +typedef boost::mt19937 rng_t; + +inline rng_t* caffe_rng() { + return static_cast(Caffe::rng_stream().generator()); +} + +// Fisher–Yates algorithm +template +inline void shuffle(RandomAccessIterator begin, RandomAccessIterator end, + RandomGenerator* gen) { + typedef typename std::iterator_traits::difference_type + difference_type; + typedef typename boost::uniform_int dist_type; + + difference_type length = std::distance(begin, end); + if (length <= 0) return; + + for (difference_type i = length - 1; i > 0; --i) { + dist_type dist(0, i); + std::iter_swap(begin + i, begin + dist(*gen)); + } +} + +template +inline void shuffle(RandomAccessIterator begin, RandomAccessIterator end) { + shuffle(begin, end, caffe_rng()); +} +} // namespace caffe + +#endif // CAFFE_RNG_HPP_ diff --git a/3rdparty/caffe/include/caffe/util/signal_handler.h b/3rdparty/caffe/include/caffe/util/signal_handler.h new file mode 100644 index 00000000..fb84c65b --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/signal_handler.h @@ -0,0 +1,24 @@ +#ifndef INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_ +#define INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_ + +#include "caffe/proto/caffe.pb.h" +#include "caffe/solver.hpp" + +namespace caffe { + +class SignalHandler { + public: + // Contructor. Specify what action to take when a signal is received. + SignalHandler(SolverAction::Enum SIGINT_action, + SolverAction::Enum SIGHUP_action); + ~SignalHandler(); + ActionCallback GetActionFunction(); + private: + SolverAction::Enum CheckForSignals() const; + SolverAction::Enum SIGINT_action_; + SolverAction::Enum SIGHUP_action_; +}; + +} // namespace caffe + +#endif // INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_ diff --git a/3rdparty/caffe/include/caffe/util/upgrade_proto.hpp b/3rdparty/caffe/include/caffe/util/upgrade_proto.hpp new file mode 100644 index 00000000..b145822a --- /dev/null +++ b/3rdparty/caffe/include/caffe/util/upgrade_proto.hpp @@ -0,0 +1,88 @@ +#ifndef CAFFE_UTIL_UPGRADE_PROTO_H_ +#define CAFFE_UTIL_UPGRADE_PROTO_H_ + +#include + +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +// Return true iff the net is not the current version. +bool NetNeedsUpgrade(const NetParameter& net_param); + +// Check for deprecations and upgrade the NetParameter as needed. +bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param); + +// Read parameters from a file into a NetParameter proto message. +void ReadNetParamsFromTextFileOrDie(const string& param_file, + NetParameter* param); +void ReadNetParamsFromBinaryFileOrDie(const string& param_file, + NetParameter* param); + +// Return true iff any layer contains parameters specified using +// deprecated V0LayerParameter. +bool NetNeedsV0ToV1Upgrade(const NetParameter& net_param); + +// Perform all necessary transformations to upgrade a V0NetParameter into a +// NetParameter (including upgrading padding layers and LayerParameters). +bool UpgradeV0Net(const NetParameter& v0_net_param, NetParameter* net_param); + +// Upgrade NetParameter with padding layers to pad-aware conv layers. +// For any padding layer, remove it and put its pad parameter in any layers +// taking its top blob as input. +// Error if any of these above layers are not-conv layers. +void UpgradeV0PaddingLayers(const NetParameter& param, + NetParameter* param_upgraded_pad); + +// Upgrade a single V0LayerConnection to the V1LayerParameter format. +bool UpgradeV0LayerParameter(const V1LayerParameter& v0_layer_connection, + V1LayerParameter* layer_param); + +V1LayerParameter_LayerType UpgradeV0LayerType(const string& type); + +// Return true iff any layer contains deprecated data transformation parameters. +bool NetNeedsDataUpgrade(const NetParameter& net_param); + +// Perform all necessary transformations to upgrade old transformation fields +// into a TransformationParameter. +void UpgradeNetDataTransformation(NetParameter* net_param); + +// Return true iff the Net contains any layers specified as V1LayerParameters. +bool NetNeedsV1ToV2Upgrade(const NetParameter& net_param); + +// Perform all necessary transformations to upgrade a NetParameter with +// deprecated V1LayerParameters. +bool UpgradeV1Net(const NetParameter& v1_net_param, NetParameter* net_param); + +bool UpgradeV1LayerParameter(const V1LayerParameter& v1_layer_param, + LayerParameter* layer_param); + +const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type); + +// Return true iff the Net contains input fields. +bool NetNeedsInputUpgrade(const NetParameter& net_param); + +// Perform all necessary transformations to upgrade input fields into layers. +void UpgradeNetInput(NetParameter* net_param); + +// Return true iff the Net contains batch norm layers with manual local LRs. +bool NetNeedsBatchNormUpgrade(const NetParameter& net_param); + +// Perform all necessary transformations to upgrade batch norm layers. +void UpgradeNetBatchNorm(NetParameter* net_param); + +// Return true iff the solver contains any old solver_type specified as enums +bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param); + +bool UpgradeSolverType(SolverParameter* solver_param); + +// Check for deprecations and upgrade the SolverParameter as needed. +bool UpgradeSolverAsNeeded(const string& param_file, SolverParameter* param); + +// Read parameters from a file into a SolverParameter proto message. +void ReadSolverParamsFromTextFileOrDie(const string& param_file, + SolverParameter* param); + +} // namespace caffe + +#endif // CAFFE_UTIL_UPGRADE_PROTO_H_ diff --git a/3rdparty/caffe/install_caffe.sh b/3rdparty/caffe/install_caffe.sh new file mode 100755 index 00000000..d95b0cb2 --- /dev/null +++ b/3rdparty/caffe/install_caffe.sh @@ -0,0 +1,84 @@ +#!/bin/bash + + + +echo "------------------------- Installing Caffe -------------------------" +echo "NOTE: This script assumes that CUDA and cuDNN are already installed on your machine. Otherwise, it might fail." + + + +function exitIfError { + if [[ $? -ne 0 ]] ; then + echo "" + echo "------------------------- -------------------------" + echo "Errors detected. Exiting script. The software might have not been successfully installed." + echo "------------------------- -------------------------" + exit 1 + fi +} + + + +echo "------------------------- Checking Ubuntu Version -------------------------" +ubuntu_version="$(lsb_release -r)" +echo "Ubuntu $ubuntu_version" +if [[ $ubuntu_version == *"14."* ]]; then + ubuntu_le_14=true +elif [[ $ubuntu_version == *"16."* || $ubuntu_version == *"15."* || $ubuntu_version == *"17."* || $ubuntu_version == *"18."* ]]; then + ubuntu_le_14=false +else + echo "Ubuntu release older than version 14. This installation script might fail." + ubuntu_le_14=true +fi +exitIfError +echo "------------------------- Ubuntu Version Checked -------------------------" +echo "" + + + +echo "------------------------- Checking Number of Processors -------------------------" +NUM_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu) +echo "$NUM_CORES cores" +exitIfError +echo "------------------------- Number of Processors Checked -------------------------" +echo "" + + + +echo "------------------------- Installing some Caffe Dependencies -------------------------" +# Basic +sudo apt-get --assume-yes update +sudo apt-get --assume-yes install build-essential +# General dependencies +sudo apt-get --assume-yes install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler +sudo apt-get --assume-yes install --no-install-recommends libboost-all-dev +# Remaining dependencies, 14.04 +# if [[ $ubuntu_le_14 == true ]]; then + sudo apt-get --assume-yes install libgflags-dev libgoogle-glog-dev liblmdb-dev +# fi +# OpenCV 2.4 +# sudo apt-get --assume-yes install libopencv-dev +exitIfError +echo "------------------------- Some Caffe Dependencies Installed -------------------------" +echo "" + + + +echo "------------------------- Compiling Caffe -------------------------" +if [[ $ubuntu_le_14 == true ]]; then + cp Makefile.config.Ubuntu14.example Makefile.config +else + cp Makefile.config.Ubuntu16.example Makefile.config +fi +# make all -j$NUM_CORES +make distribute -j$NUM_CORES +# make test -j$NUM_CORES +# make runtest -j$NUM_CORES # This command crashes due to the new added layers +exitIfError +echo "------------------------- Caffe Compiled -------------------------" +echo "" + + + +echo "------------------------- Caffe Installed -------------------------" +echo "" diff --git a/3rdparty/caffe/matlab/+caffe/+test/test_io.m b/3rdparty/caffe/matlab/+caffe/+test/test_io.m new file mode 100644 index 00000000..2c34bd1e --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/+test/test_io.m @@ -0,0 +1,18 @@ +classdef test_io < matlab.unittest.TestCase + methods (Test) + function test_read_write_mean(self) + % randomly generate mean data + width = 200; + height = 300; + channels = 3; + mean_data_write = 255 * rand(width, height, channels, 'single'); + % write mean data to binary proto + mean_proto_file = tempname(); + caffe.io.write_mean(mean_data_write, mean_proto_file); + % read mean data from saved binary proto and test whether they are equal + mean_data_read = caffe.io.read_mean(mean_proto_file); + self.verifyEqual(mean_data_write, mean_data_read) + delete(mean_proto_file); + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/+test/test_net.m b/3rdparty/caffe/matlab/+caffe/+test/test_net.m new file mode 100644 index 00000000..3dabe84d --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/+test/test_net.m @@ -0,0 +1,96 @@ +classdef test_net < matlab.unittest.TestCase + + properties + num_output + model_file + net + end + + methods (Static) + function model_file = simple_net_file(num_output) + model_file = tempname(); + fid = fopen(model_file, 'w'); + fprintf(fid, [ ... + 'name: "testnet" force_backward: true\n' ... + 'layer { type: "DummyData" name: "data" top: "data" top: "label"\n' ... + 'dummy_data_param { num: 5 channels: 2 height: 3 width: 4\n' ... + ' num: 5 channels: 1 height: 1 width: 1\n' ... + ' data_filler { type: "gaussian" std: 1 }\n' ... + ' data_filler { type: "constant" } } }\n' ... + 'layer { type: "Convolution" name: "conv" bottom: "data" top: "conv"\n' ... + ' convolution_param { num_output: 11 kernel_size: 2 pad: 3\n' ... + ' weight_filler { type: "gaussian" std: 1 }\n' ... + ' bias_filler { type: "constant" value: 2 } }\n' ... + ' param { decay_mult: 1 } param { decay_mult: 0 }\n' ... + ' }\n' ... + 'layer { type: "InnerProduct" name: "ip" bottom: "conv" top: "ip"\n' ... + ' inner_product_param { num_output: ' num2str(num_output) ... + ' weight_filler { type: "gaussian" std: 2.5 }\n' ... + ' bias_filler { type: "constant" value: -3 } } }\n' ... + 'layer { type: "SoftmaxWithLoss" name: "loss" bottom: "ip" bottom: "label"\n' ... + ' top: "loss" }' ]); + fclose(fid); + end + end + methods + function self = test_net() + self.num_output = 13; + self.model_file = caffe.test.test_net.simple_net_file(self.num_output); + self.net = caffe.Net(self.model_file, 'train'); + % also make sure get_solver runs + caffe.get_net(self.model_file, 'train'); + + % fill in valid labels + self.net.blobs('label').set_data(randi( ... + self.num_output - 1, self.net.blobs('label').shape)); + + delete(self.model_file); + end + end + methods (Test) + function self = test_blob(self) + self.net.blobs('data').set_data(10 * ones(self.net.blobs('data').shape)); + self.verifyEqual(self.net.blobs('data').get_data(), ... + 10 * ones(self.net.blobs('data').shape, 'single')); + self.net.blobs('data').set_diff(-2 * ones(self.net.blobs('data').shape)); + self.verifyEqual(self.net.blobs('data').get_diff(), ... + -2 * ones(self.net.blobs('data').shape, 'single')); + original_shape = self.net.blobs('data').shape; + self.net.blobs('data').reshape([6 5 4 3 2 1]); + self.verifyEqual(self.net.blobs('data').shape, [6 5 4 3 2 1]); + self.net.blobs('data').reshape(original_shape); + self.net.reshape(); + end + function self = test_layer(self) + self.verifyEqual(self.net.params('conv', 1).shape, [2 2 2 11]); + self.verifyEqual(self.net.layers('conv').params(2).shape, 11); + self.verifyEqual(self.net.layers('conv').type(), 'Convolution'); + end + function test_forward_backward(self) + self.net.forward_prefilled(); + self.net.backward_prefilled(); + end + function test_inputs_outputs(self) + self.verifyEqual(self.net.inputs, cell(0, 1)) + self.verifyEqual(self.net.outputs, {'loss'}); + end + function test_save_and_read(self) + weights_file = tempname(); + self.net.save(weights_file); + model_file2 = caffe.test.test_net.simple_net_file(self.num_output); + net2 = caffe.Net(model_file2, 'train'); + net2.copy_from(weights_file); + net3 = caffe.Net(model_file2, weights_file, 'train'); + delete(model_file2); + delete(weights_file); + for l = 1:length(self.net.layer_vec) + for i = 1:length(self.net.layer_vec(l).params) + self.verifyEqual(self.net.layer_vec(l).params(i).get_data(), ... + net2.layer_vec(l).params(i).get_data()); + self.verifyEqual(self.net.layer_vec(l).params(i).get_data(), ... + net3.layer_vec(l).params(i).get_data()); + end + end + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/+test/test_solver.m b/3rdparty/caffe/matlab/+caffe/+test/test_solver.m new file mode 100644 index 00000000..739258b0 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/+test/test_solver.m @@ -0,0 +1,45 @@ +classdef test_solver < matlab.unittest.TestCase + + properties + num_output + solver + end + + methods + function self = test_solver() + self.num_output = 13; + model_file = caffe.test.test_net.simple_net_file(self.num_output); + solver_file = tempname(); + + fid = fopen(solver_file, 'w'); + fprintf(fid, [ ... + 'net: "' model_file '"\n' ... + 'test_iter: 10 test_interval: 10 base_lr: 0.01 momentum: 0.9\n' ... + 'weight_decay: 0.0005 lr_policy: "inv" gamma: 0.0001 power: 0.75\n' ... + 'display: 100 max_iter: 100 snapshot_after_train: false\n' ]); + fclose(fid); + + self.solver = caffe.Solver(solver_file); + % also make sure get_solver runs + caffe.get_solver(solver_file); + caffe.set_mode_cpu(); + % fill in valid labels + self.solver.net.blobs('label').set_data(randi( ... + self.num_output - 1, self.solver.net.blobs('label').shape)); + self.solver.test_nets(1).blobs('label').set_data(randi( ... + self.num_output - 1, self.solver.test_nets(1).blobs('label').shape)); + + delete(solver_file); + delete(model_file); + end + end + methods (Test) + function test_solve(self) + self.verifyEqual(self.solver.iter(), 0) + self.solver.step(30); + self.verifyEqual(self.solver.iter(), 30) + self.solver.solve() + self.verifyEqual(self.solver.iter(), 100) + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/Blob.m b/3rdparty/caffe/matlab/+caffe/Blob.m new file mode 100644 index 00000000..e39f7ee3 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/Blob.m @@ -0,0 +1,78 @@ +classdef Blob < handle + % Wrapper class of caffe::Blob in matlab + + properties (Access = private) + hBlob_self + end + + methods + function self = Blob(hBlob_blob) + CHECK(is_valid_handle(hBlob_blob), 'invalid Blob handle'); + + % setup self handle + self.hBlob_self = hBlob_blob; + end + function shape = shape(self) + shape = caffe_('blob_get_shape', self.hBlob_self); + end + function reshape(self, shape) + shape = self.check_and_preprocess_shape(shape); + caffe_('blob_reshape', self.hBlob_self, shape); + end + function data = get_data(self) + data = caffe_('blob_get_data', self.hBlob_self); + end + function set_data(self, data) + data = self.check_and_preprocess_data(data); + caffe_('blob_set_data', self.hBlob_self, data); + end + function diff = get_diff(self) + diff = caffe_('blob_get_diff', self.hBlob_self); + end + function set_diff(self, diff) + diff = self.check_and_preprocess_data(diff); + caffe_('blob_set_diff', self.hBlob_self, diff); + end + end + + methods (Access = private) + function shape = check_and_preprocess_shape(~, shape) + CHECK(isempty(shape) || (isnumeric(shape) && isrow(shape)), ... + 'shape must be a integer row vector'); + shape = double(shape); + end + function data = check_and_preprocess_data(self, data) + CHECK(isnumeric(data), 'data or diff must be numeric types'); + self.check_data_size_matches(data); + if ~isa(data, 'single') + data = single(data); + end + end + function check_data_size_matches(self, data) + % check whether size of data matches shape of this blob + % note: matlab arrays always have at least 2 dimensions. To compare + % shape between size of data and shape of this blob, extend shape of + % this blob to have at least 2 dimensions + self_shape_extended = self.shape; + if isempty(self_shape_extended) + % target blob is a scalar (0 dim) + self_shape_extended = [1, 1]; + elseif isscalar(self_shape_extended) + % target blob is a vector (1 dim) + self_shape_extended = [self_shape_extended, 1]; + end + % Also, matlab cannot have tailing dimension 1 for ndim > 2, so you + % cannot create 20 x 10 x 1 x 1 array in matlab as it becomes 20 x 10 + % Extend matlab arrays to have tailing dimension 1 during shape match + data_size_extended = ... + [size(data), ones(1, length(self_shape_extended) - ndims(data))]; + is_matched = ... + (length(self_shape_extended) == length(data_size_extended)) ... + && all(self_shape_extended == data_size_extended); + CHECK(is_matched, ... + sprintf('%s, input data/diff size: [ %s] vs target blob shape: [ %s]', ... + 'input data/diff size does not match target blob shape', ... + sprintf('%d ', data_size_extended), sprintf('%d ', self_shape_extended))); + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/Layer.m b/3rdparty/caffe/matlab/+caffe/Layer.m new file mode 100644 index 00000000..4c202310 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/Layer.m @@ -0,0 +1,32 @@ +classdef Layer < handle + % Wrapper class of caffe::Layer in matlab + + properties (Access = private) + hLayer_self + attributes + % attributes fields: + % hBlob_blobs + end + properties (SetAccess = private) + params + end + + methods + function self = Layer(hLayer_layer) + CHECK(is_valid_handle(hLayer_layer), 'invalid Layer handle'); + + % setup self handle and attributes + self.hLayer_self = hLayer_layer; + self.attributes = caffe_('layer_get_attr', self.hLayer_self); + + % setup weights + self.params = caffe.Blob.empty(); + for n = 1:length(self.attributes.hBlob_blobs) + self.params(n) = caffe.Blob(self.attributes.hBlob_blobs(n)); + end + end + function layer_type = type(self) + layer_type = caffe_('layer_get_type', self.hLayer_self); + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/Net.m b/3rdparty/caffe/matlab/+caffe/Net.m new file mode 100644 index 00000000..349e060e --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/Net.m @@ -0,0 +1,136 @@ +classdef Net < handle + % Wrapper class of caffe::Net in matlab + + properties (Access = private) + hNet_self + attributes + % attribute fields + % hLayer_layers + % hBlob_blobs + % input_blob_indices + % output_blob_indices + % layer_names + % blob_names + end + properties (SetAccess = private) + layer_vec + blob_vec + inputs + outputs + name2layer_index + name2blob_index + layer_names + blob_names + end + + methods + function self = Net(varargin) + % decide whether to construct a net from model_file or handle + if ~(nargin == 1 && isstruct(varargin{1})) + % construct a net from model_file + self = caffe.get_net(varargin{:}); + return + end + % construct a net from handle + hNet_net = varargin{1}; + CHECK(is_valid_handle(hNet_net), 'invalid Net handle'); + + % setup self handle and attributes + self.hNet_self = hNet_net; + self.attributes = caffe_('net_get_attr', self.hNet_self); + + % setup layer_vec + self.layer_vec = caffe.Layer.empty(); + for n = 1:length(self.attributes.hLayer_layers) + self.layer_vec(n) = caffe.Layer(self.attributes.hLayer_layers(n)); + end + + % setup blob_vec + self.blob_vec = caffe.Blob.empty(); + for n = 1:length(self.attributes.hBlob_blobs); + self.blob_vec(n) = caffe.Blob(self.attributes.hBlob_blobs(n)); + end + + % setup input and output blob and their names + % note: add 1 to indices as matlab is 1-indexed while C++ is 0-indexed + self.inputs = ... + self.attributes.blob_names(self.attributes.input_blob_indices + 1); + self.outputs = ... + self.attributes.blob_names(self.attributes.output_blob_indices + 1); + + % create map objects to map from name to layers and blobs + self.name2layer_index = containers.Map(self.attributes.layer_names, ... + 1:length(self.attributes.layer_names)); + self.name2blob_index = containers.Map(self.attributes.blob_names, ... + 1:length(self.attributes.blob_names)); + + % expose layer_names and blob_names for public read access + self.layer_names = self.attributes.layer_names; + self.blob_names = self.attributes.blob_names; + end + function delete (self) + caffe_('delete_net', self.hNet_self); + end + function layer = layers(self, layer_name) + CHECK(ischar(layer_name), 'layer_name must be a string'); + layer = self.layer_vec(self.name2layer_index(layer_name)); + end + function blob = blobs(self, blob_name) + CHECK(ischar(blob_name), 'blob_name must be a string'); + blob = self.blob_vec(self.name2blob_index(blob_name)); + end + function blob = params(self, layer_name, blob_index) + CHECK(ischar(layer_name), 'layer_name must be a string'); + CHECK(isscalar(blob_index), 'blob_index must be a scalar'); + blob = self.layer_vec(self.name2layer_index(layer_name)).params(blob_index); + end + function forward_prefilled(self) + caffe_('net_forward', self.hNet_self); + end + function backward_prefilled(self) + caffe_('net_backward', self.hNet_self); + end + function res = forward(self, input_data) + CHECK(iscell(input_data), 'input_data must be a cell array'); + CHECK(length(input_data) == length(self.inputs), ... + 'input data cell length must match input blob number'); + % copy data to input blobs + for n = 1:length(self.inputs) + self.blobs(self.inputs{n}).set_data(input_data{n}); + end + self.forward_prefilled(); + % retrieve data from output blobs + res = cell(length(self.outputs), 1); + for n = 1:length(self.outputs) + res{n} = self.blobs(self.outputs{n}).get_data(); + end + end + function res = backward(self, output_diff) + CHECK(iscell(output_diff), 'output_diff must be a cell array'); + CHECK(length(output_diff) == length(self.outputs), ... + 'output diff cell length must match output blob number'); + % copy diff to output blobs + for n = 1:length(self.outputs) + self.blobs(self.outputs{n}).set_diff(output_diff{n}); + end + self.backward_prefilled(); + % retrieve diff from input blobs + res = cell(length(self.inputs), 1); + for n = 1:length(self.inputs) + res{n} = self.blobs(self.inputs{n}).get_diff(); + end + end + function copy_from(self, weights_file) + CHECK(ischar(weights_file), 'weights_file must be a string'); + CHECK_FILE_EXIST(weights_file); + caffe_('net_copy_from', self.hNet_self, weights_file); + end + function reshape(self) + caffe_('net_reshape', self.hNet_self); + end + function save(self, weights_file) + CHECK(ischar(weights_file), 'weights_file must be a string'); + caffe_('net_save', self.hNet_self, weights_file); + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/Solver.m b/3rdparty/caffe/matlab/+caffe/Solver.m new file mode 100644 index 00000000..2d3c98b2 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/Solver.m @@ -0,0 +1,59 @@ +classdef Solver < handle + % Wrapper class of caffe::SGDSolver in matlab + + properties (Access = private) + hSolver_self + attributes + % attribute fields + % hNet_net + % hNet_test_nets + end + properties (SetAccess = private) + net + test_nets + end + + methods + function self = Solver(varargin) + % decide whether to construct a solver from solver_file or handle + if ~(nargin == 1 && isstruct(varargin{1})) + % construct a solver from solver_file + self = caffe.get_solver(varargin{:}); + return + end + % construct a solver from handle + hSolver_solver = varargin{1}; + CHECK(is_valid_handle(hSolver_solver), 'invalid Solver handle'); + + % setup self handle and attributes + self.hSolver_self = hSolver_solver; + self.attributes = caffe_('solver_get_attr', self.hSolver_self); + + % setup net and test_nets + self.net = caffe.Net(self.attributes.hNet_net); + self.test_nets = caffe.Net.empty(); + for n = 1:length(self.attributes.hNet_test_nets) + self.test_nets(n) = caffe.Net(self.attributes.hNet_test_nets(n)); + end + end + function delete (self) + caffe_('delete_solver', self.hSolver_self); + end + function iter = iter(self) + iter = caffe_('solver_get_iter', self.hSolver_self); + end + function restore(self, snapshot_filename) + CHECK(ischar(snapshot_filename), 'snapshot_filename must be a string'); + CHECK_FILE_EXIST(snapshot_filename); + caffe_('solver_restore', self.hSolver_self, snapshot_filename); + end + function solve(self) + caffe_('solver_solve', self.hSolver_self); + end + function step(self, iters) + CHECK(isscalar(iters) && iters > 0, 'iters must be positive integer'); + iters = double(iters); + caffe_('solver_step', self.hSolver_self, iters); + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/get_net.m b/3rdparty/caffe/matlab/+caffe/get_net.m new file mode 100644 index 00000000..4b5683eb --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/get_net.m @@ -0,0 +1,37 @@ +function net = get_net(varargin) +% net = get_net(model_file, phase_name) or +% net = get_net(model_file, weights_file, phase_name) +% Construct a net from model_file, and load weights from weights_file +% phase_name can only be 'train' or 'test' + +CHECK(nargin == 2 || nargin == 3, ['usage: ' ... + 'net = get_net(model_file, phase_name) or ' ... + 'net = get_net(model_file, weights_file, phase_name)']); +if nargin == 3 + model_file = varargin{1}; + weights_file = varargin{2}; + phase_name = varargin{3}; +elseif nargin == 2 + model_file = varargin{1}; + phase_name = varargin{2}; +end + +CHECK(ischar(model_file), 'model_file must be a string'); +CHECK(ischar(phase_name), 'phase_name must be a string'); +CHECK_FILE_EXIST(model_file); +CHECK(strcmp(phase_name, 'train') || strcmp(phase_name, 'test'), ... + sprintf('phase_name can only be %strain%s or %stest%s', ... + char(39), char(39), char(39), char(39))); + +% construct caffe net from model_file +hNet = caffe_('get_net', model_file, phase_name); +net = caffe.Net(hNet); + +% load weights from weights_file +if nargin == 3 + CHECK(ischar(weights_file), 'weights_file must be a string'); + CHECK_FILE_EXIST(weights_file); + net.copy_from(weights_file); +end + +end diff --git a/3rdparty/caffe/matlab/+caffe/get_solver.m b/3rdparty/caffe/matlab/+caffe/get_solver.m new file mode 100644 index 00000000..74d576eb --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/get_solver.m @@ -0,0 +1,10 @@ +function solver = get_solver(solver_file) +% solver = get_solver(solver_file) +% Construct a Solver object from solver_file + +CHECK(ischar(solver_file), 'solver_file must be a string'); +CHECK_FILE_EXIST(solver_file); +pSolver = caffe_('get_solver', solver_file); +solver = caffe.Solver(pSolver); + +end diff --git a/3rdparty/caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat b/3rdparty/caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat new file mode 100644 index 0000000000000000000000000000000000000000..21df3d39aaa3c43b9c2b41f88bd2e6f48585b8c5 GIT binary patch literal 606799 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˪b7-cVoNW`;fpu&9WCL7Y&nA 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 z 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

  1. 4o%wlywgLr#jd)(m^K9Jf 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

    xB4)1E^QceuT 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

    H^-)t@e&jt$WpY79UBbNo zG;&Wu9(o0zi#xz)OAknX$&7zOKV>&+Mi2P#FC~R{EBRxYlF!KjGk&5k3|G>tyOQZ$ z*bC|^d0CN6z#dkf9?&jblOtrc*H<<9=By?!*a@Dj(xl=PO$HCr zFR4j^kd1v$*aXL_u}OY-J$^{H0Mw!Y{&^FCQ6Y$0^tt3) zL98tn!mh7EIJGo{EO$b1Mu!pZ6-J3eVH666vGhv=HOT#;-3D5}HV`grVnSyVJK6OQ zy*F{GLIi7>{iSC`@Zw+ut{2Syk1SMg%d8(q=1;P4^pS;od2Jjd)6E`X;{m(=ujKv( zUK>L{VJEE2j>vVeo9kf^^*>>(CV8p<0_!ySiMg>WS(8o=HSw|MC!3mln1hVZ?Dw#T z&TOG%@z+W=^iwj2+`ozX-@<;MYx95qqx*kurCuTDlWE;Al(gr%zCrzG%c@JsT;$&3 z)M^P`+D7a06}8Zk`CqOfdo**>O}+e1hFOT_ zzuv#`SmgCN%(0u&eBJy^;4WDB~yR&hN|4= z4)wl~{t?T4?sMcLKisDe)FxAuqW+7J33BmVA5;I0nfoP*BP0 zY)V|2nw&^w-m?c>BLl>3;rm^wN#akMtnS0_zR{#1dq5Q5|E^-}3AT+o_ibF?VIz7e zJ0W{O-7+>xQvZc6TKIK^h0ps~co=PAZWgYw%Mlb@AHj))2vqY3(z5XLX%h`5nuuy? zVt7^)-aG87%M1+ZXrM?g1G`hg*t8;y<_Teh%7?Lp4A5tJ2phVDuq<~7HSPvcW_A#3 z>IKn-3{ZJ<0Grwda9R(b=uYxKdHQpo4~5CshraURmB)*_i@jJ{-HSoDJt#5JgEs5| z;Zts8Ywt$6w=TS2;zGkp>;dwav?A3&$c0R;C2P=VQhphXb<*!hp82a#ASge{{(@Er|d-@6dr zG!En5*f28alasA5-qJU}9%EqM83Sd*2HM1$_@Ep4e=oD&Z(>mO2=ILbcj&|UsQ>nF z$YGyah^79=jkoaEUJGA5v2g2S8z-yVNE~J(d996<3+(@X8ofnqWbZG`taw89|K^M)RUT+kkNJNmz-_p;F0l8<*HCigE9Ort<~`S7?IC3PIb>0; z%~xxfTiXYkNXi$=s~}aqq68%wy_cIXm&7+SCQvco=

    +!f*tB>e?=6;mppD$ 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 GG{rag*62t8 literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/matlab/+caffe/io.m b/3rdparty/caffe/matlab/+caffe/io.m new file mode 100644 index 00000000..4b072fec --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/io.m @@ -0,0 +1,41 @@ +classdef io + % a class for input and output functions + + methods (Static) + function im_data = load_image(im_file) + % im_data = load_image(im_file) + % load an image from disk into Caffe-supported data format + % switch channels from RGB to BGR, make width the fastest dimension + % and convert to single + % returns im_data in W x H x C. For colored images, C = 3 in BGR + % channels, and for grayscale images, C = 1 + CHECK(ischar(im_file), 'im_file must be a string'); + CHECK_FILE_EXIST(im_file); + im_data = imread(im_file); + % permute channels from RGB to BGR for colored images + if size(im_data, 3) == 3 + im_data = im_data(:, :, [3, 2, 1]); + end + % flip width and height to make width the fastest dimension + im_data = permute(im_data, [2, 1, 3]); + % convert from uint8 to single + im_data = single(im_data); + end + function mean_data = read_mean(mean_proto_file) + % mean_data = read_mean(mean_proto_file) + % read image mean data from binaryproto file + % returns mean_data in W x H x C with BGR channels + CHECK(ischar(mean_proto_file), 'mean_proto_file must be a string'); + CHECK_FILE_EXIST(mean_proto_file); + mean_data = caffe_('read_mean', mean_proto_file); + end + function write_mean(mean_data, mean_proto_file) + % write_mean(mean_data, mean_proto_file) + % write image mean data to binaryproto file + % mean_data should be W x H x C with BGR channels + CHECK(ischar(mean_proto_file), 'mean_proto_file must be a string'); + CHECK(isa(mean_data, 'single'), 'mean_data must be a SINGLE matrix'); + caffe_('write_mean', mean_data, mean_proto_file); + end + end +end diff --git a/3rdparty/caffe/matlab/+caffe/private/CHECK.m b/3rdparty/caffe/matlab/+caffe/private/CHECK.m new file mode 100644 index 00000000..21706549 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/private/CHECK.m @@ -0,0 +1,7 @@ +function CHECK(expr, error_msg) + +if ~expr + error(error_msg); +end + +end diff --git a/3rdparty/caffe/matlab/+caffe/private/CHECK_FILE_EXIST.m b/3rdparty/caffe/matlab/+caffe/private/CHECK_FILE_EXIST.m new file mode 100644 index 00000000..8c80fb80 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/private/CHECK_FILE_EXIST.m @@ -0,0 +1,7 @@ +function CHECK_FILE_EXIST(filename) + +if exist(filename, 'file') == 0 + error('%s does not exist', filename); +end + +end diff --git a/3rdparty/caffe/matlab/+caffe/private/caffe_.cpp b/3rdparty/caffe/matlab/+caffe/private/caffe_.cpp new file mode 100644 index 00000000..a32bd5e5 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/private/caffe_.cpp @@ -0,0 +1,605 @@ +// +// caffe_.cpp provides wrappers of the caffe::Solver class, caffe::Net class, +// caffe::Layer class and caffe::Blob class and some caffe::Caffe functions, +// so that one could easily use Caffe from matlab. +// Note that for matlab, we will simply use float as the data type. + +// Internally, data is stored with dimensions reversed from Caffe's: +// e.g., if the Caffe blob axes are (num, channels, height, width), +// the matcaffe data is stored as (width, height, channels, num) +// where width is the fastest dimension. + +#include +#include +#include + +#include "mex.h" + +#include "caffe/caffe.hpp" + +#define MEX_ARGS int nlhs, mxArray **plhs, int nrhs, const mxArray **prhs + +using namespace caffe; // NOLINT(build/namespaces) + +// Do CHECK and throw a Mex error if check fails +inline void mxCHECK(bool expr, const char* msg) { + if (!expr) { + mexErrMsgTxt(msg); + } +} +inline void mxERROR(const char* msg) { mexErrMsgTxt(msg); } + +// Check if a file exists and can be opened +void mxCHECK_FILE_EXIST(const char* file) { + std::ifstream f(file); + if (!f.good()) { + f.close(); + std::string msg("Could not open file "); + msg += file; + mxERROR(msg.c_str()); + } + f.close(); +} + +// The pointers to caffe::Solver and caffe::Net instances +static vector > > solvers_; +static vector > > nets_; +// init_key is generated at the beginning and every time you call reset +static double init_key = static_cast(caffe_rng_rand()); + +/** ----------------------------------------------------------------- + ** data conversion functions + **/ +// Enum indicates which blob memory to use +enum WhichMemory { DATA, DIFF }; + +// Copy matlab array to Blob data or diff +static void mx_mat_to_blob(const mxArray* mx_mat, Blob* blob, + WhichMemory data_or_diff) { + mxCHECK(blob->count() == mxGetNumberOfElements(mx_mat), + "number of elements in target blob doesn't match that in input mxArray"); + const float* mat_mem_ptr = reinterpret_cast(mxGetData(mx_mat)); + float* blob_mem_ptr = NULL; + switch (Caffe::mode()) { + case Caffe::CPU: + blob_mem_ptr = (data_or_diff == DATA ? + blob->mutable_cpu_data() : blob->mutable_cpu_diff()); + break; + case Caffe::GPU: + blob_mem_ptr = (data_or_diff == DATA ? + blob->mutable_gpu_data() : blob->mutable_gpu_diff()); + break; + default: + mxERROR("Unknown Caffe mode"); + } + caffe_copy(blob->count(), mat_mem_ptr, blob_mem_ptr); +} + +// Copy Blob data or diff to matlab array +static mxArray* blob_to_mx_mat(const Blob* blob, + WhichMemory data_or_diff) { + const int num_axes = blob->num_axes(); + vector dims(num_axes); + for (int blob_axis = 0, mat_axis = num_axes - 1; blob_axis < num_axes; + ++blob_axis, --mat_axis) { + dims[mat_axis] = static_cast(blob->shape(blob_axis)); + } + // matlab array needs to have at least one dimension, convert scalar to 1-dim + if (num_axes == 0) { + dims.push_back(1); + } + mxArray* mx_mat = + mxCreateNumericArray(dims.size(), dims.data(), mxSINGLE_CLASS, mxREAL); + float* mat_mem_ptr = reinterpret_cast(mxGetData(mx_mat)); + const float* blob_mem_ptr = NULL; + switch (Caffe::mode()) { + case Caffe::CPU: + blob_mem_ptr = (data_or_diff == DATA ? blob->cpu_data() : blob->cpu_diff()); + break; + case Caffe::GPU: + blob_mem_ptr = (data_or_diff == DATA ? blob->gpu_data() : blob->gpu_diff()); + break; + default: + mxERROR("Unknown Caffe mode"); + } + caffe_copy(blob->count(), blob_mem_ptr, mat_mem_ptr); + return mx_mat; +} + +// Convert vector to matlab row vector +static mxArray* int_vec_to_mx_vec(const vector& int_vec) { + mxArray* mx_vec = mxCreateDoubleMatrix(int_vec.size(), 1, mxREAL); + double* vec_mem_ptr = mxGetPr(mx_vec); + for (int i = 0; i < int_vec.size(); i++) { + vec_mem_ptr[i] = static_cast(int_vec[i]); + } + return mx_vec; +} + +// Convert vector to matlab cell vector of strings +static mxArray* str_vec_to_mx_strcell(const vector& str_vec) { + mxArray* mx_strcell = mxCreateCellMatrix(str_vec.size(), 1); + for (int i = 0; i < str_vec.size(); i++) { + mxSetCell(mx_strcell, i, mxCreateString(str_vec[i].c_str())); + } + return mx_strcell; +} + +/** ----------------------------------------------------------------- + ** handle and pointer conversion functions + ** a handle is a struct array with the following fields + ** (uint64) ptr : the pointer to the C++ object + ** (double) init_key : caffe initialization key + **/ +// Convert a handle in matlab to a pointer in C++. Check if init_key matches +template +static T* handle_to_ptr(const mxArray* mx_handle) { + mxArray* mx_ptr = mxGetField(mx_handle, 0, "ptr"); + mxArray* mx_init_key = mxGetField(mx_handle, 0, "init_key"); + mxCHECK(mxIsUint64(mx_ptr), "pointer type must be uint64"); + mxCHECK(mxGetScalar(mx_init_key) == init_key, + "Could not convert handle to pointer due to invalid init_key. " + "The object might have been cleared."); + return reinterpret_cast(*reinterpret_cast(mxGetData(mx_ptr))); +} + +// Create a handle struct vector, without setting up each handle in it +template +static mxArray* create_handle_vec(int ptr_num) { + const int handle_field_num = 2; + const char* handle_fields[handle_field_num] = { "ptr", "init_key" }; + return mxCreateStructMatrix(ptr_num, 1, handle_field_num, handle_fields); +} + +// Set up a handle in a handle struct vector by its index +template +static void setup_handle(const T* ptr, int index, mxArray* mx_handle_vec) { + mxArray* mx_ptr = mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL); + *reinterpret_cast(mxGetData(mx_ptr)) = + reinterpret_cast(ptr); + mxSetField(mx_handle_vec, index, "ptr", mx_ptr); + mxSetField(mx_handle_vec, index, "init_key", mxCreateDoubleScalar(init_key)); +} + +// Convert a pointer in C++ to a handle in matlab +template +static mxArray* ptr_to_handle(const T* ptr) { + mxArray* mx_handle = create_handle_vec(1); + setup_handle(ptr, 0, mx_handle); + return mx_handle; +} + +// Convert a vector of shared_ptr in C++ to handle struct vector +template +static mxArray* ptr_vec_to_handle_vec(const vector >& ptr_vec) { + mxArray* mx_handle_vec = create_handle_vec(ptr_vec.size()); + for (int i = 0; i < ptr_vec.size(); i++) { + setup_handle(ptr_vec[i].get(), i, mx_handle_vec); + } + return mx_handle_vec; +} + +/** ----------------------------------------------------------------- + ** matlab command functions: caffe_(api_command, arg1, arg2, ...) + **/ +// Usage: caffe_('get_solver', solver_file); +static void get_solver(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsChar(prhs[0]), + "Usage: caffe_('get_solver', solver_file)"); + char* solver_file = mxArrayToString(prhs[0]); + mxCHECK_FILE_EXIST(solver_file); + SolverParameter solver_param; + ReadSolverParamsFromTextFileOrDie(solver_file, &solver_param); + shared_ptr > solver( + SolverRegistry::CreateSolver(solver_param)); + solvers_.push_back(solver); + plhs[0] = ptr_to_handle >(solver.get()); + mxFree(solver_file); +} + +// Usage: caffe_('delete_solver', hSolver) +static void delete_solver(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('delete_solver', hSolver)"); + Solver* solver = handle_to_ptr >(prhs[0]); + solvers_.erase(std::remove_if(solvers_.begin(), solvers_.end(), + [solver] (const shared_ptr< Solver > &solverPtr) { + return solverPtr.get() == solver; + }), solvers_.end()); +} + +// Usage: caffe_('solver_get_attr', hSolver) +static void solver_get_attr(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('solver_get_attr', hSolver)"); + Solver* solver = handle_to_ptr >(prhs[0]); + const int solver_attr_num = 2; + const char* solver_attrs[solver_attr_num] = { "hNet_net", "hNet_test_nets" }; + mxArray* mx_solver_attr = mxCreateStructMatrix(1, 1, solver_attr_num, + solver_attrs); + mxSetField(mx_solver_attr, 0, "hNet_net", + ptr_to_handle >(solver->net().get())); + mxSetField(mx_solver_attr, 0, "hNet_test_nets", + ptr_vec_to_handle_vec >(solver->test_nets())); + plhs[0] = mx_solver_attr; +} + +// Usage: caffe_('solver_get_iter', hSolver) +static void solver_get_iter(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('solver_get_iter', hSolver)"); + Solver* solver = handle_to_ptr >(prhs[0]); + plhs[0] = mxCreateDoubleScalar(solver->iter()); +} + +// Usage: caffe_('solver_restore', hSolver, snapshot_file) +static void solver_restore(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsStruct(prhs[0]) && mxIsChar(prhs[1]), + "Usage: caffe_('solver_restore', hSolver, snapshot_file)"); + Solver* solver = handle_to_ptr >(prhs[0]); + char* snapshot_file = mxArrayToString(prhs[1]); + mxCHECK_FILE_EXIST(snapshot_file); + solver->Restore(snapshot_file); + mxFree(snapshot_file); +} + +// Usage: caffe_('solver_solve', hSolver) +static void solver_solve(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('solver_solve', hSolver)"); + Solver* solver = handle_to_ptr >(prhs[0]); + solver->Solve(); +} + +// Usage: caffe_('solver_step', hSolver, iters) +static void solver_step(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsStruct(prhs[0]) && mxIsDouble(prhs[1]), + "Usage: caffe_('solver_step', hSolver, iters)"); + Solver* solver = handle_to_ptr >(prhs[0]); + int iters = mxGetScalar(prhs[1]); + solver->Step(iters); +} + +// Usage: caffe_('get_net', model_file, phase_name) +static void get_net(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsChar(prhs[0]) && mxIsChar(prhs[1]), + "Usage: caffe_('get_net', model_file, phase_name)"); + char* model_file = mxArrayToString(prhs[0]); + char* phase_name = mxArrayToString(prhs[1]); + mxCHECK_FILE_EXIST(model_file); + Phase phase; + if (strcmp(phase_name, "train") == 0) { + phase = TRAIN; + } else if (strcmp(phase_name, "test") == 0) { + phase = TEST; + } else { + mxERROR("Unknown phase"); + } + shared_ptr > net(new caffe::Net(model_file, phase)); + nets_.push_back(net); + plhs[0] = ptr_to_handle >(net.get()); + mxFree(model_file); + mxFree(phase_name); +} + +// Usage: caffe_('delete_solver', hSolver) +static void delete_net(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('delete_solver', hNet)"); + Net* net = handle_to_ptr >(prhs[0]); + nets_.erase(std::remove_if(nets_.begin(), nets_.end(), + [net] (const shared_ptr< Net > &netPtr) { + return netPtr.get() == net; + }), nets_.end()); +} + +// Usage: caffe_('net_get_attr', hNet) +static void net_get_attr(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('net_get_attr', hNet)"); + Net* net = handle_to_ptr >(prhs[0]); + const int net_attr_num = 6; + const char* net_attrs[net_attr_num] = { "hLayer_layers", "hBlob_blobs", + "input_blob_indices", "output_blob_indices", "layer_names", "blob_names"}; + mxArray* mx_net_attr = mxCreateStructMatrix(1, 1, net_attr_num, + net_attrs); + mxSetField(mx_net_attr, 0, "hLayer_layers", + ptr_vec_to_handle_vec >(net->layers())); + mxSetField(mx_net_attr, 0, "hBlob_blobs", + ptr_vec_to_handle_vec >(net->blobs())); + mxSetField(mx_net_attr, 0, "input_blob_indices", + int_vec_to_mx_vec(net->input_blob_indices())); + mxSetField(mx_net_attr, 0, "output_blob_indices", + int_vec_to_mx_vec(net->output_blob_indices())); + mxSetField(mx_net_attr, 0, "layer_names", + str_vec_to_mx_strcell(net->layer_names())); + mxSetField(mx_net_attr, 0, "blob_names", + str_vec_to_mx_strcell(net->blob_names())); + plhs[0] = mx_net_attr; +} + +// Usage: caffe_('net_forward', hNet) +static void net_forward(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('net_forward', hNet)"); + Net* net = handle_to_ptr >(prhs[0]); + net->ForwardPrefilled(); +} + +// Usage: caffe_('net_backward', hNet) +static void net_backward(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('net_backward', hNet)"); + Net* net = handle_to_ptr >(prhs[0]); + net->Backward(); +} + +// Usage: caffe_('net_copy_from', hNet, weights_file) +static void net_copy_from(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsStruct(prhs[0]) && mxIsChar(prhs[1]), + "Usage: caffe_('net_copy_from', hNet, weights_file)"); + Net* net = handle_to_ptr >(prhs[0]); + char* weights_file = mxArrayToString(prhs[1]); + mxCHECK_FILE_EXIST(weights_file); + net->CopyTrainedLayersFrom(weights_file); + mxFree(weights_file); +} + +// Usage: caffe_('net_reshape', hNet) +static void net_reshape(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('net_reshape', hNet)"); + Net* net = handle_to_ptr >(prhs[0]); + net->Reshape(); +} + +// Usage: caffe_('net_save', hNet, save_file) +static void net_save(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsStruct(prhs[0]) && mxIsChar(prhs[1]), + "Usage: caffe_('net_save', hNet, save_file)"); + Net* net = handle_to_ptr >(prhs[0]); + char* weights_file = mxArrayToString(prhs[1]); + NetParameter net_param; + net->ToProto(&net_param, false); + WriteProtoToBinaryFile(net_param, weights_file); + mxFree(weights_file); +} + +// Usage: caffe_('layer_get_attr', hLayer) +static void layer_get_attr(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('layer_get_attr', hLayer)"); + Layer* layer = handle_to_ptr >(prhs[0]); + const int layer_attr_num = 1; + const char* layer_attrs[layer_attr_num] = { "hBlob_blobs" }; + mxArray* mx_layer_attr = mxCreateStructMatrix(1, 1, layer_attr_num, + layer_attrs); + mxSetField(mx_layer_attr, 0, "hBlob_blobs", + ptr_vec_to_handle_vec >(layer->blobs())); + plhs[0] = mx_layer_attr; +} + +// Usage: caffe_('layer_get_type', hLayer) +static void layer_get_type(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('layer_get_type', hLayer)"); + Layer* layer = handle_to_ptr >(prhs[0]); + plhs[0] = mxCreateString(layer->type()); +} + +// Usage: caffe_('blob_get_shape', hBlob) +static void blob_get_shape(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('blob_get_shape', hBlob)"); + Blob* blob = handle_to_ptr >(prhs[0]); + const int num_axes = blob->num_axes(); + mxArray* mx_shape = mxCreateDoubleMatrix(1, num_axes, mxREAL); + double* shape_mem_mtr = mxGetPr(mx_shape); + for (int blob_axis = 0, mat_axis = num_axes - 1; blob_axis < num_axes; + ++blob_axis, --mat_axis) { + shape_mem_mtr[mat_axis] = static_cast(blob->shape(blob_axis)); + } + plhs[0] = mx_shape; +} + +// Usage: caffe_('blob_reshape', hBlob, new_shape) +static void blob_reshape(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsStruct(prhs[0]) && mxIsDouble(prhs[1]), + "Usage: caffe_('blob_reshape', hBlob, new_shape)"); + Blob* blob = handle_to_ptr >(prhs[0]); + const mxArray* mx_shape = prhs[1]; + double* shape_mem_mtr = mxGetPr(mx_shape); + const int num_axes = mxGetNumberOfElements(mx_shape); + vector blob_shape(num_axes); + for (int blob_axis = 0, mat_axis = num_axes - 1; blob_axis < num_axes; + ++blob_axis, --mat_axis) { + blob_shape[blob_axis] = static_cast(shape_mem_mtr[mat_axis]); + } + blob->Reshape(blob_shape); +} + +// Usage: caffe_('blob_get_data', hBlob) +static void blob_get_data(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('blob_get_data', hBlob)"); + Blob* blob = handle_to_ptr >(prhs[0]); + plhs[0] = blob_to_mx_mat(blob, DATA); +} + +// Usage: caffe_('blob_set_data', hBlob, new_data) +static void blob_set_data(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsStruct(prhs[0]) && mxIsSingle(prhs[1]), + "Usage: caffe_('blob_set_data', hBlob, new_data)"); + Blob* blob = handle_to_ptr >(prhs[0]); + mx_mat_to_blob(prhs[1], blob, DATA); +} + +// Usage: caffe_('blob_get_diff', hBlob) +static void blob_get_diff(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('blob_get_diff', hBlob)"); + Blob* blob = handle_to_ptr >(prhs[0]); + plhs[0] = blob_to_mx_mat(blob, DIFF); +} + +// Usage: caffe_('blob_set_diff', hBlob, new_diff) +static void blob_set_diff(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsStruct(prhs[0]) && mxIsSingle(prhs[1]), + "Usage: caffe_('blob_set_diff', hBlob, new_diff)"); + Blob* blob = handle_to_ptr >(prhs[0]); + mx_mat_to_blob(prhs[1], blob, DIFF); +} + +// Usage: caffe_('set_mode_cpu') +static void set_mode_cpu(MEX_ARGS) { + mxCHECK(nrhs == 0, "Usage: caffe_('set_mode_cpu')"); + Caffe::set_mode(Caffe::CPU); +} + +// Usage: caffe_('set_mode_gpu') +static void set_mode_gpu(MEX_ARGS) { + mxCHECK(nrhs == 0, "Usage: caffe_('set_mode_gpu')"); + Caffe::set_mode(Caffe::GPU); +} + +// Usage: caffe_('set_device', device_id) +static void set_device(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsDouble(prhs[0]), + "Usage: caffe_('set_device', device_id)"); + int device_id = static_cast(mxGetScalar(prhs[0])); + Caffe::SetDevice(device_id); +} + +// Usage: caffe_('get_init_key') +static void get_init_key(MEX_ARGS) { + mxCHECK(nrhs == 0, "Usage: caffe_('get_init_key')"); + plhs[0] = mxCreateDoubleScalar(init_key); +} + +// Usage: caffe_('reset') +static void reset(MEX_ARGS) { + mxCHECK(nrhs == 0, "Usage: caffe_('reset')"); + // Clear solvers and stand-alone nets + mexPrintf("Cleared %d solvers and %d stand-alone nets\n", + solvers_.size(), nets_.size()); + solvers_.clear(); + nets_.clear(); + // Generate new init_key, so that handles created before becomes invalid + init_key = static_cast(caffe_rng_rand()); +} + +// Usage: caffe_('read_mean', mean_proto_file) +static void read_mean(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsChar(prhs[0]), + "Usage: caffe_('read_mean', mean_proto_file)"); + char* mean_proto_file = mxArrayToString(prhs[0]); + mxCHECK_FILE_EXIST(mean_proto_file); + Blob data_mean; + BlobProto blob_proto; + bool result = ReadProtoFromBinaryFile(mean_proto_file, &blob_proto); + mxCHECK(result, "Could not read your mean file"); + data_mean.FromProto(blob_proto); + plhs[0] = blob_to_mx_mat(&data_mean, DATA); + mxFree(mean_proto_file); +} + +// Usage: caffe_('write_mean', mean_data, mean_proto_file) +static void write_mean(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsSingle(prhs[0]) && mxIsChar(prhs[1]), + "Usage: caffe_('write_mean', mean_data, mean_proto_file)"); + char* mean_proto_file = mxArrayToString(prhs[1]); + int ndims = mxGetNumberOfDimensions(prhs[0]); + mxCHECK(ndims >= 2 && ndims <= 3, "mean_data must have at 2 or 3 dimensions"); + const mwSize *dims = mxGetDimensions(prhs[0]); + int width = dims[0]; + int height = dims[1]; + int channels; + if (ndims == 3) + channels = dims[2]; + else + channels = 1; + Blob data_mean(1, channels, height, width); + mx_mat_to_blob(prhs[0], &data_mean, DATA); + BlobProto blob_proto; + data_mean.ToProto(&blob_proto, false); + WriteProtoToBinaryFile(blob_proto, mean_proto_file); + mxFree(mean_proto_file); +} + +// Usage: caffe_('version') +static void version(MEX_ARGS) { + mxCHECK(nrhs == 0, "Usage: caffe_('version')"); + // Return version string + plhs[0] = mxCreateString(AS_STRING(CAFFE_VERSION)); +} + +/** ----------------------------------------------------------------- + ** Available commands. + **/ +struct handler_registry { + string cmd; + void (*func)(MEX_ARGS); +}; + +static handler_registry handlers[] = { + // Public API functions + { "get_solver", get_solver }, + { "delete_solver", delete_solver }, + { "solver_get_attr", solver_get_attr }, + { "solver_get_iter", solver_get_iter }, + { "solver_restore", solver_restore }, + { "solver_solve", solver_solve }, + { "solver_step", solver_step }, + { "get_net", get_net }, + { "delete_net", delete_net }, + { "net_get_attr", net_get_attr }, + { "net_forward", net_forward }, + { "net_backward", net_backward }, + { "net_copy_from", net_copy_from }, + { "net_reshape", net_reshape }, + { "net_save", net_save }, + { "layer_get_attr", layer_get_attr }, + { "layer_get_type", layer_get_type }, + { "blob_get_shape", blob_get_shape }, + { "blob_reshape", blob_reshape }, + { "blob_get_data", blob_get_data }, + { "blob_set_data", blob_set_data }, + { "blob_get_diff", blob_get_diff }, + { "blob_set_diff", blob_set_diff }, + { "set_mode_cpu", set_mode_cpu }, + { "set_mode_gpu", set_mode_gpu }, + { "set_device", set_device }, + { "get_init_key", get_init_key }, + { "reset", reset }, + { "read_mean", read_mean }, + { "write_mean", write_mean }, + { "version", version }, + // The end. + { "END", NULL }, +}; + +/** ----------------------------------------------------------------- + ** matlab entry point. + **/ +// Usage: caffe_(api_command, arg1, arg2, ...) +void mexFunction(MEX_ARGS) { + mexLock(); // Avoid clearing the mex file. + mxCHECK(nrhs > 0, "Usage: caffe_(api_command, arg1, arg2, ...)"); + // Handle input command + char* cmd = mxArrayToString(prhs[0]); + bool dispatched = false; + // Dispatch to cmd handler + for (int i = 0; handlers[i].func != NULL; i++) { + if (handlers[i].cmd.compare(cmd) == 0) { + handlers[i].func(nlhs, plhs, nrhs-1, prhs+1); + dispatched = true; + break; + } + } + if (!dispatched) { + ostringstream error_msg; + error_msg << "Unknown command '" << cmd << "'"; + mxERROR(error_msg.str().c_str()); + } + mxFree(cmd); +} diff --git a/3rdparty/caffe/matlab/+caffe/private/is_valid_handle.m b/3rdparty/caffe/matlab/+caffe/private/is_valid_handle.m new file mode 100644 index 00000000..a0648ecd --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/private/is_valid_handle.m @@ -0,0 +1,27 @@ +function valid = is_valid_handle(hObj) +% valid = is_valid_handle(hObj) or is_valid_handle('get_new_init_key') +% Check if a handle is valid (has the right data type and init_key matches) +% Use is_valid_handle('get_new_init_key') to get new init_key from C++; + +% a handle is a struct array with the following fields +% (uint64) ptr : the pointer to the C++ object +% (double) init_key : caffe initialization key + +persistent init_key; +if isempty(init_key) + init_key = caffe_('get_init_key'); +end + +% is_valid_handle('get_new_init_key') to get new init_key from C++; +if ischar(hObj) && strcmp(hObj, 'get_new_init_key') + init_key = caffe_('get_init_key'); + return +else + % check whether data types are correct and init_key matches + valid = isstruct(hObj) ... + && isscalar(hObj.ptr) && isa(hObj.ptr, 'uint64') ... + && isscalar(hObj.init_key) && isa(hObj.init_key, 'double') ... + && hObj.init_key == init_key; +end + +end diff --git a/3rdparty/caffe/matlab/+caffe/reset_all.m b/3rdparty/caffe/matlab/+caffe/reset_all.m new file mode 100644 index 00000000..a8b33dee --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/reset_all.m @@ -0,0 +1,8 @@ +function reset_all() +% reset_all() +% clear all solvers and stand-alone nets and reset Caffe to initial status + +caffe_('reset'); +is_valid_handle('get_new_init_key'); + +end diff --git a/3rdparty/caffe/matlab/+caffe/run_tests.m b/3rdparty/caffe/matlab/+caffe/run_tests.m new file mode 100644 index 00000000..6dbf6b23 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/run_tests.m @@ -0,0 +1,20 @@ +function results = run_tests() +% results = run_tests() +% run all tests in this caffe matlab wrapper package + +% use CPU for testing +caffe.set_mode_cpu(); + +% reset caffe before testing +caffe.reset_all(); + +% put all test cases here +results = [... + run(caffe.test.test_net) ... + run(caffe.test.test_solver) ... + run(caffe.test.test_io) ]; + +% reset caffe after testing +caffe.reset_all(); + +end diff --git a/3rdparty/caffe/matlab/+caffe/set_device.m b/3rdparty/caffe/matlab/+caffe/set_device.m new file mode 100644 index 00000000..f94068cb --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/set_device.m @@ -0,0 +1,11 @@ +function set_device(device_id) +% set_device(device_id) +% set Caffe's GPU device ID + +CHECK(isscalar(device_id) && device_id >= 0, ... + 'device_id must be non-negative integer'); +device_id = double(device_id); + +caffe_('set_device', device_id); + +end diff --git a/3rdparty/caffe/matlab/+caffe/set_mode_cpu.m b/3rdparty/caffe/matlab/+caffe/set_mode_cpu.m new file mode 100644 index 00000000..a87e0e28 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/set_mode_cpu.m @@ -0,0 +1,7 @@ +function set_mode_cpu() +% set_mode_cpu() +% set Caffe to CPU mode + +caffe_('set_mode_cpu'); + +end diff --git a/3rdparty/caffe/matlab/+caffe/set_mode_gpu.m b/3rdparty/caffe/matlab/+caffe/set_mode_gpu.m new file mode 100644 index 00000000..78e5f677 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/set_mode_gpu.m @@ -0,0 +1,7 @@ +function set_mode_gpu() +% set_mode_gpu() +% set Caffe to GPU mode + +caffe_('set_mode_gpu'); + +end diff --git a/3rdparty/caffe/matlab/+caffe/version.m b/3rdparty/caffe/matlab/+caffe/version.m new file mode 100644 index 00000000..61cae4f7 --- /dev/null +++ b/3rdparty/caffe/matlab/+caffe/version.m @@ -0,0 +1,7 @@ +function version_str = version() +% version() +% show Caffe's version. + +version_str = caffe_('version'); + +end diff --git a/3rdparty/caffe/matlab/CMakeLists.txt b/3rdparty/caffe/matlab/CMakeLists.txt new file mode 100644 index 00000000..987730d9 --- /dev/null +++ b/3rdparty/caffe/matlab/CMakeLists.txt @@ -0,0 +1,72 @@ +# Builds Matlab (or Octave) interface. In case of Matlab caffe must be +# compield as shared library. Octave can link static or shared caffe library +# To install octave run: sudo apt-get install liboctave-dev + +if(NOT BUILD_matlab) + return() +endif() + +if(HAVE_MATLAB AND Octave_compiler) + set(build_using ${Matlab_build_mex_using}) +elseif(HAVE_MATLAB AND NOT Octave_compiler) + set(build_using "Matlab") +elseif(NOT HAVE_MATLAB AND Octave_compiler) + set(build_using "Octave") +else() + return() +endif() + +if(NOT BUILD_SHARED_LIBS AND build_using MATCHES Matlab) + message(FATAL_ERROR "Matlab MEX interface (with default mex options file) can only be built if caffe is compiled as shared library. Please enable 'BUILD_SHARED_LIBS' in CMake. Aternativelly you can switch to Octave compiler.") +endif() + +# helper function to set proper mex file extension +function(caffe_fetch_and_set_proper_mexext mexfile_variable) + execute_process(COMMAND ${Matlab_mexext} OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE res OUTPUT_VARIABLE ext) + if(res MATCHES 0) + get_filename_component(folder ${${mexfile_variable}} PATH) + get_filename_component(name_we ${${mexfile_variable}} NAME_WE) + set(${mexfile_variable} ${folder}/${name_we}.${ext} PARENT_SCOPE) + endif() +endfunction() + +# global settings +file(GLOB Matlab_srcs +caffe/private/caffe_.cpp) +set(Matlab_caffe_mex ${PROJECT_SOURCE_DIR}/matlab/+caffe/private/caffe_.mex) + +caffe_get_current_cflags(cflags) +caffe_parse_linker_libs(Caffe_LINKER_LIBS folders libflags macos_frameworks) +set(folders $ ${folders}) + +# prepare linker flag lists +string(REPLACE ";" ";-L" link_folders "-L${folders}") +string(REPLACE ";" ":" rpath_folders "${folders}") + +if(build_using MATCHES "Matlab") + set(libflags -lcaffe${Caffe_POSTFIX} ${libflags}) # Matlab R2014a complans for -Wl,--whole-archive + + caffe_fetch_and_set_proper_mexext(Matlab_caffe_mex) + add_custom_command(OUTPUT ${Matlab_caffe_mex} COMMAND ${Matlab_mex} + ARGS -output ${Matlab_caffe_mex} ${Matlab_srcs} ${cflags} ${link_folders} ${libflags} + DEPENDS caffe COMMENT "Building Matlab interface: ${Matlab_caffe_mex}" VERBATIM) + add_custom_target(matlab ALL DEPENDS ${Matlab_caffe_mex} SOURCES ${Matlab_srcs}) + +elseif(build_using MATCHES "Octave") + + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(libflags -Wl,-force_load,$ ${libflags}) + elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(libflags -Wl,--whole-archive -lcaffe${Caffe_POSTFIX} -Wl,--no-whole-archive ${libflags}) + endif() + + add_custom_command(OUTPUT ${Matlab_caffe_mex} COMMAND ${Octave_compiler} + ARGS --mex -o ${Matlab_caffe_mex} ${Matlab_srcs} ${cflags} ${link_folders} ${libflags} -Wl,-rpath,${rpath_folders} + DEPENDS caffe COMMENT "Building Octave interface: ${Matlab_caffe_mex}" VERBATIM) + + add_custom_target(octave ALL DEPENDS ${Matlab_caffe_mex} SOURCES ${Matlab_srcs}) +endif() + +# ---[ Install +file(GLOB mfiles caffe/*.m) +install(FILES ${mfiles} ${Matlab_caffe_mex} DESTINATION matlab) + diff --git a/3rdparty/caffe/matlab/demo/classification_demo.m b/3rdparty/caffe/matlab/demo/classification_demo.m new file mode 100644 index 00000000..435c0778 --- /dev/null +++ b/3rdparty/caffe/matlab/demo/classification_demo.m @@ -0,0 +1,148 @@ +function [scores, maxlabel] = classification_demo(im, use_gpu) +% [scores, maxlabel] = classification_demo(im, use_gpu) +% +% Image classification demo using BVLC CaffeNet. +% +% IMPORTANT: before you run this demo, you should download BVLC CaffeNet +% from Model Zoo (http://caffe.berkeleyvision.org/model_zoo.html) +% +% **************************************************************************** +% For detailed documentation and usage on Caffe's Matlab interface, please +% refer to the Caffe Interface Tutorial at +% http://caffe.berkeleyvision.org/tutorial/interfaces.html#matlab +% **************************************************************************** +% +% input +% im color image as uint8 HxWx3 +% use_gpu 1 to use the GPU, 0 to use the CPU +% +% output +% scores 1000-dimensional ILSVRC score vector +% maxlabel the label of the highest score +% +% You may need to do the following before you start matlab: +% $ export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64:/usr/local/cuda-5.5/lib64 +% $ export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 +% Or the equivalent based on where things are installed on your system +% and what versions are installed. +% +% Usage: +% im = imread('../../examples/images/cat.jpg'); +% scores = classification_demo(im, 1); +% [score, class] = max(scores); +% Five things to be aware of: +% caffe uses row-major order +% matlab uses column-major order +% caffe uses BGR color channel order +% matlab uses RGB color channel order +% images need to have the data mean subtracted + +% Data coming in from matlab needs to be in the order +% [width, height, channels, images] +% where width is the fastest dimension. +% Here is the rough matlab code for putting image data into the correct +% format in W x H x C with BGR channels: +% % permute channels from RGB to BGR +% im_data = im(:, :, [3, 2, 1]); +% % flip width and height to make width the fastest dimension +% im_data = permute(im_data, [2, 1, 3]); +% % convert from uint8 to single +% im_data = single(im_data); +% % reshape to a fixed size (e.g., 227x227). +% im_data = imresize(im_data, [IMAGE_DIM IMAGE_DIM], 'bilinear'); +% % subtract mean_data (already in W x H x C with BGR channels) +% im_data = im_data - mean_data; + +% If you have multiple images, cat them with cat(4, ...) + +% Add caffe/matlab to your Matlab search PATH in order to use matcaffe +if exist('../+caffe', 'dir') + addpath('..'); +else + error('Please run this demo from caffe/matlab/demo'); +end + +% Set caffe mode +if exist('use_gpu', 'var') && use_gpu + caffe.set_mode_gpu(); + gpu_id = 0; % we will use the first gpu in this demo + caffe.set_device(gpu_id); +else + caffe.set_mode_cpu(); +end + +% Initialize the network using BVLC CaffeNet for image classification +% Weights (parameter) file needs to be downloaded from Model Zoo. +model_dir = '../../models/bvlc_reference_caffenet/'; +net_model = [model_dir 'deploy.prototxt']; +net_weights = [model_dir 'bvlc_reference_caffenet.caffemodel']; +phase = 'test'; % run with phase test (so that dropout isn't applied) +if ~exist(net_weights, 'file') + error('Please download CaffeNet from Model Zoo before you run this demo'); +end + +% Initialize a network +net = caffe.Net(net_model, net_weights, phase); + +if nargin < 1 + % For demo purposes we will use the cat image + fprintf('using caffe/examples/images/cat.jpg as input image\n'); + im = imread('../../examples/images/cat.jpg'); +end + +% prepare oversampled input +% input_data is Height x Width x Channel x Num +tic; +input_data = {prepare_image(im)}; +toc; + +% do forward pass to get scores +% scores are now Channels x Num, where Channels == 1000 +tic; +% The net forward function. It takes in a cell array of N-D arrays +% (where N == 4 here) containing data of input blob(s) and outputs a cell +% array containing data from output blob(s) +scores = net.forward(input_data); +toc; + +scores = scores{1}; +scores = mean(scores, 2); % take average scores over 10 crops + +[~, maxlabel] = max(scores); + +% call caffe.reset_all() to reset caffe +caffe.reset_all(); + +% ------------------------------------------------------------------------ +function crops_data = prepare_image(im) +% ------------------------------------------------------------------------ +% caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat contains mean_data that +% is already in W x H x C with BGR channels +d = load('../+caffe/imagenet/ilsvrc_2012_mean.mat'); +mean_data = d.mean_data; +IMAGE_DIM = 256; +CROPPED_DIM = 227; + +% Convert an image returned by Matlab's imread to im_data in caffe's data +% format: W x H x C with BGR channels +im_data = im(:, :, [3, 2, 1]); % permute channels from RGB to BGR +im_data = permute(im_data, [2, 1, 3]); % flip width and height +im_data = single(im_data); % convert from uint8 to single +im_data = imresize(im_data, [IMAGE_DIM IMAGE_DIM], 'bilinear'); % resize im_data +im_data = im_data - mean_data; % subtract mean_data (already in W x H x C, BGR) + +% oversample (4 corners, center, and their x-axis flips) +crops_data = zeros(CROPPED_DIM, CROPPED_DIM, 3, 10, 'single'); +indices = [0 IMAGE_DIM-CROPPED_DIM] + 1; +n = 1; +for i = indices + for j = indices + crops_data(:, :, :, n) = im_data(i:i+CROPPED_DIM-1, j:j+CROPPED_DIM-1, :); + crops_data(:, :, :, n+5) = crops_data(end:-1:1, :, :, n); + n = n + 1; + end +end +center = floor(indices(2) / 2) + 1; +crops_data(:,:,:,5) = ... + im_data(center:center+CROPPED_DIM-1,center:center+CROPPED_DIM-1,:); +crops_data(:,:,:,10) = crops_data(end:-1:1, :, :, 5); diff --git a/3rdparty/caffe/matlab/hdf5creation/.gitignore b/3rdparty/caffe/matlab/hdf5creation/.gitignore new file mode 100644 index 00000000..e2333dd1 --- /dev/null +++ b/3rdparty/caffe/matlab/hdf5creation/.gitignore @@ -0,0 +1,2 @@ +*.h5 +list.txt diff --git a/3rdparty/caffe/matlab/hdf5creation/demo.m b/3rdparty/caffe/matlab/hdf5creation/demo.m new file mode 100644 index 00000000..4f9f7b5a --- /dev/null +++ b/3rdparty/caffe/matlab/hdf5creation/demo.m @@ -0,0 +1,64 @@ +%% WRITING TO HDF5 +filename='trial.h5'; + +num_total_samples=10000; +% to simulate data being read from disk / generated etc. +data_disk=rand(5,5,1,num_total_samples); +label_disk=rand(10,num_total_samples); + +chunksz=100; +created_flag=false; +totalct=0; +for batchno=1:num_total_samples/chunksz + fprintf('batch no. %d\n', batchno); + last_read=(batchno-1)*chunksz; + + % to simulate maximum data to be held in memory before dumping to hdf5 file + batchdata=data_disk(:,:,1,last_read+1:last_read+chunksz); + batchlabs=label_disk(:,last_read+1:last_read+chunksz); + + % store to hdf5 + startloc=struct('dat',[1,1,1,totalct+1], 'lab', [1,totalct+1]); + curr_dat_sz=store2hdf5(filename, batchdata, batchlabs, ~created_flag, startloc, chunksz); + created_flag=true;% flag set so that file is created only once + totalct=curr_dat_sz(end);% updated dataset size (#samples) +end + +% display structure of the stored HDF5 file +h5disp(filename); + +%% READING FROM HDF5 + +% Read data and labels for samples #1000 to 1999 +data_rd=h5read(filename, '/data', [1 1 1 1000], [5, 5, 1, 1000]); +label_rd=h5read(filename, '/label', [1 1000], [10, 1000]); +fprintf('Testing ...\n'); +try + assert(isequal(data_rd, single(data_disk(:,:,:,1000:1999))), 'Data do not match'); + assert(isequal(label_rd, single(label_disk(:,1000:1999))), 'Labels do not match'); + + fprintf('Success!\n'); +catch err + fprintf('Test failed ...\n'); + getReport(err) +end + +%delete(filename); + +% CREATE list.txt containing filename, to be used as source for HDF5_DATA_LAYER +FILE=fopen('list.txt', 'w'); +fprintf(FILE, '%s', filename); +fclose(FILE); +fprintf('HDF5 filename listed in %s \n', 'list.txt'); + +% NOTE: In net definition prototxt, use list.txt as input to HDF5_DATA as: +% layer { +% name: "data" +% type: "HDF5Data" +% top: "data" +% top: "labelvec" +% hdf5_data_param { +% source: "/path/to/list.txt" +% batch_size: 64 +% } +% } diff --git a/3rdparty/caffe/matlab/hdf5creation/store2hdf5.m b/3rdparty/caffe/matlab/hdf5creation/store2hdf5.m new file mode 100644 index 00000000..4e8c81d9 --- /dev/null +++ b/3rdparty/caffe/matlab/hdf5creation/store2hdf5.m @@ -0,0 +1,59 @@ +function [curr_dat_sz, curr_lab_sz] = store2hdf5(filename, data, labels, create, startloc, chunksz) + % *data* is W*H*C*N matrix of images should be normalized (e.g. to lie between 0 and 1) beforehand + % *label* is D*N matrix of labels (D labels per sample) + % *create* [0/1] specifies whether to create file newly or to append to previously created file, useful to store information in batches when a dataset is too big to be held in memory (default: 1) + % *startloc* (point at which to start writing data). By default, + % if create=1 (create mode), startloc.data=[1 1 1 1], and startloc.lab=[1 1]; + % if create=0 (append mode), startloc.data=[1 1 1 K+1], and startloc.lab = [1 K+1]; where K is the current number of samples stored in the HDF + % chunksz (used only in create mode), specifies number of samples to be stored per chunk (see HDF5 documentation on chunking) for creating HDF5 files with unbounded maximum size - TLDR; higher chunk sizes allow faster read-write operations + + % verify that format is right + dat_dims=size(data); + lab_dims=size(labels); + num_samples=dat_dims(end); + + assert(lab_dims(end)==num_samples, 'Number of samples should be matched between data and labels'); + + if ~exist('create','var') + create=true; + end + + + if create + %fprintf('Creating dataset with %d samples\n', num_samples); + if ~exist('chunksz', 'var') + chunksz=1000; + end + if exist(filename, 'file') + fprintf('Warning: replacing existing file %s \n', filename); + delete(filename); + end + h5create(filename, '/data', [dat_dims(1:end-1) Inf], 'Datatype', 'single', 'ChunkSize', [dat_dims(1:end-1) chunksz]); % width, height, channels, number + h5create(filename, '/label', [lab_dims(1:end-1) Inf], 'Datatype', 'single', 'ChunkSize', [lab_dims(1:end-1) chunksz]); % width, height, channels, number + if ~exist('startloc','var') + startloc.dat=[ones(1,length(dat_dims)-1), 1]; + startloc.lab=[ones(1,length(lab_dims)-1), 1]; + end + else % append mode + if ~exist('startloc','var') + info=h5info(filename); + prev_dat_sz=info.Datasets(1).Dataspace.Size; + prev_lab_sz=info.Datasets(2).Dataspace.Size; + assert(all(prev_dat_sz(1:end-1)==dat_dims(1:end-1)), 'Data dimensions must match existing dimensions in dataset'); + assert(all(prev_lab_sz(1:end-1)==lab_dims(1:end-1)), 'Label dimensions must match existing dimensions in dataset'); + startloc.dat=[ones(1,length(dat_dims)-1), prev_dat_sz(end)+1]; + startloc.lab=[ones(1,length(lab_dims)-1), prev_lab_sz(end)+1]; + end + end + + if ~isempty(data) + h5write(filename, '/data', single(data), startloc.dat, size(data)); + h5write(filename, '/label', single(labels), startloc.lab, size(labels)); + end + + if nargout + info=h5info(filename); + curr_dat_sz=info.Datasets(1).Dataspace.Size; + curr_lab_sz=info.Datasets(2).Dataspace.Size; + end +end diff --git a/3rdparty/caffe/python/CMakeLists.txt b/3rdparty/caffe/python/CMakeLists.txt new file mode 100644 index 00000000..c53299d2 --- /dev/null +++ b/3rdparty/caffe/python/CMakeLists.txt @@ -0,0 +1,40 @@ +if(NOT HAVE_PYTHON) + message(STATUS "Python interface is disabled or not all required dependencies found. Building without it...") + return() +endif() + +file(GLOB_RECURSE python_srcs ${PROJECT_SOURCE_DIR}/python/*.cpp) + +add_library(pycaffe SHARED ${python_srcs}) +caffe_default_properties(pycaffe) +set_target_properties(pycaffe PROPERTIES PREFIX "" OUTPUT_NAME "_caffe") +target_include_directories(pycaffe PUBLIC ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR}) +target_link_libraries(pycaffe PUBLIC ${Caffe_LINK} ${PYTHON_LIBRARIES}) + +if(UNIX OR APPLE) + set(__linkname "${PROJECT_SOURCE_DIR}/python/caffe/_caffe.so") + add_custom_command(TARGET pycaffe POST_BUILD + COMMAND ln -sf $ "${__linkname}" + COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_SOURCE_DIR}/python/caffe/proto + COMMAND touch ${PROJECT_SOURCE_DIR}/python/caffe/proto/__init__.py + COMMAND cp ${proto_gen_folder}/*.py ${PROJECT_SOURCE_DIR}/python/caffe/proto/ + COMMENT "Creating symlink ${__linkname} -> ${PROJECT_BINARY_DIR}/lib/_caffe${Caffe_POSTFIX}.so") +endif() + +# ---[ Install +# scripts +file(GLOB python_files *.py requirements.txt) +install(FILES ${python_files} DESTINATION python) + +# module +install(DIRECTORY caffe + DESTINATION python + FILES_MATCHING + PATTERN "*.py" + PATTERN "ilsvrc_2012_mean.npy" + PATTERN "test" EXCLUDE + ) + +# _caffe.so +install(TARGETS pycaffe DESTINATION python/caffe) + diff --git a/3rdparty/caffe/python/caffe/_caffe.cpp b/3rdparty/caffe/python/caffe/_caffe.cpp new file mode 100644 index 00000000..d7f43fff --- /dev/null +++ b/3rdparty/caffe/python/caffe/_caffe.cpp @@ -0,0 +1,570 @@ +#include // NOLINT(build/include_alpha) + +// Produce deprecation warnings (needs to come before arrayobject.h inclusion). +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION + +#include +#include +#include +#include +#include + +// these need to be included after boost on OS X +#include // NOLINT(build/include_order) +#include // NOLINT(build/include_order) +#include // NOLINT + +#include "caffe/caffe.hpp" +#include "caffe/layers/memory_data_layer.hpp" +#include "caffe/layers/python_layer.hpp" +#include "caffe/sgd_solvers.hpp" + +// Temporary solution for numpy < 1.7 versions: old macro, no promises. +// You're strongly advised to upgrade to >= 1.7. +#ifndef NPY_ARRAY_C_CONTIGUOUS +#define NPY_ARRAY_C_CONTIGUOUS NPY_C_CONTIGUOUS +#define PyArray_SetBaseObject(arr, x) (PyArray_BASE(arr) = (x)) +#endif + +/* Fix to avoid registration warnings in pycaffe (#3960) */ +#define BP_REGISTER_SHARED_PTR_TO_PYTHON(PTR) do { \ + const boost::python::type_info info = \ + boost::python::type_id >(); \ + const boost::python::converter::registration* reg = \ + boost::python::converter::registry::query(info); \ + if (reg == NULL) { \ + bp::register_ptr_to_python >(); \ + } else if ((*reg).m_to_python == NULL) { \ + bp::register_ptr_to_python >(); \ + } \ +} while (0) + +namespace bp = boost::python; + +namespace caffe { + +// For Python, for now, we'll just always use float as the type. +typedef float Dtype; +const int NPY_DTYPE = NPY_FLOAT32; + +// Selecting mode. +void set_mode_cpu() { Caffe::set_mode(Caffe::CPU); } +void set_mode_gpu() { Caffe::set_mode(Caffe::GPU); } + +void InitLog() { + ::google::InitGoogleLogging(""); + ::google::InstallFailureSignalHandler(); +} +void InitLogLevel(int level) { + FLAGS_minloglevel = level; + InitLog(); +} +void InitLogLevelPipe(int level, bool stderr) { + FLAGS_minloglevel = level; + FLAGS_logtostderr = stderr; + InitLog(); +} +void Log(const string& s) { + LOG(INFO) << s; +} + +void set_random_seed(unsigned int seed) { Caffe::set_random_seed(seed); } + +// For convenience, check that input files can be opened, and raise an +// exception that boost will send to Python if not (caffe could still crash +// later if the input files are disturbed before they are actually used, but +// this saves frustration in most cases). +static void CheckFile(const string& filename) { + std::ifstream f(filename.c_str()); + if (!f.good()) { + f.close(); + throw std::runtime_error("Could not open file " + filename); + } + f.close(); +} + +void CheckContiguousArray(PyArrayObject* arr, string name, + int channels, int height, int width) { + if (!(PyArray_FLAGS(arr) & NPY_ARRAY_C_CONTIGUOUS)) { + throw std::runtime_error(name + " must be C contiguous"); + } + if (PyArray_NDIM(arr) != 4) { + throw std::runtime_error(name + " must be 4-d"); + } + if (PyArray_TYPE(arr) != NPY_FLOAT32) { + throw std::runtime_error(name + " must be float32"); + } + if (PyArray_DIMS(arr)[1] != channels) { + throw std::runtime_error(name + " has wrong number of channels"); + } + if (PyArray_DIMS(arr)[2] != height) { + throw std::runtime_error(name + " has wrong height"); + } + if (PyArray_DIMS(arr)[3] != width) { + throw std::runtime_error(name + " has wrong width"); + } +} + +// Net constructor +shared_ptr > Net_Init(string network_file, int phase, + const int level, const bp::object& stages, + const bp::object& weights) { + CheckFile(network_file); + + // Convert stages from list to vector + vector stages_vector; + if (!stages.is_none()) { + for (int i = 0; i < len(stages); i++) { + stages_vector.push_back(bp::extract(stages[i])); + } + } + + // Initialize net + shared_ptr > net(new Net(network_file, + static_cast(phase), level, &stages_vector)); + + // Load weights + if (!weights.is_none()) { + std::string weights_file_str = bp::extract(weights); + CheckFile(weights_file_str); + net->CopyTrainedLayersFrom(weights_file_str); + } + + return net; +} + +// Legacy Net construct-and-load convenience constructor +shared_ptr > Net_Init_Load( + string param_file, string pretrained_param_file, int phase) { + LOG(WARNING) << "DEPRECATION WARNING - deprecated use of Python interface"; + LOG(WARNING) << "Use this instead (with the named \"weights\"" + << " parameter):"; + LOG(WARNING) << "Net('" << param_file << "', " << phase + << ", weights='" << pretrained_param_file << "')"; + CheckFile(param_file); + CheckFile(pretrained_param_file); + + shared_ptr > net(new Net(param_file, + static_cast(phase))); + net->CopyTrainedLayersFrom(pretrained_param_file); + return net; +} + +void Net_Save(const Net& net, string filename) { + NetParameter net_param; + net.ToProto(&net_param, false); + WriteProtoToBinaryFile(net_param, filename.c_str()); +} + +void Net_SaveHDF5(const Net& net, string filename) { + net.ToHDF5(filename); +} + +void Net_LoadHDF5(Net* net, string filename) { + net->CopyTrainedLayersFromHDF5(filename.c_str()); +} + +void Net_SetInputArrays(Net* net, bp::object data_obj, + bp::object labels_obj) { + // check that this network has an input MemoryDataLayer + shared_ptr > md_layer = + boost::dynamic_pointer_cast >(net->layers()[0]); + if (!md_layer) { + throw std::runtime_error("set_input_arrays may only be called if the" + " first layer is a MemoryDataLayer"); + } + + // check that we were passed appropriately-sized contiguous memory + PyArrayObject* data_arr = + reinterpret_cast(data_obj.ptr()); + PyArrayObject* labels_arr = + reinterpret_cast(labels_obj.ptr()); + CheckContiguousArray(data_arr, "data array", md_layer->channels(), + md_layer->height(), md_layer->width()); + CheckContiguousArray(labels_arr, "labels array", 1, 1, 1); + if (PyArray_DIMS(data_arr)[0] != PyArray_DIMS(labels_arr)[0]) { + throw std::runtime_error("data and labels must have the same first" + " dimension"); + } + if (PyArray_DIMS(data_arr)[0] % md_layer->batch_size() != 0) { + throw std::runtime_error("first dimensions of input arrays must be a" + " multiple of batch size"); + } + + md_layer->Reset(static_cast(PyArray_DATA(data_arr)), + static_cast(PyArray_DATA(labels_arr)), + PyArray_DIMS(data_arr)[0]); +} + +Solver* GetSolverFromFile(const string& filename) { + SolverParameter param; + ReadSolverParamsFromTextFileOrDie(filename, ¶m); + return SolverRegistry::CreateSolver(param); +} + +struct NdarrayConverterGenerator { + template struct apply; +}; + +template <> +struct NdarrayConverterGenerator::apply { + struct type { + PyObject* operator() (Dtype* data) const { + // Just store the data pointer, and add the shape information in postcall. + return PyArray_SimpleNewFromData(0, NULL, NPY_DTYPE, data); + } + const PyTypeObject* get_pytype() { + return &PyArray_Type; + } + }; +}; + +struct NdarrayCallPolicies : public bp::default_call_policies { + typedef NdarrayConverterGenerator result_converter; + PyObject* postcall(PyObject* pyargs, PyObject* result) { + bp::object pyblob = bp::extract(pyargs)()[0]; + shared_ptr > blob = + bp::extract > >(pyblob); + // Free the temporary pointer-holding array, and construct a new one with + // the shape information from the blob. + void* data = PyArray_DATA(reinterpret_cast(result)); + Py_DECREF(result); + const int num_axes = blob->num_axes(); + vector dims(blob->shape().begin(), blob->shape().end()); + PyObject *arr_obj = PyArray_SimpleNewFromData(num_axes, dims.data(), + NPY_FLOAT32, data); + // SetBaseObject steals a ref, so we need to INCREF. + Py_INCREF(pyblob.ptr()); + PyArray_SetBaseObject(reinterpret_cast(arr_obj), + pyblob.ptr()); + return arr_obj; + } +}; + +bp::object Blob_Reshape(bp::tuple args, bp::dict kwargs) { + if (bp::len(kwargs) > 0) { + throw std::runtime_error("Blob.reshape takes no kwargs"); + } + Blob* self = bp::extract*>(args[0]); + vector shape(bp::len(args) - 1); + for (int i = 1; i < bp::len(args); ++i) { + shape[i - 1] = bp::extract(args[i]); + } + self->Reshape(shape); + // We need to explicitly return None to use bp::raw_function. + return bp::object(); +} + +bp::object BlobVec_add_blob(bp::tuple args, bp::dict kwargs) { + if (bp::len(kwargs) > 0) { + throw std::runtime_error("BlobVec.add_blob takes no kwargs"); + } + typedef vector > > BlobVec; + BlobVec* self = bp::extract(args[0]); + vector shape(bp::len(args) - 1); + for (int i = 1; i < bp::len(args); ++i) { + shape[i - 1] = bp::extract(args[i]); + } + self->push_back(shared_ptr >(new Blob(shape))); + // We need to explicitly return None to use bp::raw_function. + return bp::object(); +} + +template +class SolverCallback: public Solver::Callback { + protected: + bp::object on_start_, on_gradients_ready_; + + public: + SolverCallback(bp::object on_start, bp::object on_gradients_ready) + : on_start_(on_start), on_gradients_ready_(on_gradients_ready) { } + virtual void on_gradients_ready() { + on_gradients_ready_(); + } + virtual void on_start() { + on_start_(); + } +}; +template +void Solver_add_callback(Solver * solver, bp::object on_start, + bp::object on_gradients_ready) { + solver->add_callback(new SolverCallback(on_start, on_gradients_ready)); +} + +// Seems boost cannot call the base method directly +void Solver_add_nccl(Solver* solver +#ifdef USE_NCCL + , NCCL* nccl +#endif +) { +#ifdef USE_NCCL + solver->add_callback(nccl); +#endif +} + +void share_weights(Solver* solver, Net* net) { + net->ShareTrainedLayersWith(solver->net().get()); +} + +template +class NetCallback: public Net::Callback { + public: + explicit NetCallback(bp::object run) : run_(run) {} + + protected: + virtual void run(int layer) { + run_(layer); + } + bp::object run_; +}; +void Net_before_forward(Net* net, bp::object run) { + net->add_before_forward(new NetCallback(run)); +} +void Net_after_forward(Net* net, bp::object run) { + net->add_after_forward(new NetCallback(run)); +} +void Net_before_backward(Net* net, bp::object run) { + net->add_before_backward(new NetCallback(run)); +} +void Net_after_backward(Net* net, bp::object run) { + net->add_after_backward(new NetCallback(run)); +} + +void Net_add_nccl(Net* net +#ifdef USE_NCCL + , NCCL* nccl +#endif +) { +#ifdef USE_NCCL + net->add_after_backward(nccl); +#endif +} +#ifndef USE_NCCL +template +class NCCL { + public: + NCCL(shared_ptr > solver, const string& uid) {} +}; +#endif + +bool HasNCCL() { +#ifdef USE_NCCL + return true; +#else + return false; +#endif +} + +#ifdef USE_NCCL +bp::object NCCL_New_Uid() { + std::string uid = NCCL::new_uid(); +#if PY_MAJOR_VERSION >= 3 + // Convert std::string to bytes so that Python does not + // try to decode the string using the current locale. + + // Since boost 1.53 boost.python will convert str and bytes + // to std::string but will convert std::string to str. Here we + // force a bytes object to be returned. When this object + // is passed back to the NCCL constructor boost.python will + // correctly convert the bytes to std::string automatically + PyObject* py_uid = PyBytes_FromString(uid.c_str()); + return bp::object(bp::handle<>(py_uid)); +#else + // automatic conversion is correct for python 2. + return bp::object(uid); +#endif +} +#endif + +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(SolveOverloads, Solve, 0, 1); + +BOOST_PYTHON_MODULE(_caffe) { + // below, we prepend an underscore to methods that will be replaced + // in Python + + bp::scope().attr("__version__") = AS_STRING(CAFFE_VERSION); + + // Caffe utility functions + bp::def("init_log", &InitLog); + bp::def("init_log", &InitLogLevel); + bp::def("init_log", &InitLogLevelPipe); + bp::def("log", &Log); + bp::def("has_nccl", &HasNCCL); + bp::def("set_mode_cpu", &set_mode_cpu); + bp::def("set_mode_gpu", &set_mode_gpu); + bp::def("set_random_seed", &set_random_seed); + bp::def("set_device", &Caffe::SetDevice); + bp::def("solver_count", &Caffe::solver_count); + bp::def("set_solver_count", &Caffe::set_solver_count); + bp::def("solver_rank", &Caffe::solver_rank); + bp::def("set_solver_rank", &Caffe::set_solver_rank); + bp::def("set_multiprocess", &Caffe::set_multiprocess); + + bp::def("layer_type_list", &LayerRegistry::LayerTypeList); + + bp::class_, shared_ptr >, boost::noncopyable >("Net", + bp::no_init) + // Constructor + .def("__init__", bp::make_constructor(&Net_Init, + bp::default_call_policies(), (bp::arg("network_file"), "phase", + bp::arg("level")=0, bp::arg("stages")=bp::object(), + bp::arg("weights")=bp::object()))) + // Legacy constructor + .def("__init__", bp::make_constructor(&Net_Init_Load)) + .def("_forward", &Net::ForwardFromTo) + .def("_backward", &Net::BackwardFromTo) + .def("reshape", &Net::Reshape) + .def("clear_param_diffs", &Net::ClearParamDiffs) + // The cast is to select a particular overload. + .def("copy_from", static_cast::*)(const string)>( + &Net::CopyTrainedLayersFrom)) + .def("share_with", &Net::ShareTrainedLayersWith) + .add_property("_blob_loss_weights", bp::make_function( + &Net::blob_loss_weights, bp::return_internal_reference<>())) + .def("_bottom_ids", bp::make_function(&Net::bottom_ids, + bp::return_value_policy())) + .def("_top_ids", bp::make_function(&Net::top_ids, + bp::return_value_policy())) + .add_property("_blobs", bp::make_function(&Net::blobs, + bp::return_internal_reference<>())) + .add_property("layers", bp::make_function(&Net::layers, + bp::return_internal_reference<>())) + .add_property("_blob_names", bp::make_function(&Net::blob_names, + bp::return_value_policy())) + .add_property("_layer_names", bp::make_function(&Net::layer_names, + bp::return_value_policy())) + .add_property("_inputs", bp::make_function(&Net::input_blob_indices, + bp::return_value_policy())) + .add_property("_outputs", + bp::make_function(&Net::output_blob_indices, + bp::return_value_policy())) + .def("_set_input_arrays", &Net_SetInputArrays, + bp::with_custodian_and_ward<1, 2, bp::with_custodian_and_ward<1, 3> >()) + .def("save", &Net_Save) + .def("save_hdf5", &Net_SaveHDF5) + .def("load_hdf5", &Net_LoadHDF5) + .def("before_forward", &Net_before_forward) + .def("after_forward", &Net_after_forward) + .def("before_backward", &Net_before_backward) + .def("after_backward", &Net_after_backward) + .def("after_backward", &Net_add_nccl); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Net); + + bp::class_, shared_ptr >, boost::noncopyable>( + "Blob", bp::no_init) + .add_property("shape", + bp::make_function( + static_cast& (Blob::*)() const>( + &Blob::shape), + bp::return_value_policy())) + .add_property("num", &Blob::num) + .add_property("channels", &Blob::channels) + .add_property("height", &Blob::height) + .add_property("width", &Blob::width) + .add_property("count", static_cast::*)() const>( + &Blob::count)) + .def("reshape", bp::raw_function(&Blob_Reshape)) + .add_property("data", bp::make_function(&Blob::mutable_cpu_data, + NdarrayCallPolicies())) + .add_property("diff", bp::make_function(&Blob::mutable_cpu_diff, + NdarrayCallPolicies())); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Blob); + + bp::class_, shared_ptr >, + boost::noncopyable>("Layer", bp::init()) + .add_property("blobs", bp::make_function(&Layer::blobs, + bp::return_internal_reference<>())) + .def("setup", &Layer::LayerSetUp) + .def("reshape", &Layer::Reshape) + .add_property("type", bp::make_function(&Layer::type)); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Layer); + + bp::class_("SolverParameter", bp::no_init) + .add_property("max_iter", &SolverParameter::max_iter) + .add_property("display", &SolverParameter::display) + .add_property("layer_wise_reduce", &SolverParameter::layer_wise_reduce); + bp::class_("LayerParameter", bp::no_init); + + bp::class_, shared_ptr >, boost::noncopyable>( + "Solver", bp::no_init) + .add_property("net", &Solver::net) + .add_property("test_nets", bp::make_function(&Solver::test_nets, + bp::return_internal_reference<>())) + .add_property("iter", &Solver::iter) + .def("add_callback", &Solver_add_callback) + .def("add_callback", &Solver_add_nccl) + .def("solve", static_cast::*)(const char*)>( + &Solver::Solve), SolveOverloads()) + .def("step", &Solver::Step) + .def("restore", &Solver::Restore) + .def("snapshot", &Solver::Snapshot) + .def("share_weights", &share_weights) + .add_property("param", bp::make_function(&Solver::param, + bp::return_value_policy())); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Solver); + + bp::class_, bp::bases >, + shared_ptr >, boost::noncopyable>( + "SGDSolver", bp::init()); + bp::class_, bp::bases >, + shared_ptr >, boost::noncopyable>( + "NesterovSolver", bp::init()); + bp::class_, bp::bases >, + shared_ptr >, boost::noncopyable>( + "AdaGradSolver", bp::init()); + bp::class_, bp::bases >, + shared_ptr >, boost::noncopyable>( + "RMSPropSolver", bp::init()); + bp::class_, bp::bases >, + shared_ptr >, boost::noncopyable>( + "AdaDeltaSolver", bp::init()); + bp::class_, bp::bases >, + shared_ptr >, boost::noncopyable>( + "AdamSolver", bp::init()); + + bp::def("get_solver", &GetSolverFromFile, + bp::return_value_policy()); + + // vector wrappers for all the vector types we use + bp::class_ > > >("BlobVec") + .def(bp::vector_indexing_suite > >, true>()) + .def("add_blob", bp::raw_function(&BlobVec_add_blob)); + bp::class_*> >("RawBlobVec") + .def(bp::vector_indexing_suite*>, true>()); + bp::class_ > > >("LayerVec") + .def(bp::vector_indexing_suite > >, true>()); + bp::class_ >("StringVec") + .def(bp::vector_indexing_suite >()); + bp::class_ >("IntVec") + .def(bp::vector_indexing_suite >()); + bp::class_ >("DtypeVec") + .def(bp::vector_indexing_suite >()); + bp::class_ > > >("NetVec") + .def(bp::vector_indexing_suite > >, true>()); + bp::class_ >("BoolVec") + .def(bp::vector_indexing_suite >()); + + bp::class_, shared_ptr >, + boost::noncopyable>("NCCL", + bp::init >, const string&>()) +#ifdef USE_NCCL + .def("new_uid", NCCL_New_Uid).staticmethod("new_uid") + .def("bcast", &NCCL::Broadcast) +#endif + /* NOLINT_NEXT_LINE(whitespace/semicolon) */ + ; + BP_REGISTER_SHARED_PTR_TO_PYTHON(NCCL); + + bp::class_, boost::noncopyable>( + "Timer", bp::init<>()) + .def("start", &Timer::Start) + .def("stop", &Timer::Stop) + .add_property("ms", &Timer::MilliSeconds); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Timer); + + // boost python expects a void (missing) return value, while import_array + // returns NULL for python3. import_array1() forces a void return value. + import_array1(); +} + +} // namespace caffe diff --git a/3rdparty/caffe/python/caffe/classifier.py b/3rdparty/caffe/python/caffe/classifier.py new file mode 100644 index 00000000..ea29fed8 --- /dev/null +++ b/3rdparty/caffe/python/caffe/classifier.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python +""" +Classifier is an image classifier specialization of Net. +""" + +import numpy as np + +import caffe + + +class Classifier(caffe.Net): + """ + Classifier extends Net for image class prediction + by scaling, center cropping, or oversampling. + + Parameters + ---------- + image_dims : dimensions to scale input for cropping/sampling. + Default is to scale to net input size for whole-image crop. + mean, input_scale, raw_scale, channel_swap: params for + preprocessing options. + """ + def __init__(self, model_file, pretrained_file, image_dims=None, + mean=None, input_scale=None, raw_scale=None, + channel_swap=None): + caffe.Net.__init__(self, model_file, pretrained_file, caffe.TEST) + + # configure pre-processing + in_ = self.inputs[0] + self.transformer = caffe.io.Transformer( + {in_: self.blobs[in_].data.shape}) + self.transformer.set_transpose(in_, (2, 0, 1)) + if mean is not None: + self.transformer.set_mean(in_, mean) + if input_scale is not None: + self.transformer.set_input_scale(in_, input_scale) + if raw_scale is not None: + self.transformer.set_raw_scale(in_, raw_scale) + if channel_swap is not None: + self.transformer.set_channel_swap(in_, channel_swap) + + self.crop_dims = np.array(self.blobs[in_].data.shape[2:]) + if not image_dims: + image_dims = self.crop_dims + self.image_dims = image_dims + + def predict(self, inputs, oversample=True): + """ + Predict classification probabilities of inputs. + + Parameters + ---------- + inputs : iterable of (H x W x K) input ndarrays. + oversample : boolean + average predictions across center, corners, and mirrors + when True (default). Center-only prediction when False. + + Returns + ------- + predictions: (N x C) ndarray of class probabilities for N images and C + classes. + """ + # Scale to standardize input dimensions. + input_ = np.zeros((len(inputs), + self.image_dims[0], + self.image_dims[1], + inputs[0].shape[2]), + dtype=np.float32) + for ix, in_ in enumerate(inputs): + input_[ix] = caffe.io.resize_image(in_, self.image_dims) + + if oversample: + # Generate center, corner, and mirrored crops. + input_ = caffe.io.oversample(input_, self.crop_dims) + else: + # Take center crop. + center = np.array(self.image_dims) / 2.0 + crop = np.tile(center, (1, 2))[0] + np.concatenate([ + -self.crop_dims / 2.0, + self.crop_dims / 2.0 + ]) + crop = crop.astype(int) + input_ = input_[:, crop[0]:crop[2], crop[1]:crop[3], :] + + # Classify + caffe_in = np.zeros(np.array(input_.shape)[[0, 3, 1, 2]], + dtype=np.float32) + for ix, in_ in enumerate(input_): + caffe_in[ix] = self.transformer.preprocess(self.inputs[0], in_) + out = self.forward_all(**{self.inputs[0]: caffe_in}) + predictions = out[self.outputs[0]] + + # For oversampling, average predictions across crops. + if oversample: + predictions = predictions.reshape((len(predictions) / 10, 10, -1)) + predictions = predictions.mean(1) + + return predictions diff --git a/3rdparty/caffe/python/caffe/coord_map.py b/3rdparty/caffe/python/caffe/coord_map.py new file mode 100644 index 00000000..a3413cfa --- /dev/null +++ b/3rdparty/caffe/python/caffe/coord_map.py @@ -0,0 +1,185 @@ +""" +Determine spatial relationships between layers to relate their coordinates. +Coordinates are mapped from input-to-output (forward), but can +be mapped output-to-input (backward) by the inverse mapping too. +This helps crop and align feature maps among other uses. +""" + +from __future__ import division +import numpy as np +from caffe import layers as L + +PASS_THROUGH_LAYERS = ['AbsVal', 'BatchNorm', 'Bias', 'BNLL', 'Dropout', + 'Eltwise', 'ELU', 'Log', 'LRN', 'Exp', 'MVN', 'Power', + 'ReLU', 'PReLU', 'Scale', 'Sigmoid', 'Split', 'TanH', + 'Threshold'] + + +def conv_params(fn): + """ + Extract the spatial parameters that determine the coordinate mapping: + kernel size, stride, padding, and dilation. + + Implementation detail: Convolution, Deconvolution, and Im2col layers + define these in the convolution_param message, while Pooling has its + own fields in pooling_param. This method deals with these details to + extract canonical parameters. + """ + params = fn.params.get('convolution_param', fn.params) + axis = params.get('axis', 1) + ks = np.array(params['kernel_size'], ndmin=1) + dilation = np.array(params.get('dilation', 1), ndmin=1) + assert len({'pad_h', 'pad_w', 'kernel_h', 'kernel_w', 'stride_h', + 'stride_w'} & set(fn.params)) == 0, \ + 'cropping does not support legacy _h/_w params' + return (axis, np.array(params.get('stride', 1), ndmin=1), + (ks - 1) * dilation + 1, + np.array(params.get('pad', 0), ndmin=1)) + + +def crop_params(fn): + """ + Extract the crop layer parameters with defaults. + """ + params = fn.params.get('crop_param', fn.params) + axis = params.get('axis', 2) # default to spatial crop for N, C, H, W + offset = np.array(params.get('offset', 0), ndmin=1) + return (axis, offset) + + +class UndefinedMapException(Exception): + """ + Exception raised for layers that do not have a defined coordinate mapping. + """ + pass + + +def coord_map(fn): + """ + Define the coordinate mapping by its + - axis + - scale: output coord[i * scale] <- input_coord[i] + - shift: output coord[i] <- output_coord[i + shift] + s.t. the identity mapping, as for pointwise layers like ReLu, is defined by + (None, 1, 0) since it is independent of axis and does not transform coords. + """ + if fn.type_name in ['Convolution', 'Pooling', 'Im2col']: + axis, stride, ks, pad = conv_params(fn) + return axis, 1 / stride, (pad - (ks - 1) / 2) / stride + elif fn.type_name == 'Deconvolution': + axis, stride, ks, pad = conv_params(fn) + return axis, stride, (ks - 1) / 2 - pad + elif fn.type_name in PASS_THROUGH_LAYERS: + return None, 1, 0 + elif fn.type_name == 'Crop': + axis, offset = crop_params(fn) + axis -= 1 # -1 for last non-coordinate dim. + return axis, 1, - offset + else: + raise UndefinedMapException + + +class AxisMismatchException(Exception): + """ + Exception raised for mappings with incompatible axes. + """ + pass + + +def compose(base_map, next_map): + """ + Compose a base coord map with scale a1, shift b1 with a further coord map + with scale a2, shift b2. The scales multiply and the further shift, b2, + is scaled by base coord scale a1. + """ + ax1, a1, b1 = base_map + ax2, a2, b2 = next_map + if ax1 is None: + ax = ax2 + elif ax2 is None or ax1 == ax2: + ax = ax1 + else: + raise AxisMismatchException + return ax, a1 * a2, a1 * b2 + b1 + + +def inverse(coord_map): + """ + Invert a coord map by de-scaling and un-shifting; + this gives the backward mapping for the gradient. + """ + ax, a, b = coord_map + return ax, 1 / a, -b / a + + +def coord_map_from_to(top_from, top_to): + """ + Determine the coordinate mapping betweeen a top (from) and a top (to). + Walk the graph to find a common ancestor while composing the coord maps for + from and to until they meet. As a last step the from map is inverted. + """ + # We need to find a common ancestor of top_from and top_to. + # We'll assume that all ancestors are equivalent here (otherwise the graph + # is an inconsistent state (which we could improve this to check for)). + # For now use a brute-force algorithm. + + def collect_bottoms(top): + """ + Collect the bottoms to walk for the coordinate mapping. + The general rule is that all the bottoms of a layer can be mapped, as + most layers have the same coordinate mapping for each bottom. + Crop layer is a notable exception. Only the first/cropped bottom is + mappable; the second/dimensions bottom is excluded from the walk. + """ + bottoms = top.fn.inputs + if top.fn.type_name == 'Crop': + bottoms = bottoms[:1] + return bottoms + + # walk back from top_from, keeping the coord map as we go + from_maps = {top_from: (None, 1, 0)} + frontier = {top_from} + while frontier: + top = frontier.pop() + try: + bottoms = collect_bottoms(top) + for bottom in bottoms: + from_maps[bottom] = compose(from_maps[top], coord_map(top.fn)) + frontier.add(bottom) + except UndefinedMapException: + pass + + # now walk back from top_to until we hit a common blob + to_maps = {top_to: (None, 1, 0)} + frontier = {top_to} + while frontier: + top = frontier.pop() + if top in from_maps: + return compose(to_maps[top], inverse(from_maps[top])) + try: + bottoms = collect_bottoms(top) + for bottom in bottoms: + to_maps[bottom] = compose(to_maps[top], coord_map(top.fn)) + frontier.add(bottom) + except UndefinedMapException: + continue + + # if we got here, we did not find a blob in common + raise RuntimeError('Could not compute map between tops; are they ' + 'connected by spatial layers?') + + +def crop(top_from, top_to): + """ + Define a Crop layer to crop a top (from) to another top (to) by + determining the coordinate mapping between the two and net spec'ing + the axis and shift parameters of the crop. + """ + ax, a, b = coord_map_from_to(top_from, top_to) + assert (a == 1).all(), 'scale mismatch on crop (a = {})'.format(a) + assert (b <= 0).all(), 'cannot crop negative offset (b = {})'.format(b) + assert (np.round(b) == b).all(), 'cannot crop noninteger offset ' \ + '(b = {})'.format(b) + return L.Crop(top_from, top_to, + crop_param=dict(axis=ax + 1, # +1 for first cropping dim. + offset=list(-np.round(b).astype(int)))) diff --git a/3rdparty/caffe/python/caffe/detector.py b/3rdparty/caffe/python/caffe/detector.py new file mode 100644 index 00000000..ef1f9173 --- /dev/null +++ b/3rdparty/caffe/python/caffe/detector.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python +""" +Do windowed detection by classifying a number of images/crops at once, +optionally using the selective search window proposal method. + +This implementation follows ideas in + Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik. + Rich feature hierarchies for accurate object detection and semantic + segmentation. + http://arxiv.org/abs/1311.2524 + +The selective_search_ijcv_with_python code required for the selective search +proposal mode is available at + https://github.com/sergeyk/selective_search_ijcv_with_python +""" +import numpy as np +import os + +import caffe + + +class Detector(caffe.Net): + """ + Detector extends Net for windowed detection by a list of crops or + selective search proposals. + + Parameters + ---------- + mean, input_scale, raw_scale, channel_swap : params for preprocessing + options. + context_pad : amount of surrounding context to take s.t. a `context_pad` + sized border of pixels in the network input image is context, as in + R-CNN feature extraction. + """ + def __init__(self, model_file, pretrained_file, mean=None, + input_scale=None, raw_scale=None, channel_swap=None, + context_pad=None): + caffe.Net.__init__(self, model_file, pretrained_file, caffe.TEST) + + # configure pre-processing + in_ = self.inputs[0] + self.transformer = caffe.io.Transformer( + {in_: self.blobs[in_].data.shape}) + self.transformer.set_transpose(in_, (2, 0, 1)) + if mean is not None: + self.transformer.set_mean(in_, mean) + if input_scale is not None: + self.transformer.set_input_scale(in_, input_scale) + if raw_scale is not None: + self.transformer.set_raw_scale(in_, raw_scale) + if channel_swap is not None: + self.transformer.set_channel_swap(in_, channel_swap) + + self.configure_crop(context_pad) + + def detect_windows(self, images_windows): + """ + Do windowed detection over given images and windows. Windows are + extracted then warped to the input dimensions of the net. + + Parameters + ---------- + images_windows: (image filename, window list) iterable. + context_crop: size of context border to crop in pixels. + + Returns + ------- + detections: list of {filename: image filename, window: crop coordinates, + predictions: prediction vector} dicts. + """ + # Extract windows. + window_inputs = [] + for image_fname, windows in images_windows: + image = caffe.io.load_image(image_fname).astype(np.float32) + for window in windows: + window_inputs.append(self.crop(image, window)) + + # Run through the net (warping windows to input dimensions). + in_ = self.inputs[0] + caffe_in = np.zeros((len(window_inputs), window_inputs[0].shape[2]) + + self.blobs[in_].data.shape[2:], + dtype=np.float32) + for ix, window_in in enumerate(window_inputs): + caffe_in[ix] = self.transformer.preprocess(in_, window_in) + out = self.forward_all(**{in_: caffe_in}) + predictions = out[self.outputs[0]] + + # Package predictions with images and windows. + detections = [] + ix = 0 + for image_fname, windows in images_windows: + for window in windows: + detections.append({ + 'window': window, + 'prediction': predictions[ix], + 'filename': image_fname + }) + ix += 1 + return detections + + def detect_selective_search(self, image_fnames): + """ + Do windowed detection over Selective Search proposals by extracting + the crop and warping to the input dimensions of the net. + + Parameters + ---------- + image_fnames: list + + Returns + ------- + detections: list of {filename: image filename, window: crop coordinates, + predictions: prediction vector} dicts. + """ + import selective_search_ijcv_with_python as selective_search + # Make absolute paths so MATLAB can find the files. + image_fnames = [os.path.abspath(f) for f in image_fnames] + windows_list = selective_search.get_windows( + image_fnames, + cmd='selective_search_rcnn' + ) + # Run windowed detection on the selective search list. + return self.detect_windows(zip(image_fnames, windows_list)) + + def crop(self, im, window): + """ + Crop a window from the image for detection. Include surrounding context + according to the `context_pad` configuration. + + Parameters + ---------- + im: H x W x K image ndarray to crop. + window: bounding box coordinates as ymin, xmin, ymax, xmax. + + Returns + ------- + crop: cropped window. + """ + # Crop window from the image. + crop = im[window[0]:window[2], window[1]:window[3]] + + if self.context_pad: + box = window.copy() + crop_size = self.blobs[self.inputs[0]].width # assumes square + scale = crop_size / (1. * crop_size - self.context_pad * 2) + # Crop a box + surrounding context. + half_h = (box[2] - box[0] + 1) / 2. + half_w = (box[3] - box[1] + 1) / 2. + center = (box[0] + half_h, box[1] + half_w) + scaled_dims = scale * np.array((-half_h, -half_w, half_h, half_w)) + box = np.round(np.tile(center, 2) + scaled_dims) + full_h = box[2] - box[0] + 1 + full_w = box[3] - box[1] + 1 + scale_h = crop_size / full_h + scale_w = crop_size / full_w + pad_y = round(max(0, -box[0]) * scale_h) # amount out-of-bounds + pad_x = round(max(0, -box[1]) * scale_w) + + # Clip box to image dimensions. + im_h, im_w = im.shape[:2] + box = np.clip(box, 0., [im_h, im_w, im_h, im_w]) + clip_h = box[2] - box[0] + 1 + clip_w = box[3] - box[1] + 1 + assert(clip_h > 0 and clip_w > 0) + crop_h = round(clip_h * scale_h) + crop_w = round(clip_w * scale_w) + if pad_y + crop_h > crop_size: + crop_h = crop_size - pad_y + if pad_x + crop_w > crop_size: + crop_w = crop_size - pad_x + + # collect with context padding and place in input + # with mean padding + context_crop = im[box[0]:box[2], box[1]:box[3]] + context_crop = caffe.io.resize_image(context_crop, (crop_h, crop_w)) + crop = np.ones(self.crop_dims, dtype=np.float32) * self.crop_mean + crop[pad_y:(pad_y + crop_h), pad_x:(pad_x + crop_w)] = context_crop + + return crop + + def configure_crop(self, context_pad): + """ + Configure crop dimensions and amount of context for cropping. + If context is included, make the special input mean for context padding. + + Parameters + ---------- + context_pad : amount of context for cropping. + """ + # crop dimensions + in_ = self.inputs[0] + tpose = self.transformer.transpose[in_] + inv_tpose = [tpose[t] for t in tpose] + self.crop_dims = np.array(self.blobs[in_].data.shape[1:])[inv_tpose] + #.transpose(inv_tpose) + # context padding + self.context_pad = context_pad + if self.context_pad: + in_ = self.inputs[0] + transpose = self.transformer.transpose.get(in_) + channel_order = self.transformer.channel_swap.get(in_) + raw_scale = self.transformer.raw_scale.get(in_) + # Padding context crops needs the mean in unprocessed input space. + mean = self.transformer.mean.get(in_) + if mean is not None: + inv_transpose = [transpose[t] for t in transpose] + crop_mean = mean.copy().transpose(inv_transpose) + if channel_order is not None: + channel_order_inverse = [channel_order.index(i) + for i in range(crop_mean.shape[2])] + crop_mean = crop_mean[:, :, channel_order_inverse] + if raw_scale is not None: + crop_mean /= raw_scale + self.crop_mean = crop_mean + else: + self.crop_mean = np.zeros(self.crop_dims, dtype=np.float32) diff --git a/3rdparty/caffe/python/caffe/draw.py b/3rdparty/caffe/python/caffe/draw.py new file mode 100644 index 00000000..8411a41d --- /dev/null +++ b/3rdparty/caffe/python/caffe/draw.py @@ -0,0 +1,244 @@ +""" +Caffe network visualization: draw the NetParameter protobuffer. + + +.. note:: + + This requires pydot>=1.0.2, which is not included in requirements.txt since + it requires graphviz and other prerequisites outside the scope of the + Caffe. +""" + +from caffe.proto import caffe_pb2 + +""" +pydot is not supported under python 3 and pydot2 doesn't work properly. +pydotplus works nicely (pip install pydotplus) +""" +try: + # Try to load pydotplus + import pydotplus as pydot +except ImportError: + import pydot + +# Internal layer and blob styles. +LAYER_STYLE_DEFAULT = {'shape': 'record', + 'fillcolor': '#6495ED', + 'style': 'filled'} +NEURON_LAYER_STYLE = {'shape': 'record', + 'fillcolor': '#90EE90', + 'style': 'filled'} +BLOB_STYLE = {'shape': 'octagon', + 'fillcolor': '#E0E0E0', + 'style': 'filled'} + + +def get_pooling_types_dict(): + """Get dictionary mapping pooling type number to type name + """ + desc = caffe_pb2.PoolingParameter.PoolMethod.DESCRIPTOR + d = {} + for k, v in desc.values_by_name.items(): + d[v.number] = k + return d + + +def get_edge_label(layer): + """Define edge label based on layer type. + """ + + if layer.type == 'Data': + edge_label = 'Batch ' + str(layer.data_param.batch_size) + elif layer.type == 'Convolution' or layer.type == 'Deconvolution': + edge_label = str(layer.convolution_param.num_output) + elif layer.type == 'InnerProduct': + edge_label = str(layer.inner_product_param.num_output) + else: + edge_label = '""' + + return edge_label + + +def get_layer_label(layer, rankdir): + """Define node label based on layer type. + + Parameters + ---------- + layer : ? + rankdir : {'LR', 'TB', 'BT'} + Direction of graph layout. + + Returns + ------- + string : + A label for the current layer + """ + + if rankdir in ('TB', 'BT'): + # If graph orientation is vertical, horizontal space is free and + # vertical space is not; separate words with spaces + separator = ' ' + else: + # If graph orientation is horizontal, vertical space is free and + # horizontal space is not; separate words with newlines + separator = '\\n' + + if layer.type == 'Convolution' or layer.type == 'Deconvolution': + # Outer double quotes needed or else colon characters don't parse + # properly + node_label = '"%s%s(%s)%skernel size: %d%sstride: %d%spad: %d"' %\ + (layer.name, + separator, + layer.type, + separator, + layer.convolution_param.kernel_size[0] if len(layer.convolution_param.kernel_size) else 1, + separator, + layer.convolution_param.stride[0] if len(layer.convolution_param.stride) else 1, + separator, + layer.convolution_param.pad[0] if len(layer.convolution_param.pad) else 0) + elif layer.type == 'Pooling': + pooling_types_dict = get_pooling_types_dict() + node_label = '"%s%s(%s %s)%skernel size: %d%sstride: %d%spad: %d"' %\ + (layer.name, + separator, + pooling_types_dict[layer.pooling_param.pool], + layer.type, + separator, + layer.pooling_param.kernel_size, + separator, + layer.pooling_param.stride, + separator, + layer.pooling_param.pad) + else: + node_label = '"%s%s(%s)"' % (layer.name, separator, layer.type) + return node_label + + +def choose_color_by_layertype(layertype): + """Define colors for nodes based on the layer type. + """ + color = '#6495ED' # Default + if layertype == 'Convolution' or layertype == 'Deconvolution': + color = '#FF5050' + elif layertype == 'Pooling': + color = '#FF9900' + elif layertype == 'InnerProduct': + color = '#CC33FF' + return color + + +def get_pydot_graph(caffe_net, rankdir, label_edges=True, phase=None): + """Create a data structure which represents the `caffe_net`. + + Parameters + ---------- + caffe_net : object + rankdir : {'LR', 'TB', 'BT'} + Direction of graph layout. + label_edges : boolean, optional + Label the edges (default is True). + phase : {caffe_pb2.Phase.TRAIN, caffe_pb2.Phase.TEST, None} optional + Include layers from this network phase. If None, include all layers. + (the default is None) + + Returns + ------- + pydot graph object + """ + pydot_graph = pydot.Dot(caffe_net.name if caffe_net.name else 'Net', + graph_type='digraph', + rankdir=rankdir) + pydot_nodes = {} + pydot_edges = [] + for layer in caffe_net.layer: + if phase is not None: + included = False + if len(layer.include) == 0: + included = True + if len(layer.include) > 0 and len(layer.exclude) > 0: + raise ValueError('layer ' + layer.name + ' has both include ' + 'and exclude specified.') + for layer_phase in layer.include: + included = included or layer_phase.phase == phase + for layer_phase in layer.exclude: + included = included and not layer_phase.phase == phase + if not included: + continue + node_label = get_layer_label(layer, rankdir) + node_name = "%s_%s" % (layer.name, layer.type) + if (len(layer.bottom) == 1 and len(layer.top) == 1 and + layer.bottom[0] == layer.top[0]): + # We have an in-place neuron layer. + pydot_nodes[node_name] = pydot.Node(node_label, + **NEURON_LAYER_STYLE) + else: + layer_style = LAYER_STYLE_DEFAULT + layer_style['fillcolor'] = choose_color_by_layertype(layer.type) + pydot_nodes[node_name] = pydot.Node(node_label, **layer_style) + for bottom_blob in layer.bottom: + pydot_nodes[bottom_blob + '_blob'] = pydot.Node('%s' % bottom_blob, + **BLOB_STYLE) + edge_label = '""' + pydot_edges.append({'src': bottom_blob + '_blob', + 'dst': node_name, + 'label': edge_label}) + for top_blob in layer.top: + pydot_nodes[top_blob + '_blob'] = pydot.Node('%s' % (top_blob)) + if label_edges: + edge_label = get_edge_label(layer) + else: + edge_label = '""' + pydot_edges.append({'src': node_name, + 'dst': top_blob + '_blob', + 'label': edge_label}) + # Now, add the nodes and edges to the graph. + for node in pydot_nodes.values(): + pydot_graph.add_node(node) + for edge in pydot_edges: + pydot_graph.add_edge( + pydot.Edge(pydot_nodes[edge['src']], + pydot_nodes[edge['dst']], + label=edge['label'])) + return pydot_graph + + +def draw_net(caffe_net, rankdir, ext='png', phase=None): + """Draws a caffe net and returns the image string encoded using the given + extension. + + Parameters + ---------- + caffe_net : a caffe.proto.caffe_pb2.NetParameter protocol buffer. + ext : string, optional + The image extension (the default is 'png'). + phase : {caffe_pb2.Phase.TRAIN, caffe_pb2.Phase.TEST, None} optional + Include layers from this network phase. If None, include all layers. + (the default is None) + + Returns + ------- + string : + Postscript representation of the graph. + """ + return get_pydot_graph(caffe_net, rankdir, phase=phase).create(format=ext) + + +def draw_net_to_file(caffe_net, filename, rankdir='LR', phase=None): + """Draws a caffe net, and saves it to file using the format given as the + file extension. Use '.raw' to output raw text that you can manually feed + to graphviz to draw graphs. + + Parameters + ---------- + caffe_net : a caffe.proto.caffe_pb2.NetParameter protocol buffer. + filename : string + The path to a file where the networks visualization will be stored. + rankdir : {'LR', 'TB', 'BT'} + Direction of graph layout. + phase : {caffe_pb2.Phase.TRAIN, caffe_pb2.Phase.TEST, None} optional + Include layers from this network phase. If None, include all layers. + (the default is None) + """ + ext = filename[filename.rfind('.')+1:] + with open(filename, 'wb') as fid: + fid.write(draw_net(caffe_net, rankdir, ext, phase)) diff --git a/3rdparty/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy b/3rdparty/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy new file mode 100644 index 0000000000000000000000000000000000000000..666082c6a654e0477fe9f11258fef72ac49ad7fe GIT binary patch literal 1572944 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\|NFak;_v<< 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�UHnHut}y-0+iCk7)AoyzuXd;Q7Z*rB{|GeA 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 z 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

    FeE_My=X!qy^RH>h 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≪7@5K(=Rto)sb(GKlMHv6u0$<&M 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 literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/python/caffe/io.py b/3rdparty/caffe/python/caffe/io.py new file mode 100644 index 00000000..966c164c --- /dev/null +++ b/3rdparty/caffe/python/caffe/io.py @@ -0,0 +1,383 @@ +import numpy as np +import skimage.io +from scipy.ndimage import zoom +from skimage.transform import resize + +try: + # Python3 will most likely not be able to load protobuf + from caffe.proto import caffe_pb2 +except: + import sys + if sys.version_info >= (3, 0): + print("Failed to include caffe_pb2, things might go wrong!") + else: + raise + + +## proto / datum / ndarray conversion +def blobproto_to_array(blob, return_diff=False): + """ + Convert a blob proto to an array. In default, we will just return the data, + unless return_diff is True, in which case we will return the diff. + """ + # Read the data into an array + if return_diff: + data = np.array(blob.diff) + else: + data = np.array(blob.data) + + # Reshape the array + if blob.HasField('num') or blob.HasField('channels') or blob.HasField('height') or blob.HasField('width'): + # Use legacy 4D shape + return data.reshape(blob.num, blob.channels, blob.height, blob.width) + else: + return data.reshape(blob.shape.dim) + +def array_to_blobproto(arr, diff=None): + """Converts a N-dimensional array to blob proto. If diff is given, also + convert the diff. You need to make sure that arr and diff have the same + shape, and this function does not do sanity check. + """ + blob = caffe_pb2.BlobProto() + blob.shape.dim.extend(arr.shape) + blob.data.extend(arr.astype(float).flat) + if diff is not None: + blob.diff.extend(diff.astype(float).flat) + return blob + + +def arraylist_to_blobprotovector_str(arraylist): + """Converts a list of arrays to a serialized blobprotovec, which could be + then passed to a network for processing. + """ + vec = caffe_pb2.BlobProtoVector() + vec.blobs.extend([array_to_blobproto(arr) for arr in arraylist]) + return vec.SerializeToString() + + +def blobprotovector_str_to_arraylist(str): + """Converts a serialized blobprotovec to a list of arrays. + """ + vec = caffe_pb2.BlobProtoVector() + vec.ParseFromString(str) + return [blobproto_to_array(blob) for blob in vec.blobs] + + +def array_to_datum(arr, label=None): + """Converts a 3-dimensional array to datum. If the array has dtype uint8, + the output data will be encoded as a string. Otherwise, the output data + will be stored in float format. + """ + if arr.ndim != 3: + raise ValueError('Incorrect array shape.') + datum = caffe_pb2.Datum() + datum.channels, datum.height, datum.width = arr.shape + if arr.dtype == np.uint8: + datum.data = arr.tostring() + else: + datum.float_data.extend(arr.astype(float).flat) + if label is not None: + datum.label = label + return datum + + +def datum_to_array(datum): + """Converts a datum to an array. Note that the label is not returned, + as one can easily get it by calling datum.label. + """ + if len(datum.data): + return np.fromstring(datum.data, dtype=np.uint8).reshape( + datum.channels, datum.height, datum.width) + else: + return np.array(datum.float_data).astype(float).reshape( + datum.channels, datum.height, datum.width) + + +## Pre-processing + +class Transformer: + """ + Transform input for feeding into a Net. + + Note: this is mostly for illustrative purposes and it is likely better + to define your own input preprocessing routine for your needs. + + Parameters + ---------- + net : a Net for which the input should be prepared + """ + def __init__(self, inputs): + self.inputs = inputs + self.transpose = {} + self.channel_swap = {} + self.raw_scale = {} + self.mean = {} + self.input_scale = {} + + def __check_input(self, in_): + if in_ not in self.inputs: + raise Exception('{} is not one of the net inputs: {}'.format( + in_, self.inputs)) + + def preprocess(self, in_, data): + """ + Format input for Caffe: + - convert to single + - resize to input dimensions (preserving number of channels) + - transpose dimensions to K x H x W + - reorder channels (for instance color to BGR) + - scale raw input (e.g. from [0, 1] to [0, 255] for ImageNet models) + - subtract mean + - scale feature + + Parameters + ---------- + in_ : name of input blob to preprocess for + data : (H' x W' x K) ndarray + + Returns + ------- + caffe_in : (K x H x W) ndarray for input to a Net + """ + self.__check_input(in_) + caffe_in = data.astype(np.float32, copy=False) + transpose = self.transpose.get(in_) + channel_swap = self.channel_swap.get(in_) + raw_scale = self.raw_scale.get(in_) + mean = self.mean.get(in_) + input_scale = self.input_scale.get(in_) + in_dims = self.inputs[in_][2:] + if caffe_in.shape[:2] != in_dims: + caffe_in = resize_image(caffe_in, in_dims) + if transpose is not None: + caffe_in = caffe_in.transpose(transpose) + if channel_swap is not None: + caffe_in = caffe_in[channel_swap, :, :] + if raw_scale is not None: + caffe_in *= raw_scale + if mean is not None: + caffe_in -= mean + if input_scale is not None: + caffe_in *= input_scale + return caffe_in + + def deprocess(self, in_, data): + """ + Invert Caffe formatting; see preprocess(). + """ + self.__check_input(in_) + decaf_in = data.copy().squeeze() + transpose = self.transpose.get(in_) + channel_swap = self.channel_swap.get(in_) + raw_scale = self.raw_scale.get(in_) + mean = self.mean.get(in_) + input_scale = self.input_scale.get(in_) + if input_scale is not None: + decaf_in /= input_scale + if mean is not None: + decaf_in += mean + if raw_scale is not None: + decaf_in /= raw_scale + if channel_swap is not None: + decaf_in = decaf_in[np.argsort(channel_swap), :, :] + if transpose is not None: + decaf_in = decaf_in.transpose(np.argsort(transpose)) + return decaf_in + + def set_transpose(self, in_, order): + """ + Set the input channel order for e.g. RGB to BGR conversion + as needed for the reference ImageNet model. + + Parameters + ---------- + in_ : which input to assign this channel order + order : the order to transpose the dimensions + """ + self.__check_input(in_) + if len(order) != len(self.inputs[in_]) - 1: + raise Exception('Transpose order needs to have the same number of ' + 'dimensions as the input.') + self.transpose[in_] = order + + def set_channel_swap(self, in_, order): + """ + Set the input channel order for e.g. RGB to BGR conversion + as needed for the reference ImageNet model. + N.B. this assumes the channels are the first dimension AFTER transpose. + + Parameters + ---------- + in_ : which input to assign this channel order + order : the order to take the channels. + (2,1,0) maps RGB to BGR for example. + """ + self.__check_input(in_) + if len(order) != self.inputs[in_][1]: + raise Exception('Channel swap needs to have the same number of ' + 'dimensions as the input channels.') + self.channel_swap[in_] = order + + def set_raw_scale(self, in_, scale): + """ + Set the scale of raw features s.t. the input blob = input * scale. + While Python represents images in [0, 1], certain Caffe models + like CaffeNet and AlexNet represent images in [0, 255] so the raw_scale + of these models must be 255. + + Parameters + ---------- + in_ : which input to assign this scale factor + scale : scale coefficient + """ + self.__check_input(in_) + self.raw_scale[in_] = scale + + def set_mean(self, in_, mean): + """ + Set the mean to subtract for centering the data. + + Parameters + ---------- + in_ : which input to assign this mean. + mean : mean ndarray (input dimensional or broadcastable) + """ + self.__check_input(in_) + ms = mean.shape + if mean.ndim == 1: + # broadcast channels + if ms[0] != self.inputs[in_][1]: + raise ValueError('Mean channels incompatible with input.') + mean = mean[:, np.newaxis, np.newaxis] + else: + # elementwise mean + if len(ms) == 2: + ms = (1,) + ms + if len(ms) != 3: + raise ValueError('Mean shape invalid') + if ms != self.inputs[in_][1:]: + raise ValueError('Mean shape incompatible with input shape.') + self.mean[in_] = mean + + def set_input_scale(self, in_, scale): + """ + Set the scale of preprocessed inputs s.t. the blob = blob * scale. + N.B. input_scale is done AFTER mean subtraction and other preprocessing + while raw_scale is done BEFORE. + + Parameters + ---------- + in_ : which input to assign this scale factor + scale : scale coefficient + """ + self.__check_input(in_) + self.input_scale[in_] = scale + + +## Image IO + +def load_image(filename, color=True): + """ + Load an image converting from grayscale or alpha as needed. + + Parameters + ---------- + filename : string + color : boolean + flag for color format. True (default) loads as RGB while False + loads as intensity (if image is already grayscale). + + Returns + ------- + image : an image with type np.float32 in range [0, 1] + of size (H x W x 3) in RGB or + of size (H x W x 1) in grayscale. + """ + img = skimage.img_as_float(skimage.io.imread(filename, as_grey=not color)).astype(np.float32) + if img.ndim == 2: + img = img[:, :, np.newaxis] + if color: + img = np.tile(img, (1, 1, 3)) + elif img.shape[2] == 4: + img = img[:, :, :3] + return img + + +def resize_image(im, new_dims, interp_order=1): + """ + Resize an image array with interpolation. + + Parameters + ---------- + im : (H x W x K) ndarray + new_dims : (height, width) tuple of new dimensions. + interp_order : interpolation order, default is linear. + + Returns + ------- + im : resized ndarray with shape (new_dims[0], new_dims[1], K) + """ + if im.shape[-1] == 1 or im.shape[-1] == 3: + im_min, im_max = im.min(), im.max() + if im_max > im_min: + # skimage is fast but only understands {1,3} channel images + # in [0, 1]. + im_std = (im - im_min) / (im_max - im_min) + resized_std = resize(im_std, new_dims, order=interp_order) + resized_im = resized_std * (im_max - im_min) + im_min + else: + # the image is a constant -- avoid divide by 0 + ret = np.empty((new_dims[0], new_dims[1], im.shape[-1]), + dtype=np.float32) + ret.fill(im_min) + return ret + else: + # ndimage interpolates anything but more slowly. + scale = tuple(np.array(new_dims, dtype=float) / np.array(im.shape[:2])) + resized_im = zoom(im, scale + (1,), order=interp_order) + return resized_im.astype(np.float32) + + +def oversample(images, crop_dims): + """ + Crop images into the four corners, center, and their mirrored versions. + + Parameters + ---------- + image : iterable of (H x W x K) ndarrays + crop_dims : (height, width) tuple for the crops. + + Returns + ------- + crops : (10*N x H x W x K) ndarray of crops for number of inputs N. + """ + # Dimensions and center. + im_shape = np.array(images[0].shape) + crop_dims = np.array(crop_dims) + im_center = im_shape[:2] / 2.0 + + # Make crop coordinates + h_indices = (0, im_shape[0] - crop_dims[0]) + w_indices = (0, im_shape[1] - crop_dims[1]) + crops_ix = np.empty((5, 4), dtype=int) + curr = 0 + for i in h_indices: + for j in w_indices: + crops_ix[curr] = (i, j, i + crop_dims[0], j + crop_dims[1]) + curr += 1 + crops_ix[4] = np.tile(im_center, (1, 2)) + np.concatenate([ + -crop_dims / 2.0, + crop_dims / 2.0 + ]) + crops_ix = np.tile(crops_ix, (2, 1)) + + # Extract crops + crops = np.empty((10 * len(images), crop_dims[0], crop_dims[1], + im_shape[-1]), dtype=np.float32) + ix = 0 + for im in images: + for crop in crops_ix: + crops[ix] = im[crop[0]:crop[2], crop[1]:crop[3], :] + ix += 1 + crops[ix-5:ix] = crops[ix-5:ix, :, ::-1, :] # flip for mirrors + return crops diff --git a/3rdparty/caffe/python/caffe/net_spec.py b/3rdparty/caffe/python/caffe/net_spec.py new file mode 100644 index 00000000..20918f9b --- /dev/null +++ b/3rdparty/caffe/python/caffe/net_spec.py @@ -0,0 +1,230 @@ +"""Python net specification. + +This module provides a way to write nets directly in Python, using a natural, +functional style. See examples/pycaffe/caffenet.py for an example. + +Currently this works as a thin wrapper around the Python protobuf interface, +with layers and parameters automatically generated for the "layers" and +"params" pseudo-modules, which are actually objects using __getattr__ magic +to generate protobuf messages. + +Note that when using to_proto or Top.to_proto, names of intermediate blobs will +be automatically generated. To explicitly specify blob names, use the NetSpec +class -- assign to its attributes directly to name layers, and call +NetSpec.to_proto to serialize all assigned layers. + +This interface is expected to continue to evolve as Caffe gains new capabilities +for specifying nets. In particular, the automatically generated layer names +are not guaranteed to be forward-compatible. +""" + +from collections import OrderedDict, Counter + +from .proto import caffe_pb2 +from google import protobuf +import six + + +def param_name_dict(): + """Find out the correspondence between layer names and parameter names.""" + + layer = caffe_pb2.LayerParameter() + # get all parameter names (typically underscore case) and corresponding + # type names (typically camel case), which contain the layer names + # (note that not all parameters correspond to layers, but we'll ignore that) + param_names = [f.name for f in layer.DESCRIPTOR.fields if f.name.endswith('_param')] + param_type_names = [type(getattr(layer, s)).__name__ for s in param_names] + # strip the final '_param' or 'Parameter' + param_names = [s[:-len('_param')] for s in param_names] + param_type_names = [s[:-len('Parameter')] for s in param_type_names] + return dict(zip(param_type_names, param_names)) + + +def to_proto(*tops): + """Generate a NetParameter that contains all layers needed to compute + all arguments.""" + + layers = OrderedDict() + autonames = Counter() + for top in tops: + top.fn._to_proto(layers, {}, autonames) + net = caffe_pb2.NetParameter() + net.layer.extend(layers.values()) + return net + + +def assign_proto(proto, name, val): + """Assign a Python object to a protobuf message, based on the Python + type (in recursive fashion). Lists become repeated fields/messages, dicts + become messages, and other types are assigned directly. For convenience, + repeated fields whose values are not lists are converted to single-element + lists; e.g., `my_repeated_int_field=3` is converted to + `my_repeated_int_field=[3]`.""" + + is_repeated_field = hasattr(getattr(proto, name), 'extend') + if is_repeated_field and not isinstance(val, list): + val = [val] + if isinstance(val, list): + if isinstance(val[0], dict): + for item in val: + proto_item = getattr(proto, name).add() + for k, v in six.iteritems(item): + assign_proto(proto_item, k, v) + else: + getattr(proto, name).extend(val) + elif isinstance(val, dict): + for k, v in six.iteritems(val): + assign_proto(getattr(proto, name), k, v) + else: + setattr(proto, name, val) + + +class Top(object): + """A Top specifies a single output blob (which could be one of several + produced by a layer.)""" + + def __init__(self, fn, n): + self.fn = fn + self.n = n + + def to_proto(self): + """Generate a NetParameter that contains all layers needed to compute + this top.""" + + return to_proto(self) + + def _to_proto(self, layers, names, autonames): + return self.fn._to_proto(layers, names, autonames) + + +class Function(object): + """A Function specifies a layer, its parameters, and its inputs (which + are Tops from other layers).""" + + def __init__(self, type_name, inputs, params): + self.type_name = type_name + for index, input in enumerate(inputs): + if not isinstance(input, Top): + raise TypeError('%s input %d is not a Top (type is %s)' % + (type_name, index, type(input))) + self.inputs = inputs + self.params = params + self.ntop = self.params.get('ntop', 1) + # use del to make sure kwargs are not double-processed as layer params + if 'ntop' in self.params: + del self.params['ntop'] + self.in_place = self.params.get('in_place', False) + if 'in_place' in self.params: + del self.params['in_place'] + self.tops = tuple(Top(self, n) for n in range(self.ntop)) + + def _get_name(self, names, autonames): + if self not in names and self.ntop > 0: + names[self] = self._get_top_name(self.tops[0], names, autonames) + elif self not in names: + autonames[self.type_name] += 1 + names[self] = self.type_name + str(autonames[self.type_name]) + return names[self] + + def _get_top_name(self, top, names, autonames): + if top not in names: + autonames[top.fn.type_name] += 1 + names[top] = top.fn.type_name + str(autonames[top.fn.type_name]) + return names[top] + + def _to_proto(self, layers, names, autonames): + if self in layers: + return + bottom_names = [] + for inp in self.inputs: + inp._to_proto(layers, names, autonames) + bottom_names.append(layers[inp.fn].top[inp.n]) + layer = caffe_pb2.LayerParameter() + layer.type = self.type_name + layer.bottom.extend(bottom_names) + + if self.in_place: + layer.top.extend(layer.bottom) + else: + for top in self.tops: + layer.top.append(self._get_top_name(top, names, autonames)) + layer.name = self._get_name(names, autonames) + + for k, v in six.iteritems(self.params): + # special case to handle generic *params + if k.endswith('param'): + assign_proto(layer, k, v) + else: + try: + assign_proto(getattr(layer, + _param_names[self.type_name] + '_param'), k, v) + except (AttributeError, KeyError): + assign_proto(layer, k, v) + + layers[self] = layer + + +class NetSpec(object): + """A NetSpec contains a set of Tops (assigned directly as attributes). + Calling NetSpec.to_proto generates a NetParameter containing all of the + layers needed to produce all of the assigned Tops, using the assigned + names.""" + + def __init__(self): + super(NetSpec, self).__setattr__('tops', OrderedDict()) + + def __setattr__(self, name, value): + self.tops[name] = value + + def __getattr__(self, name): + return self.tops[name] + + def __setitem__(self, key, value): + self.__setattr__(key, value) + + def __getitem__(self, item): + return self.__getattr__(item) + + def to_proto(self): + names = {v: k for k, v in six.iteritems(self.tops)} + autonames = Counter() + layers = OrderedDict() + for name, top in six.iteritems(self.tops): + top._to_proto(layers, names, autonames) + net = caffe_pb2.NetParameter() + net.layer.extend(layers.values()) + return net + + +class Layers(object): + """A Layers object is a pseudo-module which generates functions that specify + layers; e.g., Layers().Convolution(bottom, kernel_size=3) will produce a Top + specifying a 3x3 convolution applied to bottom.""" + + def __getattr__(self, name): + def layer_fn(*args, **kwargs): + fn = Function(name, args, kwargs) + if fn.ntop == 0: + return fn + elif fn.ntop == 1: + return fn.tops[0] + else: + return fn.tops + return layer_fn + + +class Parameters(object): + """A Parameters object is a pseudo-module which generates constants used + in layer parameters; e.g., Parameters().Pooling.MAX is the value used + to specify max pooling.""" + + def __getattr__(self, name): + class Param: + def __getattr__(self, param_name): + return getattr(getattr(caffe_pb2, name + 'Parameter'), param_name) + return Param() + + +_param_names = param_name_dict() +layers = Layers() +params = Parameters() diff --git a/3rdparty/caffe/python/caffe/pycaffe.py b/3rdparty/caffe/python/caffe/pycaffe.py new file mode 100644 index 00000000..4a7b5a24 --- /dev/null +++ b/3rdparty/caffe/python/caffe/pycaffe.py @@ -0,0 +1,345 @@ +""" +Wrap the internal caffe C++ module (_caffe.so) with a clean, Pythonic +interface. +""" + +from collections import OrderedDict +try: + from itertools import izip_longest +except: + from itertools import zip_longest as izip_longest +import numpy as np + +from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ + RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer +import caffe.io + +import six + +# We directly update methods from Net here (rather than using composition or +# inheritance) so that nets created by caffe (e.g., by SGDSolver) will +# automatically have the improved interface. + + +@property +def _Net_blobs(self): + """ + An OrderedDict (bottom to top, i.e., input to output) of network + blobs indexed by name + """ + if not hasattr(self, '_blobs_dict'): + self._blobs_dict = OrderedDict(zip(self._blob_names, self._blobs)) + return self._blobs_dict + + +@property +def _Net_blob_loss_weights(self): + """ + An OrderedDict (bottom to top, i.e., input to output) of network + blob loss weights indexed by name + """ + if not hasattr(self, '_blobs_loss_weights_dict'): + self._blob_loss_weights_dict = OrderedDict(zip(self._blob_names, + self._blob_loss_weights)) + return self._blob_loss_weights_dict + +@property +def _Net_layer_dict(self): + """ + An OrderedDict (bottom to top, i.e., input to output) of network + layers indexed by name + """ + if not hasattr(self, '_layer_dict'): + self._layer_dict = OrderedDict(zip(self._layer_names, self.layers)) + return self._layer_dict + + +@property +def _Net_params(self): + """ + An OrderedDict (bottom to top, i.e., input to output) of network + parameters indexed by name; each is a list of multiple blobs (e.g., + weights and biases) + """ + if not hasattr(self, '_params_dict'): + self._params_dict = OrderedDict([(name, lr.blobs) + for name, lr in zip( + self._layer_names, self.layers) + if len(lr.blobs) > 0]) + return self._params_dict + + +@property +def _Net_inputs(self): + if not hasattr(self, '_input_list'): + keys = list(self.blobs.keys()) + self._input_list = [keys[i] for i in self._inputs] + return self._input_list + + +@property +def _Net_outputs(self): + if not hasattr(self, '_output_list'): + keys = list(self.blobs.keys()) + self._output_list = [keys[i] for i in self._outputs] + return self._output_list + + +def _Net_forward(self, blobs=None, start=None, end=None, **kwargs): + """ + Forward pass: prepare inputs and run the net forward. + + Parameters + ---------- + blobs : list of blobs to return in addition to output blobs. + kwargs : Keys are input blob names and values are blob ndarrays. + For formatting inputs for Caffe, see Net.preprocess(). + If None, input is taken from data layers. + start : optional name of layer at which to begin the forward pass + end : optional name of layer at which to finish the forward pass + (inclusive) + + Returns + ------- + outs : {blob name: blob ndarray} dict. + """ + if blobs is None: + blobs = [] + + if start is not None: + start_ind = list(self._layer_names).index(start) + else: + start_ind = 0 + + if end is not None: + end_ind = list(self._layer_names).index(end) + outputs = set(self.top_names[end] + blobs) + else: + end_ind = len(self.layers) - 1 + outputs = set(self.outputs + blobs) + + if kwargs: + if set(kwargs.keys()) != set(self.inputs): + raise Exception('Input blob arguments do not match net inputs.') + # Set input according to defined shapes and make arrays single and + # C-contiguous as Caffe expects. + for in_, blob in six.iteritems(kwargs): + if blob.shape[0] != self.blobs[in_].shape[0]: + raise Exception('Input is not batch sized') + self.blobs[in_].data[...] = blob + + self._forward(start_ind, end_ind) + + # Unpack blobs to extract + return {out: self.blobs[out].data for out in outputs} + + +def _Net_backward(self, diffs=None, start=None, end=None, **kwargs): + """ + Backward pass: prepare diffs and run the net backward. + + Parameters + ---------- + diffs : list of diffs to return in addition to bottom diffs. + kwargs : Keys are output blob names and values are diff ndarrays. + If None, top diffs are taken from forward loss. + start : optional name of layer at which to begin the backward pass + end : optional name of layer at which to finish the backward pass + (inclusive) + + Returns + ------- + outs: {blob name: diff ndarray} dict. + """ + if diffs is None: + diffs = [] + + if start is not None: + start_ind = list(self._layer_names).index(start) + else: + start_ind = len(self.layers) - 1 + + if end is not None: + end_ind = list(self._layer_names).index(end) + outputs = set(self.bottom_names[end] + diffs) + else: + end_ind = 0 + outputs = set(self.inputs + diffs) + + if kwargs: + if set(kwargs.keys()) != set(self.outputs): + raise Exception('Top diff arguments do not match net outputs.') + # Set top diffs according to defined shapes and make arrays single and + # C-contiguous as Caffe expects. + for top, diff in six.iteritems(kwargs): + if diff.shape[0] != self.blobs[top].shape[0]: + raise Exception('Diff is not batch sized') + self.blobs[top].diff[...] = diff + + self._backward(start_ind, end_ind) + + # Unpack diffs to extract + return {out: self.blobs[out].diff for out in outputs} + + +def _Net_forward_all(self, blobs=None, **kwargs): + """ + Run net forward in batches. + + Parameters + ---------- + blobs : list of blobs to extract as in forward() + kwargs : Keys are input blob names and values are blob ndarrays. + Refer to forward(). + + Returns + ------- + all_outs : {blob name: list of blobs} dict. + """ + # Collect outputs from batches + all_outs = {out: [] for out in set(self.outputs + (blobs or []))} + for batch in self._batch(kwargs): + outs = self.forward(blobs=blobs, **batch) + for out, out_blob in six.iteritems(outs): + all_outs[out].extend(out_blob.copy()) + # Package in ndarray. + for out in all_outs: + all_outs[out] = np.asarray(all_outs[out]) + # Discard padding. + pad = len(six.next(six.itervalues(all_outs))) - len(six.next(six.itervalues(kwargs))) + if pad: + for out in all_outs: + all_outs[out] = all_outs[out][:-pad] + return all_outs + + +def _Net_forward_backward_all(self, blobs=None, diffs=None, **kwargs): + """ + Run net forward + backward in batches. + + Parameters + ---------- + blobs: list of blobs to extract as in forward() + diffs: list of diffs to extract as in backward() + kwargs: Keys are input (for forward) and output (for backward) blob names + and values are ndarrays. Refer to forward() and backward(). + Prefilled variants are called for lack of input or output blobs. + + Returns + ------- + all_blobs: {blob name: blob ndarray} dict. + all_diffs: {blob name: diff ndarray} dict. + """ + # Batch blobs and diffs. + all_outs = {out: [] for out in set(self.outputs + (blobs or []))} + all_diffs = {diff: [] for diff in set(self.inputs + (diffs or []))} + forward_batches = self._batch({in_: kwargs[in_] + for in_ in self.inputs if in_ in kwargs}) + backward_batches = self._batch({out: kwargs[out] + for out in self.outputs if out in kwargs}) + # Collect outputs from batches (and heed lack of forward/backward batches). + for fb, bb in izip_longest(forward_batches, backward_batches, fillvalue={}): + batch_blobs = self.forward(blobs=blobs, **fb) + batch_diffs = self.backward(diffs=diffs, **bb) + for out, out_blobs in six.iteritems(batch_blobs): + all_outs[out].extend(out_blobs.copy()) + for diff, out_diffs in six.iteritems(batch_diffs): + all_diffs[diff].extend(out_diffs.copy()) + # Package in ndarray. + for out, diff in zip(all_outs, all_diffs): + all_outs[out] = np.asarray(all_outs[out]) + all_diffs[diff] = np.asarray(all_diffs[diff]) + # Discard padding at the end and package in ndarray. + pad = len(six.next(six.itervalues(all_outs))) - len(six.next(six.itervalues(kwargs))) + if pad: + for out, diff in zip(all_outs, all_diffs): + all_outs[out] = all_outs[out][:-pad] + all_diffs[diff] = all_diffs[diff][:-pad] + return all_outs, all_diffs + + +def _Net_set_input_arrays(self, data, labels): + """ + Set input arrays of the in-memory MemoryDataLayer. + (Note: this is only for networks declared with the memory data layer.) + """ + if labels.ndim == 1: + labels = np.ascontiguousarray(labels[:, np.newaxis, np.newaxis, + np.newaxis]) + return self._set_input_arrays(data, labels) + + +def _Net_batch(self, blobs): + """ + Batch blob lists according to net's batch size. + + Parameters + ---------- + blobs: Keys blob names and values are lists of blobs (of any length). + Naturally, all the lists should have the same length. + + Yields + ------ + batch: {blob name: list of blobs} dict for a single batch. + """ + num = len(six.next(six.itervalues(blobs))) + batch_size = six.next(six.itervalues(self.blobs)).shape[0] + remainder = num % batch_size + num_batches = num // batch_size + + # Yield full batches. + for b in range(num_batches): + i = b * batch_size + yield {name: blobs[name][i:i + batch_size] for name in blobs} + + # Yield last padded batch, if any. + if remainder > 0: + padded_batch = {} + for name in blobs: + padding = np.zeros((batch_size - remainder,) + + blobs[name].shape[1:]) + padded_batch[name] = np.concatenate([blobs[name][-remainder:], + padding]) + yield padded_batch + +def _Net_get_id_name(func, field): + """ + Generic property that maps func to the layer names into an OrderedDict. + + Used for top_names and bottom_names. + + Parameters + ---------- + func: function id -> [id] + field: implementation field name (cache) + + Returns + ------ + A one-parameter function that can be set as a property. + """ + @property + def get_id_name(self): + if not hasattr(self, field): + id_to_name = list(self.blobs) + res = OrderedDict([(self._layer_names[i], + [id_to_name[j] for j in func(self, i)]) + for i in range(len(self.layers))]) + setattr(self, field, res) + return getattr(self, field) + return get_id_name + +# Attach methods to Net. +Net.blobs = _Net_blobs +Net.blob_loss_weights = _Net_blob_loss_weights +Net.layer_dict = _Net_layer_dict +Net.params = _Net_params +Net.forward = _Net_forward +Net.backward = _Net_backward +Net.forward_all = _Net_forward_all +Net.forward_backward_all = _Net_forward_backward_all +Net.set_input_arrays = _Net_set_input_arrays +Net._batch = _Net_batch +Net.inputs = _Net_inputs +Net.outputs = _Net_outputs +Net.top_names = _Net_get_id_name(Net._top_ids, "_top_names") +Net.bottom_names = _Net_get_id_name(Net._bottom_ids, "_bottom_names") diff --git a/3rdparty/caffe/python/caffe/test/test_coord_map.py b/3rdparty/caffe/python/caffe/test/test_coord_map.py new file mode 100644 index 00000000..613260e2 --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_coord_map.py @@ -0,0 +1,192 @@ +import unittest + +import numpy as np +import random + +import caffe +from caffe import layers as L +from caffe import params as P +from caffe.coord_map import coord_map_from_to, crop + + +def coord_net_spec(ks=3, stride=1, pad=0, pool=2, dstride=2, dpad=0): + """ + Define net spec for simple conv-pool-deconv pattern common to all + coordinate mapping tests. + """ + n = caffe.NetSpec() + n.data = L.Input(shape=dict(dim=[2, 1, 100, 100])) + n.aux = L.Input(shape=dict(dim=[2, 1, 20, 20])) + n.conv = L.Convolution( + n.data, num_output=10, kernel_size=ks, stride=stride, pad=pad) + n.pool = L.Pooling( + n.conv, pool=P.Pooling.MAX, kernel_size=pool, stride=pool, pad=0) + # for upsampling kernel size is 2x stride + try: + deconv_ks = [s*2 for s in dstride] + except: + deconv_ks = dstride*2 + n.deconv = L.Deconvolution( + n.pool, num_output=10, kernel_size=deconv_ks, stride=dstride, pad=dpad) + return n + + +class TestCoordMap(unittest.TestCase): + def setUp(self): + pass + + def test_conv_pool_deconv(self): + """ + Map through conv, pool, and deconv. + """ + n = coord_net_spec() + # identity for 2x pool, 2x deconv + ax, a, b = coord_map_from_to(n.deconv, n.data) + self.assertEquals(ax, 1) + self.assertEquals(a, 1) + self.assertEquals(b, 0) + # shift-by-one for 4x pool, 4x deconv + n = coord_net_spec(pool=4, dstride=4) + ax, a, b = coord_map_from_to(n.deconv, n.data) + self.assertEquals(ax, 1) + self.assertEquals(a, 1) + self.assertEquals(b, -1) + + def test_pass(self): + """ + A pass-through layer (ReLU) and conv (1x1, stride 1, pad 0) + both do identity mapping. + """ + n = coord_net_spec() + ax, a, b = coord_map_from_to(n.deconv, n.data) + n.relu = L.ReLU(n.deconv) + n.conv1x1 = L.Convolution( + n.relu, num_output=10, kernel_size=1, stride=1, pad=0) + for top in [n.relu, n.conv1x1]: + ax_pass, a_pass, b_pass = coord_map_from_to(top, n.data) + self.assertEquals(ax, ax_pass) + self.assertEquals(a, a_pass) + self.assertEquals(b, b_pass) + + def test_padding(self): + """ + Padding conv adds offset while padding deconv subtracts offset. + """ + n = coord_net_spec() + ax, a, b = coord_map_from_to(n.deconv, n.data) + pad = random.randint(0, 10) + # conv padding + n = coord_net_spec(pad=pad) + _, a_pad, b_pad = coord_map_from_to(n.deconv, n.data) + self.assertEquals(a, a_pad) + self.assertEquals(b - pad, b_pad) + # deconv padding + n = coord_net_spec(dpad=pad) + _, a_pad, b_pad = coord_map_from_to(n.deconv, n.data) + self.assertEquals(a, a_pad) + self.assertEquals(b + pad, b_pad) + # pad both to cancel out + n = coord_net_spec(pad=pad, dpad=pad) + _, a_pad, b_pad = coord_map_from_to(n.deconv, n.data) + self.assertEquals(a, a_pad) + self.assertEquals(b, b_pad) + + def test_multi_conv(self): + """ + Multiple bottoms/tops of a layer are identically mapped. + """ + n = coord_net_spec() + # multi bottom/top + n.conv_data, n.conv_aux = L.Convolution( + n.data, n.aux, ntop=2, num_output=10, kernel_size=5, stride=2, + pad=0) + ax1, a1, b1 = coord_map_from_to(n.conv_data, n.data) + ax2, a2, b2 = coord_map_from_to(n.conv_aux, n.aux) + self.assertEquals(ax1, ax2) + self.assertEquals(a1, a2) + self.assertEquals(b1, b2) + + def test_rect(self): + """ + Anisotropic mapping is equivalent to its isotropic parts. + """ + n3x3 = coord_net_spec(ks=3, stride=1, pad=0) + n5x5 = coord_net_spec(ks=5, stride=2, pad=10) + n3x5 = coord_net_spec(ks=[3, 5], stride=[1, 2], pad=[0, 10]) + ax_3x3, a_3x3, b_3x3 = coord_map_from_to(n3x3.deconv, n3x3.data) + ax_5x5, a_5x5, b_5x5 = coord_map_from_to(n5x5.deconv, n5x5.data) + ax_3x5, a_3x5, b_3x5 = coord_map_from_to(n3x5.deconv, n3x5.data) + self.assertTrue(ax_3x3 == ax_5x5 == ax_3x5) + self.assertEquals(a_3x3, a_3x5[0]) + self.assertEquals(b_3x3, b_3x5[0]) + self.assertEquals(a_5x5, a_3x5[1]) + self.assertEquals(b_5x5, b_3x5[1]) + + def test_nd_conv(self): + """ + ND conv maps the same way in more dimensions. + """ + n = caffe.NetSpec() + # define data with 3 spatial dimensions, otherwise the same net + n.data = L.Input(shape=dict(dim=[2, 3, 100, 100, 100])) + n.conv = L.Convolution( + n.data, num_output=10, kernel_size=[3, 3, 3], stride=[1, 1, 1], + pad=[0, 1, 2]) + n.pool = L.Pooling( + n.conv, pool=P.Pooling.MAX, kernel_size=2, stride=2, pad=0) + n.deconv = L.Deconvolution( + n.pool, num_output=10, kernel_size=4, stride=2, pad=0) + ax, a, b = coord_map_from_to(n.deconv, n.data) + self.assertEquals(ax, 1) + self.assertTrue(len(a) == len(b)) + self.assertTrue(np.all(a == 1)) + self.assertEquals(b[0] - 1, b[1]) + self.assertEquals(b[1] - 1, b[2]) + + def test_crop_of_crop(self): + """ + Map coordinates through Crop layer: + crop an already-cropped output to the input and check change in offset. + """ + n = coord_net_spec() + offset = random.randint(0, 10) + ax, a, b = coord_map_from_to(n.deconv, n.data) + n.crop = L.Crop(n.deconv, n.data, axis=2, offset=offset) + ax_crop, a_crop, b_crop = coord_map_from_to(n.crop, n.data) + self.assertEquals(ax, ax_crop) + self.assertEquals(a, a_crop) + self.assertEquals(b + offset, b_crop) + + def test_crop_helper(self): + """ + Define Crop layer by crop(). + """ + n = coord_net_spec() + crop(n.deconv, n.data) + + def test_catch_unconnected(self): + """ + Catch mapping spatially unconnected tops. + """ + n = coord_net_spec() + n.ip = L.InnerProduct(n.deconv, num_output=10) + with self.assertRaises(RuntimeError): + coord_map_from_to(n.ip, n.data) + + def test_catch_scale_mismatch(self): + """ + Catch incompatible scales, such as when the top to be cropped + is mapped to a differently strided reference top. + """ + n = coord_net_spec(pool=3, dstride=2) # pool 3x but deconv 2x + with self.assertRaises(AssertionError): + crop(n.deconv, n.data) + + def test_catch_negative_crop(self): + """ + Catch impossible offsets, such as when the top to be cropped + is mapped to a larger reference top. + """ + n = coord_net_spec(dpad=10) # make output smaller than input + with self.assertRaises(AssertionError): + crop(n.deconv, n.data) diff --git a/3rdparty/caffe/python/caffe/test/test_draw.py b/3rdparty/caffe/python/caffe/test/test_draw.py new file mode 100644 index 00000000..835bb5df --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_draw.py @@ -0,0 +1,37 @@ +import os +import unittest + +from google.protobuf import text_format + +import caffe.draw +from caffe.proto import caffe_pb2 + +def getFilenames(): + """Yields files in the source tree which are Net prototxts.""" + result = [] + + root_dir = os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..', '..')) + assert os.path.exists(root_dir) + + for dirname in ('models', 'examples'): + dirname = os.path.join(root_dir, dirname) + assert os.path.exists(dirname) + for cwd, _, filenames in os.walk(dirname): + for filename in filenames: + filename = os.path.join(cwd, filename) + if filename.endswith('.prototxt') and 'solver' not in filename: + yield os.path.join(dirname, filename) + + +class TestDraw(unittest.TestCase): + def test_draw_net(self): + for filename in getFilenames(): + net = caffe_pb2.NetParameter() + with open(filename) as infile: + text_format.Merge(infile.read(), net) + caffe.draw.draw_net(net, 'LR') + + +if __name__ == "__main__": + unittest.main() diff --git a/3rdparty/caffe/python/caffe/test/test_io.py b/3rdparty/caffe/python/caffe/test/test_io.py new file mode 100644 index 00000000..4a16b5b9 --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_io.py @@ -0,0 +1,56 @@ +import numpy as np +import unittest + +import caffe + +class TestBlobProtoToArray(unittest.TestCase): + + def test_old_format(self): + data = np.zeros((10,10)) + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + shape = (1,1,10,10) + blob.num, blob.channels, blob.height, blob.width = shape + + arr = caffe.io.blobproto_to_array(blob) + self.assertEqual(arr.shape, shape) + + def test_new_format(self): + data = np.zeros((10,10)) + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + blob.shape.dim.extend(list(data.shape)) + + arr = caffe.io.blobproto_to_array(blob) + self.assertEqual(arr.shape, data.shape) + + def test_no_shape(self): + data = np.zeros((10,10)) + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + + with self.assertRaises(ValueError): + caffe.io.blobproto_to_array(blob) + + def test_scalar(self): + data = np.ones((1)) * 123 + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + + arr = caffe.io.blobproto_to_array(blob) + self.assertEqual(arr, 123) + + +class TestArrayToDatum(unittest.TestCase): + + def test_label_none_size(self): + # Set label + d1 = caffe.io.array_to_datum( + np.ones((10,10,3)), label=1) + # Don't set label + d2 = caffe.io.array_to_datum( + np.ones((10,10,3))) + # Not setting the label should result in a smaller object + self.assertGreater( + len(d1.SerializeToString()), + len(d2.SerializeToString())) diff --git a/3rdparty/caffe/python/caffe/test/test_layer_type_list.py b/3rdparty/caffe/python/caffe/test/test_layer_type_list.py new file mode 100644 index 00000000..47f4cf6d --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_layer_type_list.py @@ -0,0 +1,11 @@ +import unittest + +import caffe + +class TestLayerTypeList(unittest.TestCase): + + def test_standard_types(self): + #removing 'Data' from list + for type_name in ['Data', 'Convolution', 'InnerProduct']: + self.assertIn(type_name, caffe.layer_type_list(), + '%s not in layer_type_list()' % type_name) diff --git a/3rdparty/caffe/python/caffe/test/test_nccl.py b/3rdparty/caffe/python/caffe/test/test_nccl.py new file mode 100644 index 00000000..127a9337 --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_nccl.py @@ -0,0 +1,19 @@ +import sys +import unittest + +import caffe + + +class TestNCCL(unittest.TestCase): + + def test_newuid(self): + """ + Test that NCCL uids are of the proper type + according to python version + """ + if caffe.has_nccl(): + uid = caffe.NCCL.new_uid() + if sys.version_info.major >= 3: + self.assertTrue(isinstance(uid, bytes)) + else: + self.assertTrue(isinstance(uid, str)) diff --git a/3rdparty/caffe/python/caffe/test/test_net.py b/3rdparty/caffe/python/caffe/test/test_net.py new file mode 100644 index 00000000..afd27690 --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_net.py @@ -0,0 +1,389 @@ +import unittest +import tempfile +import os +import numpy as np +import six +from collections import OrderedDict + +import caffe + + +def simple_net_file(num_output): + """Make a simple net prototxt, based on test_net.cpp, returning the name + of the (temporary) file.""" + + f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + f.write("""name: 'testnet' force_backward: true + layer { type: 'DummyData' name: 'data' top: 'data' top: 'label' + dummy_data_param { num: 5 channels: 2 height: 3 width: 4 + num: 5 channels: 1 height: 1 width: 1 + data_filler { type: 'gaussian' std: 1 } + data_filler { type: 'constant' } } } + layer { type: 'Convolution' name: 'conv' bottom: 'data' top: 'conv' + convolution_param { num_output: 11 kernel_size: 2 pad: 3 + weight_filler { type: 'gaussian' std: 1 } + bias_filler { type: 'constant' value: 2 } } + param { decay_mult: 1 } param { decay_mult: 0 } + } + layer { type: 'InnerProduct' name: 'ip' bottom: 'conv' top: 'ip_blob' + inner_product_param { num_output: """ + str(num_output) + """ + weight_filler { type: 'gaussian' std: 2.5 } + bias_filler { type: 'constant' value: -3 } } } + layer { type: 'SoftmaxWithLoss' name: 'loss' bottom: 'ip_blob' bottom: 'label' + top: 'loss' }""") + f.close() + return f.name + + +class TestNet(unittest.TestCase): + def setUp(self): + self.num_output = 13 + net_file = simple_net_file(self.num_output) + self.net = caffe.Net(net_file, caffe.TRAIN) + # fill in valid labels + self.net.blobs['label'].data[...] = \ + np.random.randint(self.num_output, + size=self.net.blobs['label'].data.shape) + os.remove(net_file) + + def test_memory(self): + """Check that holding onto blob data beyond the life of a Net is OK""" + + params = sum(map(list, six.itervalues(self.net.params)), []) + blobs = self.net.blobs.values() + del self.net + + # now sum everything (forcing all memory to be read) + total = 0 + for p in params: + total += p.data.sum() + p.diff.sum() + for bl in blobs: + total += bl.data.sum() + bl.diff.sum() + + def test_layer_dict(self): + layer_dict = self.net.layer_dict + self.assertEqual(list(layer_dict.keys()), list(self.net._layer_names)) + for i, name in enumerate(self.net._layer_names): + self.assertEqual(layer_dict[name].type, + self.net.layers[i].type) + + def test_forward_backward(self): + self.net.forward() + self.net.backward() + + def test_forward_start_end(self): + conv_blob=self.net.blobs['conv']; + ip_blob=self.net.blobs['ip_blob']; + sample_data=np.random.uniform(size=conv_blob.data.shape); + sample_data=sample_data.astype(np.float32); + conv_blob.data[:]=sample_data; + forward_blob=self.net.forward(start='ip',end='ip'); + self.assertIn('ip_blob',forward_blob); + + manual_forward=[]; + for i in range(0,conv_blob.data.shape[0]): + dot=np.dot(self.net.params['ip'][0].data, + conv_blob.data[i].reshape(-1)); + manual_forward.append(dot+self.net.params['ip'][1].data); + manual_forward=np.array(manual_forward); + + np.testing.assert_allclose(ip_blob.data,manual_forward,rtol=1e-3); + + def test_backward_start_end(self): + conv_blob=self.net.blobs['conv']; + ip_blob=self.net.blobs['ip_blob']; + sample_data=np.random.uniform(size=ip_blob.data.shape) + sample_data=sample_data.astype(np.float32); + ip_blob.diff[:]=sample_data; + backward_blob=self.net.backward(start='ip',end='ip'); + self.assertIn('conv',backward_blob); + + manual_backward=[]; + for i in range(0,conv_blob.data.shape[0]): + dot=np.dot(self.net.params['ip'][0].data.transpose(), + sample_data[i].reshape(-1)); + manual_backward.append(dot); + manual_backward=np.array(manual_backward); + manual_backward=manual_backward.reshape(conv_blob.data.shape); + + np.testing.assert_allclose(conv_blob.diff,manual_backward,rtol=1e-3); + + def test_clear_param_diffs(self): + # Run a forward/backward step to have non-zero diffs + self.net.forward() + self.net.backward() + diff = self.net.params["conv"][0].diff + # Check that we have non-zero diffs + self.assertTrue(diff.max() > 0) + self.net.clear_param_diffs() + # Check that the diffs are now 0 + self.assertTrue((diff == 0).all()) + + def test_inputs_outputs(self): + self.assertEqual(self.net.inputs, []) + self.assertEqual(self.net.outputs, ['loss']) + + def test_top_bottom_names(self): + self.assertEqual(self.net.top_names, + OrderedDict([('data', ['data', 'label']), + ('conv', ['conv']), + ('ip', ['ip_blob']), + ('loss', ['loss'])])) + self.assertEqual(self.net.bottom_names, + OrderedDict([('data', []), + ('conv', ['data']), + ('ip', ['conv']), + ('loss', ['ip_blob', 'label'])])) + + def test_save_and_read(self): + f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + f.close() + self.net.save(f.name) + net_file = simple_net_file(self.num_output) + # Test legacy constructor + # should print deprecation warning + caffe.Net(net_file, f.name, caffe.TRAIN) + # Test named constructor + net2 = caffe.Net(net_file, caffe.TRAIN, weights=f.name) + os.remove(net_file) + os.remove(f.name) + for name in self.net.params: + for i in range(len(self.net.params[name])): + self.assertEqual(abs(self.net.params[name][i].data + - net2.params[name][i].data).sum(), 0) + + def test_save_hdf5(self): + f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + f.close() + self.net.save_hdf5(f.name) + net_file = simple_net_file(self.num_output) + net2 = caffe.Net(net_file, caffe.TRAIN) + net2.load_hdf5(f.name) + os.remove(net_file) + os.remove(f.name) + for name in self.net.params: + for i in range(len(self.net.params[name])): + self.assertEqual(abs(self.net.params[name][i].data + - net2.params[name][i].data).sum(), 0) + +class TestLevels(unittest.TestCase): + + TEST_NET = """ +layer { + name: "data" + type: "DummyData" + top: "data" + dummy_data_param { shape { dim: 1 dim: 1 dim: 10 dim: 10 } } +} +layer { + name: "NoLevel" + type: "InnerProduct" + bottom: "data" + top: "NoLevel" + inner_product_param { num_output: 1 } +} +layer { + name: "Level0Only" + type: "InnerProduct" + bottom: "data" + top: "Level0Only" + include { min_level: 0 max_level: 0 } + inner_product_param { num_output: 1 } +} +layer { + name: "Level1Only" + type: "InnerProduct" + bottom: "data" + top: "Level1Only" + include { min_level: 1 max_level: 1 } + inner_product_param { num_output: 1 } +} +layer { + name: "Level>=0" + type: "InnerProduct" + bottom: "data" + top: "Level>=0" + include { min_level: 0 } + inner_product_param { num_output: 1 } +} +layer { + name: "Level>=1" + type: "InnerProduct" + bottom: "data" + top: "Level>=1" + include { min_level: 1 } + inner_product_param { num_output: 1 } +} +""" + + def setUp(self): + self.f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + self.f.write(self.TEST_NET) + self.f.close() + + def tearDown(self): + os.remove(self.f.name) + + def check_net(self, net, blobs): + net_blobs = [b for b in net.blobs.keys() if 'data' not in b] + self.assertEqual(net_blobs, blobs) + + def test_0(self): + net = caffe.Net(self.f.name, caffe.TEST) + self.check_net(net, ['NoLevel', 'Level0Only', 'Level>=0']) + + def test_1(self): + net = caffe.Net(self.f.name, caffe.TEST, level=1) + self.check_net(net, ['NoLevel', 'Level1Only', 'Level>=0', 'Level>=1']) + + +class TestStages(unittest.TestCase): + + TEST_NET = """ +layer { + name: "data" + type: "DummyData" + top: "data" + dummy_data_param { shape { dim: 1 dim: 1 dim: 10 dim: 10 } } +} +layer { + name: "A" + type: "InnerProduct" + bottom: "data" + top: "A" + include { stage: "A" } + inner_product_param { num_output: 1 } +} +layer { + name: "B" + type: "InnerProduct" + bottom: "data" + top: "B" + include { stage: "B" } + inner_product_param { num_output: 1 } +} +layer { + name: "AorB" + type: "InnerProduct" + bottom: "data" + top: "AorB" + include { stage: "A" } + include { stage: "B" } + inner_product_param { num_output: 1 } +} +layer { + name: "AandB" + type: "InnerProduct" + bottom: "data" + top: "AandB" + include { stage: "A" stage: "B" } + inner_product_param { num_output: 1 } +} +""" + + def setUp(self): + self.f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + self.f.write(self.TEST_NET) + self.f.close() + + def tearDown(self): + os.remove(self.f.name) + + def check_net(self, net, blobs): + net_blobs = [b for b in net.blobs.keys() if 'data' not in b] + self.assertEqual(net_blobs, blobs) + + def test_A(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['A']) + self.check_net(net, ['A', 'AorB']) + + def test_B(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['B']) + self.check_net(net, ['B', 'AorB']) + + def test_AandB(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['A', 'B']) + self.check_net(net, ['A', 'B', 'AorB', 'AandB']) + + +class TestAllInOne(unittest.TestCase): + + TEST_NET = """ +layer { + name: "train_data" + type: "DummyData" + top: "data" + top: "label" + dummy_data_param { + shape { dim: 1 dim: 1 dim: 10 dim: 10 } + shape { dim: 1 dim: 1 dim: 1 dim: 1 } + } + include { phase: TRAIN stage: "train" } +} +layer { + name: "val_data" + type: "DummyData" + top: "data" + top: "label" + dummy_data_param { + shape { dim: 1 dim: 1 dim: 10 dim: 10 } + shape { dim: 1 dim: 1 dim: 1 dim: 1 } + } + include { phase: TEST stage: "val" } +} +layer { + name: "deploy_data" + type: "Input" + top: "data" + input_param { shape { dim: 1 dim: 1 dim: 10 dim: 10 } } + include { phase: TEST stage: "deploy" } +} +layer { + name: "ip" + type: "InnerProduct" + bottom: "data" + top: "ip" + inner_product_param { num_output: 2 } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip" + bottom: "label" + top: "loss" + include: { phase: TRAIN stage: "train" } + include: { phase: TEST stage: "val" } +} +layer { + name: "pred" + type: "Softmax" + bottom: "ip" + top: "pred" + include: { phase: TEST stage: "deploy" } +} +""" + + def setUp(self): + self.f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + self.f.write(self.TEST_NET) + self.f.close() + + def tearDown(self): + os.remove(self.f.name) + + def check_net(self, net, outputs): + self.assertEqual(list(net.blobs['data'].shape), [1,1,10,10]) + self.assertEqual(net.outputs, outputs) + + def test_train(self): + net = caffe.Net(self.f.name, caffe.TRAIN, stages=['train']) + self.check_net(net, ['loss']) + + def test_val(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['val']) + self.check_net(net, ['loss']) + + def test_deploy(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['deploy']) + self.check_net(net, ['pred']) + diff --git a/3rdparty/caffe/python/caffe/test/test_net_spec.py b/3rdparty/caffe/python/caffe/test/test_net_spec.py new file mode 100644 index 00000000..ffe71bac --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_net_spec.py @@ -0,0 +1,89 @@ +import unittest +import tempfile +import caffe +from caffe import layers as L +from caffe import params as P + +def lenet(batch_size): + n = caffe.NetSpec() + n.data, n.label = L.DummyData(shape=[dict(dim=[batch_size, 1, 28, 28]), + dict(dim=[batch_size, 1, 1, 1])], + transform_param=dict(scale=1./255), ntop=2) + n.conv1 = L.Convolution(n.data, kernel_size=5, num_output=20, + weight_filler=dict(type='xavier')) + n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX) + n.conv2 = L.Convolution(n.pool1, kernel_size=5, num_output=50, + weight_filler=dict(type='xavier')) + n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX) + n.ip1 = L.InnerProduct(n.pool2, num_output=500, + weight_filler=dict(type='xavier')) + n.relu1 = L.ReLU(n.ip1, in_place=True) + n.ip2 = L.InnerProduct(n.relu1, num_output=10, + weight_filler=dict(type='xavier')) + n.loss = L.SoftmaxWithLoss(n.ip2, n.label) + return n.to_proto() + +def anon_lenet(batch_size): + data, label = L.DummyData(shape=[dict(dim=[batch_size, 1, 28, 28]), + dict(dim=[batch_size, 1, 1, 1])], + transform_param=dict(scale=1./255), ntop=2) + conv1 = L.Convolution(data, kernel_size=5, num_output=20, + weight_filler=dict(type='xavier')) + pool1 = L.Pooling(conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX) + conv2 = L.Convolution(pool1, kernel_size=5, num_output=50, + weight_filler=dict(type='xavier')) + pool2 = L.Pooling(conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX) + ip1 = L.InnerProduct(pool2, num_output=500, + weight_filler=dict(type='xavier')) + relu1 = L.ReLU(ip1, in_place=True) + ip2 = L.InnerProduct(relu1, num_output=10, + weight_filler=dict(type='xavier')) + loss = L.SoftmaxWithLoss(ip2, label) + return loss.to_proto() + +def silent_net(): + n = caffe.NetSpec() + n.data, n.data2 = L.DummyData(shape=dict(dim=3), ntop=2) + n.silence_data = L.Silence(n.data, ntop=0) + n.silence_data2 = L.Silence(n.data2, ntop=0) + return n.to_proto() + +class TestNetSpec(unittest.TestCase): + def load_net(self, net_proto): + f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + f.write(str(net_proto)) + f.close() + return caffe.Net(f.name, caffe.TEST) + + def test_lenet(self): + """Construct and build the Caffe version of LeNet.""" + + net_proto = lenet(50) + # check that relu is in-place + self.assertEqual(net_proto.layer[6].bottom, + net_proto.layer[6].top) + net = self.load_net(net_proto) + # check that all layers are present + self.assertEqual(len(net.layers), 9) + + # now the check the version with automatically-generated layer names + net_proto = anon_lenet(50) + self.assertEqual(net_proto.layer[6].bottom, + net_proto.layer[6].top) + net = self.load_net(net_proto) + self.assertEqual(len(net.layers), 9) + + def test_zero_tops(self): + """Test net construction for top-less layers.""" + + net_proto = silent_net() + net = self.load_net(net_proto) + self.assertEqual(len(net.forward()), 0) + + def test_type_error(self): + """Test that a TypeError is raised when a Function input isn't a Top.""" + data = L.DummyData(ntop=2) # data is a 2-tuple of Tops + r = r"^Silence input 0 is not a Top \(type is <(type|class) 'tuple'>\)$" + with self.assertRaisesRegexp(TypeError, r): + L.Silence(data, ntop=0) # should raise: data is a tuple, not a Top + L.Silence(*data, ntop=0) # shouldn't raise: each elt of data is a Top diff --git a/3rdparty/caffe/python/caffe/test/test_python_layer.py b/3rdparty/caffe/python/caffe/test/test_python_layer.py new file mode 100644 index 00000000..899514e9 --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_python_layer.py @@ -0,0 +1,168 @@ +import unittest +import tempfile +import os +import six + +import caffe + + +class SimpleLayer(caffe.Layer): + """A layer that just multiplies by ten""" + + def setup(self, bottom, top): + pass + + def reshape(self, bottom, top): + top[0].reshape(*bottom[0].data.shape) + + def forward(self, bottom, top): + top[0].data[...] = 10 * bottom[0].data + + def backward(self, top, propagate_down, bottom): + bottom[0].diff[...] = 10 * top[0].diff + + +class ExceptionLayer(caffe.Layer): + """A layer for checking exceptions from Python""" + + def setup(self, bottom, top): + raise RuntimeError + +class ParameterLayer(caffe.Layer): + """A layer that just multiplies by ten""" + + def setup(self, bottom, top): + self.blobs.add_blob(1) + self.blobs[0].data[0] = 0 + + def reshape(self, bottom, top): + top[0].reshape(*bottom[0].data.shape) + + def forward(self, bottom, top): + pass + + def backward(self, top, propagate_down, bottom): + self.blobs[0].diff[0] = 1 + +class PhaseLayer(caffe.Layer): + """A layer for checking attribute `phase`""" + + def setup(self, bottom, top): + pass + + def reshape(self, bootom, top): + top[0].reshape() + + def forward(self, bottom, top): + top[0].data[()] = self.phase + +def python_net_file(): + with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f: + f.write("""name: 'pythonnet' force_backward: true + input: 'data' input_shape { dim: 10 dim: 9 dim: 8 } + layer { type: 'Python' name: 'one' bottom: 'data' top: 'one' + python_param { module: 'test_python_layer' layer: 'SimpleLayer' } } + layer { type: 'Python' name: 'two' bottom: 'one' top: 'two' + python_param { module: 'test_python_layer' layer: 'SimpleLayer' } } + layer { type: 'Python' name: 'three' bottom: 'two' top: 'three' + python_param { module: 'test_python_layer' layer: 'SimpleLayer' } }""") + return f.name + + +def exception_net_file(): + with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f: + f.write("""name: 'pythonnet' force_backward: true + input: 'data' input_shape { dim: 10 dim: 9 dim: 8 } + layer { type: 'Python' name: 'layer' bottom: 'data' top: 'top' + python_param { module: 'test_python_layer' layer: 'ExceptionLayer' } } + """) + return f.name + + +def parameter_net_file(): + with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f: + f.write("""name: 'pythonnet' force_backward: true + input: 'data' input_shape { dim: 10 dim: 9 dim: 8 } + layer { type: 'Python' name: 'layer' bottom: 'data' top: 'top' + python_param { module: 'test_python_layer' layer: 'ParameterLayer' } } + """) + return f.name + +def phase_net_file(): + with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f: + f.write("""name: 'pythonnet' force_backward: true + layer { type: 'Python' name: 'layer' top: 'phase' + python_param { module: 'test_python_layer' layer: 'PhaseLayer' } } + """) + return f.name + + +@unittest.skipIf('Python' not in caffe.layer_type_list(), + 'Caffe built without Python layer support') +class TestPythonLayer(unittest.TestCase): + def setUp(self): + net_file = python_net_file() + self.net = caffe.Net(net_file, caffe.TRAIN) + os.remove(net_file) + + def test_forward(self): + x = 8 + self.net.blobs['data'].data[...] = x + self.net.forward() + for y in self.net.blobs['three'].data.flat: + self.assertEqual(y, 10**3 * x) + + def test_backward(self): + x = 7 + self.net.blobs['three'].diff[...] = x + self.net.backward() + for y in self.net.blobs['data'].diff.flat: + self.assertEqual(y, 10**3 * x) + + def test_reshape(self): + s = 4 + self.net.blobs['data'].reshape(s, s, s, s) + self.net.forward() + for blob in six.itervalues(self.net.blobs): + for d in blob.data.shape: + self.assertEqual(s, d) + + def test_exception(self): + net_file = exception_net_file() + self.assertRaises(RuntimeError, caffe.Net, net_file, caffe.TEST) + os.remove(net_file) + + def test_parameter(self): + net_file = parameter_net_file() + net = caffe.Net(net_file, caffe.TRAIN) + # Test forward and backward + net.forward() + net.backward() + layer = net.layers[list(net._layer_names).index('layer')] + self.assertEqual(layer.blobs[0].data[0], 0) + self.assertEqual(layer.blobs[0].diff[0], 1) + layer.blobs[0].data[0] += layer.blobs[0].diff[0] + self.assertEqual(layer.blobs[0].data[0], 1) + + # Test saving and loading + h, caffemodel_file = tempfile.mkstemp() + net.save(caffemodel_file) + layer.blobs[0].data[0] = -1 + self.assertEqual(layer.blobs[0].data[0], -1) + net.copy_from(caffemodel_file) + self.assertEqual(layer.blobs[0].data[0], 1) + os.remove(caffemodel_file) + + # Test weight sharing + net2 = caffe.Net(net_file, caffe.TRAIN) + net2.share_with(net) + layer = net.layers[list(net2._layer_names).index('layer')] + self.assertEqual(layer.blobs[0].data[0], 1) + + os.remove(net_file) + + def test_phase(self): + net_file = phase_net_file() + for phase in caffe.TRAIN, caffe.TEST: + net = caffe.Net(net_file, phase) + self.assertEqual(net.forward()['phase'], phase) diff --git a/3rdparty/caffe/python/caffe/test/test_python_layer_with_param_str.py b/3rdparty/caffe/python/caffe/test/test_python_layer_with_param_str.py new file mode 100644 index 00000000..c36048ae --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_python_layer_with_param_str.py @@ -0,0 +1,61 @@ +import unittest +import tempfile +import os +import six + +import caffe + + +class SimpleParamLayer(caffe.Layer): + """A layer that just multiplies by the numeric value of its param string""" + + def setup(self, bottom, top): + try: + self.value = float(self.param_str) + except ValueError: + raise ValueError("Parameter string must be a legible float") + + def reshape(self, bottom, top): + top[0].reshape(*bottom[0].data.shape) + + def forward(self, bottom, top): + top[0].data[...] = self.value * bottom[0].data + + def backward(self, top, propagate_down, bottom): + bottom[0].diff[...] = self.value * top[0].diff + + +def python_param_net_file(): + with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f: + f.write("""name: 'pythonnet' force_backward: true + input: 'data' input_shape { dim: 10 dim: 9 dim: 8 } + layer { type: 'Python' name: 'mul10' bottom: 'data' top: 'mul10' + python_param { module: 'test_python_layer_with_param_str' + layer: 'SimpleParamLayer' param_str: '10' } } + layer { type: 'Python' name: 'mul2' bottom: 'mul10' top: 'mul2' + python_param { module: 'test_python_layer_with_param_str' + layer: 'SimpleParamLayer' param_str: '2' } }""") + return f.name + + +@unittest.skipIf('Python' not in caffe.layer_type_list(), + 'Caffe built without Python layer support') +class TestLayerWithParam(unittest.TestCase): + def setUp(self): + net_file = python_param_net_file() + self.net = caffe.Net(net_file, caffe.TRAIN) + os.remove(net_file) + + def test_forward(self): + x = 8 + self.net.blobs['data'].data[...] = x + self.net.forward() + for y in self.net.blobs['mul2'].data.flat: + self.assertEqual(y, 2 * 10 * x) + + def test_backward(self): + x = 7 + self.net.blobs['mul2'].diff[...] = x + self.net.backward() + for y in self.net.blobs['data'].diff.flat: + self.assertEqual(y, 2 * 10 * x) diff --git a/3rdparty/caffe/python/caffe/test/test_solver.py b/3rdparty/caffe/python/caffe/test/test_solver.py new file mode 100644 index 00000000..f618fded --- /dev/null +++ b/3rdparty/caffe/python/caffe/test/test_solver.py @@ -0,0 +1,62 @@ +import unittest +import tempfile +import os +import numpy as np +import six + +import caffe +from test_net import simple_net_file + + +class TestSolver(unittest.TestCase): + def setUp(self): + self.num_output = 13 + net_f = simple_net_file(self.num_output) + f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + f.write("""net: '""" + net_f + """' + test_iter: 10 test_interval: 10 base_lr: 0.01 momentum: 0.9 + weight_decay: 0.0005 lr_policy: 'inv' gamma: 0.0001 power: 0.75 + display: 100 max_iter: 100 snapshot_after_train: false + snapshot_prefix: "model" """) + f.close() + self.solver = caffe.SGDSolver(f.name) + # also make sure get_solver runs + caffe.get_solver(f.name) + caffe.set_mode_cpu() + # fill in valid labels + self.solver.net.blobs['label'].data[...] = \ + np.random.randint(self.num_output, + size=self.solver.net.blobs['label'].data.shape) + self.solver.test_nets[0].blobs['label'].data[...] = \ + np.random.randint(self.num_output, + size=self.solver.test_nets[0].blobs['label'].data.shape) + os.remove(f.name) + os.remove(net_f) + + def test_solve(self): + self.assertEqual(self.solver.iter, 0) + self.solver.solve() + self.assertEqual(self.solver.iter, 100) + + def test_net_memory(self): + """Check that nets survive after the solver is destroyed.""" + + nets = [self.solver.net] + list(self.solver.test_nets) + self.assertEqual(len(nets), 2) + del self.solver + + total = 0 + for net in nets: + for ps in six.itervalues(net.params): + for p in ps: + total += p.data.sum() + p.diff.sum() + for bl in six.itervalues(net.blobs): + total += bl.data.sum() + bl.diff.sum() + + def test_snapshot(self): + self.solver.snapshot() + # Check that these files exist and then remove them + files = ['model_iter_0.caffemodel', 'model_iter_0.solverstate'] + for fn in files: + assert os.path.isfile(fn) + os.remove(fn) diff --git a/3rdparty/caffe/python/classify.py b/3rdparty/caffe/python/classify.py new file mode 100755 index 00000000..4544c51b --- /dev/null +++ b/3rdparty/caffe/python/classify.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python +""" +classify.py is an out-of-the-box image classifer callable from the command line. + +By default it configures and runs the Caffe reference ImageNet model. +""" +import numpy as np +import os +import sys +import argparse +import glob +import time + +import caffe + + +def main(argv): + pycaffe_dir = os.path.dirname(__file__) + + parser = argparse.ArgumentParser() + # Required arguments: input and output files. + parser.add_argument( + "input_file", + help="Input image, directory, or npy." + ) + parser.add_argument( + "output_file", + help="Output npy filename." + ) + # Optional arguments. + parser.add_argument( + "--model_def", + default=os.path.join(pycaffe_dir, + "../models/bvlc_reference_caffenet/deploy.prototxt"), + help="Model definition file." + ) + parser.add_argument( + "--pretrained_model", + default=os.path.join(pycaffe_dir, + "../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel"), + help="Trained model weights file." + ) + parser.add_argument( + "--gpu", + action='store_true', + help="Switch for gpu computation." + ) + parser.add_argument( + "--center_only", + action='store_true', + help="Switch for prediction from center crop alone instead of " + + "averaging predictions across crops (default)." + ) + parser.add_argument( + "--images_dim", + default='256,256', + help="Canonical 'height,width' dimensions of input images." + ) + parser.add_argument( + "--mean_file", + default=os.path.join(pycaffe_dir, + 'caffe/imagenet/ilsvrc_2012_mean.npy'), + help="Data set image mean of [Channels x Height x Width] dimensions " + + "(numpy array). Set to '' for no mean subtraction." + ) + parser.add_argument( + "--input_scale", + type=float, + help="Multiply input features by this scale to finish preprocessing." + ) + parser.add_argument( + "--raw_scale", + type=float, + default=255.0, + help="Multiply raw input by this scale before preprocessing." + ) + parser.add_argument( + "--channel_swap", + default='2,1,0', + help="Order to permute input channels. The default converts " + + "RGB -> BGR since BGR is the Caffe default by way of OpenCV." + ) + parser.add_argument( + "--ext", + default='jpg', + help="Image file extension to take as input when a directory " + + "is given as the input file." + ) + args = parser.parse_args() + + image_dims = [int(s) for s in args.images_dim.split(',')] + + mean, channel_swap = None, None + if args.mean_file: + mean = np.load(args.mean_file) + if args.channel_swap: + channel_swap = [int(s) for s in args.channel_swap.split(',')] + + if args.gpu: + caffe.set_mode_gpu() + print("GPU mode") + else: + caffe.set_mode_cpu() + print("CPU mode") + + # Make classifier. + classifier = caffe.Classifier(args.model_def, args.pretrained_model, + image_dims=image_dims, mean=mean, + input_scale=args.input_scale, raw_scale=args.raw_scale, + channel_swap=channel_swap) + + # Load numpy array (.npy), directory glob (*.jpg), or image file. + args.input_file = os.path.expanduser(args.input_file) + if args.input_file.endswith('npy'): + print("Loading file: %s" % args.input_file) + inputs = np.load(args.input_file) + elif os.path.isdir(args.input_file): + print("Loading folder: %s" % args.input_file) + inputs =[caffe.io.load_image(im_f) + for im_f in glob.glob(args.input_file + '/*.' + args.ext)] + else: + print("Loading file: %s" % args.input_file) + inputs = [caffe.io.load_image(args.input_file)] + + print("Classifying %d inputs." % len(inputs)) + + # Classify. + start = time.time() + predictions = classifier.predict(inputs, not args.center_only) + print("Done in %.2f s." % (time.time() - start)) + + # Save + print("Saving results into %s" % args.output_file) + np.save(args.output_file, predictions) + + +if __name__ == '__main__': + main(sys.argv) diff --git a/3rdparty/caffe/python/detect.py b/3rdparty/caffe/python/detect.py new file mode 100755 index 00000000..1aba964a --- /dev/null +++ b/3rdparty/caffe/python/detect.py @@ -0,0 +1,173 @@ +#!/usr/bin/env python +""" +detector.py is an out-of-the-box windowed detector +callable from the command line. + +By default it configures and runs the Caffe reference ImageNet model. +Note that this model was trained for image classification and not detection, +and finetuning for detection can be expected to improve results. + +The selective_search_ijcv_with_python code required for the selective search +proposal mode is available at + https://github.com/sergeyk/selective_search_ijcv_with_python + +TODO: +- batch up image filenames as well: don't want to load all of them into memory +- come up with a batching scheme that preserved order / keeps a unique ID +""" +import numpy as np +import pandas as pd +import os +import argparse +import time + +import caffe + +CROP_MODES = ['list', 'selective_search'] +COORD_COLS = ['ymin', 'xmin', 'ymax', 'xmax'] + + +def main(argv): + pycaffe_dir = os.path.dirname(__file__) + + parser = argparse.ArgumentParser() + # Required arguments: input and output. + parser.add_argument( + "input_file", + help="Input txt/csv filename. If .txt, must be list of filenames.\ + If .csv, must be comma-separated file with header\ + 'filename, xmin, ymin, xmax, ymax'" + ) + parser.add_argument( + "output_file", + help="Output h5/csv filename. Format depends on extension." + ) + # Optional arguments. + parser.add_argument( + "--model_def", + default=os.path.join(pycaffe_dir, + "../models/bvlc_reference_caffenet/deploy.prototxt"), + help="Model definition file." + ) + parser.add_argument( + "--pretrained_model", + default=os.path.join(pycaffe_dir, + "../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel"), + help="Trained model weights file." + ) + parser.add_argument( + "--crop_mode", + default="selective_search", + choices=CROP_MODES, + help="How to generate windows for detection." + ) + parser.add_argument( + "--gpu", + action='store_true', + help="Switch for gpu computation." + ) + parser.add_argument( + "--mean_file", + default=os.path.join(pycaffe_dir, + 'caffe/imagenet/ilsvrc_2012_mean.npy'), + help="Data set image mean of H x W x K dimensions (numpy array). " + + "Set to '' for no mean subtraction." + ) + parser.add_argument( + "--input_scale", + type=float, + help="Multiply input features by this scale to finish preprocessing." + ) + parser.add_argument( + "--raw_scale", + type=float, + default=255.0, + help="Multiply raw input by this scale before preprocessing." + ) + parser.add_argument( + "--channel_swap", + default='2,1,0', + help="Order to permute input channels. The default converts " + + "RGB -> BGR since BGR is the Caffe default by way of OpenCV." + + ) + parser.add_argument( + "--context_pad", + type=int, + default='16', + help="Amount of surrounding context to collect in input window." + ) + args = parser.parse_args() + + mean, channel_swap = None, None + if args.mean_file: + mean = np.load(args.mean_file) + if mean.shape[1:] != (1, 1): + mean = mean.mean(1).mean(1) + if args.channel_swap: + channel_swap = [int(s) for s in args.channel_swap.split(',')] + + if args.gpu: + caffe.set_mode_gpu() + print("GPU mode") + else: + caffe.set_mode_cpu() + print("CPU mode") + + # Make detector. + detector = caffe.Detector(args.model_def, args.pretrained_model, mean=mean, + input_scale=args.input_scale, raw_scale=args.raw_scale, + channel_swap=channel_swap, + context_pad=args.context_pad) + + # Load input. + t = time.time() + print("Loading input...") + if args.input_file.lower().endswith('txt'): + with open(args.input_file) as f: + inputs = [_.strip() for _ in f.readlines()] + elif args.input_file.lower().endswith('csv'): + inputs = pd.read_csv(args.input_file, sep=',', dtype={'filename': str}) + inputs.set_index('filename', inplace=True) + else: + raise Exception("Unknown input file type: not in txt or csv.") + + # Detect. + if args.crop_mode == 'list': + # Unpack sequence of (image filename, windows). + images_windows = [ + (ix, inputs.iloc[np.where(inputs.index == ix)][COORD_COLS].values) + for ix in inputs.index.unique() + ] + detections = detector.detect_windows(images_windows) + else: + detections = detector.detect_selective_search(inputs) + print("Processed {} windows in {:.3f} s.".format(len(detections), + time.time() - t)) + + # Collect into dataframe with labeled fields. + df = pd.DataFrame(detections) + df.set_index('filename', inplace=True) + df[COORD_COLS] = pd.DataFrame( + data=np.vstack(df['window']), index=df.index, columns=COORD_COLS) + del(df['window']) + + # Save results. + t = time.time() + if args.output_file.lower().endswith('csv'): + # csv + # Enumerate the class probabilities. + class_cols = ['class{}'.format(x) for x in range(NUM_OUTPUT)] + df[class_cols] = pd.DataFrame( + data=np.vstack(df['feat']), index=df.index, columns=class_cols) + df.to_csv(args.output_file, cols=COORD_COLS + class_cols) + else: + # h5 + df.to_hdf(args.output_file, 'df', mode='w') + print("Saved to {} in {:.3f} s.".format(args.output_file, + time.time() - t)) + + +if __name__ == "__main__": + import sys + main(sys.argv) diff --git a/3rdparty/caffe/python/draw_net.py b/3rdparty/caffe/python/draw_net.py new file mode 100755 index 00000000..dfe70d26 --- /dev/null +++ b/3rdparty/caffe/python/draw_net.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +""" +Draw a graph of the net architecture. +""" +from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter +from google.protobuf import text_format + +import caffe +import caffe.draw +from caffe.proto import caffe_pb2 + + +def parse_args(): + """Parse input arguments + """ + + parser = ArgumentParser(description=__doc__, + formatter_class=ArgumentDefaultsHelpFormatter) + + parser.add_argument('input_net_proto_file', + help='Input network prototxt file') + parser.add_argument('output_image_file', + help='Output image file') + parser.add_argument('--rankdir', + help=('One of TB (top-bottom, i.e., vertical), ' + 'RL (right-left, i.e., horizontal), or another ' + 'valid dot option; see ' + 'http://www.graphviz.org/doc/info/' + 'attrs.html#k:rankdir'), + default='LR') + parser.add_argument('--phase', + help=('Which network phase to draw: can be TRAIN, ' + 'TEST, or ALL. If ALL, then all layers are drawn ' + 'regardless of phase.'), + default="ALL") + + args = parser.parse_args() + return args + + +def main(): + args = parse_args() + net = caffe_pb2.NetParameter() + text_format.Merge(open(args.input_net_proto_file).read(), net) + print('Drawing net to %s' % args.output_image_file) + phase=None; + if args.phase == "TRAIN": + phase = caffe.TRAIN + elif args.phase == "TEST": + phase = caffe.TEST + elif args.phase != "ALL": + raise ValueError("Unknown phase: " + args.phase) + caffe.draw.draw_net_to_file(net, args.output_image_file, args.rankdir, + phase) + + +if __name__ == '__main__': + main() diff --git a/3rdparty/caffe/python/requirements.txt b/3rdparty/caffe/python/requirements.txt new file mode 100644 index 00000000..e7d89e67 --- /dev/null +++ b/3rdparty/caffe/python/requirements.txt @@ -0,0 +1,17 @@ +Cython>=0.19.2 +numpy>=1.7.1 +scipy>=0.13.2 +scikit-image>=0.9.3 +matplotlib>=1.3.1 +ipython>=3.0.0 +h5py>=2.2.0 +leveldb>=0.191 +networkx>=1.8.1 +nose>=1.3.0 +pandas>=0.12.0 +python-dateutil>=1.4,<2 +protobuf>=2.5.0 +python-gflags>=2.0 +pyyaml>=3.10 +Pillow>=2.3.0 +six>=1.1.0 \ No newline at end of file diff --git a/3rdparty/caffe/python/train.py b/3rdparty/caffe/python/train.py new file mode 100644 index 00000000..5897f5dc --- /dev/null +++ b/3rdparty/caffe/python/train.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +""" +Trains a model using one or more GPUs. +""" +from multiprocessing import Process + +import caffe + + +def train( + solver, # solver proto definition + snapshot, # solver snapshot to restore + gpus, # list of device ids + timing=False, # show timing info for compute and communications +): + # NCCL uses a uid to identify a session + uid = caffe.NCCL.new_uid() + + caffe.init_log() + caffe.log('Using devices %s' % str(gpus)) + + procs = [] + for rank in range(len(gpus)): + p = Process(target=solve, + args=(solver, snapshot, gpus, timing, uid, rank)) + p.daemon = True + p.start() + procs.append(p) + for p in procs: + p.join() + + +def time(solver, nccl): + fprop = [] + bprop = [] + total = caffe.Timer() + allrd = caffe.Timer() + for _ in range(len(solver.net.layers)): + fprop.append(caffe.Timer()) + bprop.append(caffe.Timer()) + display = solver.param.display + + def show_time(): + if solver.iter % display == 0: + s = '\n' + for i in range(len(solver.net.layers)): + s += 'forw %3d %8s ' % (i, solver.net._layer_names[i]) + s += ': %.2f\n' % fprop[i].ms + for i in range(len(solver.net.layers) - 1, -1, -1): + s += 'back %3d %8s ' % (i, solver.net._layer_names[i]) + s += ': %.2f\n' % bprop[i].ms + s += 'solver total: %.2f\n' % total.ms + s += 'allreduce: %.2f\n' % allrd.ms + caffe.log(s) + + solver.net.before_forward(lambda layer: fprop[layer].start()) + solver.net.after_forward(lambda layer: fprop[layer].stop()) + solver.net.before_backward(lambda layer: bprop[layer].start()) + solver.net.after_backward(lambda layer: bprop[layer].stop()) + solver.add_callback(lambda: total.start(), lambda: (total.stop(), allrd.start())) + solver.add_callback(nccl) + solver.add_callback(lambda: '', lambda: (allrd.stop(), show_time())) + + +def solve(proto, snapshot, gpus, timing, uid, rank): + caffe.set_mode_gpu() + caffe.set_device(gpus[rank]) + caffe.set_solver_count(len(gpus)) + caffe.set_solver_rank(rank) + caffe.set_multiprocess(True) + + solver = caffe.SGDSolver(proto) + if snapshot and len(snapshot) != 0: + solver.restore(snapshot) + + nccl = caffe.NCCL(solver, uid) + nccl.bcast() + + if timing and rank == 0: + time(solver, nccl) + else: + solver.add_callback(nccl) + + if solver.param.layer_wise_reduce: + solver.net.after_backward(nccl) + solver.step(solver.param.max_iter) + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + + parser.add_argument("--solver", required=True, help="Solver proto definition.") + parser.add_argument("--snapshot", help="Solver snapshot to restore.") + parser.add_argument("--gpus", type=int, nargs='+', default=[0], + help="List of device ids.") + parser.add_argument("--timing", action='store_true', help="Show timing info.") + args = parser.parse_args() + + train(args.solver, args.snapshot, args.gpus, args.timing) diff --git a/3rdparty/caffe/scripts/build_docs.sh b/3rdparty/caffe/scripts/build_docs.sh new file mode 100755 index 00000000..4837587a --- /dev/null +++ b/3rdparty/caffe/scripts/build_docs.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Build documentation for display in web browser. + +PORT=${1:-4000} + +echo "usage: build_docs.sh [port]" + +# Find the docs dir, no matter where the script is called +ROOT_DIR="$( cd "$(dirname "$0")"/.. ; pwd -P )" +cd $ROOT_DIR + +# Gather docs. +scripts/gather_examples.sh + +# Split caffe.proto for inclusion by layer catalogue. +scripts/split_caffe_proto.py + +# Generate developer docs. +make docs + +# Display docs using web server. +cd docs +jekyll serve -w -s . -d _site --port=$PORT diff --git a/3rdparty/caffe/scripts/caffe b/3rdparty/caffe/scripts/caffe new file mode 100644 index 00000000..8a0b22af --- /dev/null +++ b/3rdparty/caffe/scripts/caffe @@ -0,0 +1,73 @@ +# bash completion for Caffe's command line utility -*- shell-script -*- +# COPYRIGHT (C) 2015,2016 Zhou Mo +# License: BSD-2-Clause +# Originally appeard at https://github.com/BVLC/caffe/issues/3149 + +# Updated for caffe (1.0.0~rc3+20160715-g42cd785) +_caffe() +{ + local cur prev words cword + _init_completion -s || return + + local prototxts='@(prototxt)' + local caffemodels='@(caffemodel,binaryproto)' + local solverstates='@(solverstate)' + local caffefiles='@(prototxt|caffemodel|solverstate)' + + local flags='-gpu -iterations -model -snapshot -solver -weights -sighup_effect -sigint_effect -level -stage -phase' + + if [[ $cword -eq 1 ]]; then + COMPREPLY=( $( compgen -W 'train test time device_query' -- "$cur" ) ) + return 0 + fi + + if [[ $cword -eq 2 ]]; then + case ${words[1]} in + train|test|device_query|time) + COMPREPLY=( $( compgen -W "$flags" -- "$cur") ) + return 0 + ;; + *) + return 0 + ;; + esac + fi + + case $prev in + -gpu|-iterations|-version|-level|-stage) + return 0 + ;; + -solver|-model) + _filedir $prototxts + return 0 + ;; + -weights) + _filedir $caffemodels + return 0 + ;; + -snapshot) + _filedir $solverstates + return 0 + ;; + -sighup_effect|-sigint_effect) + COMPREPLY=( $( compgen -W 'snapshot stop none' -- "$cur") ) + return 0 + ;; + -phase) + COMPREPLY=( $( compgen -W 'TRAIN TEST' -- "$cur") ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$flags" -- "$cur") ) + return 0 + ;; + esac + + # file completion on relevant files + _filedir "$caffefiles" + + return 0 +} +complete -F _caffe caffe + +# vim diff --git a/3rdparty/caffe/scripts/copy_notebook.py b/3rdparty/caffe/scripts/copy_notebook.py new file mode 100755 index 00000000..e4c6385b --- /dev/null +++ b/3rdparty/caffe/scripts/copy_notebook.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +""" +Takes as arguments: +1. the path to a JSON file (such as an IPython notebook). +2. the path to output file + +If 'metadata' dict in the JSON file contains 'include_in_docs': true, +then copies the file to output file, appending the 'metadata' property +as YAML front-matter, adding the field 'category' with value 'notebook'. +""" +import os +import sys +import json + +filename = sys.argv[1] +output_filename = sys.argv[2] +content = json.load(open(filename)) + +if 'include_in_docs' in content['metadata'] and content['metadata']['include_in_docs']: + yaml_frontmatter = ['---'] + for key, val in content['metadata'].iteritems(): + if key == 'example_name': + key = 'title' + if val == '': + val = os.path.basename(filename) + yaml_frontmatter.append('{}: {}'.format(key, val)) + yaml_frontmatter += ['category: notebook'] + yaml_frontmatter += ['original_path: ' + filename] + + with open(output_filename, 'w') as fo: + fo.write('\n'.join(yaml_frontmatter + ['---']) + '\n') + fo.write(open(filename).read()) diff --git a/3rdparty/caffe/scripts/cpp_lint.py b/3rdparty/caffe/scripts/cpp_lint.py new file mode 100755 index 00000000..b2016d4b --- /dev/null +++ b/3rdparty/caffe/scripts/cpp_lint.py @@ -0,0 +1,4873 @@ +#!/usr/bin/env python +# +# Copyright (c) 2009 Google Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Does google-lint on c++ files. + +The goal of this script is to identify places in the code that *may* +be in non-compliance with google style. It does not attempt to fix +up these problems -- the point is to educate. It does also not +attempt to find all problems, or to ensure that everything it does +find is legitimately a problem. + +In particular, we can get very confused by /* and // inside strings! +We do a small hack, which is to ignore //'s with "'s after them on the +same line, but it is far from perfect (in either direction). +""" + +import codecs +import copy +import getopt +import math # for log +import os +import re +import sre_compile +import string +import sys +import unicodedata + +import six + +from six import iteritems, itervalues +from six.moves import xrange + +_USAGE = """ +Syntax: cpp_lint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] + [--counting=total|toplevel|detailed] [--root=subdir] + [--linelength=digits] + [file] ... + + The style guidelines this tries to follow are those in + http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml + + Every problem is given a confidence score from 1-5, with 5 meaning we are + certain of the problem, and 1 meaning it could be a legitimate construct. + This will miss some errors, and is not a substitute for a code review. + + To suppress false-positive errors of a certain category, add a + 'NOLINT(category)' comment to the line. NOLINT or NOLINT(*) + suppresses errors of all categories on that line. + + The files passed in will be linted; at least one file must be provided. + Default linted extensions are .cc, .cpp, .cu, .cuh and .h. Change the + extensions with the --extensions flag. + + Flags: + + output=vs7 + By default, the output is formatted to ease emacs parsing. Visual Studio + compatible output (vs7) may also be used. Other formats are unsupported. + + verbose=# + Specify a number 0-5 to restrict errors to certain verbosity levels. + + filter=-x,+y,... + Specify a comma-separated list of category-filters to apply: only + error messages whose category names pass the filters will be printed. + (Category names are printed with the message and look like + "[whitespace/indent]".) Filters are evaluated left to right. + "-FOO" and "FOO" means "do not print categories that start with FOO". + "+FOO" means "do print categories that start with FOO". + + Examples: --filter=-whitespace,+whitespace/braces + --filter=whitespace,runtime/printf,+runtime/printf_format + --filter=-,+build/include_what_you_use + + To see a list of all the categories used in cpplint, pass no arg: + --filter= + + counting=total|toplevel|detailed + The total number of errors found is always printed. If + 'toplevel' is provided, then the count of errors in each of + the top-level categories like 'build' and 'whitespace' will + also be printed. If 'detailed' is provided, then a count + is provided for each category like 'build/class'. + + root=subdir + The root directory used for deriving header guard CPP variable. + By default, the header guard CPP variable is calculated as the relative + path to the directory that contains .git, .hg, or .svn. When this flag + is specified, the relative path is calculated from the specified + directory. If the specified directory does not exist, this flag is + ignored. + + Examples: + Assuing that src/.git exists, the header guard CPP variables for + src/chrome/browser/ui/browser.h are: + + No flag => CHROME_BROWSER_UI_BROWSER_H_ + --root=chrome => BROWSER_UI_BROWSER_H_ + --root=chrome/browser => UI_BROWSER_H_ + + linelength=digits + This is the allowed line length for the project. The default value is + 80 characters. + + Examples: + --linelength=120 + + extensions=extension,extension,... + The allowed file extensions that cpplint will check + + Examples: + --extensions=hpp,cpp +""" + +# We categorize each error message we print. Here are the categories. +# We want an explicit list so we can list them all in cpplint --filter=. +# If you add a new error message with a new category, add it to the list +# here! cpplint_unittest.py should tell you if you forget to do this. +_ERROR_CATEGORIES = [ + 'build/class', + 'build/deprecated', + 'build/endif_comment', + 'build/explicit_make_pair', + 'build/forward_decl', + 'build/header_guard', + 'build/include', + 'build/include_alpha', + 'build/include_dir', + 'build/include_order', + 'build/include_what_you_use', + 'build/namespaces', + 'build/printf_format', + 'build/storage_class', + 'caffe/alt_fn', + 'caffe/data_layer_setup', + 'caffe/random_fn', + 'legal/copyright', + 'readability/alt_tokens', + 'readability/braces', + 'readability/casting', + 'readability/check', + 'readability/constructors', + 'readability/fn_size', + 'readability/function', + 'readability/multiline_comment', + 'readability/multiline_string', + 'readability/namespace', + 'readability/nolint', + 'readability/nul', + 'readability/streams', + 'readability/todo', + 'readability/utf8', + 'runtime/arrays', + 'runtime/casting', + 'runtime/explicit', + 'runtime/int', + 'runtime/init', + 'runtime/invalid_increment', + 'runtime/member_string_references', + 'runtime/memset', + 'runtime/operator', + 'runtime/printf', + 'runtime/printf_format', + 'runtime/references', + 'runtime/string', + 'runtime/threadsafe_fn', + 'runtime/vlog', + 'whitespace/blank_line', + 'whitespace/braces', + 'whitespace/comma', + 'whitespace/comments', + 'whitespace/empty_conditional_body', + 'whitespace/empty_loop_body', + 'whitespace/end_of_line', + 'whitespace/ending_newline', + 'whitespace/forcolon', + 'whitespace/indent', + 'whitespace/line_length', + 'whitespace/newline', + 'whitespace/operators', + 'whitespace/parens', + 'whitespace/semicolon', + 'whitespace/tab', + 'whitespace/todo' + ] + +# The default state of the category filter. This is overrided by the --filter= +# flag. By default all errors are on, so only add here categories that should be +# off by default (i.e., categories that must be enabled by the --filter= flags). +# All entries here should start with a '-' or '+', as in the --filter= flag. +_DEFAULT_FILTERS = [ + '-build/include_dir', + '-readability/todo', + ] + +# We used to check for high-bit characters, but after much discussion we +# decided those were OK, as long as they were in UTF-8 and didn't represent +# hard-coded international strings, which belong in a separate i18n file. + + +# C++ headers +_CPP_HEADERS = frozenset([ + # Legacy + 'algobase.h', + 'algo.h', + 'alloc.h', + 'builtinbuf.h', + 'bvector.h', + 'complex.h', + 'defalloc.h', + 'deque.h', + 'editbuf.h', + 'fstream.h', + 'function.h', + 'hash_map', + 'hash_map.h', + 'hash_set', + 'hash_set.h', + 'hashtable.h', + 'heap.h', + 'indstream.h', + 'iomanip.h', + 'iostream.h', + 'istream.h', + 'iterator.h', + 'list.h', + 'map.h', + 'multimap.h', + 'multiset.h', + 'ostream.h', + 'pair.h', + 'parsestream.h', + 'pfstream.h', + 'procbuf.h', + 'pthread_alloc', + 'pthread_alloc.h', + 'rope', + 'rope.h', + 'ropeimpl.h', + 'set.h', + 'slist', + 'slist.h', + 'stack.h', + 'stdiostream.h', + 'stl_alloc.h', + 'stl_relops.h', + 'streambuf.h', + 'stream.h', + 'strfile.h', + 'strstream.h', + 'tempbuf.h', + 'tree.h', + 'type_traits.h', + 'vector.h', + # 17.6.1.2 C++ library headers + 'algorithm', + 'array', + 'atomic', + 'bitset', + 'chrono', + 'codecvt', + 'complex', + 'condition_variable', + 'deque', + 'exception', + 'forward_list', + 'fstream', + 'functional', + 'future', + 'initializer_list', + 'iomanip', + 'ios', + 'iosfwd', + 'iostream', + 'istream', + 'iterator', + 'limits', + 'list', + 'locale', + 'map', + 'memory', + 'mutex', + 'new', + 'numeric', + 'ostream', + 'queue', + 'random', + 'ratio', + 'regex', + 'set', + 'sstream', + 'stack', + 'stdexcept', + 'streambuf', + 'string', + 'strstream', + 'system_error', + 'thread', + 'tuple', + 'typeindex', + 'typeinfo', + 'type_traits', + 'unordered_map', + 'unordered_set', + 'utility', + 'valarray', + 'vector', + # 17.6.1.2 C++ headers for C library facilities + 'cassert', + 'ccomplex', + 'cctype', + 'cerrno', + 'cfenv', + 'cfloat', + 'cinttypes', + 'ciso646', + 'climits', + 'clocale', + 'cmath', + 'csetjmp', + 'csignal', + 'cstdalign', + 'cstdarg', + 'cstdbool', + 'cstddef', + 'cstdint', + 'cstdio', + 'cstdlib', + 'cstring', + 'ctgmath', + 'ctime', + 'cuchar', + 'cwchar', + 'cwctype', + ]) + +# Assertion macros. These are defined in base/logging.h and +# testing/base/gunit.h. Note that the _M versions need to come first +# for substring matching to work. +_CHECK_MACROS = [ + 'DCHECK', 'CHECK', + 'EXPECT_TRUE_M', 'EXPECT_TRUE', + 'ASSERT_TRUE_M', 'ASSERT_TRUE', + 'EXPECT_FALSE_M', 'EXPECT_FALSE', + 'ASSERT_FALSE_M', 'ASSERT_FALSE', + ] + +# Replacement macros for CHECK/DCHECK/EXPECT_TRUE/EXPECT_FALSE +_CHECK_REPLACEMENT = dict([(m, {}) for m in _CHECK_MACROS]) + +for op, replacement in [('==', 'EQ'), ('!=', 'NE'), + ('>=', 'GE'), ('>', 'GT'), + ('<=', 'LE'), ('<', 'LT')]: + _CHECK_REPLACEMENT['DCHECK'][op] = 'DCHECK_%s' % replacement + _CHECK_REPLACEMENT['CHECK'][op] = 'CHECK_%s' % replacement + _CHECK_REPLACEMENT['EXPECT_TRUE'][op] = 'EXPECT_%s' % replacement + _CHECK_REPLACEMENT['ASSERT_TRUE'][op] = 'ASSERT_%s' % replacement + _CHECK_REPLACEMENT['EXPECT_TRUE_M'][op] = 'EXPECT_%s_M' % replacement + _CHECK_REPLACEMENT['ASSERT_TRUE_M'][op] = 'ASSERT_%s_M' % replacement + +for op, inv_replacement in [('==', 'NE'), ('!=', 'EQ'), + ('>=', 'LT'), ('>', 'LE'), + ('<=', 'GT'), ('<', 'GE')]: + _CHECK_REPLACEMENT['EXPECT_FALSE'][op] = 'EXPECT_%s' % inv_replacement + _CHECK_REPLACEMENT['ASSERT_FALSE'][op] = 'ASSERT_%s' % inv_replacement + _CHECK_REPLACEMENT['EXPECT_FALSE_M'][op] = 'EXPECT_%s_M' % inv_replacement + _CHECK_REPLACEMENT['ASSERT_FALSE_M'][op] = 'ASSERT_%s_M' % inv_replacement + +# Alternative tokens and their replacements. For full list, see section 2.5 +# Alternative tokens [lex.digraph] in the C++ standard. +# +# Digraphs (such as '%:') are not included here since it's a mess to +# match those on a word boundary. +_ALT_TOKEN_REPLACEMENT = { + 'and': '&&', + 'bitor': '|', + 'or': '||', + 'xor': '^', + 'compl': '~', + 'bitand': '&', + 'and_eq': '&=', + 'or_eq': '|=', + 'xor_eq': '^=', + 'not': '!', + 'not_eq': '!=' + } + +# Compile regular expression that matches all the above keywords. The "[ =()]" +# bit is meant to avoid matching these keywords outside of boolean expressions. +# +# False positives include C-style multi-line comments and multi-line strings +# but those have always been troublesome for cpplint. +_ALT_TOKEN_REPLACEMENT_PATTERN = re.compile( + r'[ =()](' + ('|'.join(_ALT_TOKEN_REPLACEMENT.keys())) + r')(?=[ (]|$)') + + +# These constants define types of headers for use with +# _IncludeState.CheckNextIncludeOrder(). +_C_SYS_HEADER = 1 +_CPP_SYS_HEADER = 2 +_LIKELY_MY_HEADER = 3 +_POSSIBLE_MY_HEADER = 4 +_OTHER_HEADER = 5 + +# These constants define the current inline assembly state +_NO_ASM = 0 # Outside of inline assembly block +_INSIDE_ASM = 1 # Inside inline assembly block +_END_ASM = 2 # Last line of inline assembly block +_BLOCK_ASM = 3 # The whole block is an inline assembly block + +# Match start of assembly blocks +_MATCH_ASM = re.compile(r'^\s*(?:asm|_asm|__asm|__asm__)' + r'(?:\s+(volatile|__volatile__))?' + r'\s*[{(]') + + +_regexp_compile_cache = {} + +# Finds occurrences of NOLINT[_NEXT_LINE] or NOLINT[_NEXT_LINE](...). +_RE_SUPPRESSION = re.compile(r'\bNOLINT(_NEXT_LINE)?\b(\([^)]*\))?') + +# {str, set(int)}: a map from error categories to sets of linenumbers +# on which those errors are expected and should be suppressed. +_error_suppressions = {} + +# Finds Copyright. +_RE_COPYRIGHT = re.compile(r'Copyright') + +# The root directory used for deriving header guard CPP variable. +# This is set by --root flag. +_root = None + +# The allowed line length of files. +# This is set by --linelength flag. +_line_length = 80 + +# The allowed extensions for file names +# This is set by --extensions flag. +_valid_extensions = set(['cc', 'h', 'cpp', 'hpp', 'cu', 'cuh']) + +def ParseNolintSuppressions(filename, raw_line, linenum, error): + """Updates the global list of error-suppressions. + + Parses any NOLINT comments on the current line, updating the global + error_suppressions store. Reports an error if the NOLINT comment + was malformed. + + Args: + filename: str, the name of the input file. + raw_line: str, the line of input text, with comments. + linenum: int, the number of the current line. + error: function, an error handler. + """ + # FIXME(adonovan): "NOLINT(" is misparsed as NOLINT(*). + matched = _RE_SUPPRESSION.search(raw_line) + if matched: + if matched.group(1) == '_NEXT_LINE': + linenum += 1 + category = matched.group(2) + if category in (None, '(*)'): # => "suppress all" + _error_suppressions.setdefault(None, set()).add(linenum) + else: + if category.startswith('(') and category.endswith(')'): + category = category[1:-1] + if category in _ERROR_CATEGORIES: + _error_suppressions.setdefault(category, set()).add(linenum) + else: + error(filename, linenum, 'readability/nolint', 5, + 'Unknown NOLINT error category: %s' % category) + + +def ResetNolintSuppressions(): + "Resets the set of NOLINT suppressions to empty." + _error_suppressions.clear() + + +def IsErrorSuppressedByNolint(category, linenum): + """Returns true if the specified error category is suppressed on this line. + + Consults the global error_suppressions map populated by + ParseNolintSuppressions/ResetNolintSuppressions. + + Args: + category: str, the category of the error. + linenum: int, the current line number. + Returns: + bool, True iff the error should be suppressed due to a NOLINT comment. + """ + return (linenum in _error_suppressions.get(category, set()) or + linenum in _error_suppressions.get(None, set())) + +def Match(pattern, s): + """Matches the string with the pattern, caching the compiled regexp.""" + # The regexp compilation caching is inlined in both Match and Search for + # performance reasons; factoring it out into a separate function turns out + # to be noticeably expensive. + if pattern not in _regexp_compile_cache: + _regexp_compile_cache[pattern] = sre_compile.compile(pattern) + return _regexp_compile_cache[pattern].match(s) + + +def ReplaceAll(pattern, rep, s): + """Replaces instances of pattern in a string with a replacement. + + The compiled regex is kept in a cache shared by Match and Search. + + Args: + pattern: regex pattern + rep: replacement text + s: search string + + Returns: + string with replacements made (or original string if no replacements) + """ + if pattern not in _regexp_compile_cache: + _regexp_compile_cache[pattern] = sre_compile.compile(pattern) + return _regexp_compile_cache[pattern].sub(rep, s) + + +def Search(pattern, s): + """Searches the string for the pattern, caching the compiled regexp.""" + if pattern not in _regexp_compile_cache: + _regexp_compile_cache[pattern] = sre_compile.compile(pattern) + return _regexp_compile_cache[pattern].search(s) + + +class _IncludeState(dict): + """Tracks line numbers for includes, and the order in which includes appear. + + As a dict, an _IncludeState object serves as a mapping between include + filename and line number on which that file was included. + + Call CheckNextIncludeOrder() once for each header in the file, passing + in the type constants defined above. Calls in an illegal order will + raise an _IncludeError with an appropriate error message. + + """ + # self._section will move monotonically through this set. If it ever + # needs to move backwards, CheckNextIncludeOrder will raise an error. + _INITIAL_SECTION = 0 + _MY_H_SECTION = 1 + _C_SECTION = 2 + _CPP_SECTION = 3 + _OTHER_H_SECTION = 4 + + _TYPE_NAMES = { + _C_SYS_HEADER: 'C system header', + _CPP_SYS_HEADER: 'C++ system header', + _LIKELY_MY_HEADER: 'header this file implements', + _POSSIBLE_MY_HEADER: 'header this file may implement', + _OTHER_HEADER: 'other header', + } + _SECTION_NAMES = { + _INITIAL_SECTION: "... nothing. (This can't be an error.)", + _MY_H_SECTION: 'a header this file implements', + _C_SECTION: 'C system header', + _CPP_SECTION: 'C++ system header', + _OTHER_H_SECTION: 'other header', + } + + def __init__(self): + dict.__init__(self) + self.ResetSection() + + def ResetSection(self): + # The name of the current section. + self._section = self._INITIAL_SECTION + # The path of last found header. + self._last_header = '' + + def SetLastHeader(self, header_path): + self._last_header = header_path + + def CanonicalizeAlphabeticalOrder(self, header_path): + """Returns a path canonicalized for alphabetical comparison. + + - replaces "-" with "_" so they both cmp the same. + - removes '-inl' since we don't require them to be after the main header. + - lowercase everything, just in case. + + Args: + header_path: Path to be canonicalized. + + Returns: + Canonicalized path. + """ + return header_path.replace('-inl.h', '.h').replace('-', '_').lower() + + def IsInAlphabeticalOrder(self, clean_lines, linenum, header_path): + """Check if a header is in alphabetical order with the previous header. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + header_path: Canonicalized header to be checked. + + Returns: + Returns true if the header is in alphabetical order. + """ + # If previous section is different from current section, _last_header will + # be reset to empty string, so it's always less than current header. + # + # If previous line was a blank line, assume that the headers are + # intentionally sorted the way they are. + if (self._last_header > header_path and + not Match(r'^\s*$', clean_lines.elided[linenum - 1])): + return False + return True + + def CheckNextIncludeOrder(self, header_type): + """Returns a non-empty error message if the next header is out of order. + + This function also updates the internal state to be ready to check + the next include. + + Args: + header_type: One of the _XXX_HEADER constants defined above. + + Returns: + The empty string if the header is in the right order, or an + error message describing what's wrong. + + """ + error_message = ('Found %s after %s' % + (self._TYPE_NAMES[header_type], + self._SECTION_NAMES[self._section])) + + last_section = self._section + + if header_type == _C_SYS_HEADER: + if self._section <= self._C_SECTION: + self._section = self._C_SECTION + else: + self._last_header = '' + return error_message + elif header_type == _CPP_SYS_HEADER: + if self._section <= self._CPP_SECTION: + self._section = self._CPP_SECTION + else: + self._last_header = '' + return error_message + elif header_type == _LIKELY_MY_HEADER: + if self._section <= self._MY_H_SECTION: + self._section = self._MY_H_SECTION + else: + self._section = self._OTHER_H_SECTION + elif header_type == _POSSIBLE_MY_HEADER: + if self._section <= self._MY_H_SECTION: + self._section = self._MY_H_SECTION + else: + # This will always be the fallback because we're not sure + # enough that the header is associated with this file. + self._section = self._OTHER_H_SECTION + else: + assert header_type == _OTHER_HEADER + self._section = self._OTHER_H_SECTION + + if last_section != self._section: + self._last_header = '' + + return '' + + +class _CppLintState(object): + """Maintains module-wide state..""" + + def __init__(self): + self.verbose_level = 1 # global setting. + self.error_count = 0 # global count of reported errors + # filters to apply when emitting error messages + self.filters = _DEFAULT_FILTERS[:] + self.counting = 'total' # In what way are we counting errors? + self.errors_by_category = {} # string to int dict storing error counts + + # output format: + # "emacs" - format that emacs can parse (default) + # "vs7" - format that Microsoft Visual Studio 7 can parse + self.output_format = 'emacs' + + def SetOutputFormat(self, output_format): + """Sets the output format for errors.""" + self.output_format = output_format + + def SetVerboseLevel(self, level): + """Sets the module's verbosity, and returns the previous setting.""" + last_verbose_level = self.verbose_level + self.verbose_level = level + return last_verbose_level + + def SetCountingStyle(self, counting_style): + """Sets the module's counting options.""" + self.counting = counting_style + + def SetFilters(self, filters): + """Sets the error-message filters. + + These filters are applied when deciding whether to emit a given + error message. + + Args: + filters: A string of comma-separated filters (eg "+whitespace/indent"). + Each filter should start with + or -; else we die. + + Raises: + ValueError: The comma-separated filters did not all start with '+' or '-'. + E.g. "-,+whitespace,-whitespace/indent,whitespace/badfilter" + """ + # Default filters always have less priority than the flag ones. + self.filters = _DEFAULT_FILTERS[:] + for filt in filters.split(','): + clean_filt = filt.strip() + if clean_filt: + self.filters.append(clean_filt) + for filt in self.filters: + if not (filt.startswith('+') or filt.startswith('-')): + raise ValueError('Every filter in --filters must start with + or -' + ' (%s does not)' % filt) + + def ResetErrorCounts(self): + """Sets the module's error statistic back to zero.""" + self.error_count = 0 + self.errors_by_category = {} + + def IncrementErrorCount(self, category): + """Bumps the module's error statistic.""" + self.error_count += 1 + if self.counting in ('toplevel', 'detailed'): + if self.counting != 'detailed': + category = category.split('/')[0] + if category not in self.errors_by_category: + self.errors_by_category[category] = 0 + self.errors_by_category[category] += 1 + + def PrintErrorCounts(self): + """Print a summary of errors by category, and the total.""" + for category, count in iteritems(self.errors_by_category): + sys.stderr.write('Category \'%s\' errors found: %d\n' % + (category, count)) + sys.stderr.write('Total errors found: %d\n' % self.error_count) + +_cpplint_state = _CppLintState() + + +def _OutputFormat(): + """Gets the module's output format.""" + return _cpplint_state.output_format + + +def _SetOutputFormat(output_format): + """Sets the module's output format.""" + _cpplint_state.SetOutputFormat(output_format) + + +def _VerboseLevel(): + """Returns the module's verbosity setting.""" + return _cpplint_state.verbose_level + + +def _SetVerboseLevel(level): + """Sets the module's verbosity, and returns the previous setting.""" + return _cpplint_state.SetVerboseLevel(level) + + +def _SetCountingStyle(level): + """Sets the module's counting options.""" + _cpplint_state.SetCountingStyle(level) + + +def _Filters(): + """Returns the module's list of output filters, as a list.""" + return _cpplint_state.filters + + +def _SetFilters(filters): + """Sets the module's error-message filters. + + These filters are applied when deciding whether to emit a given + error message. + + Args: + filters: A string of comma-separated filters (eg "whitespace/indent"). + Each filter should start with + or -; else we die. + """ + _cpplint_state.SetFilters(filters) + + +class _FunctionState(object): + """Tracks current function name and the number of lines in its body.""" + + _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. + _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. + + def __init__(self): + self.in_a_function = False + self.lines_in_function = 0 + self.current_function = '' + + def Begin(self, function_name): + """Start analyzing function body. + + Args: + function_name: The name of the function being tracked. + """ + self.in_a_function = True + self.lines_in_function = 0 + self.current_function = function_name + + def Count(self): + """Count line in current function body.""" + if self.in_a_function: + self.lines_in_function += 1 + + def Check(self, error, filename, linenum): + """Report if too many lines in function body. + + Args: + error: The function to call with any errors found. + filename: The name of the current file. + linenum: The number of the line to check. + """ + if Match(r'T(EST|est)', self.current_function): + base_trigger = self._TEST_TRIGGER + else: + base_trigger = self._NORMAL_TRIGGER + trigger = base_trigger * 2**_VerboseLevel() + + if self.lines_in_function > trigger: + error_level = int(math.log(self.lines_in_function / base_trigger, 2)) + # 50 => 0, 100 => 1, 200 => 2, 400 => 3, 800 => 4, 1600 => 5, ... + if error_level > 5: + error_level = 5 + error(filename, linenum, 'readability/fn_size', error_level, + 'Small and focused functions are preferred:' + ' %s has %d non-comment lines' + ' (error triggered by exceeding %d lines).' % ( + self.current_function, self.lines_in_function, trigger)) + + def End(self): + """Stop analyzing function body.""" + self.in_a_function = False + + +class _IncludeError(Exception): + """Indicates a problem with the include order in a file.""" + pass + + +class FileInfo: + """Provides utility functions for filenames. + + FileInfo provides easy access to the components of a file's path + relative to the project root. + """ + + def __init__(self, filename): + self._filename = filename + + def FullName(self): + """Make Windows paths like Unix.""" + return os.path.abspath(self._filename).replace('\\', '/') + + def RepositoryName(self): + """FullName after removing the local path to the repository. + + If we have a real absolute path name here we can try to do something smart: + detecting the root of the checkout and truncating /path/to/checkout from + the name so that we get header guards that don't include things like + "C:\Documents and Settings\..." or "/home/username/..." in them and thus + people on different computers who have checked the source out to different + locations won't see bogus errors. + """ + fullname = self.FullName() + + if os.path.exists(fullname): + project_dir = os.path.dirname(fullname) + + if os.path.exists(os.path.join(project_dir, ".svn")): + # If there's a .svn file in the current directory, we recursively look + # up the directory tree for the top of the SVN checkout + root_dir = project_dir + one_up_dir = os.path.dirname(root_dir) + while os.path.exists(os.path.join(one_up_dir, ".svn")): + root_dir = os.path.dirname(root_dir) + one_up_dir = os.path.dirname(one_up_dir) + + prefix = os.path.commonprefix([root_dir, project_dir]) + return fullname[len(prefix) + 1:] + + # Not SVN <= 1.6? Try to find a git, hg, or svn top level directory by + # searching up from the current path. + root_dir = os.path.dirname(fullname) + while (root_dir != os.path.dirname(root_dir) and + not os.path.exists(os.path.join(root_dir, ".git")) and + not os.path.exists(os.path.join(root_dir, ".hg")) and + not os.path.exists(os.path.join(root_dir, ".svn"))): + root_dir = os.path.dirname(root_dir) + + if (os.path.exists(os.path.join(root_dir, ".git")) or + os.path.exists(os.path.join(root_dir, ".hg")) or + os.path.exists(os.path.join(root_dir, ".svn"))): + prefix = os.path.commonprefix([root_dir, project_dir]) + return fullname[len(prefix) + 1:] + + # Don't know what to do; header guard warnings may be wrong... + return fullname + + def Split(self): + """Splits the file into the directory, basename, and extension. + + For 'chrome/browser/browser.cc', Split() would + return ('chrome/browser', 'browser', '.cc') + + Returns: + A tuple of (directory, basename, extension). + """ + + googlename = self.RepositoryName() + project, rest = os.path.split(googlename) + return (project,) + os.path.splitext(rest) + + def BaseName(self): + """File base name - text after the final slash, before the final period.""" + return self.Split()[1] + + def Extension(self): + """File extension - text following the final period.""" + return self.Split()[2] + + def NoExtension(self): + """File has no source file extension.""" + return '/'.join(self.Split()[0:2]) + + def IsSource(self): + """File has a source file extension.""" + return self.Extension()[1:] in ('c', 'cc', 'cpp', 'cxx') + + +def _ShouldPrintError(category, confidence, linenum): + """If confidence >= verbose, category passes filter and is not suppressed.""" + + # There are three ways we might decide not to print an error message: + # a "NOLINT(category)" comment appears in the source, + # the verbosity level isn't high enough, or the filters filter it out. + if IsErrorSuppressedByNolint(category, linenum): + return False + if confidence < _cpplint_state.verbose_level: + return False + + is_filtered = False + for one_filter in _Filters(): + if one_filter.startswith('-'): + if category.startswith(one_filter[1:]): + is_filtered = True + elif one_filter.startswith('+'): + if category.startswith(one_filter[1:]): + is_filtered = False + else: + assert False # should have been checked for in SetFilter. + if is_filtered: + return False + + return True + + +def Error(filename, linenum, category, confidence, message): + """Logs the fact we've found a lint error. + + We log where the error was found, and also our confidence in the error, + that is, how certain we are this is a legitimate style regression, and + not a misidentification or a use that's sometimes justified. + + False positives can be suppressed by the use of + "cpplint(category)" comments on the offending line. These are + parsed into _error_suppressions. + + Args: + filename: The name of the file containing the error. + linenum: The number of the line containing the error. + category: A string used to describe the "category" this bug + falls under: "whitespace", say, or "runtime". Categories + may have a hierarchy separated by slashes: "whitespace/indent". + confidence: A number from 1-5 representing a confidence score for + the error, with 5 meaning that we are certain of the problem, + and 1 meaning that it could be a legitimate construct. + message: The error message. + """ + if _ShouldPrintError(category, confidence, linenum): + _cpplint_state.IncrementErrorCount(category) + if _cpplint_state.output_format == 'vs7': + sys.stderr.write('%s(%s): %s [%s] [%d]\n' % ( + filename, linenum, message, category, confidence)) + elif _cpplint_state.output_format == 'eclipse': + sys.stderr.write('%s:%s: warning: %s [%s] [%d]\n' % ( + filename, linenum, message, category, confidence)) + else: + sys.stderr.write('%s:%s: %s [%s] [%d]\n' % ( + filename, linenum, message, category, confidence)) + + +# Matches standard C++ escape sequences per 2.13.2.3 of the C++ standard. +_RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile( + r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)') +# Matches strings. Escape codes should already be removed by ESCAPES. +_RE_PATTERN_CLEANSE_LINE_DOUBLE_QUOTES = re.compile(r'"[^"]*"') +# Matches characters. Escape codes should already be removed by ESCAPES. +_RE_PATTERN_CLEANSE_LINE_SINGLE_QUOTES = re.compile(r"'.'") +# Matches multi-line C++ comments. +# This RE is a little bit more complicated than one might expect, because we +# have to take care of space removals tools so we can handle comments inside +# statements better. +# The current rule is: We only clear spaces from both sides when we're at the +# end of the line. Otherwise, we try to remove spaces from the right side, +# if this doesn't work we try on left side but only if there's a non-character +# on the right. +_RE_PATTERN_CLEANSE_LINE_C_COMMENTS = re.compile( + r"""(\s*/\*.*\*/\s*$| + /\*.*\*/\s+| + \s+/\*.*\*/(?=\W)| + /\*.*\*/)""", re.VERBOSE) + + +def IsCppString(line): + """Does line terminate so, that the next symbol is in string constant. + + This function does not consider single-line nor multi-line comments. + + Args: + line: is a partial line of code starting from the 0..n. + + Returns: + True, if next character appended to 'line' is inside a + string constant. + """ + + line = line.replace(r'\\', 'XX') # after this, \\" does not match to \" + return ((line.count('"') - line.count(r'\"') - line.count("'\"'")) & 1) == 1 + + +def CleanseRawStrings(raw_lines): + """Removes C++11 raw strings from lines. + + Before: + static const char kData[] = R"( + multi-line string + )"; + + After: + static const char kData[] = "" + (replaced by blank line) + ""; + + Args: + raw_lines: list of raw lines. + + Returns: + list of lines with C++11 raw strings replaced by empty strings. + """ + + delimiter = None + lines_without_raw_strings = [] + for line in raw_lines: + if delimiter: + # Inside a raw string, look for the end + end = line.find(delimiter) + if end >= 0: + # Found the end of the string, match leading space for this + # line and resume copying the original lines, and also insert + # a "" on the last line. + leading_space = Match(r'^(\s*)\S', line) + line = leading_space.group(1) + '""' + line[end + len(delimiter):] + delimiter = None + else: + # Haven't found the end yet, append a blank line. + line = '' + + else: + # Look for beginning of a raw string. + # See 2.14.15 [lex.string] for syntax. + matched = Match(r'^(.*)\b(?:R|u8R|uR|UR|LR)"([^\s\\()]*)\((.*)$', line) + if matched: + delimiter = ')' + matched.group(2) + '"' + + end = matched.group(3).find(delimiter) + if end >= 0: + # Raw string ended on same line + line = (matched.group(1) + '""' + + matched.group(3)[end + len(delimiter):]) + delimiter = None + else: + # Start of a multi-line raw string + line = matched.group(1) + '""' + + lines_without_raw_strings.append(line) + + # TODO(unknown): if delimiter is not None here, we might want to + # emit a warning for unterminated string. + return lines_without_raw_strings + + +def FindNextMultiLineCommentStart(lines, lineix): + """Find the beginning marker for a multiline comment.""" + while lineix < len(lines): + if lines[lineix].strip().startswith('/*'): + # Only return this marker if the comment goes beyond this line + if lines[lineix].strip().find('*/', 2) < 0: + return lineix + lineix += 1 + return len(lines) + + +def FindNextMultiLineCommentEnd(lines, lineix): + """We are inside a comment, find the end marker.""" + while lineix < len(lines): + if lines[lineix].strip().endswith('*/'): + return lineix + lineix += 1 + return len(lines) + + +def RemoveMultiLineCommentsFromRange(lines, begin, end): + """Clears a range of lines for multi-line comments.""" + # Having // dummy comments makes the lines non-empty, so we will not get + # unnecessary blank line warnings later in the code. + for i in range(begin, end): + lines[i] = '// dummy' + + +def RemoveMultiLineComments(filename, lines, error): + """Removes multiline (c-style) comments from lines.""" + lineix = 0 + while lineix < len(lines): + lineix_begin = FindNextMultiLineCommentStart(lines, lineix) + if lineix_begin >= len(lines): + return + lineix_end = FindNextMultiLineCommentEnd(lines, lineix_begin) + if lineix_end >= len(lines): + error(filename, lineix_begin + 1, 'readability/multiline_comment', 5, + 'Could not find end of multi-line comment') + return + RemoveMultiLineCommentsFromRange(lines, lineix_begin, lineix_end + 1) + lineix = lineix_end + 1 + + +def CleanseComments(line): + """Removes //-comments and single-line C-style /* */ comments. + + Args: + line: A line of C++ source. + + Returns: + The line with single-line comments removed. + """ + commentpos = line.find('//') + if commentpos != -1 and not IsCppString(line[:commentpos]): + line = line[:commentpos].rstrip() + # get rid of /* ... */ + return _RE_PATTERN_CLEANSE_LINE_C_COMMENTS.sub('', line) + + +class CleansedLines(object): + """Holds 3 copies of all lines with different preprocessing applied to them. + + 1) elided member contains lines without strings and comments, + 2) lines member contains lines without comments, and + 3) raw_lines member contains all the lines without processing. + All these three members are of , and of the same length. + """ + + def __init__(self, lines): + self.elided = [] + self.lines = [] + self.raw_lines = lines + self.num_lines = len(lines) + self.lines_without_raw_strings = CleanseRawStrings(lines) + for linenum in range(len(self.lines_without_raw_strings)): + self.lines.append(CleanseComments( + self.lines_without_raw_strings[linenum])) + elided = self._CollapseStrings(self.lines_without_raw_strings[linenum]) + self.elided.append(CleanseComments(elided)) + + def NumLines(self): + """Returns the number of lines represented.""" + return self.num_lines + + @staticmethod + def _CollapseStrings(elided): + """Collapses strings and chars on a line to simple "" or '' blocks. + + We nix strings first so we're not fooled by text like '"http://"' + + Args: + elided: The line being processed. + + Returns: + The line with collapsed strings. + """ + if not _RE_PATTERN_INCLUDE.match(elided): + # Remove escaped characters first to make quote/single quote collapsing + # basic. Things that look like escaped characters shouldn't occur + # outside of strings and chars. + elided = _RE_PATTERN_CLEANSE_LINE_ESCAPES.sub('', elided) + elided = _RE_PATTERN_CLEANSE_LINE_SINGLE_QUOTES.sub("''", elided) + elided = _RE_PATTERN_CLEANSE_LINE_DOUBLE_QUOTES.sub('""', elided) + return elided + + +def FindEndOfExpressionInLine(line, startpos, depth, startchar, endchar): + """Find the position just after the matching endchar. + + Args: + line: a CleansedLines line. + startpos: start searching at this position. + depth: nesting level at startpos. + startchar: expression opening character. + endchar: expression closing character. + + Returns: + On finding matching endchar: (index just after matching endchar, 0) + Otherwise: (-1, new depth at end of this line) + """ + for i in xrange(startpos, len(line)): + if line[i] == startchar: + depth += 1 + elif line[i] == endchar: + depth -= 1 + if depth == 0: + return (i + 1, 0) + return (-1, depth) + + +def CloseExpression(clean_lines, linenum, pos): + """If input points to ( or { or [ or <, finds the position that closes it. + + If lines[linenum][pos] points to a '(' or '{' or '[' or '<', finds the + linenum/pos that correspond to the closing of the expression. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: A position on the line. + + Returns: + A tuple (line, linenum, pos) pointer *past* the closing brace, or + (line, len(lines), -1) if we never find a close. Note we ignore + strings and comments when matching; and the line we return is the + 'cleansed' line at linenum. + """ + + line = clean_lines.elided[linenum] + startchar = line[pos] + if startchar not in '({[<': + return (line, clean_lines.NumLines(), -1) + if startchar == '(': endchar = ')' + if startchar == '[': endchar = ']' + if startchar == '{': endchar = '}' + if startchar == '<': endchar = '>' + + # Check first line + (end_pos, num_open) = FindEndOfExpressionInLine( + line, pos, 0, startchar, endchar) + if end_pos > -1: + return (line, linenum, end_pos) + + # Continue scanning forward + while linenum < clean_lines.NumLines() - 1: + linenum += 1 + line = clean_lines.elided[linenum] + (end_pos, num_open) = FindEndOfExpressionInLine( + line, 0, num_open, startchar, endchar) + if end_pos > -1: + return (line, linenum, end_pos) + + # Did not find endchar before end of file, give up + return (line, clean_lines.NumLines(), -1) + + +def FindStartOfExpressionInLine(line, endpos, depth, startchar, endchar): + """Find position at the matching startchar. + + This is almost the reverse of FindEndOfExpressionInLine, but note + that the input position and returned position differs by 1. + + Args: + line: a CleansedLines line. + endpos: start searching at this position. + depth: nesting level at endpos. + startchar: expression opening character. + endchar: expression closing character. + + Returns: + On finding matching startchar: (index at matching startchar, 0) + Otherwise: (-1, new depth at beginning of this line) + """ + for i in xrange(endpos, -1, -1): + if line[i] == endchar: + depth += 1 + elif line[i] == startchar: + depth -= 1 + if depth == 0: + return (i, 0) + return (-1, depth) + + +def ReverseCloseExpression(clean_lines, linenum, pos): + """If input points to ) or } or ] or >, finds the position that opens it. + + If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the + linenum/pos that correspond to the opening of the expression. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: A position on the line. + + Returns: + A tuple (line, linenum, pos) pointer *at* the opening brace, or + (line, 0, -1) if we never find the matching opening brace. Note + we ignore strings and comments when matching; and the line we + return is the 'cleansed' line at linenum. + """ + line = clean_lines.elided[linenum] + endchar = line[pos] + if endchar not in ')}]>': + return (line, 0, -1) + if endchar == ')': startchar = '(' + if endchar == ']': startchar = '[' + if endchar == '}': startchar = '{' + if endchar == '>': startchar = '<' + + # Check last line + (start_pos, num_open) = FindStartOfExpressionInLine( + line, pos, 0, startchar, endchar) + if start_pos > -1: + return (line, linenum, start_pos) + + # Continue scanning backward + while linenum > 0: + linenum -= 1 + line = clean_lines.elided[linenum] + (start_pos, num_open) = FindStartOfExpressionInLine( + line, len(line) - 1, num_open, startchar, endchar) + if start_pos > -1: + return (line, linenum, start_pos) + + # Did not find startchar before beginning of file, give up + return (line, 0, -1) + + +def CheckForCopyright(filename, lines, error): + """Logs an error if a Copyright message appears at the top of the file.""" + + # We'll check up to line 10. Don't forget there's a + # dummy line at the front. + for line in xrange(1, min(len(lines), 11)): + if _RE_COPYRIGHT.search(lines[line], re.I): + error(filename, 0, 'legal/copyright', 5, + 'Copyright message found. ' + 'You should not include a copyright line.') + + +def GetHeaderGuardCPPVariable(filename): + """Returns the CPP variable that should be used as a header guard. + + Args: + filename: The name of a C++ header file. + + Returns: + The CPP variable that should be used as a header guard in the + named file. + + """ + + # Restores original filename in case that cpplint is invoked from Emacs's + # flymake. + filename = re.sub(r'_flymake\.h$', '.h', filename) + filename = re.sub(r'/\.flymake/([^/]*)$', r'/\1', filename) + + fileinfo = FileInfo(filename) + file_path_from_root = fileinfo.RepositoryName() + if _root: + file_path_from_root = re.sub('^' + _root + os.sep, '', file_path_from_root) + return re.sub(r'[-./\s]', '_', file_path_from_root).upper() + '_' + + +def CheckForHeaderGuard(filename, lines, error): + """Checks that the file contains a header guard. + + Logs an error if no #ifndef header guard is present. For other + headers, checks that the full pathname is used. + + Args: + filename: The name of the C++ header file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + + cppvar = GetHeaderGuardCPPVariable(filename) + + ifndef = None + ifndef_linenum = 0 + define = None + endif = None + endif_linenum = 0 + for linenum, line in enumerate(lines): + linesplit = line.split() + if len(linesplit) >= 2: + # find the first occurrence of #ifndef and #define, save arg + if not ifndef and linesplit[0] == '#ifndef': + # set ifndef to the header guard presented on the #ifndef line. + ifndef = linesplit[1] + ifndef_linenum = linenum + if not define and linesplit[0] == '#define': + define = linesplit[1] + # find the last occurrence of #endif, save entire line + if line.startswith('#endif'): + endif = line + endif_linenum = linenum + + if not ifndef: + error(filename, 0, 'build/header_guard', 5, + 'No #ifndef header guard found, suggested CPP variable is: %s' % + cppvar) + return + + if not define: + error(filename, 0, 'build/header_guard', 5, + 'No #define header guard found, suggested CPP variable is: %s' % + cppvar) + return + + # The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__ + # for backward compatibility. + if ifndef != cppvar: + error_level = 0 + if ifndef != cppvar + '_': + error_level = 5 + + ParseNolintSuppressions(filename, lines[ifndef_linenum], ifndef_linenum, + error) + error(filename, ifndef_linenum, 'build/header_guard', error_level, + '#ifndef header guard has wrong style, please use: %s' % cppvar) + + if define != ifndef: + error(filename, 0, 'build/header_guard', 5, + '#ifndef and #define don\'t match, suggested CPP variable is: %s' % + cppvar) + return + + if endif != ('#endif // %s' % cppvar): + error_level = 0 + if endif != ('#endif // %s' % (cppvar + '_')): + error_level = 5 + + ParseNolintSuppressions(filename, lines[endif_linenum], endif_linenum, + error) + error(filename, endif_linenum, 'build/header_guard', error_level, + '#endif line should be "#endif // %s"' % cppvar) + + +def CheckForBadCharacters(filename, lines, error): + """Logs an error for each line containing bad characters. + + Two kinds of bad characters: + + 1. Unicode replacement characters: These indicate that either the file + contained invalid UTF-8 (likely) or Unicode replacement characters (which + it shouldn't). Note that it's possible for this to throw off line + numbering if the invalid UTF-8 occurred adjacent to a newline. + + 2. NUL bytes. These are problematic for some tools. + + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + for linenum, line in enumerate(lines): + if u'\ufffd' in line: + error(filename, linenum, 'readability/utf8', 5, + 'Line contains invalid UTF-8 (or Unicode replacement character).') + if '\0' in line: + error(filename, linenum, 'readability/nul', 5, 'Line contains NUL byte.') + + +def CheckForNewlineAtEOF(filename, lines, error): + """Logs an error if there is no newline char at the end of the file. + + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + + # The array lines() was created by adding two newlines to the + # original file (go figure), then splitting on \n. + # To verify that the file ends in \n, we just have to make sure the + # last-but-two element of lines() exists and is empty. + if len(lines) < 3 or lines[-2]: + error(filename, len(lines) - 2, 'whitespace/ending_newline', 5, + 'Could not find a newline character at the end of the file.') + + +def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): + """Logs an error if we see /* ... */ or "..." that extend past one line. + + /* ... */ comments are legit inside macros, for one line. + Otherwise, we prefer // comments, so it's ok to warn about the + other. Likewise, it's ok for strings to extend across multiple + lines, as long as a line continuation character (backslash) + terminates each line. Although not currently prohibited by the C++ + style guide, it's ugly and unnecessary. We don't do well with either + in this lint program, so we warn about both. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Remove all \\ (escaped backslashes) from the line. They are OK, and the + # second (escaped) slash may trigger later \" detection erroneously. + line = line.replace('\\\\', '') + + if line.count('/*') > line.count('*/'): + error(filename, linenum, 'readability/multiline_comment', 5, + 'Complex multi-line /*...*/-style comment found. ' + 'Lint may give bogus warnings. ' + 'Consider replacing these with //-style comments, ' + 'with #if 0...#endif, ' + 'or with more clearly structured multi-line comments.') + + if (line.count('"') - line.count('\\"')) % 2: + error(filename, linenum, 'readability/multiline_string', 5, + 'Multi-line string ("...") found. This lint script doesn\'t ' + 'do well with such strings, and may give bogus warnings. ' + 'Use C++11 raw strings or concatenation instead.') + + +caffe_alt_function_list = ( + ('memset', ['caffe_set', 'caffe_memset']), + ('cudaMemset', ['caffe_gpu_set', 'caffe_gpu_memset']), + ('memcpy', ['caffe_copy']), + ('cudaMemcpy', ['caffe_copy', 'caffe_gpu_memcpy']), + ) + + +def CheckCaffeAlternatives(filename, clean_lines, linenum, error): + """Checks for C(++) functions for which a Caffe substitute should be used. + + For certain native C functions (memset, memcpy), there is a Caffe alternative + which should be used instead. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + for function, alts in caffe_alt_function_list: + ix = line.find(function + '(') + if ix >= 0 and (ix == 0 or (not line[ix - 1].isalnum() and + line[ix - 1] not in ('_', '.', '>'))): + disp_alts = ['%s(...)' % alt for alt in alts] + error(filename, linenum, 'caffe/alt_fn', 2, + 'Use Caffe function %s instead of %s(...).' % + (' or '.join(disp_alts), function)) + + +def CheckCaffeDataLayerSetUp(filename, clean_lines, linenum, error): + """Except the base classes, Caffe DataLayer should define DataLayerSetUp + instead of LayerSetUp. + + The base DataLayers define common SetUp steps, the subclasses should + not override them. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + ix = line.find('DataLayer::LayerSetUp') + if ix >= 0 and ( + line.find('void DataLayer::LayerSetUp') != -1 or + line.find('void ImageDataLayer::LayerSetUp') != -1 or + line.find('void MemoryDataLayer::LayerSetUp') != -1 or + line.find('void WindowDataLayer::LayerSetUp') != -1): + error(filename, linenum, 'caffe/data_layer_setup', 2, + 'Except the base classes, Caffe DataLayer should define' + + ' DataLayerSetUp instead of LayerSetUp. The base DataLayers' + + ' define common SetUp steps, the subclasses should' + + ' not override them.') + ix = line.find('DataLayer::DataLayerSetUp') + if ix >= 0 and ( + line.find('void Base') == -1 and + line.find('void DataLayer::DataLayerSetUp') == -1 and + line.find('void ImageDataLayer::DataLayerSetUp') == -1 and + line.find('void MemoryDataLayer::DataLayerSetUp') == -1 and + line.find('void WindowDataLayer::DataLayerSetUp') == -1): + error(filename, linenum, 'caffe/data_layer_setup', 2, + 'Except the base classes, Caffe DataLayer should define' + + ' DataLayerSetUp instead of LayerSetUp. The base DataLayers' + + ' define common SetUp steps, the subclasses should' + + ' not override them.') + + +c_random_function_list = ( + 'rand(', + 'rand_r(', + 'random(', + ) + +def CheckCaffeRandom(filename, clean_lines, linenum, error): + """Checks for calls to C random functions (rand, rand_r, random, ...). + + Caffe code should (almost) always use the caffe_rng_* functions rather + than these, as the internal state of these C functions is independent of the + native Caffe RNG system which should produce deterministic results for a + fixed Caffe seed set using Caffe::set_random_seed(...). + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + for function in c_random_function_list: + ix = line.find(function) + # Comparisons made explicit for clarity -- pylint: disable=g-explicit-bool-comparison + if ix >= 0 and (ix == 0 or (not line[ix - 1].isalnum() and + line[ix - 1] not in ('_', '.', '>'))): + error(filename, linenum, 'caffe/random_fn', 2, + 'Use caffe_rng_rand() (or other caffe_rng_* function) instead of ' + + function + + ') to ensure results are deterministic for a fixed Caffe seed.') + + +threading_list = ( + ('asctime(', 'asctime_r('), + ('ctime(', 'ctime_r('), + ('getgrgid(', 'getgrgid_r('), + ('getgrnam(', 'getgrnam_r('), + ('getlogin(', 'getlogin_r('), + ('getpwnam(', 'getpwnam_r('), + ('getpwuid(', 'getpwuid_r('), + ('gmtime(', 'gmtime_r('), + ('localtime(', 'localtime_r('), + ('strtok(', 'strtok_r('), + ('ttyname(', 'ttyname_r('), + ) + + +def CheckPosixThreading(filename, clean_lines, linenum, error): + """Checks for calls to thread-unsafe functions. + + Much code has been originally written without consideration of + multi-threading. Also, engineers are relying on their old experience; + they have learned posix before threading extensions were added. These + tests guide the engineers to use thread-safe functions (when using + posix directly). + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + for single_thread_function, multithread_safe_function in threading_list: + ix = line.find(single_thread_function) + # Comparisons made explicit for clarity -- pylint: disable=g-explicit-bool-comparison + if ix >= 0 and (ix == 0 or (not line[ix - 1].isalnum() and + line[ix - 1] not in ('_', '.', '>'))): + error(filename, linenum, 'runtime/threadsafe_fn', 2, + 'Consider using ' + multithread_safe_function + + '...) instead of ' + single_thread_function + + '...) for improved thread safety.') + + +def CheckVlogArguments(filename, clean_lines, linenum, error): + """Checks that VLOG() is only used for defining a logging level. + + For example, VLOG(2) is correct. VLOG(INFO), VLOG(WARNING), VLOG(ERROR), and + VLOG(FATAL) are not. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + if Search(r'\bVLOG\((INFO|ERROR|WARNING|DFATAL|FATAL)\)', line): + error(filename, linenum, 'runtime/vlog', 5, + 'VLOG() should be used with numeric verbosity level. ' + 'Use LOG() if you want symbolic severity levels.') + + +# Matches invalid increment: *count++, which moves pointer instead of +# incrementing a value. +_RE_PATTERN_INVALID_INCREMENT = re.compile( + r'^\s*\*\w+(\+\+|--);') + + +def CheckInvalidIncrement(filename, clean_lines, linenum, error): + """Checks for invalid increment *count++. + + For example following function: + void increment_counter(int* count) { + *count++; + } + is invalid, because it effectively does count++, moving pointer, and should + be replaced with ++*count, (*count)++ or *count += 1. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + if _RE_PATTERN_INVALID_INCREMENT.match(line): + error(filename, linenum, 'runtime/invalid_increment', 5, + 'Changing pointer instead of value (or unused value of operator*).') + + +class _BlockInfo(object): + """Stores information about a generic block of code.""" + + def __init__(self, seen_open_brace): + self.seen_open_brace = seen_open_brace + self.open_parentheses = 0 + self.inline_asm = _NO_ASM + + def CheckBegin(self, filename, clean_lines, linenum, error): + """Run checks that applies to text up to the opening brace. + + This is mostly for checking the text after the class identifier + and the "{", usually where the base class is specified. For other + blocks, there isn't much to check, so we always pass. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + pass + + def CheckEnd(self, filename, clean_lines, linenum, error): + """Run checks that applies to text after the closing brace. + + This is mostly used for checking end of namespace comments. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + pass + + +class _ClassInfo(_BlockInfo): + """Stores information about a class.""" + + def __init__(self, name, class_or_struct, clean_lines, linenum): + _BlockInfo.__init__(self, False) + self.name = name + self.starting_linenum = linenum + self.is_derived = False + if class_or_struct == 'struct': + self.access = 'public' + self.is_struct = True + else: + self.access = 'private' + self.is_struct = False + + # Remember initial indentation level for this class. Using raw_lines here + # instead of elided to account for leading comments. + initial_indent = Match(r'^( *)\S', clean_lines.raw_lines[linenum]) + if initial_indent: + self.class_indent = len(initial_indent.group(1)) + else: + self.class_indent = 0 + + # Try to find the end of the class. This will be confused by things like: + # class A { + # } *x = { ... + # + # But it's still good enough for CheckSectionSpacing. + self.last_line = 0 + depth = 0 + for i in range(linenum, clean_lines.NumLines()): + line = clean_lines.elided[i] + depth += line.count('{') - line.count('}') + if not depth: + self.last_line = i + break + + def CheckBegin(self, filename, clean_lines, linenum, error): + # Look for a bare ':' + if Search('(^|[^:]):($|[^:])', clean_lines.elided[linenum]): + self.is_derived = True + + def CheckEnd(self, filename, clean_lines, linenum, error): + # Check that closing brace is aligned with beginning of the class. + # Only do this if the closing brace is indented by only whitespaces. + # This means we will not check single-line class definitions. + indent = Match(r'^( *)\}', clean_lines.elided[linenum]) + if indent and len(indent.group(1)) != self.class_indent: + if self.is_struct: + parent = 'struct ' + self.name + else: + parent = 'class ' + self.name + error(filename, linenum, 'whitespace/indent', 3, + 'Closing brace should be aligned with beginning of %s' % parent) + + +class _NamespaceInfo(_BlockInfo): + """Stores information about a namespace.""" + + def __init__(self, name, linenum): + _BlockInfo.__init__(self, False) + self.name = name or '' + self.starting_linenum = linenum + + def CheckEnd(self, filename, clean_lines, linenum, error): + """Check end of namespace comments.""" + line = clean_lines.raw_lines[linenum] + + # Check how many lines is enclosed in this namespace. Don't issue + # warning for missing namespace comments if there aren't enough + # lines. However, do apply checks if there is already an end of + # namespace comment and it's incorrect. + # + # TODO(unknown): We always want to check end of namespace comments + # if a namespace is large, but sometimes we also want to apply the + # check if a short namespace contained nontrivial things (something + # other than forward declarations). There is currently no logic on + # deciding what these nontrivial things are, so this check is + # triggered by namespace size only, which works most of the time. + if (linenum - self.starting_linenum < 10 + and not Match(r'};*\s*(//|/\*).*\bnamespace\b', line)): + return + + # Look for matching comment at end of namespace. + # + # Note that we accept C style "/* */" comments for terminating + # namespaces, so that code that terminate namespaces inside + # preprocessor macros can be cpplint clean. + # + # We also accept stuff like "// end of namespace ." with the + # period at the end. + # + # Besides these, we don't accept anything else, otherwise we might + # get false negatives when existing comment is a substring of the + # expected namespace. + if self.name: + # Named namespace + if not Match((r'};*\s*(//|/\*).*\bnamespace\s+' + re.escape(self.name) + + r'[\*/\.\\\s]*$'), + line): + error(filename, linenum, 'readability/namespace', 5, + 'Namespace should be terminated with "// namespace %s"' % + self.name) + else: + # Anonymous namespace + if not Match(r'};*\s*(//|/\*).*\bnamespace[\*/\.\\\s]*$', line): + error(filename, linenum, 'readability/namespace', 5, + 'Namespace should be terminated with "// namespace"') + + +class _PreprocessorInfo(object): + """Stores checkpoints of nesting stacks when #if/#else is seen.""" + + def __init__(self, stack_before_if): + # The entire nesting stack before #if + self.stack_before_if = stack_before_if + + # The entire nesting stack up to #else + self.stack_before_else = [] + + # Whether we have already seen #else or #elif + self.seen_else = False + + +class _NestingState(object): + """Holds states related to parsing braces.""" + + def __init__(self): + # Stack for tracking all braces. An object is pushed whenever we + # see a "{", and popped when we see a "}". Only 3 types of + # objects are possible: + # - _ClassInfo: a class or struct. + # - _NamespaceInfo: a namespace. + # - _BlockInfo: some other type of block. + self.stack = [] + + # Stack of _PreprocessorInfo objects. + self.pp_stack = [] + + def SeenOpenBrace(self): + """Check if we have seen the opening brace for the innermost block. + + Returns: + True if we have seen the opening brace, False if the innermost + block is still expecting an opening brace. + """ + return (not self.stack) or self.stack[-1].seen_open_brace + + def InNamespaceBody(self): + """Check if we are currently one level inside a namespace body. + + Returns: + True if top of the stack is a namespace block, False otherwise. + """ + return self.stack and isinstance(self.stack[-1], _NamespaceInfo) + + def UpdatePreprocessor(self, line): + """Update preprocessor stack. + + We need to handle preprocessors due to classes like this: + #ifdef SWIG + struct ResultDetailsPageElementExtensionPoint { + #else + struct ResultDetailsPageElementExtensionPoint : public Extension { + #endif + + We make the following assumptions (good enough for most files): + - Preprocessor condition evaluates to true from #if up to first + #else/#elif/#endif. + + - Preprocessor condition evaluates to false from #else/#elif up + to #endif. We still perform lint checks on these lines, but + these do not affect nesting stack. + + Args: + line: current line to check. + """ + if Match(r'^\s*#\s*(if|ifdef|ifndef)\b', line): + # Beginning of #if block, save the nesting stack here. The saved + # stack will allow us to restore the parsing state in the #else case. + self.pp_stack.append(_PreprocessorInfo(copy.deepcopy(self.stack))) + elif Match(r'^\s*#\s*(else|elif)\b', line): + # Beginning of #else block + if self.pp_stack: + if not self.pp_stack[-1].seen_else: + # This is the first #else or #elif block. Remember the + # whole nesting stack up to this point. This is what we + # keep after the #endif. + self.pp_stack[-1].seen_else = True + self.pp_stack[-1].stack_before_else = copy.deepcopy(self.stack) + + # Restore the stack to how it was before the #if + self.stack = copy.deepcopy(self.pp_stack[-1].stack_before_if) + else: + # TODO(unknown): unexpected #else, issue warning? + pass + elif Match(r'^\s*#\s*endif\b', line): + # End of #if or #else blocks. + if self.pp_stack: + # If we saw an #else, we will need to restore the nesting + # stack to its former state before the #else, otherwise we + # will just continue from where we left off. + if self.pp_stack[-1].seen_else: + # Here we can just use a shallow copy since we are the last + # reference to it. + self.stack = self.pp_stack[-1].stack_before_else + # Drop the corresponding #if + self.pp_stack.pop() + else: + # TODO(unknown): unexpected #endif, issue warning? + pass + + def Update(self, filename, clean_lines, linenum, error): + """Update nesting state with current line. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Update pp_stack first + self.UpdatePreprocessor(line) + + # Count parentheses. This is to avoid adding struct arguments to + # the nesting stack. + if self.stack: + inner_block = self.stack[-1] + depth_change = line.count('(') - line.count(')') + inner_block.open_parentheses += depth_change + + # Also check if we are starting or ending an inline assembly block. + if inner_block.inline_asm in (_NO_ASM, _END_ASM): + if (depth_change != 0 and + inner_block.open_parentheses == 1 and + _MATCH_ASM.match(line)): + # Enter assembly block + inner_block.inline_asm = _INSIDE_ASM + else: + # Not entering assembly block. If previous line was _END_ASM, + # we will now shift to _NO_ASM state. + inner_block.inline_asm = _NO_ASM + elif (inner_block.inline_asm == _INSIDE_ASM and + inner_block.open_parentheses == 0): + # Exit assembly block + inner_block.inline_asm = _END_ASM + + # Consume namespace declaration at the beginning of the line. Do + # this in a loop so that we catch same line declarations like this: + # namespace proto2 { namespace bridge { class MessageSet; } } + while True: + # Match start of namespace. The "\b\s*" below catches namespace + # declarations even if it weren't followed by a whitespace, this + # is so that we don't confuse our namespace checker. The + # missing spaces will be flagged by CheckSpacing. + namespace_decl_match = Match(r'^\s*namespace\b\s*([:\w]+)?(.*)$', line) + if not namespace_decl_match: + break + + new_namespace = _NamespaceInfo(namespace_decl_match.group(1), linenum) + self.stack.append(new_namespace) + + line = namespace_decl_match.group(2) + if line.find('{') != -1: + new_namespace.seen_open_brace = True + line = line[line.find('{') + 1:] + + # Look for a class declaration in whatever is left of the line + # after parsing namespaces. The regexp accounts for decorated classes + # such as in: + # class LOCKABLE API Object { + # }; + # + # Templates with class arguments may confuse the parser, for example: + # template , + # class Vector = vector > + # class HeapQueue { + # + # Because this parser has no nesting state about templates, by the + # time it saw "class Comparator", it may think that it's a new class. + # Nested templates have a similar problem: + # template < + # typename ExportedType, + # typename TupleType, + # template class ImplTemplate> + # + # To avoid these cases, we ignore classes that are followed by '=' or '>' + class_decl_match = Match( + r'\s*(template\s*<[\w\s<>,:]*>\s*)?' + r'(class|struct)\s+([A-Z_]+\s+)*(\w+(?:::\w+)*)' + r'(([^=>]|<[^<>]*>|<[^<>]*<[^<>]*>\s*>)*)$', line) + if (class_decl_match and + (not self.stack or self.stack[-1].open_parentheses == 0)): + self.stack.append(_ClassInfo( + class_decl_match.group(4), class_decl_match.group(2), + clean_lines, linenum)) + line = class_decl_match.group(5) + + # If we have not yet seen the opening brace for the innermost block, + # run checks here. + if not self.SeenOpenBrace(): + self.stack[-1].CheckBegin(filename, clean_lines, linenum, error) + + # Update access control if we are inside a class/struct + if self.stack and isinstance(self.stack[-1], _ClassInfo): + classinfo = self.stack[-1] + access_match = Match( + r'^(.*)\b(public|private|protected|signals)(\s+(?:slots\s*)?)?' + r':(?:[^:]|$)', + line) + if access_match: + classinfo.access = access_match.group(2) + + # Check that access keywords are indented +1 space. Skip this + # check if the keywords are not preceded by whitespaces. + indent = access_match.group(1) + if (len(indent) != classinfo.class_indent + 1 and + Match(r'^\s*$', indent)): + if classinfo.is_struct: + parent = 'struct ' + classinfo.name + else: + parent = 'class ' + classinfo.name + slots = '' + if access_match.group(3): + slots = access_match.group(3) + error(filename, linenum, 'whitespace/indent', 3, + '%s%s: should be indented +1 space inside %s' % ( + access_match.group(2), slots, parent)) + + # Consume braces or semicolons from what's left of the line + while True: + # Match first brace, semicolon, or closed parenthesis. + matched = Match(r'^[^{;)}]*([{;)}])(.*)$', line) + if not matched: + break + + token = matched.group(1) + if token == '{': + # If namespace or class hasn't seen a opening brace yet, mark + # namespace/class head as complete. Push a new block onto the + # stack otherwise. + if not self.SeenOpenBrace(): + self.stack[-1].seen_open_brace = True + else: + self.stack.append(_BlockInfo(True)) + if _MATCH_ASM.match(line): + self.stack[-1].inline_asm = _BLOCK_ASM + elif token == ';' or token == ')': + # If we haven't seen an opening brace yet, but we already saw + # a semicolon, this is probably a forward declaration. Pop + # the stack for these. + # + # Similarly, if we haven't seen an opening brace yet, but we + # already saw a closing parenthesis, then these are probably + # function arguments with extra "class" or "struct" keywords. + # Also pop these stack for these. + if not self.SeenOpenBrace(): + self.stack.pop() + else: # token == '}' + # Perform end of block checks and pop the stack. + if self.stack: + self.stack[-1].CheckEnd(filename, clean_lines, linenum, error) + self.stack.pop() + line = matched.group(2) + + def InnermostClass(self): + """Get class info on the top of the stack. + + Returns: + A _ClassInfo object if we are inside a class, or None otherwise. + """ + for i in range(len(self.stack), 0, -1): + classinfo = self.stack[i - 1] + if isinstance(classinfo, _ClassInfo): + return classinfo + return None + + def CheckCompletedBlocks(self, filename, error): + """Checks that all classes and namespaces have been completely parsed. + + Call this when all lines in a file have been processed. + Args: + filename: The name of the current file. + error: The function to call with any errors found. + """ + # Note: This test can result in false positives if #ifdef constructs + # get in the way of brace matching. See the testBuildClass test in + # cpplint_unittest.py for an example of this. + for obj in self.stack: + if isinstance(obj, _ClassInfo): + error(filename, obj.starting_linenum, 'build/class', 5, + 'Failed to find complete declaration of class %s' % + obj.name) + elif isinstance(obj, _NamespaceInfo): + error(filename, obj.starting_linenum, 'build/namespaces', 5, + 'Failed to find complete declaration of namespace %s' % + obj.name) + + +def CheckForNonStandardConstructs(filename, clean_lines, linenum, + nesting_state, error): + r"""Logs an error if we see certain non-ANSI constructs ignored by gcc-2. + + Complain about several constructs which gcc-2 accepts, but which are + not standard C++. Warning about these in lint is one way to ease the + transition to new compilers. + - put storage class first (e.g. "static const" instead of "const static"). + - "%lld" instead of %qd" in printf-type functions. + - "%1$d" is non-standard in printf-type functions. + - "\%" is an undefined character escape sequence. + - text after #endif is not allowed. + - invalid inner-style forward declaration. + - >? and ?= and )\?=?\s*(\w+|[+-]?\d+)(\.\d*)?', + line): + error(filename, linenum, 'build/deprecated', 3, + '>? and ))?' + # r'\s*const\s*' + type_name + '\s*&\s*\w+\s*;' + error(filename, linenum, 'runtime/member_string_references', 2, + 'const string& members are dangerous. It is much better to use ' + 'alternatives, such as pointers or simple constants.') + + # Everything else in this function operates on class declarations. + # Return early if the top of the nesting stack is not a class, or if + # the class head is not completed yet. + classinfo = nesting_state.InnermostClass() + if not classinfo or not classinfo.seen_open_brace: + return + + # The class may have been declared with namespace or classname qualifiers. + # The constructor and destructor will not have those qualifiers. + base_classname = classinfo.name.split('::')[-1] + + # Look for single-argument constructors that aren't marked explicit. + # Technically a valid construct, but against style. + args = Match(r'\s+(?:inline\s+)?%s\s*\(([^,()]+)\)' + % re.escape(base_classname), + line) + if (args and + args.group(1) != 'void' and + not Match(r'(const\s+)?%s(\s+const)?\s*(?:<\w+>\s*)?&' + % re.escape(base_classname), args.group(1).strip())): + error(filename, linenum, 'runtime/explicit', 5, + 'Single-argument constructors should be marked explicit.') + + +def CheckSpacingForFunctionCall(filename, line, linenum, error): + """Checks for the correctness of various spacing around function calls. + + Args: + filename: The name of the current file. + line: The text of the line to check. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Since function calls often occur inside if/for/while/switch + # expressions - which have their own, more liberal conventions - we + # first see if we should be looking inside such an expression for a + # function call, to which we can apply more strict standards. + fncall = line # if there's no control flow construct, look at whole line + for pattern in (r'\bif\s*\((.*)\)\s*{', + r'\bfor\s*\((.*)\)\s*{', + r'\bwhile\s*\((.*)\)\s*[{;]', + r'\bswitch\s*\((.*)\)\s*{'): + match = Search(pattern, line) + if match: + fncall = match.group(1) # look inside the parens for function calls + break + + # Except in if/for/while/switch, there should never be space + # immediately inside parens (eg "f( 3, 4 )"). We make an exception + # for nested parens ( (a+b) + c ). Likewise, there should never be + # a space before a ( when it's a function argument. I assume it's a + # function argument when the char before the whitespace is legal in + # a function name (alnum + _) and we're not starting a macro. Also ignore + # pointers and references to arrays and functions coz they're too tricky: + # we use a very simple way to recognize these: + # " (something)(maybe-something)" or + # " (something)(maybe-something," or + # " (something)[something]" + # Note that we assume the contents of [] to be short enough that + # they'll never need to wrap. + if ( # Ignore control structures. + not Search(r'\b(if|for|while|switch|return|new|delete|catch|sizeof)\b', + fncall) and + # Ignore pointers/references to functions. + not Search(r' \([^)]+\)\([^)]*(\)|,$)', fncall) and + # Ignore pointers/references to arrays. + not Search(r' \([^)]+\)\[[^\]]+\]', fncall)): + if Search(r'\w\s*\(\s(?!\s*\\$)', fncall): # a ( used for a fn call + error(filename, linenum, 'whitespace/parens', 4, + 'Extra space after ( in function call') + elif Search(r'\(\s+(?!(\s*\\)|\()', fncall): + error(filename, linenum, 'whitespace/parens', 2, + 'Extra space after (') + if (Search(r'\w\s+\(', fncall) and + not Search(r'#\s*define|typedef', fncall) and + not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall)): + error(filename, linenum, 'whitespace/parens', 4, + 'Extra space before ( in function call') + # If the ) is followed only by a newline or a { + newline, assume it's + # part of a control statement (if/while/etc), and don't complain + if Search(r'[^)]\s+\)\s*[^{\s]', fncall): + # If the closing parenthesis is preceded by only whitespaces, + # try to give a more descriptive error message. + if Search(r'^\s+\)', fncall): + error(filename, linenum, 'whitespace/parens', 2, + 'Closing ) should be moved to the previous line') + else: + error(filename, linenum, 'whitespace/parens', 2, + 'Extra space before )') + + +def IsBlankLine(line): + """Returns true if the given line is blank. + + We consider a line to be blank if the line is empty or consists of + only white spaces. + + Args: + line: A line of a string. + + Returns: + True, if the given line is blank. + """ + return not line or line.isspace() + + +def CheckForFunctionLengths(filename, clean_lines, linenum, + function_state, error): + """Reports for long function bodies. + + For an overview why this is done, see: + http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions + + Uses a simplistic algorithm assuming other style guidelines + (especially spacing) are followed. + Only checks unindented functions, so class members are unchecked. + Trivial bodies are unchecked, so constructors with huge initializer lists + may be missed. + Blank/comment lines are not counted so as to avoid encouraging the removal + of vertical space and comments just to get through a lint check. + NOLINT *on the last line of a function* disables this check. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + function_state: Current function name and lines in body so far. + error: The function to call with any errors found. + """ + lines = clean_lines.lines + line = lines[linenum] + raw = clean_lines.raw_lines + raw_line = raw[linenum] + joined_line = '' + + starting_func = False + regexp = r'(\w(\w|::|\*|\&|\s)*)\(' # decls * & space::name( ... + match_result = Match(regexp, line) + if match_result: + # If the name is all caps and underscores, figure it's a macro and + # ignore it, unless it's TEST or TEST_F. + function_name = match_result.group(1).split()[-1] + if function_name == 'TEST' or function_name == 'TEST_F' or ( + not Match(r'[A-Z_]+$', function_name)): + starting_func = True + + if starting_func: + body_found = False + for start_linenum in xrange(linenum, clean_lines.NumLines()): + start_line = lines[start_linenum] + joined_line += ' ' + start_line.lstrip() + if Search(r'(;|})', start_line): # Declarations and trivial functions + body_found = True + break # ... ignore + elif Search(r'{', start_line): + body_found = True + function = Search(r'((\w|:)*)\(', line).group(1) + if Match(r'TEST', function): # Handle TEST... macros + parameter_regexp = Search(r'(\(.*\))', joined_line) + if parameter_regexp: # Ignore bad syntax + function += parameter_regexp.group(1) + else: + function += '()' + function_state.Begin(function) + break + if not body_found: + # No body for the function (or evidence of a non-function) was found. + error(filename, linenum, 'readability/fn_size', 5, + 'Lint failed to find start of function body.') + elif Match(r'^\}\s*$', line): # function end + function_state.Check(error, filename, linenum) + function_state.End() + elif not Match(r'^\s*$', line): + function_state.Count() # Count non-blank/non-comment lines. + + +_RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?') + + +def CheckComment(comment, filename, linenum, error): + """Checks for common mistakes in TODO comments. + + Args: + comment: The text of the comment from the line in question. + filename: The name of the current file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + match = _RE_PATTERN_TODO.match(comment) + if match: + # One whitespace is correct; zero whitespace is handled elsewhere. + leading_whitespace = match.group(1) + if len(leading_whitespace) > 1: + error(filename, linenum, 'whitespace/todo', 2, + 'Too many spaces before TODO') + + username = match.group(2) + if not username: + error(filename, linenum, 'readability/todo', 2, + 'Missing username in TODO; it should look like ' + '"// TODO(my_username): Stuff."') + + middle_whitespace = match.group(3) + # Comparisons made explicit for correctness -- pylint: disable=g-explicit-bool-comparison + if middle_whitespace != ' ' and middle_whitespace != '': + error(filename, linenum, 'whitespace/todo', 2, + 'TODO(my_username) should be followed by a space') + +def CheckAccess(filename, clean_lines, linenum, nesting_state, error): + """Checks for improper use of DISALLOW* macros. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] # get rid of comments and strings + + matched = Match((r'\s*(DISALLOW_COPY_AND_ASSIGN|' + r'DISALLOW_EVIL_CONSTRUCTORS|' + r'DISALLOW_IMPLICIT_CONSTRUCTORS)'), line) + if not matched: + return + if nesting_state.stack and isinstance(nesting_state.stack[-1], _ClassInfo): + if nesting_state.stack[-1].access != 'private': + error(filename, linenum, 'readability/constructors', 3, + '%s must be in the private: section' % matched.group(1)) + + else: + # Found DISALLOW* macro outside a class declaration, or perhaps it + # was used inside a function when it should have been part of the + # class declaration. We could issue a warning here, but it + # probably resulted in a compiler error already. + pass + + +def FindNextMatchingAngleBracket(clean_lines, linenum, init_suffix): + """Find the corresponding > to close a template. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: Current line number. + init_suffix: Remainder of the current line after the initial <. + + Returns: + True if a matching bracket exists. + """ + line = init_suffix + nesting_stack = ['<'] + while True: + # Find the next operator that can tell us whether < is used as an + # opening bracket or as a less-than operator. We only want to + # warn on the latter case. + # + # We could also check all other operators and terminate the search + # early, e.g. if we got something like this "a(),;\[\]]*([<>(),;\[\]])(.*)$', line) + if match: + # Found an operator, update nesting stack + operator = match.group(1) + line = match.group(2) + + if nesting_stack[-1] == '<': + # Expecting closing angle bracket + if operator in ('<', '(', '['): + nesting_stack.append(operator) + elif operator == '>': + nesting_stack.pop() + if not nesting_stack: + # Found matching angle bracket + return True + elif operator == ',': + # Got a comma after a bracket, this is most likely a template + # argument. We have not seen a closing angle bracket yet, but + # it's probably a few lines later if we look for it, so just + # return early here. + return True + else: + # Got some other operator. + return False + + else: + # Expecting closing parenthesis or closing bracket + if operator in ('<', '(', '['): + nesting_stack.append(operator) + elif operator in (')', ']'): + # We don't bother checking for matching () or []. If we got + # something like (] or [), it would have been a syntax error. + nesting_stack.pop() + + else: + # Scan the next line + linenum += 1 + if linenum >= len(clean_lines.elided): + break + line = clean_lines.elided[linenum] + + # Exhausted all remaining lines and still no matching angle bracket. + # Most likely the input was incomplete, otherwise we should have + # seen a semicolon and returned early. + return True + + +def FindPreviousMatchingAngleBracket(clean_lines, linenum, init_prefix): + """Find the corresponding < that started a template. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: Current line number. + init_prefix: Part of the current line before the initial >. + + Returns: + True if a matching bracket exists. + """ + line = init_prefix + nesting_stack = ['>'] + while True: + # Find the previous operator + match = Search(r'^(.*)([<>(),;\[\]])[^<>(),;\[\]]*$', line) + if match: + # Found an operator, update nesting stack + operator = match.group(2) + line = match.group(1) + + if nesting_stack[-1] == '>': + # Expecting opening angle bracket + if operator in ('>', ')', ']'): + nesting_stack.append(operator) + elif operator == '<': + nesting_stack.pop() + if not nesting_stack: + # Found matching angle bracket + return True + elif operator == ',': + # Got a comma before a bracket, this is most likely a + # template argument. The opening angle bracket is probably + # there if we look for it, so just return early here. + return True + else: + # Got some other operator. + return False + + else: + # Expecting opening parenthesis or opening bracket + if operator in ('>', ')', ']'): + nesting_stack.append(operator) + elif operator in ('(', '['): + nesting_stack.pop() + + else: + # Scan the previous line + linenum -= 1 + if linenum < 0: + break + line = clean_lines.elided[linenum] + + # Exhausted all earlier lines and still no matching angle bracket. + return False + + +def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): + """Checks for the correctness of various spacing issues in the code. + + Things we check for: spaces around operators, spaces after + if/for/while/switch, no spaces around parens in function calls, two + spaces between code and comment, don't start a block with a blank + line, don't end a function with a blank line, don't add a blank line + after public/protected/private, don't have too many blank lines in a row. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw = clean_lines.lines_without_raw_strings + line = raw[linenum] + + # Before nixing comments, check if the line is blank for no good + # reason. This includes the first line after a block is opened, and + # blank lines at the end of a function (ie, right before a line like '}' + # + # Skip all the blank line checks if we are immediately inside a + # namespace body. In other words, don't issue blank line warnings + # for this block: + # namespace { + # + # } + # + # A warning about missing end of namespace comments will be issued instead. + if IsBlankLine(line) and not nesting_state.InNamespaceBody(): + elided = clean_lines.elided + prev_line = elided[linenum - 1] + prevbrace = prev_line.rfind('{') + # TODO(unknown): Don't complain if line before blank line, and line after, + # both start with alnums and are indented the same amount. + # This ignores whitespace at the start of a namespace block + # because those are not usually indented. + if prevbrace != -1 and prev_line[prevbrace:].find('}') == -1: + # OK, we have a blank line at the start of a code block. Before we + # complain, we check if it is an exception to the rule: The previous + # non-empty line has the parameters of a function header that are indented + # 4 spaces (because they did not fit in a 80 column line when placed on + # the same line as the function name). We also check for the case where + # the previous line is indented 6 spaces, which may happen when the + # initializers of a constructor do not fit into a 80 column line. + exception = False + if Match(r' {6}\w', prev_line): # Initializer list? + # We are looking for the opening column of initializer list, which + # should be indented 4 spaces to cause 6 space indentation afterwards. + search_position = linenum-2 + while (search_position >= 0 + and Match(r' {6}\w', elided[search_position])): + search_position -= 1 + exception = (search_position >= 0 + and elided[search_position][:5] == ' :') + else: + # Search for the function arguments or an initializer list. We use a + # simple heuristic here: If the line is indented 4 spaces; and we have a + # closing paren, without the opening paren, followed by an opening brace + # or colon (for initializer lists) we assume that it is the last line of + # a function header. If we have a colon indented 4 spaces, it is an + # initializer list. + exception = (Match(r' {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)', + prev_line) + or Match(r' {4}:', prev_line)) + + if not exception: + error(filename, linenum, 'whitespace/blank_line', 2, + 'Redundant blank line at the start of a code block ' + 'should be deleted.') + # Ignore blank lines at the end of a block in a long if-else + # chain, like this: + # if (condition1) { + # // Something followed by a blank line + # + # } else if (condition2) { + # // Something else + # } + if linenum + 1 < clean_lines.NumLines(): + next_line = raw[linenum + 1] + if (next_line + and Match(r'\s*}', next_line) + and next_line.find('} else ') == -1): + error(filename, linenum, 'whitespace/blank_line', 3, + 'Redundant blank line at the end of a code block ' + 'should be deleted.') + + matched = Match(r'\s*(public|protected|private):', prev_line) + if matched: + error(filename, linenum, 'whitespace/blank_line', 3, + 'Do not leave a blank line after "%s:"' % matched.group(1)) + + # Next, we complain if there's a comment too near the text + commentpos = line.find('//') + if commentpos != -1: + # Check if the // may be in quotes. If so, ignore it + # Comparisons made explicit for clarity -- pylint: disable=g-explicit-bool-comparison + if (line.count('"', 0, commentpos) - + line.count('\\"', 0, commentpos)) % 2 == 0: # not in quotes + # Allow one space for new scopes, two spaces otherwise: + if (not Match(r'^\s*{ //', line) and + ((commentpos >= 1 and + line[commentpos-1] not in string.whitespace) or + (commentpos >= 2 and + line[commentpos-2] not in string.whitespace))): + error(filename, linenum, 'whitespace/comments', 2, + 'At least two spaces is best between code and comments') + # There should always be a space between the // and the comment + commentend = commentpos + 2 + if commentend < len(line) and not line[commentend] == ' ': + # but some lines are exceptions -- e.g. if they're big + # comment delimiters like: + # //---------------------------------------------------------- + # or are an empty C++ style Doxygen comment, like: + # /// + # or C++ style Doxygen comments placed after the variable: + # ///< Header comment + # //!< Header comment + # or they begin with multiple slashes followed by a space: + # //////// Header comment + match = (Search(r'[=/-]{4,}\s*$', line[commentend:]) or + Search(r'^/$', line[commentend:]) or + Search(r'^!< ', line[commentend:]) or + Search(r'^/< ', line[commentend:]) or + Search(r'^/+ ', line[commentend:])) + if not match: + error(filename, linenum, 'whitespace/comments', 4, + 'Should have a space between // and comment') + CheckComment(line[commentpos:], filename, linenum, error) + + line = clean_lines.elided[linenum] # get rid of comments and strings + + # Don't try to do spacing checks for operator methods + line = re.sub(r'operator(==|!=|<|<<|<=|>=|>>|>)\(', 'operator\(', line) + + # We allow no-spaces around = within an if: "if ( (a=Foo()) == 0 )". + # Otherwise not. Note we only check for non-spaces on *both* sides; + # sometimes people put non-spaces on one side when aligning ='s among + # many lines (not that this is behavior that I approve of...) + if Search(r'[\w.]=[\w.]', line) and not Search(r'\b(if|while) ', line): + error(filename, linenum, 'whitespace/operators', 4, + 'Missing spaces around =') + + # It's ok not to have spaces around binary operators like + - * /, but if + # there's too little whitespace, we get concerned. It's hard to tell, + # though, so we punt on this one for now. TODO. + + # You should always have whitespace around binary operators. + # + # Check <= and >= first to avoid false positives with < and >, then + # check non-include lines for spacing around < and >. + match = Search(r'[^<>=!\s](==|!=|<=|>=)[^<>=!\s]', line) + if match: + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around %s' % match.group(1)) + # We allow no-spaces around << when used like this: 10<<20, but + # not otherwise (particularly, not when used as streams) + # Also ignore using ns::operator<<; + match = Search(r'(operator|\S)(?:L|UL|ULL|l|ul|ull)?<<(\S)', line) + if (match and + not (match.group(1).isdigit() and match.group(2).isdigit()) and + not (match.group(1) == 'operator' and match.group(2) == ';')): + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around <<') + elif not Match(r'#.*include', line): + # Avoid false positives on -> + reduced_line = line.replace('->', '') + + # Look for < that is not surrounded by spaces. This is only + # triggered if both sides are missing spaces, even though + # technically should should flag if at least one side is missing a + # space. This is done to avoid some false positives with shifts. + match = Search(r'[^\s<]<([^\s=<].*)', reduced_line) + if (match and + not FindNextMatchingAngleBracket(clean_lines, linenum, match.group(1))): + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around <') + + # Look for > that is not surrounded by spaces. Similar to the + # above, we only trigger if both sides are missing spaces to avoid + # false positives with shifts. + match = Search(r'^(.*[^\s>])>[^\s=>]', reduced_line) + if (match and + not FindPreviousMatchingAngleBracket(clean_lines, linenum, + match.group(1))): + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around >') + + # We allow no-spaces around >> for almost anything. This is because + # C++11 allows ">>" to close nested templates, which accounts for + # most cases when ">>" is not followed by a space. + # + # We still warn on ">>" followed by alpha character, because that is + # likely due to ">>" being used for right shifts, e.g.: + # value >> alpha + # + # When ">>" is used to close templates, the alphanumeric letter that + # follows would be part of an identifier, and there should still be + # a space separating the template type and the identifier. + # type> alpha + match = Search(r'>>[a-zA-Z_]', line) + if match: + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around >>') + + # There shouldn't be space around unary operators + match = Search(r'(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])', line) + if match: + error(filename, linenum, 'whitespace/operators', 4, + 'Extra space for operator %s' % match.group(1)) + + # A pet peeve of mine: no spaces after an if, while, switch, or for + match = Search(r' (if\(|for\(|while\(|switch\()', line) + if match: + error(filename, linenum, 'whitespace/parens', 5, + 'Missing space before ( in %s' % match.group(1)) + + # For if/for/while/switch, the left and right parens should be + # consistent about how many spaces are inside the parens, and + # there should either be zero or one spaces inside the parens. + # We don't want: "if ( foo)" or "if ( foo )". + # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed. + match = Search(r'\b(if|for|while|switch)\s*' + r'\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$', + line) + if match: + if len(match.group(2)) != len(match.group(4)): + if not (match.group(3) == ';' and + len(match.group(2)) == 1 + len(match.group(4)) or + not match.group(2) and Search(r'\bfor\s*\(.*; \)', line)): + error(filename, linenum, 'whitespace/parens', 5, + 'Mismatching spaces inside () in %s' % match.group(1)) + if len(match.group(2)) not in [0, 1]: + error(filename, linenum, 'whitespace/parens', 5, + 'Should have zero or one spaces inside ( and ) in %s' % + match.group(1)) + + # You should always have a space after a comma (either as fn arg or operator) + # + # This does not apply when the non-space character following the + # comma is another comma, since the only time when that happens is + # for empty macro arguments. + # + # We run this check in two passes: first pass on elided lines to + # verify that lines contain missing whitespaces, second pass on raw + # lines to confirm that those missing whitespaces are not due to + # elided comments. + if Search(r',[^,\s]', line) and Search(r',[^,\s]', raw[linenum]): + error(filename, linenum, 'whitespace/comma', 3, + 'Missing space after ,') + + # You should always have a space after a semicolon + # except for few corner cases + # TODO(unknown): clarify if 'if (1) { return 1;}' is requires one more + # space after ; + if Search(r';[^\s};\\)/]', line): + error(filename, linenum, 'whitespace/semicolon', 3, + 'Missing space after ;') + + # Next we will look for issues with function calls. + CheckSpacingForFunctionCall(filename, line, linenum, error) + + # Except after an opening paren, or after another opening brace (in case of + # an initializer list, for instance), you should have spaces before your + # braces. And since you should never have braces at the beginning of a line, + # this is an easy test. + match = Match(r'^(.*[^ ({]){', line) + if match: + # Try a bit harder to check for brace initialization. This + # happens in one of the following forms: + # Constructor() : initializer_list_{} { ... } + # Constructor{}.MemberFunction() + # Type variable{}; + # FunctionCall(type{}, ...); + # LastArgument(..., type{}); + # LOG(INFO) << type{} << " ..."; + # map_of_type[{...}] = ...; + # + # We check for the character following the closing brace, and + # silence the warning if it's one of those listed above, i.e. + # "{.;,)<]". + # + # To account for nested initializer list, we allow any number of + # closing braces up to "{;,)<". We can't simply silence the + # warning on first sight of closing brace, because that would + # cause false negatives for things that are not initializer lists. + # Silence this: But not this: + # Outer{ if (...) { + # Inner{...} if (...){ // Missing space before { + # }; } + # + # There is a false negative with this approach if people inserted + # spurious semicolons, e.g. "if (cond){};", but we will catch the + # spurious semicolon with a separate check. + (endline, endlinenum, endpos) = CloseExpression( + clean_lines, linenum, len(match.group(1))) + trailing_text = '' + if endpos > -1: + trailing_text = endline[endpos:] + for offset in xrange(endlinenum + 1, + min(endlinenum + 3, clean_lines.NumLines() - 1)): + trailing_text += clean_lines.elided[offset] + if not Match(r'^[\s}]*[{.;,)<\]]', trailing_text): + error(filename, linenum, 'whitespace/braces', 5, + 'Missing space before {') + + # Make sure '} else {' has spaces. + if Search(r'}else', line): + error(filename, linenum, 'whitespace/braces', 5, + 'Missing space before else') + + # You shouldn't have spaces before your brackets, except maybe after + # 'delete []' or 'new char * []'. + if Search(r'\w\s+\[', line) and not Search(r'delete\s+\[', line): + error(filename, linenum, 'whitespace/braces', 5, + 'Extra space before [') + + # You shouldn't have a space before a semicolon at the end of the line. + # There's a special case for "for" since the style guide allows space before + # the semicolon there. + if Search(r':\s*;\s*$', line): + error(filename, linenum, 'whitespace/semicolon', 5, + 'Semicolon defining empty statement. Use {} instead.') + elif Search(r'^\s*;\s*$', line): + error(filename, linenum, 'whitespace/semicolon', 5, + 'Line contains only semicolon. If this should be an empty statement, ' + 'use {} instead.') + elif (Search(r'\s+;\s*$', line) and + not Search(r'\bfor\b', line)): + error(filename, linenum, 'whitespace/semicolon', 5, + 'Extra space before last semicolon. If this should be an empty ' + 'statement, use {} instead.') + + # In range-based for, we wanted spaces before and after the colon, but + # not around "::" tokens that might appear. + if (Search('for *\(.*[^:]:[^: ]', line) or + Search('for *\(.*[^: ]:[^:]', line)): + error(filename, linenum, 'whitespace/forcolon', 2, + 'Missing space around colon in range-based for loop') + + +def CheckSectionSpacing(filename, clean_lines, class_info, linenum, error): + """Checks for additional blank line issues related to sections. + + Currently the only thing checked here is blank line before protected/private. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + class_info: A _ClassInfo objects. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + # Skip checks if the class is small, where small means 25 lines or less. + # 25 lines seems like a good cutoff since that's the usual height of + # terminals, and any class that can't fit in one screen can't really + # be considered "small". + # + # Also skip checks if we are on the first line. This accounts for + # classes that look like + # class Foo { public: ... }; + # + # If we didn't find the end of the class, last_line would be zero, + # and the check will be skipped by the first condition. + if (class_info.last_line - class_info.starting_linenum <= 24 or + linenum <= class_info.starting_linenum): + return + + matched = Match(r'\s*(public|protected|private):', clean_lines.lines[linenum]) + if matched: + # Issue warning if the line before public/protected/private was + # not a blank line, but don't do this if the previous line contains + # "class" or "struct". This can happen two ways: + # - We are at the beginning of the class. + # - We are forward-declaring an inner class that is semantically + # private, but needed to be public for implementation reasons. + # Also ignores cases where the previous line ends with a backslash as can be + # common when defining classes in C macros. + prev_line = clean_lines.lines[linenum - 1] + if (not IsBlankLine(prev_line) and + not Search(r'\b(class|struct)\b', prev_line) and + not Search(r'\\$', prev_line)): + # Try a bit harder to find the beginning of the class. This is to + # account for multi-line base-specifier lists, e.g.: + # class Derived + # : public Base { + end_class_head = class_info.starting_linenum + for i in range(class_info.starting_linenum, linenum): + if Search(r'\{\s*$', clean_lines.lines[i]): + end_class_head = i + break + if end_class_head < linenum - 1: + error(filename, linenum, 'whitespace/blank_line', 3, + '"%s:" should be preceded by a blank line' % matched.group(1)) + + +def GetPreviousNonBlankLine(clean_lines, linenum): + """Return the most recent non-blank line and its line number. + + Args: + clean_lines: A CleansedLines instance containing the file contents. + linenum: The number of the line to check. + + Returns: + A tuple with two elements. The first element is the contents of the last + non-blank line before the current line, or the empty string if this is the + first non-blank line. The second is the line number of that line, or -1 + if this is the first non-blank line. + """ + + prevlinenum = linenum - 1 + while prevlinenum >= 0: + prevline = clean_lines.elided[prevlinenum] + if not IsBlankLine(prevline): # if not a blank line... + return (prevline, prevlinenum) + prevlinenum -= 1 + return ('', -1) + + +def CheckBraces(filename, clean_lines, linenum, error): + """Looks for misplaced braces (e.g. at the end of line). + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + line = clean_lines.elided[linenum] # get rid of comments and strings + + if Match(r'\s*{\s*$', line): + # We allow an open brace to start a line in the case where someone is using + # braces in a block to explicitly create a new scope, which is commonly used + # to control the lifetime of stack-allocated variables. Braces are also + # used for brace initializers inside function calls. We don't detect this + # perfectly: we just don't complain if the last non-whitespace character on + # the previous non-blank line is ',', ';', ':', '(', '{', or '}', or if the + # previous line starts a preprocessor block. + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if (not Search(r'[,;:}{(]\s*$', prevline) and + not Match(r'\s*#', prevline)): + error(filename, linenum, 'whitespace/braces', 4, + '{ should almost always be at the end of the previous line') + + # An else clause should be on the same line as the preceding closing brace. + if Match(r'\s*else\s*', line): + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if Match(r'\s*}\s*$', prevline): + error(filename, linenum, 'whitespace/newline', 4, + 'An else should appear on the same line as the preceding }') + + # If braces come on one side of an else, they should be on both. + # However, we have to worry about "else if" that spans multiple lines! + if Search(r'}\s*else[^{]*$', line) or Match(r'[^}]*else\s*{', line): + if Search(r'}\s*else if([^{]*)$', line): # could be multi-line if + # find the ( after the if + pos = line.find('else if') + pos = line.find('(', pos) + if pos > 0: + (endline, _, endpos) = CloseExpression(clean_lines, linenum, pos) + if endline[endpos:].find('{') == -1: # must be brace after if + error(filename, linenum, 'readability/braces', 5, + 'If an else has a brace on one side, it should have it on both') + else: # common case: else not followed by a multi-line if + error(filename, linenum, 'readability/braces', 5, + 'If an else has a brace on one side, it should have it on both') + + # Likewise, an else should never have the else clause on the same line + if Search(r'\belse [^\s{]', line) and not Search(r'\belse if\b', line): + error(filename, linenum, 'whitespace/newline', 4, + 'Else clause should never be on same line as else (use 2 lines)') + + # In the same way, a do/while should never be on one line + if Match(r'\s*do [^\s{]', line): + error(filename, linenum, 'whitespace/newline', 4, + 'do/while clauses should not be on a single line') + + # Block bodies should not be followed by a semicolon. Due to C++11 + # brace initialization, there are more places where semicolons are + # required than not, so we use a whitelist approach to check these + # rather than a blacklist. These are the places where "};" should + # be replaced by just "}": + # 1. Some flavor of block following closing parenthesis: + # for (;;) {}; + # while (...) {}; + # switch (...) {}; + # Function(...) {}; + # if (...) {}; + # if (...) else if (...) {}; + # + # 2. else block: + # if (...) else {}; + # + # 3. const member function: + # Function(...) const {}; + # + # 4. Block following some statement: + # x = 42; + # {}; + # + # 5. Block at the beginning of a function: + # Function(...) { + # {}; + # } + # + # Note that naively checking for the preceding "{" will also match + # braces inside multi-dimensional arrays, but this is fine since + # that expression will not contain semicolons. + # + # 6. Block following another block: + # while (true) {} + # {}; + # + # 7. End of namespaces: + # namespace {}; + # + # These semicolons seems far more common than other kinds of + # redundant semicolons, possibly due to people converting classes + # to namespaces. For now we do not warn for this case. + # + # Try matching case 1 first. + match = Match(r'^(.*\)\s*)\{', line) + if match: + # Matched closing parenthesis (case 1). Check the token before the + # matching opening parenthesis, and don't warn if it looks like a + # macro. This avoids these false positives: + # - macro that defines a base class + # - multi-line macro that defines a base class + # - macro that defines the whole class-head + # + # But we still issue warnings for macros that we know are safe to + # warn, specifically: + # - TEST, TEST_F, TEST_P, MATCHER, MATCHER_P + # - TYPED_TEST + # - INTERFACE_DEF + # - EXCLUSIVE_LOCKS_REQUIRED, SHARED_LOCKS_REQUIRED, LOCKS_EXCLUDED: + # + # We implement a whitelist of safe macros instead of a blacklist of + # unsafe macros, even though the latter appears less frequently in + # google code and would have been easier to implement. This is because + # the downside for getting the whitelist wrong means some extra + # semicolons, while the downside for getting the blacklist wrong + # would result in compile errors. + # + # In addition to macros, we also don't want to warn on compound + # literals. + closing_brace_pos = match.group(1).rfind(')') + opening_parenthesis = ReverseCloseExpression( + clean_lines, linenum, closing_brace_pos) + if opening_parenthesis[2] > -1: + line_prefix = opening_parenthesis[0][0:opening_parenthesis[2]] + macro = Search(r'\b([A-Z_]+)\s*$', line_prefix) + if ((macro and + macro.group(1) not in ( + 'TEST', 'TEST_F', 'MATCHER', 'MATCHER_P', 'TYPED_TEST', + 'EXCLUSIVE_LOCKS_REQUIRED', 'SHARED_LOCKS_REQUIRED', + 'LOCKS_EXCLUDED', 'INTERFACE_DEF')) or + Search(r'\s+=\s*$', line_prefix)): + match = None + + else: + # Try matching cases 2-3. + match = Match(r'^(.*(?:else|\)\s*const)\s*)\{', line) + if not match: + # Try matching cases 4-6. These are always matched on separate lines. + # + # Note that we can't simply concatenate the previous line to the + # current line and do a single match, otherwise we may output + # duplicate warnings for the blank line case: + # if (cond) { + # // blank line + # } + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if prevline and Search(r'[;{}]\s*$', prevline): + match = Match(r'^(\s*)\{', line) + + # Check matching closing brace + if match: + (endline, endlinenum, endpos) = CloseExpression( + clean_lines, linenum, len(match.group(1))) + if endpos > -1 and Match(r'^\s*;', endline[endpos:]): + # Current {} pair is eligible for semicolon check, and we have found + # the redundant semicolon, output warning here. + # + # Note: because we are scanning forward for opening braces, and + # outputting warnings for the matching closing brace, if there are + # nested blocks with trailing semicolons, we will get the error + # messages in reversed order. + error(filename, endlinenum, 'readability/braces', 4, + "You don't need a ; after a }") + + +def CheckEmptyBlockBody(filename, clean_lines, linenum, error): + """Look for empty loop/conditional body with only a single semicolon. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Search for loop keywords at the beginning of the line. Because only + # whitespaces are allowed before the keywords, this will also ignore most + # do-while-loops, since those lines should start with closing brace. + # + # We also check "if" blocks here, since an empty conditional block + # is likely an error. + line = clean_lines.elided[linenum] + matched = Match(r'\s*(for|while|if)\s*\(', line) + if matched: + # Find the end of the conditional expression + (end_line, end_linenum, end_pos) = CloseExpression( + clean_lines, linenum, line.find('(')) + + # Output warning if what follows the condition expression is a semicolon. + # No warning for all other cases, including whitespace or newline, since we + # have a separate check for semicolons preceded by whitespace. + if end_pos >= 0 and Match(r';', end_line[end_pos:]): + if matched.group(1) == 'if': + error(filename, end_linenum, 'whitespace/empty_conditional_body', 5, + 'Empty conditional bodies should use {}') + else: + error(filename, end_linenum, 'whitespace/empty_loop_body', 5, + 'Empty loop bodies should use {} or continue') + + +def CheckCheck(filename, clean_lines, linenum, error): + """Checks the use of CHECK and EXPECT macros. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Decide the set of replacement macros that should be suggested + lines = clean_lines.elided + check_macro = None + start_pos = -1 + for macro in _CHECK_MACROS: + i = lines[linenum].find(macro) + if i >= 0: + check_macro = macro + + # Find opening parenthesis. Do a regular expression match here + # to make sure that we are matching the expected CHECK macro, as + # opposed to some other macro that happens to contain the CHECK + # substring. + matched = Match(r'^(.*\b' + check_macro + r'\s*)\(', lines[linenum]) + if not matched: + continue + start_pos = len(matched.group(1)) + break + if not check_macro or start_pos < 0: + # Don't waste time here if line doesn't contain 'CHECK' or 'EXPECT' + return + + # Find end of the boolean expression by matching parentheses + (last_line, end_line, end_pos) = CloseExpression( + clean_lines, linenum, start_pos) + if end_pos < 0: + return + if linenum == end_line: + expression = lines[linenum][start_pos + 1:end_pos - 1] + else: + expression = lines[linenum][start_pos + 1:] + for i in xrange(linenum + 1, end_line): + expression += lines[i] + expression += last_line[0:end_pos - 1] + + # Parse expression so that we can take parentheses into account. + # This avoids false positives for inputs like "CHECK((a < 4) == b)", + # which is not replaceable by CHECK_LE. + lhs = '' + rhs = '' + operator = None + while expression: + matched = Match(r'^\s*(<<|<<=|>>|>>=|->\*|->|&&|\|\||' + r'==|!=|>=|>|<=|<|\()(.*)$', expression) + if matched: + token = matched.group(1) + if token == '(': + # Parenthesized operand + expression = matched.group(2) + (end, _) = FindEndOfExpressionInLine(expression, 0, 1, '(', ')') + if end < 0: + return # Unmatched parenthesis + lhs += '(' + expression[0:end] + expression = expression[end:] + elif token in ('&&', '||'): + # Logical and/or operators. This means the expression + # contains more than one term, for example: + # CHECK(42 < a && a < b); + # + # These are not replaceable with CHECK_LE, so bail out early. + return + elif token in ('<<', '<<=', '>>', '>>=', '->*', '->'): + # Non-relational operator + lhs += token + expression = matched.group(2) + else: + # Relational operator + operator = token + rhs = matched.group(2) + break + else: + # Unparenthesized operand. Instead of appending to lhs one character + # at a time, we do another regular expression match to consume several + # characters at once if possible. Trivial benchmark shows that this + # is more efficient when the operands are longer than a single + # character, which is generally the case. + matched = Match(r'^([^-=!<>()&|]+)(.*)$', expression) + if not matched: + matched = Match(r'^(\s*\S)(.*)$', expression) + if not matched: + break + lhs += matched.group(1) + expression = matched.group(2) + + # Only apply checks if we got all parts of the boolean expression + if not (lhs and operator and rhs): + return + + # Check that rhs do not contain logical operators. We already know + # that lhs is fine since the loop above parses out && and ||. + if rhs.find('&&') > -1 or rhs.find('||') > -1: + return + + # At least one of the operands must be a constant literal. This is + # to avoid suggesting replacements for unprintable things like + # CHECK(variable != iterator) + # + # The following pattern matches decimal, hex integers, strings, and + # characters (in that order). + lhs = lhs.strip() + rhs = rhs.strip() + match_constant = r'^([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')$' + if Match(match_constant, lhs) or Match(match_constant, rhs): + # Note: since we know both lhs and rhs, we can provide a more + # descriptive error message like: + # Consider using CHECK_EQ(x, 42) instead of CHECK(x == 42) + # Instead of: + # Consider using CHECK_EQ instead of CHECK(a == b) + # + # We are still keeping the less descriptive message because if lhs + # or rhs gets long, the error message might become unreadable. + error(filename, linenum, 'readability/check', 2, + 'Consider using %s instead of %s(a %s b)' % ( + _CHECK_REPLACEMENT[check_macro][operator], + check_macro, operator)) + + +def CheckAltTokens(filename, clean_lines, linenum, error): + """Check alternative keywords being used in boolean expressions. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Avoid preprocessor lines + if Match(r'^\s*#', line): + return + + # Last ditch effort to avoid multi-line comments. This will not help + # if the comment started before the current line or ended after the + # current line, but it catches most of the false positives. At least, + # it provides a way to workaround this warning for people who use + # multi-line comments in preprocessor macros. + # + # TODO(unknown): remove this once cpplint has better support for + # multi-line comments. + if line.find('/*') >= 0 or line.find('*/') >= 0: + return + + for match in _ALT_TOKEN_REPLACEMENT_PATTERN.finditer(line): + error(filename, linenum, 'readability/alt_tokens', 2, + 'Use operator %s instead of %s' % ( + _ALT_TOKEN_REPLACEMENT[match.group(1)], match.group(1))) + + +def GetLineWidth(line): + """Determines the width of the line in column positions. + + Args: + line: A string, which may be a Unicode string. + + Returns: + The width of the line in column positions, accounting for Unicode + combining characters and wide characters. + """ + if six.PY2: + if isinstance(line, unicode): + width = 0 + for uc in unicodedata.normalize('NFC', line): + if unicodedata.east_asian_width(uc) in ('W', 'F'): + width += 2 + elif not unicodedata.combining(uc): + width += 1 + return width + return len(line) + + +def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, + error): + """Checks rules from the 'C++ style rules' section of cppguide.html. + + Most of these rules are hard to test (naming, comment style), but we + do what we can. In particular we check for 2-space indents, line lengths, + tab usage, spaces inside code, etc. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + file_extension: The extension (without the dot) of the filename. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw_lines = clean_lines.lines_without_raw_strings + line = raw_lines[linenum] + + if line.find('\t') != -1: + error(filename, linenum, 'whitespace/tab', 1, + 'Tab found; better to use spaces') + + # One or three blank spaces at the beginning of the line is weird; it's + # hard to reconcile that with 2-space indents. + # NOTE: here are the conditions rob pike used for his tests. Mine aren't + # as sophisticated, but it may be worth becoming so: RLENGTH==initial_spaces + # if(RLENGTH > 20) complain = 0; + # if(match($0, " +(error|private|public|protected):")) complain = 0; + # if(match(prev, "&& *$")) complain = 0; + # if(match(prev, "\\|\\| *$")) complain = 0; + # if(match(prev, "[\",=><] *$")) complain = 0; + # if(match($0, " <<")) complain = 0; + # if(match(prev, " +for \\(")) complain = 0; + # if(prevodd && match(prevprev, " +for \\(")) complain = 0; + initial_spaces = 0 + cleansed_line = clean_lines.elided[linenum] + while initial_spaces < len(line) and line[initial_spaces] == ' ': + initial_spaces += 1 + if line and line[-1].isspace(): + error(filename, linenum, 'whitespace/end_of_line', 4, + 'Line ends in whitespace. Consider deleting these extra spaces.') + # There are certain situations we allow one space, notably for section labels + elif ((initial_spaces == 1 or initial_spaces == 3) and + not Match(r'\s*\w+\s*:\s*$', cleansed_line)): + error(filename, linenum, 'whitespace/indent', 3, + 'Weird number of spaces at line-start. ' + 'Are you using a 2-space indent?') + + # Check if the line is a header guard. + is_header_guard = False + if file_extension == 'h': + cppvar = GetHeaderGuardCPPVariable(filename) + if (line.startswith('#ifndef %s' % cppvar) or + line.startswith('#define %s' % cppvar) or + line.startswith('#endif // %s' % cppvar)): + is_header_guard = True + # #include lines and header guards can be long, since there's no clean way to + # split them. + # + # URLs can be long too. It's possible to split these, but it makes them + # harder to cut&paste. + # + # The "$Id:...$" comment may also get very long without it being the + # developers fault. + if (not line.startswith('#include') and not is_header_guard and + not Match(r'^\s*//.*http(s?)://\S*$', line) and + not Match(r'^// \$Id:.*#[0-9]+ \$$', line)): + line_width = GetLineWidth(line) + extended_length = int((_line_length * 1.25)) + if line_width > extended_length: + error(filename, linenum, 'whitespace/line_length', 4, + 'Lines should very rarely be longer than %i characters' % + extended_length) + elif line_width > _line_length: + error(filename, linenum, 'whitespace/line_length', 2, + 'Lines should be <= %i characters long' % _line_length) + + if (cleansed_line.count(';') > 1 and + # for loops are allowed two ;'s (and may run over two lines). + cleansed_line.find('for') == -1 and + (GetPreviousNonBlankLine(clean_lines, linenum)[0].find('for') == -1 or + GetPreviousNonBlankLine(clean_lines, linenum)[0].find(';') != -1) and + # It's ok to have many commands in a switch case that fits in 1 line + not ((cleansed_line.find('case ') != -1 or + cleansed_line.find('default:') != -1) and + cleansed_line.find('break;') != -1)): + error(filename, linenum, 'whitespace/newline', 0, + 'More than one command on the same line') + + # Some more style checks + CheckBraces(filename, clean_lines, linenum, error) + CheckEmptyBlockBody(filename, clean_lines, linenum, error) + CheckAccess(filename, clean_lines, linenum, nesting_state, error) + CheckSpacing(filename, clean_lines, linenum, nesting_state, error) + CheckCheck(filename, clean_lines, linenum, error) + CheckAltTokens(filename, clean_lines, linenum, error) + classinfo = nesting_state.InnermostClass() + if classinfo: + CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) + + +_RE_PATTERN_INCLUDE_NEW_STYLE = re.compile(r'#include +"[^/]+\.h"') +_RE_PATTERN_INCLUDE = re.compile(r'^\s*#\s*include\s*([<"])([^>"]*)[>"].*$') +# Matches the first component of a filename delimited by -s and _s. That is: +# _RE_FIRST_COMPONENT.match('foo').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo.cc').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo-bar_baz.cc').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo_bar-baz.cc').group(0) == 'foo' +_RE_FIRST_COMPONENT = re.compile(r'^[^-_.]+') + + +def _DropCommonSuffixes(filename): + """Drops common suffixes like _test.cc or -inl.h from filename. + + For example: + >>> _DropCommonSuffixes('foo/foo-inl.h') + 'foo/foo' + >>> _DropCommonSuffixes('foo/bar/foo.cc') + 'foo/bar/foo' + >>> _DropCommonSuffixes('foo/foo_internal.h') + 'foo/foo' + >>> _DropCommonSuffixes('foo/foo_unusualinternal.h') + 'foo/foo_unusualinternal' + + Args: + filename: The input filename. + + Returns: + The filename with the common suffix removed. + """ + for suffix in ('test.cc', 'regtest.cc', 'unittest.cc', + 'inl.h', 'impl.h', 'internal.h'): + if (filename.endswith(suffix) and len(filename) > len(suffix) and + filename[-len(suffix) - 1] in ('-', '_')): + return filename[:-len(suffix) - 1] + return os.path.splitext(filename)[0] + + +def _IsTestFilename(filename): + """Determines if the given filename has a suffix that identifies it as a test. + + Args: + filename: The input filename. + + Returns: + True if 'filename' looks like a test, False otherwise. + """ + if (filename.endswith('_test.cc') or + filename.endswith('_unittest.cc') or + filename.endswith('_regtest.cc')): + return True + else: + return False + + +def _ClassifyInclude(fileinfo, include, is_system): + """Figures out what kind of header 'include' is. + + Args: + fileinfo: The current file cpplint is running over. A FileInfo instance. + include: The path to a #included file. + is_system: True if the #include used <> rather than "". + + Returns: + One of the _XXX_HEADER constants. + + For example: + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'stdio.h', True) + _C_SYS_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'string', True) + _CPP_SYS_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', False) + _LIKELY_MY_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo_unknown_extension.cc'), + ... 'bar/foo_other_ext.h', False) + _POSSIBLE_MY_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/bar.h', False) + _OTHER_HEADER + """ + # This is a list of all standard c++ header files, except + # those already checked for above. + is_cpp_h = include in _CPP_HEADERS + + if is_system: + if is_cpp_h: + return _CPP_SYS_HEADER + else: + return _C_SYS_HEADER + + # If the target file and the include we're checking share a + # basename when we drop common extensions, and the include + # lives in . , then it's likely to be owned by the target file. + target_dir, target_base = ( + os.path.split(_DropCommonSuffixes(fileinfo.RepositoryName()))) + include_dir, include_base = os.path.split(_DropCommonSuffixes(include)) + if target_base == include_base and ( + include_dir == target_dir or + include_dir == os.path.normpath(target_dir + '/../public')): + return _LIKELY_MY_HEADER + + # If the target and include share some initial basename + # component, it's possible the target is implementing the + # include, so it's allowed to be first, but we'll never + # complain if it's not there. + target_first_component = _RE_FIRST_COMPONENT.match(target_base) + include_first_component = _RE_FIRST_COMPONENT.match(include_base) + if (target_first_component and include_first_component and + target_first_component.group(0) == + include_first_component.group(0)): + return _POSSIBLE_MY_HEADER + + return _OTHER_HEADER + + + +def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): + """Check rules that are applicable to #include lines. + + Strings on #include lines are NOT removed from elided line, to make + certain tasks easier. However, to prevent false positives, checks + applicable to #include lines in CheckLanguage must be put here. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + include_state: An _IncludeState instance in which the headers are inserted. + error: The function to call with any errors found. + """ + fileinfo = FileInfo(filename) + + line = clean_lines.lines[linenum] + + # "include" should use the new style "foo/bar.h" instead of just "bar.h" + if _RE_PATTERN_INCLUDE_NEW_STYLE.search(line): + error(filename, linenum, 'build/include_dir', 4, + 'Include the directory when naming .h files') + + # we shouldn't include a file more than once. actually, there are a + # handful of instances where doing so is okay, but in general it's + # not. + match = _RE_PATTERN_INCLUDE.search(line) + if match: + include = match.group(2) + is_system = (match.group(1) == '<') + if include in include_state: + error(filename, linenum, 'build/include', 4, + '"%s" already included at %s:%s' % + (include, filename, include_state[include])) + else: + include_state[include] = linenum + + # We want to ensure that headers appear in the right order: + # 1) for foo.cc, foo.h (preferred location) + # 2) c system files + # 3) cpp system files + # 4) for foo.cc, foo.h (deprecated location) + # 5) other google headers + # + # We classify each include statement as one of those 5 types + # using a number of techniques. The include_state object keeps + # track of the highest type seen, and complains if we see a + # lower type after that. + error_message = include_state.CheckNextIncludeOrder( + _ClassifyInclude(fileinfo, include, is_system)) + if error_message: + error(filename, linenum, 'build/include_order', 4, + '%s. Should be: %s.h, c system, c++ system, other.' % + (error_message, fileinfo.BaseName())) + canonical_include = include_state.CanonicalizeAlphabeticalOrder(include) + if not include_state.IsInAlphabeticalOrder( + clean_lines, linenum, canonical_include): + error(filename, linenum, 'build/include_alpha', 4, + 'Include "%s" not in alphabetical order' % include) + include_state.SetLastHeader(canonical_include) + + # Look for any of the stream classes that are part of standard C++. + match = _RE_PATTERN_INCLUDE.match(line) + if match: + include = match.group(2) + if Match(r'(f|ind|io|i|o|parse|pf|stdio|str|)?stream$', include): + # Many unit tests use cout, so we exempt them. + if not _IsTestFilename(filename): + error(filename, linenum, 'readability/streams', 3, + 'Streams are highly discouraged.') + + +def _GetTextInside(text, start_pattern): + r"""Retrieves all the text between matching open and close parentheses. + + Given a string of lines and a regular expression string, retrieve all the text + following the expression and between opening punctuation symbols like + (, [, or {, and the matching close-punctuation symbol. This properly nested + occurrences of the punctuations, so for the text like + printf(a(), b(c())); + a call to _GetTextInside(text, r'printf\(') will return 'a(), b(c())'. + start_pattern must match string having an open punctuation symbol at the end. + + Args: + text: The lines to extract text. Its comments and strings must be elided. + It can be single line and can span multiple lines. + start_pattern: The regexp string indicating where to start extracting + the text. + Returns: + The extracted text. + None if either the opening string or ending punctuation could not be found. + """ + # TODO(sugawarayu): Audit cpplint.py to see what places could be profitably + # rewritten to use _GetTextInside (and use inferior regexp matching today). + + # Give opening punctuations to get the matching close-punctuations. + matching_punctuation = {'(': ')', '{': '}', '[': ']'} + closing_punctuation = set(itervalues(matching_punctuation)) + + # Find the position to start extracting text. + match = re.search(start_pattern, text, re.M) + if not match: # start_pattern not found in text. + return None + start_position = match.end(0) + + assert start_position > 0, ( + 'start_pattern must ends with an opening punctuation.') + assert text[start_position - 1] in matching_punctuation, ( + 'start_pattern must ends with an opening punctuation.') + # Stack of closing punctuations we expect to have in text after position. + punctuation_stack = [matching_punctuation[text[start_position - 1]]] + position = start_position + while punctuation_stack and position < len(text): + if text[position] == punctuation_stack[-1]: + punctuation_stack.pop() + elif text[position] in closing_punctuation: + # A closing punctuation without matching opening punctuations. + return None + elif text[position] in matching_punctuation: + punctuation_stack.append(matching_punctuation[text[position]]) + position += 1 + if punctuation_stack: + # Opening punctuations left without matching close-punctuations. + return None + # punctuations match. + return text[start_position:position - 1] + + +# Patterns for matching call-by-reference parameters. +# +# Supports nested templates up to 2 levels deep using this messy pattern: +# < (?: < (?: < [^<>]* +# > +# | [^<>] )* +# > +# | [^<>] )* +# > +_RE_PATTERN_IDENT = r'[_a-zA-Z]\w*' # =~ [[:alpha:]][[:alnum:]]* +_RE_PATTERN_TYPE = ( + r'(?:const\s+)?(?:typename\s+|class\s+|struct\s+|union\s+|enum\s+)?' + r'(?:\w|' + r'\s*<(?:<(?:<[^<>]*>|[^<>])*>|[^<>])*>|' + r'::)+') +# A call-by-reference parameter ends with '& identifier'. +_RE_PATTERN_REF_PARAM = re.compile( + r'(' + _RE_PATTERN_TYPE + r'(?:\s*(?:\bconst\b|[*]))*\s*' + r'&\s*' + _RE_PATTERN_IDENT + r')\s*(?:=[^,()]+)?[,)]') +# A call-by-const-reference parameter either ends with 'const& identifier' +# or looks like 'const type& identifier' when 'type' is atomic. +_RE_PATTERN_CONST_REF_PARAM = ( + r'(?:.*\s*\bconst\s*&\s*' + _RE_PATTERN_IDENT + + r'|const\s+' + _RE_PATTERN_TYPE + r'\s*&\s*' + _RE_PATTERN_IDENT + r')') + + +def CheckLanguage(filename, clean_lines, linenum, file_extension, + include_state, nesting_state, error): + """Checks rules from the 'C++ language rules' section of cppguide.html. + + Some of these rules are hard to test (function overloading, using + uint32 inappropriately), but we do the best we can. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + file_extension: The extension (without the dot) of the filename. + include_state: An _IncludeState instance in which the headers are inserted. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # If the line is empty or consists of entirely a comment, no need to + # check it. + line = clean_lines.elided[linenum] + if not line: + return + + match = _RE_PATTERN_INCLUDE.search(line) + if match: + CheckIncludeLine(filename, clean_lines, linenum, include_state, error) + return + + # Reset include state across preprocessor directives. This is meant + # to silence warnings for conditional includes. + if Match(r'^\s*#\s*(?:ifdef|elif|else|endif)\b', line): + include_state.ResetSection() + + # Make Windows paths like Unix. + fullname = os.path.abspath(filename).replace('\\', '/') + + # TODO(unknown): figure out if they're using default arguments in fn proto. + + # Check to see if they're using an conversion function cast. + # I just try to capture the most common basic types, though there are more. + # Parameterless conversion functions, such as bool(), are allowed as they are + # probably a member operator declaration or default constructor. + match = Search( + r'(\bnew\s+)?\b' # Grab 'new' operator, if it's there + r'(int|float|double|bool|char|int32|uint32|int64|uint64)' + r'(\([^)].*)', line) + if match: + matched_new = match.group(1) + matched_type = match.group(2) + matched_funcptr = match.group(3) + + # gMock methods are defined using some variant of MOCK_METHODx(name, type) + # where type may be float(), int(string), etc. Without context they are + # virtually indistinguishable from int(x) casts. Likewise, gMock's + # MockCallback takes a template parameter of the form return_type(arg_type), + # which looks much like the cast we're trying to detect. + # + # std::function<> wrapper has a similar problem. + # + # Return types for function pointers also look like casts if they + # don't have an extra space. + if (matched_new is None and # If new operator, then this isn't a cast + not (Match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(', line) or + Search(r'\bMockCallback<.*>', line) or + Search(r'\bstd::function<.*>', line)) and + not (matched_funcptr and + Match(r'\((?:[^() ]+::\s*\*\s*)?[^() ]+\)\s*\(', + matched_funcptr))): + # Try a bit harder to catch gmock lines: the only place where + # something looks like an old-style cast is where we declare the + # return type of the mocked method, and the only time when we + # are missing context is if MOCK_METHOD was split across + # multiple lines. The missing MOCK_METHOD is usually one or two + # lines back, so scan back one or two lines. + # + # It's not possible for gmock macros to appear in the first 2 + # lines, since the class head + section name takes up 2 lines. + if (linenum < 2 or + not (Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\((?:\S+,)?\s*$', + clean_lines.elided[linenum - 1]) or + Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\(\s*$', + clean_lines.elided[linenum - 2]))): + error(filename, linenum, 'readability/casting', 4, + 'Using deprecated casting style. ' + 'Use static_cast<%s>(...) instead' % + matched_type) + + CheckCStyleCast(filename, linenum, line, clean_lines.raw_lines[linenum], + 'static_cast', + r'\((int|float|double|bool|char|u?int(16|32|64))\)', error) + + # This doesn't catch all cases. Consider (const char * const)"hello". + # + # (char *) "foo" should always be a const_cast (reinterpret_cast won't + # compile). + if CheckCStyleCast(filename, linenum, line, clean_lines.raw_lines[linenum], + 'const_cast', r'\((char\s?\*+\s?)\)\s*"', error): + pass + else: + # Check pointer casts for other than string constants + CheckCStyleCast(filename, linenum, line, clean_lines.raw_lines[linenum], + 'reinterpret_cast', r'\((\w+\s?\*+\s?)\)', error) + + # In addition, we look for people taking the address of a cast. This + # is dangerous -- casts can assign to temporaries, so the pointer doesn't + # point where you think. + match = Search( + r'(?:&\(([^)]+)\)[\w(])|' + r'(?:&(static|dynamic|down|reinterpret)_cast\b)', line) + if match and match.group(1) != '*': + error(filename, linenum, 'runtime/casting', 4, + ('Are you taking an address of a cast? ' + 'This is dangerous: could be a temp var. ' + 'Take the address before doing the cast, rather than after')) + + # Create an extended_line, which is the concatenation of the current and + # next lines, for more effective checking of code that may span more than one + # line. + if linenum + 1 < clean_lines.NumLines(): + extended_line = line + clean_lines.elided[linenum + 1] + else: + extended_line = line + + # Check for people declaring static/global STL strings at the top level. + # This is dangerous because the C++ language does not guarantee that + # globals with constructors are initialized before the first access. + match = Match( + r'((?:|static +)(?:|const +))string +([a-zA-Z0-9_:]+)\b(.*)', + line) + # Make sure it's not a function. + # Function template specialization looks like: "string foo(...". + # Class template definitions look like: "string Foo::Method(...". + # + # Also ignore things that look like operators. These are matched separately + # because operator names cross non-word boundaries. If we change the pattern + # above, we would decrease the accuracy of matching identifiers. + if (match and + not Search(r'\boperator\W', line) and + not Match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)?\s*\(([^"]|$)', match.group(3))): + error(filename, linenum, 'runtime/string', 4, + 'For a static/global string constant, use a C style string instead: ' + '"%schar %s[]".' % + (match.group(1), match.group(2))) + + if Search(r'\b([A-Za-z0-9_]*_)\(\1\)', line): + error(filename, linenum, 'runtime/init', 4, + 'You seem to be initializing a member variable with itself.') + + if file_extension == 'h': + # TODO(unknown): check that 1-arg constructors are explicit. + # How to tell it's a constructor? + # (handled in CheckForNonStandardConstructs for now) + # TODO(unknown): check that classes have DISALLOW_EVIL_CONSTRUCTORS + # (level 1 error) + pass + + # Check if people are using the verboten C basic types. The only exception + # we regularly allow is "unsigned short port" for port. + if Search(r'\bshort port\b', line): + if not Search(r'\bunsigned short port\b', line): + error(filename, linenum, 'runtime/int', 4, + 'Use "unsigned short" for ports, not "short"') + else: + match = Search(r'\b(short|long(?! +double)|long long)\b', line) + if match: + error(filename, linenum, 'runtime/int', 4, + 'Use int16/int64/etc, rather than the C type %s' % match.group(1)) + + # When snprintf is used, the second argument shouldn't be a literal. + match = Search(r'snprintf\s*\(([^,]*),\s*([0-9]*)\s*,', line) + if match and match.group(2) != '0': + # If 2nd arg is zero, snprintf is used to calculate size. + error(filename, linenum, 'runtime/printf', 3, + 'If you can, use sizeof(%s) instead of %s as the 2nd arg ' + 'to snprintf.' % (match.group(1), match.group(2))) + + # Check if some verboten C functions are being used. + if Search(r'\bsprintf\b', line): + error(filename, linenum, 'runtime/printf', 5, + 'Never use sprintf. Use snprintf instead.') + match = Search(r'\b(strcpy|strcat)\b', line) + if match: + error(filename, linenum, 'runtime/printf', 4, + 'Almost always, snprintf is better than %s' % match.group(1)) + + # Check if some verboten operator overloading is going on + # TODO(unknown): catch out-of-line unary operator&: + # class X {}; + # int operator&(const X& x) { return 42; } // unary operator& + # The trick is it's hard to tell apart from binary operator&: + # class Y { int operator&(const Y& x) { return 23; } }; // binary operator& + if Search(r'\boperator\s*&\s*\(\s*\)', line): + error(filename, linenum, 'runtime/operator', 4, + 'Unary operator& is dangerous. Do not use it.') + + # Check for suspicious usage of "if" like + # } if (a == b) { + if Search(r'\}\s*if\s*\(', line): + error(filename, linenum, 'readability/braces', 4, + 'Did you mean "else if"? If not, start a new line for "if".') + + # Check for potential format string bugs like printf(foo). + # We constrain the pattern not to pick things like DocidForPrintf(foo). + # Not perfect but it can catch printf(foo.c_str()) and printf(foo->c_str()) + # TODO(sugawarayu): Catch the following case. Need to change the calling + # convention of the whole function to process multiple line to handle it. + # printf( + # boy_this_is_a_really_long_variable_that_cannot_fit_on_the_prev_line); + printf_args = _GetTextInside(line, r'(?i)\b(string)?printf\s*\(') + if printf_args: + match = Match(r'([\w.\->()]+)$', printf_args) + if match and match.group(1) != '__VA_ARGS__': + function_name = re.search(r'\b((?:string)?printf)\s*\(', + line, re.I).group(1) + error(filename, linenum, 'runtime/printf', 4, + 'Potential format string bug. Do %s("%%s", %s) instead.' + % (function_name, match.group(1))) + + # Check for potential memset bugs like memset(buf, sizeof(buf), 0). + match = Search(r'memset\s*\(([^,]*),\s*([^,]*),\s*0\s*\)', line) + if match and not Match(r"^''|-?[0-9]+|0x[0-9A-Fa-f]$", match.group(2)): + error(filename, linenum, 'runtime/memset', 4, + 'Did you mean "memset(%s, 0, %s)"?' + % (match.group(1), match.group(2))) + + if Search(r'\busing namespace\b', line): + error(filename, linenum, 'build/namespaces', 5, + 'Do not use namespace using-directives. ' + 'Use using-declarations instead.') + + # Detect variable-length arrays. + match = Match(r'\s*(.+::)?(\w+) [a-z]\w*\[(.+)];', line) + if (match and match.group(2) != 'return' and match.group(2) != 'delete' and + match.group(3).find(']') == -1): + # Split the size using space and arithmetic operators as delimiters. + # If any of the resulting tokens are not compile time constants then + # report the error. + tokens = re.split(r'\s|\+|\-|\*|\/|<<|>>]', match.group(3)) + is_const = True + skip_next = False + for tok in tokens: + if skip_next: + skip_next = False + continue + + if Search(r'sizeof\(.+\)', tok): continue + if Search(r'arraysize\(\w+\)', tok): continue + + tok = tok.lstrip('(') + tok = tok.rstrip(')') + if not tok: continue + if Match(r'\d+', tok): continue + if Match(r'0[xX][0-9a-fA-F]+', tok): continue + if Match(r'k[A-Z0-9]\w*', tok): continue + if Match(r'(.+::)?k[A-Z0-9]\w*', tok): continue + if Match(r'(.+::)?[A-Z][A-Z0-9_]*', tok): continue + # A catch all for tricky sizeof cases, including 'sizeof expression', + # 'sizeof(*type)', 'sizeof(const type)', 'sizeof(struct StructName)' + # requires skipping the next token because we split on ' ' and '*'. + if tok.startswith('sizeof'): + skip_next = True + continue + is_const = False + break + if not is_const: + error(filename, linenum, 'runtime/arrays', 1, + 'Do not use variable-length arrays. Use an appropriately named ' + "('k' followed by CamelCase) compile-time constant for the size.") + + # If DISALLOW_EVIL_CONSTRUCTORS, DISALLOW_COPY_AND_ASSIGN, or + # DISALLOW_IMPLICIT_CONSTRUCTORS is present, then it should be the last thing + # in the class declaration. + match = Match( + (r'\s*' + r'(DISALLOW_(EVIL_CONSTRUCTORS|COPY_AND_ASSIGN|IMPLICIT_CONSTRUCTORS))' + r'\(.*\);$'), + line) + if match and linenum + 1 < clean_lines.NumLines(): + next_line = clean_lines.elided[linenum + 1] + # We allow some, but not all, declarations of variables to be present + # in the statement that defines the class. The [\w\*,\s]* fragment of + # the regular expression below allows users to declare instances of + # the class or pointers to instances, but not less common types such + # as function pointers or arrays. It's a tradeoff between allowing + # reasonable code and avoiding trying to parse more C++ using regexps. + if not Search(r'^\s*}[\w\*,\s]*;', next_line): + error(filename, linenum, 'readability/constructors', 3, + match.group(1) + ' should be the last thing in the class') + + # Check for use of unnamed namespaces in header files. Registration + # macros are typically OK, so we allow use of "namespace {" on lines + # that end with backslashes. + if (file_extension == 'h' + and Search(r'\bnamespace\s*{', line) + and line[-1] != '\\'): + error(filename, linenum, 'build/namespaces', 4, + 'Do not use unnamed namespaces in header files. See ' + 'http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces' + ' for more information.') + +def CheckForNonConstReference(filename, clean_lines, linenum, + nesting_state, error): + """Check for non-const references. + + Separate from CheckLanguage since it scans backwards from current + line, instead of scanning forward. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # Do nothing if there is no '&' on current line. + line = clean_lines.elided[linenum] + if '&' not in line: + return + + # Long type names may be broken across multiple lines, usually in one + # of these forms: + # LongType + # ::LongTypeContinued &identifier + # LongType:: + # LongTypeContinued &identifier + # LongType< + # ...>::LongTypeContinued &identifier + # + # If we detected a type split across two lines, join the previous + # line to current line so that we can match const references + # accordingly. + # + # Note that this only scans back one line, since scanning back + # arbitrary number of lines would be expensive. If you have a type + # that spans more than 2 lines, please use a typedef. + if linenum > 1: + previous = None + if Match(r'\s*::(?:[\w<>]|::)+\s*&\s*\S', line): + # previous_line\n + ::current_line + previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+[\w<>])\s*$', + clean_lines.elided[linenum - 1]) + elif Match(r'\s*[a-zA-Z_]([\w<>]|::)+\s*&\s*\S', line): + # previous_line::\n + current_line + previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+::)\s*$', + clean_lines.elided[linenum - 1]) + if previous: + line = previous.group(1) + line.lstrip() + else: + # Check for templated parameter that is split across multiple lines + endpos = line.rfind('>') + if endpos > -1: + (_, startline, startpos) = ReverseCloseExpression( + clean_lines, linenum, endpos) + if startpos > -1 and startline < linenum: + # Found the matching < on an earlier line, collect all + # pieces up to current line. + line = '' + for i in xrange(startline, linenum + 1): + line += clean_lines.elided[i].strip() + + # Check for non-const references in function parameters. A single '&' may + # found in the following places: + # inside expression: binary & for bitwise AND + # inside expression: unary & for taking the address of something + # inside declarators: reference parameter + # We will exclude the first two cases by checking that we are not inside a + # function body, including one that was just introduced by a trailing '{'. + # TODO(unknwon): Doesn't account for preprocessor directives. + # TODO(unknown): Doesn't account for 'catch(Exception& e)' [rare]. + check_params = False + if not nesting_state.stack: + check_params = True # top level + elif (isinstance(nesting_state.stack[-1], _ClassInfo) or + isinstance(nesting_state.stack[-1], _NamespaceInfo)): + check_params = True # within class or namespace + elif Match(r'.*{\s*$', line): + if (len(nesting_state.stack) == 1 or + isinstance(nesting_state.stack[-2], _ClassInfo) or + isinstance(nesting_state.stack[-2], _NamespaceInfo)): + check_params = True # just opened global/class/namespace block + # We allow non-const references in a few standard places, like functions + # called "swap()" or iostream operators like "<<" or ">>". Do not check + # those function parameters. + # + # We also accept & in static_assert, which looks like a function but + # it's actually a declaration expression. + whitelisted_functions = (r'(?:[sS]wap(?:<\w:+>)?|' + r'operator\s*[<>][<>]|' + r'static_assert|COMPILE_ASSERT' + r')\s*\(') + if Search(whitelisted_functions, line): + check_params = False + elif not Search(r'\S+\([^)]*$', line): + # Don't see a whitelisted function on this line. Actually we + # didn't see any function name on this line, so this is likely a + # multi-line parameter list. Try a bit harder to catch this case. + for i in xrange(2): + if (linenum > i and + Search(whitelisted_functions, clean_lines.elided[linenum - i - 1])): + check_params = False + break + + if check_params: + decls = ReplaceAll(r'{[^}]*}', ' ', line) # exclude function body + for parameter in re.findall(_RE_PATTERN_REF_PARAM, decls): + if not Match(_RE_PATTERN_CONST_REF_PARAM, parameter): + error(filename, linenum, 'runtime/references', 2, + 'Is this a non-const reference? ' + 'If so, make const or use a pointer: ' + + ReplaceAll(' *<', '<', parameter)) + + +def CheckCStyleCast(filename, linenum, line, raw_line, cast_type, pattern, + error): + """Checks for a C-style cast by looking for the pattern. + + Args: + filename: The name of the current file. + linenum: The number of the line to check. + line: The line of code to check. + raw_line: The raw line of code to check, with comments. + cast_type: The string for the C++ cast to recommend. This is either + reinterpret_cast, static_cast, or const_cast, depending. + pattern: The regular expression used to find C-style casts. + error: The function to call with any errors found. + + Returns: + True if an error was emitted. + False otherwise. + """ + match = Search(pattern, line) + if not match: + return False + + # Exclude lines with sizeof, since sizeof looks like a cast. + sizeof_match = Match(r'.*sizeof\s*$', line[0:match.start(1) - 1]) + if sizeof_match: + return False + + # operator++(int) and operator--(int) + if (line[0:match.start(1) - 1].endswith(' operator++') or + line[0:match.start(1) - 1].endswith(' operator--')): + return False + + # A single unnamed argument for a function tends to look like old + # style cast. If we see those, don't issue warnings for deprecated + # casts, instead issue warnings for unnamed arguments where + # appropriate. + # + # These are things that we want warnings for, since the style guide + # explicitly require all parameters to be named: + # Function(int); + # Function(int) { + # ConstMember(int) const; + # ConstMember(int) const { + # ExceptionMember(int) throw (...); + # ExceptionMember(int) throw (...) { + # PureVirtual(int) = 0; + # + # These are functions of some sort, where the compiler would be fine + # if they had named parameters, but people often omit those + # identifiers to reduce clutter: + # (FunctionPointer)(int); + # (FunctionPointer)(int) = value; + # Function((function_pointer_arg)(int)) + # ; + # <(FunctionPointerTemplateArgument)(int)>; + remainder = line[match.end(0):] + if Match(r'^\s*(?:;|const\b|throw\b|=|>|\{|\))', remainder): + # Looks like an unnamed parameter. + + # Don't warn on any kind of template arguments. + if Match(r'^\s*>', remainder): + return False + + # Don't warn on assignments to function pointers, but keep warnings for + # unnamed parameters to pure virtual functions. Note that this pattern + # will also pass on assignments of "0" to function pointers, but the + # preferred values for those would be "nullptr" or "NULL". + matched_zero = Match(r'^\s=\s*(\S+)\s*;', remainder) + if matched_zero and matched_zero.group(1) != '0': + return False + + # Don't warn on function pointer declarations. For this we need + # to check what came before the "(type)" string. + if Match(r'.*\)\s*$', line[0:match.start(0)]): + return False + + # Don't warn if the parameter is named with block comments, e.g.: + # Function(int /*unused_param*/); + if '/*' in raw_line: + return False + + # Passed all filters, issue warning here. + error(filename, linenum, 'readability/function', 3, + 'All parameters should be named in a function') + return True + + # At this point, all that should be left is actual casts. + error(filename, linenum, 'readability/casting', 4, + 'Using C-style cast. Use %s<%s>(...) instead' % + (cast_type, match.group(1))) + + return True + + +_HEADERS_CONTAINING_TEMPLATES = ( + ('', ('deque',)), + ('', ('unary_function', 'binary_function', + 'plus', 'minus', 'multiplies', 'divides', 'modulus', + 'negate', + 'equal_to', 'not_equal_to', 'greater', 'less', + 'greater_equal', 'less_equal', + 'logical_and', 'logical_or', 'logical_not', + 'unary_negate', 'not1', 'binary_negate', 'not2', + 'bind1st', 'bind2nd', + 'pointer_to_unary_function', + 'pointer_to_binary_function', + 'ptr_fun', + 'mem_fun_t', 'mem_fun', 'mem_fun1_t', 'mem_fun1_ref_t', + 'mem_fun_ref_t', + 'const_mem_fun_t', 'const_mem_fun1_t', + 'const_mem_fun_ref_t', 'const_mem_fun1_ref_t', + 'mem_fun_ref', + )), + ('', ('numeric_limits',)), + ('', ('list',)), + ('', ('map', 'multimap',)), + ('', ('allocator',)), + ('', ('queue', 'priority_queue',)), + ('', ('set', 'multiset',)), + ('', ('stack',)), + ('', ('char_traits', 'basic_string',)), + ('', ('pair',)), + ('', ('vector',)), + + # gcc extensions. + # Note: std::hash is their hash, ::hash is our hash + ('', ('hash_map', 'hash_multimap',)), + ('', ('hash_set', 'hash_multiset',)), + ('', ('slist',)), + ) + +_RE_PATTERN_STRING = re.compile(r'\bstring\b') + +_re_pattern_algorithm_header = [] +for _template in ('copy', 'max', 'min', 'min_element', 'sort', 'swap', + 'transform'): + # Match max(..., ...), max(..., ...), but not foo->max, foo.max or + # type::max(). + _re_pattern_algorithm_header.append( + (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'), + _template, + '')) + +_re_pattern_templates = [] +for _header, _templates in _HEADERS_CONTAINING_TEMPLATES: + for _template in _templates: + _re_pattern_templates.append( + (re.compile(r'(\<|\b)' + _template + r'\s*\<'), + _template + '<>', + _header)) + + +def FilesBelongToSameModule(filename_cc, filename_h): + """Check if these two filenames belong to the same module. + + The concept of a 'module' here is a as follows: + foo.h, foo-inl.h, foo.cc, foo_test.cc and foo_unittest.cc belong to the + same 'module' if they are in the same directory. + some/path/public/xyzzy and some/path/internal/xyzzy are also considered + to belong to the same module here. + + If the filename_cc contains a longer path than the filename_h, for example, + '/absolute/path/to/base/sysinfo.cc', and this file would include + 'base/sysinfo.h', this function also produces the prefix needed to open the + header. This is used by the caller of this function to more robustly open the + header file. We don't have access to the real include paths in this context, + so we need this guesswork here. + + Known bugs: tools/base/bar.cc and base/bar.h belong to the same module + according to this implementation. Because of this, this function gives + some false positives. This should be sufficiently rare in practice. + + Args: + filename_cc: is the path for the .cc file + filename_h: is the path for the header path + + Returns: + Tuple with a bool and a string: + bool: True if filename_cc and filename_h belong to the same module. + string: the additional prefix needed to open the header file. + """ + + if not filename_cc.endswith('.cc'): + return (False, '') + filename_cc = filename_cc[:-len('.cc')] + if filename_cc.endswith('_unittest'): + filename_cc = filename_cc[:-len('_unittest')] + elif filename_cc.endswith('_test'): + filename_cc = filename_cc[:-len('_test')] + filename_cc = filename_cc.replace('/public/', '/') + filename_cc = filename_cc.replace('/internal/', '/') + + if not filename_h.endswith('.h'): + return (False, '') + filename_h = filename_h[:-len('.h')] + if filename_h.endswith('-inl'): + filename_h = filename_h[:-len('-inl')] + filename_h = filename_h.replace('/public/', '/') + filename_h = filename_h.replace('/internal/', '/') + + files_belong_to_same_module = filename_cc.endswith(filename_h) + common_path = '' + if files_belong_to_same_module: + common_path = filename_cc[:-len(filename_h)] + return files_belong_to_same_module, common_path + + +def UpdateIncludeState(filename, include_state, io=codecs): + """Fill up the include_state with new includes found from the file. + + Args: + filename: the name of the header to read. + include_state: an _IncludeState instance in which the headers are inserted. + io: The io factory to use to read the file. Provided for testability. + + Returns: + True if a header was successfully added. False otherwise. + """ + headerfile = None + try: + headerfile = io.open(filename, 'r', 'utf8', 'replace') + except IOError: + return False + linenum = 0 + for line in headerfile: + linenum += 1 + clean_line = CleanseComments(line) + match = _RE_PATTERN_INCLUDE.search(clean_line) + if match: + include = match.group(2) + # The value formatting is cute, but not really used right now. + # What matters here is that the key is in include_state. + include_state.setdefault(include, '%s:%d' % (filename, linenum)) + return True + + +def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, + io=codecs): + """Reports for missing stl includes. + + This function will output warnings to make sure you are including the headers + necessary for the stl containers and functions that you use. We only give one + reason to include a header. For example, if you use both equal_to<> and + less<> in a .h file, only one (the latter in the file) of these will be + reported as a reason to include the . + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + include_state: An _IncludeState instance. + error: The function to call with any errors found. + io: The IO factory to use to read the header file. Provided for unittest + injection. + """ + required = {} # A map of header name to linenumber and the template entity. + # Example of required: { '': (1219, 'less<>') } + + for linenum in xrange(clean_lines.NumLines()): + line = clean_lines.elided[linenum] + if not line or line[0] == '#': + continue + + # String is special -- it is a non-templatized type in STL. + matched = _RE_PATTERN_STRING.search(line) + if matched: + # Don't warn about strings in non-STL namespaces: + # (We check only the first match per line; good enough.) + prefix = line[:matched.start()] + if prefix.endswith('std::') or not prefix.endswith('::'): + required[''] = (linenum, 'string') + + for pattern, template, header in _re_pattern_algorithm_header: + if pattern.search(line): + required[header] = (linenum, template) + + # The following function is just a speed up, no semantics are changed. + if not '<' in line: # Reduces the cpu time usage by skipping lines. + continue + + for pattern, template, header in _re_pattern_templates: + if pattern.search(line): + required[header] = (linenum, template) + + # The policy is that if you #include something in foo.h you don't need to + # include it again in foo.cc. Here, we will look at possible includes. + # Let's copy the include_state so it is only messed up within this function. + include_state = include_state.copy() + + # Did we find the header for this file (if any) and successfully load it? + header_found = False + + # Use the absolute path so that matching works properly. + abs_filename = FileInfo(filename).FullName() + + # For Emacs's flymake. + # If cpplint is invoked from Emacs's flymake, a temporary file is generated + # by flymake and that file name might end with '_flymake.cc'. In that case, + # restore original file name here so that the corresponding header file can be + # found. + # e.g. If the file name is 'foo_flymake.cc', we should search for 'foo.h' + # instead of 'foo_flymake.h' + abs_filename = re.sub(r'_flymake\.cc$', '.cc', abs_filename) + + # include_state is modified during iteration, so we iterate over a copy of + # the keys. + header_keys = include_state.keys() + for header in header_keys: + (same_module, common_path) = FilesBelongToSameModule(abs_filename, header) + fullpath = common_path + header + if same_module and UpdateIncludeState(fullpath, include_state, io): + header_found = True + + # If we can't find the header file for a .cc, assume it's because we don't + # know where to look. In that case we'll give up as we're not sure they + # didn't include it in the .h file. + # TODO(unknown): Do a better job of finding .h files so we are confident that + # not having the .h file means there isn't one. + if filename.endswith('.cc') and not header_found: + return + + # All the lines have been processed, report the errors found. + for required_header_unstripped in required: + template = required[required_header_unstripped][1] + if required_header_unstripped.strip('<>"') not in include_state: + error(filename, required[required_header_unstripped][0], + 'build/include_what_you_use', 4, + 'Add #include ' + required_header_unstripped + ' for ' + template) + + +_RE_PATTERN_EXPLICIT_MAKEPAIR = re.compile(r'\bmake_pair\s*<') + + +def CheckMakePairUsesDeduction(filename, clean_lines, linenum, error): + """Check that make_pair's template arguments are deduced. + + G++ 4.6 in C++0x mode fails badly if make_pair's template arguments are + specified explicitly, and such use isn't intended in any case. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + match = _RE_PATTERN_EXPLICIT_MAKEPAIR.search(line) + if match: + error(filename, linenum, 'build/explicit_make_pair', + 4, # 4 = high confidence + 'For C++11-compatibility, omit template arguments from make_pair' + ' OR use pair directly OR if appropriate, construct a pair directly') + + +def ProcessLine(filename, file_extension, clean_lines, line, + include_state, function_state, nesting_state, error, + extra_check_functions=[]): + """Processes a single line in the file. + + Args: + filename: Filename of the file that is being processed. + file_extension: The extension (dot not included) of the file. + clean_lines: An array of strings, each representing a line of the file, + with comments stripped. + line: Number of line being processed. + include_state: An _IncludeState instance in which the headers are inserted. + function_state: A _FunctionState instance which counts function lines, etc. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: A callable to which errors are reported, which takes 4 arguments: + filename, line number, error level, and message + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ + raw_lines = clean_lines.raw_lines + ParseNolintSuppressions(filename, raw_lines[line], line, error) + nesting_state.Update(filename, clean_lines, line, error) + if nesting_state.stack and nesting_state.stack[-1].inline_asm != _NO_ASM: + return + CheckForFunctionLengths(filename, clean_lines, line, function_state, error) + CheckForMultilineCommentsAndStrings(filename, clean_lines, line, error) + CheckStyle(filename, clean_lines, line, file_extension, nesting_state, error) + CheckLanguage(filename, clean_lines, line, file_extension, include_state, + nesting_state, error) + CheckForNonConstReference(filename, clean_lines, line, nesting_state, error) + CheckForNonStandardConstructs(filename, clean_lines, line, + nesting_state, error) + CheckVlogArguments(filename, clean_lines, line, error) + CheckCaffeAlternatives(filename, clean_lines, line, error) + CheckCaffeDataLayerSetUp(filename, clean_lines, line, error) + CheckCaffeRandom(filename, clean_lines, line, error) + CheckPosixThreading(filename, clean_lines, line, error) + CheckInvalidIncrement(filename, clean_lines, line, error) + CheckMakePairUsesDeduction(filename, clean_lines, line, error) + for check_fn in extra_check_functions: + check_fn(filename, clean_lines, line, error) + +def ProcessFileData(filename, file_extension, lines, error, + extra_check_functions=[]): + """Performs lint checks and reports any errors to the given error function. + + Args: + filename: Filename of the file that is being processed. + file_extension: The extension (dot not included) of the file. + lines: An array of strings, each representing a line of the file, with the + last element being empty if the file is terminated with a newline. + error: A callable to which errors are reported, which takes 4 arguments: + filename, line number, error level, and message + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ + lines = (['// marker so line numbers and indices both start at 1'] + lines + + ['// marker so line numbers end in a known way']) + + include_state = _IncludeState() + function_state = _FunctionState() + nesting_state = _NestingState() + + ResetNolintSuppressions() + + CheckForCopyright(filename, lines, error) + + if file_extension == 'h': + CheckForHeaderGuard(filename, lines, error) + + RemoveMultiLineComments(filename, lines, error) + clean_lines = CleansedLines(lines) + for line in xrange(clean_lines.NumLines()): + ProcessLine(filename, file_extension, clean_lines, line, + include_state, function_state, nesting_state, error, + extra_check_functions) + nesting_state.CheckCompletedBlocks(filename, error) + + CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) + + # We check here rather than inside ProcessLine so that we see raw + # lines rather than "cleaned" lines. + CheckForBadCharacters(filename, lines, error) + + CheckForNewlineAtEOF(filename, lines, error) + +def ProcessFile(filename, vlevel, extra_check_functions=[]): + """Does google-lint on a single file. + + Args: + filename: The name of the file to parse. + + vlevel: The level of errors to report. Every error of confidence + >= verbose_level will be reported. 0 is a good default. + + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ + + _SetVerboseLevel(vlevel) + + try: + # Support the UNIX convention of using "-" for stdin. Note that + # we are not opening the file with universal newline support + # (which codecs doesn't support anyway), so the resulting lines do + # contain trailing '\r' characters if we are reading a file that + # has CRLF endings. + # If after the split a trailing '\r' is present, it is removed + # below. If it is not expected to be present (i.e. os.linesep != + # '\r\n' as in Windows), a warning is issued below if this file + # is processed. + + if filename == '-': + lines = codecs.StreamReaderWriter(sys.stdin, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace').read().split('\n') + else: + lines = codecs.open(filename, 'r', 'utf8', 'replace').read().split('\n') + + carriage_return_found = False + # Remove trailing '\r'. + for linenum in range(len(lines)): + if lines[linenum].endswith('\r'): + lines[linenum] = lines[linenum].rstrip('\r') + carriage_return_found = True + + except IOError: + sys.stderr.write( + "Skipping input '%s': Can't open for reading\n" % filename) + return + + # Note, if no dot is found, this will give the entire filename as the ext. + file_extension = filename[filename.rfind('.') + 1:] + + # When reading from stdin, the extension is unknown, so no cpplint tests + # should rely on the extension. + if filename != '-' and file_extension not in _valid_extensions: + sys.stderr.write('Ignoring %s; not a valid file name ' + '(%s)\n' % (filename, ', '.join(_valid_extensions))) + else: + ProcessFileData(filename, file_extension, lines, Error, + extra_check_functions) + if carriage_return_found and os.linesep != '\r\n': + # Use 0 for linenum since outputting only one error for potentially + # several lines. + Error(filename, 0, 'whitespace/newline', 1, + 'One or more unexpected \\r (^M) found;' + 'better to use only a \\n') + + sys.stderr.write('Done processing %s\n' % filename) + + +def PrintUsage(message): + """Prints a brief usage string and exits, optionally with an error message. + + Args: + message: The optional error message. + """ + sys.stderr.write(_USAGE) + if message: + sys.exit('\nFATAL ERROR: ' + message) + else: + sys.exit(1) + + +def PrintCategories(): + """Prints a list of all the error-categories used by error messages. + + These are the categories used to filter messages via --filter. + """ + sys.stderr.write(''.join(' %s\n' % cat for cat in _ERROR_CATEGORIES)) + sys.exit(0) + + +def ParseArguments(args): + """Parses the command line arguments. + + This may set the output format and verbosity level as side-effects. + + Args: + args: The command line arguments: + + Returns: + The list of filenames to lint. + """ + try: + (opts, filenames) = getopt.getopt(args, '', ['help', 'output=', 'verbose=', + 'counting=', + 'filter=', + 'root=', + 'linelength=', + 'extensions=']) + except getopt.GetoptError: + PrintUsage('Invalid arguments.') + + verbosity = _VerboseLevel() + output_format = _OutputFormat() + filters = '' + counting_style = '' + + for (opt, val) in opts: + if opt == '--help': + PrintUsage(None) + elif opt == '--output': + if val not in ('emacs', 'vs7', 'eclipse'): + PrintUsage('The only allowed output formats are emacs, vs7 and eclipse.') + output_format = val + elif opt == '--verbose': + verbosity = int(val) + elif opt == '--filter': + filters = val + if not filters: + PrintCategories() + elif opt == '--counting': + if val not in ('total', 'toplevel', 'detailed'): + PrintUsage('Valid counting options are total, toplevel, and detailed') + counting_style = val + elif opt == '--root': + global _root + _root = val + elif opt == '--linelength': + global _line_length + try: + _line_length = int(val) + except ValueError: + PrintUsage('Line length must be digits.') + elif opt == '--extensions': + global _valid_extensions + try: + _valid_extensions = set(val.split(',')) + except ValueError: + PrintUsage('Extensions must be comma separated list.') + + if not filenames: + PrintUsage('No files were specified.') + + _SetOutputFormat(output_format) + _SetVerboseLevel(verbosity) + _SetFilters(filters) + _SetCountingStyle(counting_style) + + return filenames + + +def main(): + filenames = ParseArguments(sys.argv[1:]) + + # Change stderr to write with replacement characters so we don't die + # if we try to print something containing non-ASCII characters. + if six.PY2: + sys.stderr = codecs.StreamReaderWriter(sys.stderr, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace') + + _cpplint_state.ResetErrorCounts() + for filename in filenames: + ProcessFile(filename, _cpplint_state.verbose_level) + _cpplint_state.PrintErrorCounts() + + sys.exit(_cpplint_state.error_count > 0) + + +if __name__ == '__main__': + main() diff --git a/3rdparty/caffe/scripts/deploy_docs.sh b/3rdparty/caffe/scripts/deploy_docs.sh new file mode 100755 index 00000000..fdf97f71 --- /dev/null +++ b/3rdparty/caffe/scripts/deploy_docs.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# Publish documentation to the gh-pages site. + +# The remote for pushing the docs (defaults to origin). +# This is where you will submit the PR to BVLC:gh-pages from. +REMOTE=${1:-origin} + +echo "Generating docs and pushing to $REMOTE:gh-pages..." +echo "To build and view docs when not on master, simply do 'jekyll serve -s docs'." +echo + +REMOTE_URL=`git config --get remote.${REMOTE}.url` +BRANCH=`git rev-parse --abbrev-ref HEAD` +MSG=`git log --oneline -1` + +if [[ $BRANCH = 'master' ]]; then + # Find the docs dir, no matter where the script is called + DIR="$( cd "$(dirname "$0")" ; pwd -P )" + DOCS_SITE_DIR=$DIR/../docs/_site + + # Make sure that docs/_site tracks remote:gh-pages. + # If not, then we make a new repo and check out just that branch. + mkdir -p $DOCS_SITE_DIR + cd $DOCS_SITE_DIR + SITE_REMOTE_URL=`git config --get remote.${REMOTE}.url` + SITE_BRANCH=`git rev-parse --abbrev-ref HEAD` + + echo $SITE_REMOTE_URL + echo $SITE_BRANCH + echo `pwd` + + if [[ ( $SITE_REMOTE_URL = $REMOTE_URL ) && ( $SITE_BRANCH = 'gh-pages' ) ]]; then + echo "Confirmed that docs/_site has same remote as main repo, and is on gh-pages." + else + echo "Checking out $REMOTE:gh-pages into docs/_site (will take a little time)." + git init . + git remote add -t gh-pages -f $REMOTE $REMOTE_URL + git checkout gh-pages + fi + + echo "Building the site into docs/_site, and committing the changes." + jekyll build -s .. -d . + git add --all . + git commit -m "$MSG" + git push $REMOTE gh-pages + + echo "All done!" + cd ../.. +else echo "You must run this deployment script from the 'master' branch." +fi diff --git a/3rdparty/caffe/scripts/download_model_binary.py b/3rdparty/caffe/scripts/download_model_binary.py new file mode 100755 index 00000000..a72fd5d7 --- /dev/null +++ b/3rdparty/caffe/scripts/download_model_binary.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python +import os +import sys +import time +import yaml +import hashlib +import argparse + +from six.moves import urllib + +required_keys = ['caffemodel', 'caffemodel_url', 'sha1'] + + +def reporthook(count, block_size, total_size): + """ + From http://blog.moleculea.com/2012/10/04/urlretrieve-progres-indicator/ + """ + global start_time + if count == 0: + start_time = time.time() + return + duration = (time.time() - start_time) or 0.01 + progress_size = int(count * block_size) + speed = int(progress_size / (1024 * duration)) + percent = int(count * block_size * 100 / total_size) + sys.stdout.write("\r...%d%%, %d MB, %d KB/s, %d seconds passed" % + (percent, progress_size / (1024 * 1024), speed, duration)) + sys.stdout.flush() + + +def parse_readme_frontmatter(dirname): + readme_filename = os.path.join(dirname, 'readme.md') + with open(readme_filename) as f: + lines = [line.strip() for line in f.readlines()] + top = lines.index('---') + bottom = lines.index('---', top + 1) + frontmatter = yaml.load('\n'.join(lines[top + 1:bottom])) + assert all(key in frontmatter for key in required_keys) + return dirname, frontmatter + + +def valid_dirname(dirname): + try: + return parse_readme_frontmatter(dirname) + except Exception as e: + print('ERROR: {}'.format(e)) + raise argparse.ArgumentTypeError( + 'Must be valid Caffe model directory with a correct readme.md') + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Download trained model binary.') + parser.add_argument('dirname', type=valid_dirname) + args = parser.parse_args() + + # A tiny hack: the dirname validator also returns readme YAML frontmatter. + dirname = args.dirname[0] + frontmatter = args.dirname[1] + model_filename = os.path.join(dirname, frontmatter['caffemodel']) + + # Closure-d function for checking SHA1. + def model_checks_out(filename=model_filename, sha1=frontmatter['sha1']): + with open(filename, 'rb') as f: + return hashlib.sha1(f.read()).hexdigest() == sha1 + + # Check if model exists. + if os.path.exists(model_filename) and model_checks_out(): + print("Model already exists.") + sys.exit(0) + + # Download and verify model. + urllib.request.urlretrieve( + frontmatter['caffemodel_url'], model_filename, reporthook) + if not model_checks_out(): + print('ERROR: model did not download correctly! Run this again.') + sys.exit(1) diff --git a/3rdparty/caffe/scripts/download_model_from_gist.sh b/3rdparty/caffe/scripts/download_model_from_gist.sh new file mode 100755 index 00000000..89527b75 --- /dev/null +++ b/3rdparty/caffe/scripts/download_model_from_gist.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env sh + +GIST=$1 +DIRNAME=${2:-./models} + +if [ -z $GIST ]; then + echo "usage: download_model_from_gist.sh " + exit +fi + +GIST_DIR=$(echo $GIST | tr '/' '-') +MODEL_DIR="$DIRNAME/$GIST_DIR" + +if [ -d $MODEL_DIR ]; then + echo "$MODEL_DIR already exists! Please make sure you're not overwriting anything important!" + exit +fi + +echo "Downloading Caffe model info to $MODEL_DIR ..." +mkdir -p $MODEL_DIR +wget https://gist.github.com/$GIST/download -O $MODEL_DIR/gist.zip +unzip -j $MODEL_DIR/gist.zip -d $MODEL_DIR +rm $MODEL_DIR/gist.zip +echo "Done" diff --git a/3rdparty/caffe/scripts/gather_examples.sh b/3rdparty/caffe/scripts/gather_examples.sh new file mode 100755 index 00000000..3fc72606 --- /dev/null +++ b/3rdparty/caffe/scripts/gather_examples.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Assemble documentation for the project into one directory via symbolic links. + +# Find the docs dir, no matter where the script is called +ROOT_DIR="$( cd "$(dirname "$0")"/.. ; pwd -P )" +cd $ROOT_DIR + +# Gather docs from examples/**/readme.md +GATHERED_DIR=docs/gathered +rm -r $GATHERED_DIR +mkdir $GATHERED_DIR +for README_FILENAME in $(find examples -iname "readme.md"); do + # Only use file if it is to be included in docs. + if grep -Fxq "include_in_docs: true" $README_FILENAME; then + # Make link to readme.md in docs/gathered/. + # Since everything is called readme.md, rename it by its dirname. + README_DIRNAME=`dirname $README_FILENAME` + DOCS_FILENAME=$GATHERED_DIR/$README_DIRNAME.md + mkdir -p `dirname $DOCS_FILENAME` + ln -s $ROOT_DIR/$README_FILENAME $DOCS_FILENAME + fi +done + +# Gather docs from examples/*.ipynb and add YAML front-matter. +for NOTEBOOK_FILENAME in $(find examples -depth -iname "*.ipynb"); do + DOCS_FILENAME=$GATHERED_DIR/$NOTEBOOK_FILENAME + mkdir -p `dirname $DOCS_FILENAME` + python scripts/copy_notebook.py $NOTEBOOK_FILENAME $DOCS_FILENAME +done diff --git a/3rdparty/caffe/scripts/split_caffe_proto.py b/3rdparty/caffe/scripts/split_caffe_proto.py new file mode 100755 index 00000000..7e9dc3e7 --- /dev/null +++ b/3rdparty/caffe/scripts/split_caffe_proto.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +import mmap +import re +import os +import errno + +script_path = os.path.dirname(os.path.realpath(__file__)) + +# a regex to match the parameter definitions in caffe.proto +r = re.compile(r'(?://.*\n)*message ([^ ]*) \{\n(?: .*\n|\n)*\}') + +# create directory to put caffe.proto fragments +try: + os.mkdir( + os.path.join(script_path, + '../docs/_includes/')) + os.mkdir( + os.path.join(script_path, + '../docs/_includes/proto/')) +except OSError as exception: + if exception.errno != errno.EEXIST: + raise + +caffe_proto_fn = os.path.join( + script_path, + '../src/caffe/proto/caffe.proto') + +with open(caffe_proto_fn, 'r') as fin: + + for m in r.finditer(fin.read(), re.MULTILINE): + fn = os.path.join( + script_path, + '../docs/_includes/proto/%s.txt' % m.group(1)) + with open(fn, 'w') as fout: + fout.write(m.group(0)) diff --git a/3rdparty/caffe/scripts/travis/build.sh b/3rdparty/caffe/scripts/travis/build.sh new file mode 100755 index 00000000..bb9406f0 --- /dev/null +++ b/3rdparty/caffe/scripts/travis/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# build the project + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if ! $WITH_CMAKE ; then + make --jobs $NUM_THREADS all test pycaffe warn +else + cd build + make --jobs $NUM_THREADS all test.testbin +fi +make lint diff --git a/3rdparty/caffe/scripts/travis/configure-cmake.sh b/3rdparty/caffe/scripts/travis/configure-cmake.sh new file mode 100644 index 00000000..772f1e2c --- /dev/null +++ b/3rdparty/caffe/scripts/travis/configure-cmake.sh @@ -0,0 +1,32 @@ +# CMake configuration + +mkdir -p build +cd build + +ARGS="-DCMAKE_BUILD_TYPE=Release -DBLAS=Open" + +if $WITH_PYTHON3 ; then + ARGS="$ARGS -Dpython_version=3" +fi + +if $WITH_IO ; then + ARGS="$ARGS -DUSE_OPENCV=On -DUSE_LMDB=On -DUSE_LEVELDB=On" +else + ARGS="$ARGS -DUSE_OPENCV=Off -DUSE_LMDB=Off -DUSE_LEVELDB=Off" +fi + +if $WITH_CUDA ; then + # Only build SM50 + ARGS="$ARGS -DCPU_ONLY=Off -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN=\"50\" -DCUDA_ARCH_PTX=\"\"" +else + ARGS="$ARGS -DCPU_ONLY=On" +fi + +if $WITH_CUDNN ; then + ARGS="$ARGS -DUSE_CUDNN=On" +else + ARGS="$ARGS -DUSE_CUDNN=Off" +fi + +cmake .. $ARGS + diff --git a/3rdparty/caffe/scripts/travis/configure-make.sh b/3rdparty/caffe/scripts/travis/configure-make.sh new file mode 100644 index 00000000..ddc40fff --- /dev/null +++ b/3rdparty/caffe/scripts/travis/configure-make.sh @@ -0,0 +1,36 @@ +# raw Makefile configuration + +LINE () { + echo "$@" >> Makefile.config +} + +cp Makefile.config.example Makefile.config + +LINE "BLAS := open" +LINE "WITH_PYTHON_LAYER := 1" + +if $WITH_PYTHON3 ; then + # TODO(lukeyeager) this path is currently disabled because of test errors like: + # ImportError: dynamic module does not define init function (PyInit__caffe) + LINE "PYTHON_LIBRARIES := python3.4m boost_python-py34" + LINE "PYTHON_INCLUDE := /usr/include/python3.4 /usr/lib/python3/dist-packages/numpy/core/include" + LINE "INCLUDE_DIRS := \$(INCLUDE_DIRS) \$(PYTHON_INCLUDE)" +fi + +if ! $WITH_IO ; then + LINE "USE_OPENCV := 0" + LINE "USE_LEVELDB := 0" + LINE "USE_LMDB := 0" +fi + +if $WITH_CUDA ; then + # Only build SM50 + LINE "CUDA_ARCH := -gencode arch=compute_50,code=sm_50" +else + LINE "CPU_ONLY := 1" +fi + +if $WITH_CUDNN ; then + LINE "USE_CUDNN := 1" +fi + diff --git a/3rdparty/caffe/scripts/travis/configure.sh b/3rdparty/caffe/scripts/travis/configure.sh new file mode 100755 index 00000000..ef740c89 --- /dev/null +++ b/3rdparty/caffe/scripts/travis/configure.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# configure the project + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if ! $WITH_CMAKE ; then + source $BASEDIR/configure-make.sh +else + source $BASEDIR/configure-cmake.sh +fi diff --git a/3rdparty/caffe/scripts/travis/defaults.sh b/3rdparty/caffe/scripts/travis/defaults.sh new file mode 100755 index 00000000..d69c0a7d --- /dev/null +++ b/3rdparty/caffe/scripts/travis/defaults.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# set default environment variables + +set -e + +WITH_CMAKE=${WITH_CMAKE:-false} +WITH_PYTHON3=${WITH_PYTHON3:-false} +WITH_IO=${WITH_IO:-true} +WITH_CUDA=${WITH_CUDA:-false} +WITH_CUDNN=${WITH_CUDNN:-false} diff --git a/3rdparty/caffe/scripts/travis/install-deps.sh b/3rdparty/caffe/scripts/travis/install-deps.sh new file mode 100755 index 00000000..dac5d2f9 --- /dev/null +++ b/3rdparty/caffe/scripts/travis/install-deps.sh @@ -0,0 +1,112 @@ +#!/bin/bash +# install dependencies +# (this script must be run as root) + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +apt-get -y update +apt-get install -y --no-install-recommends \ + build-essential \ + graphviz \ + libboost-filesystem1.55-dev \ + libboost-python1.55-dev \ + libboost-system1.55-dev \ + libboost-thread1.55-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + libhdf5-serial-dev \ + libopenblas-dev \ + python-virtualenv \ + wget + +if $WITH_CMAKE ; then + apt-get install -y --no-install-recommends cmake +fi + +if ! $WITH_PYTHON3 ; then + # Python2 + apt-get install -y --no-install-recommends \ + libprotobuf-dev \ + protobuf-compiler \ + python-dev \ + python-numpy \ + python-protobuf \ + python-pydot \ + python-skimage +else + # Python3 + apt-get install -y --no-install-recommends \ + python3-dev \ + python3-numpy \ + python3-skimage + + # build Protobuf3 since it's needed for Python3 + PROTOBUF3_DIR=~/protobuf3 + pushd . + if [ -d "$PROTOBUF3_DIR" ] && [ -e "$PROTOBUF3_DIR/src/protoc" ]; then + echo "Using cached protobuf3 build ..." + cd $PROTOBUF3_DIR + else + echo "Building protobuf3 from source ..." + rm -rf $PROTOBUF3_DIR + mkdir $PROTOBUF3_DIR + + # install some more dependencies required to build protobuf3 + apt-get install -y --no-install-recommends \ + curl \ + dh-autoreconf \ + unzip + + wget https://github.com/google/protobuf/archive/3.0.x.tar.gz -O protobuf3.tar.gz + tar -xzf protobuf3.tar.gz -C $PROTOBUF3_DIR --strip 1 + rm protobuf3.tar.gz + cd $PROTOBUF3_DIR + ./autogen.sh + ./configure --prefix=/usr + make --jobs=$NUM_THREADS + fi + make install + popd +fi + +if $WITH_IO ; then + apt-get install -y --no-install-recommends \ + libleveldb-dev \ + liblmdb-dev \ + libopencv-dev \ + libsnappy-dev +fi + +if $WITH_CUDA ; then + # install repo packages + CUDA_REPO_PKG=cuda-repo-ubuntu1404_7.5-18_amd64.deb + wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/$CUDA_REPO_PKG + dpkg -i $CUDA_REPO_PKG + rm $CUDA_REPO_PKG + + if $WITH_CUDNN ; then + ML_REPO_PKG=nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb + wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/$ML_REPO_PKG + dpkg -i $ML_REPO_PKG + fi + + # update package lists + apt-get -y update + + # install packages + CUDA_PKG_VERSION="7-5" + CUDA_VERSION="7.5" + apt-get install -y --no-install-recommends \ + cuda-core-$CUDA_PKG_VERSION \ + cuda-cudart-dev-$CUDA_PKG_VERSION \ + cuda-cublas-dev-$CUDA_PKG_VERSION \ + cuda-curand-dev-$CUDA_PKG_VERSION + # manually create CUDA symlink + ln -s /usr/local/cuda-$CUDA_VERSION /usr/local/cuda + + if $WITH_CUDNN ; then + apt-get install -y --no-install-recommends libcudnn6-dev + fi +fi + diff --git a/3rdparty/caffe/scripts/travis/install-python-deps.sh b/3rdparty/caffe/scripts/travis/install-python-deps.sh new file mode 100755 index 00000000..910d35a9 --- /dev/null +++ b/3rdparty/caffe/scripts/travis/install-python-deps.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# install extra Python dependencies +# (must come after setup-venv) + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if ! $WITH_PYTHON3 ; then + # Python2 + : +else + # Python3 + pip install --pre protobuf==3.0.0b3 + pip install pydot +fi diff --git a/3rdparty/caffe/scripts/travis/setup-venv.sh b/3rdparty/caffe/scripts/travis/setup-venv.sh new file mode 100755 index 00000000..81245f14 --- /dev/null +++ b/3rdparty/caffe/scripts/travis/setup-venv.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# setup a Python virtualenv +# (must come after install-deps) + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +VENV_DIR=${1:-~/venv} + +# setup our own virtualenv +if $WITH_PYTHON3; then + PYTHON_EXE='/usr/bin/python3' +else + PYTHON_EXE='/usr/bin/python2' +fi + +# use --system-site-packages so that Python will use deb packages +virtualenv $VENV_DIR -p $PYTHON_EXE --system-site-packages diff --git a/3rdparty/caffe/scripts/travis/test.sh b/3rdparty/caffe/scripts/travis/test.sh new file mode 100755 index 00000000..fedd7e6b --- /dev/null +++ b/3rdparty/caffe/scripts/travis/test.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# test the project + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if $WITH_CUDA ; then + echo "Skipping tests for CUDA build" + exit 0 +fi + +if ! $WITH_CMAKE ; then + make runtest + make pytest +else + cd build + make runtest + make pytest +fi diff --git a/3rdparty/caffe/scripts/upload_model_to_gist.sh b/3rdparty/caffe/scripts/upload_model_to_gist.sh new file mode 100755 index 00000000..3c4fd64e --- /dev/null +++ b/3rdparty/caffe/scripts/upload_model_to_gist.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Check for valid directory +DIRNAME=$1 +if [ ! -f $DIRNAME/readme.md ]; then + echo "usage: upload_model_to_gist.sh " + echo " /readme.md must exist" +fi +cd $DIRNAME +FILES=`find . -maxdepth 1 -type f ! -name "*.caffemodel*" | xargs echo` + +# Check for gist tool. +gist -v >/dev/null 2>&1 || { echo >&2 "I require 'gist' but it's not installed. Do 'gem install gist'."; exit 1; } + +NAME=`sed -n 's/^name:[[:space:]]*//p' readme.md` +if [ -z "$NAME" ]; then + echo " /readme.md must contain name field in the front-matter." +fi + +GIST=`sed -n 's/^gist_id:[[:space:]]*//p' readme.md` +if [ -z "$GIST" ]; then + echo "Uploading new Gist" + gist -p -d "$NAME" $FILES +else + echo "Updating existing Gist, id $GIST" + gist -u $GIST -d "$NAME" $FILES +fi + +RESULT=$? +if [ $RESULT -eq 0 ]; then + echo "You've uploaded your model!" + echo "Don't forget to add the gist_id field to your /readme.md now!" + echo "Run the command again after you do that, to make sure the Gist id propagates." + echo "" + echo "And do share your model over at https://github.com/BVLC/caffe/wiki/Model-Zoo" +else + echo "Something went wrong!" +fi diff --git a/3rdparty/caffe/src/caffe/CMakeLists.txt b/3rdparty/caffe/src/caffe/CMakeLists.txt new file mode 100644 index 00000000..b9152e92 --- /dev/null +++ b/3rdparty/caffe/src/caffe/CMakeLists.txt @@ -0,0 +1,50 @@ +# generate protobuf sources +file(GLOB proto_files proto/*.proto) +caffe_protobuf_generate_cpp_py(${proto_gen_folder} proto_srcs proto_hdrs proto_python ${proto_files}) + +# include python files either to force generation +add_library(proto STATIC ${proto_hdrs} ${proto_srcs} ${proto_python}) +caffe_default_properties(proto) +target_link_libraries(proto PUBLIC ${PROTOBUF_LIBRARIES}) +target_include_directories(proto PUBLIC ${PROTOBUF_INCLUDE_DIR}) + +list(INSERT Caffe_LINKER_LIBS 0 PUBLIC proto) # note, crucial to prepend! + +# --[ Caffe library + +# creates 'test_srcs', 'srcs', 'test_cuda', 'cuda' lists +caffe_pickup_caffe_sources(${PROJECT_SOURCE_DIR}) + +if(HAVE_CUDA) + caffe_cuda_compile(cuda_objs ${cuda}) + list(APPEND srcs ${cuda_objs} ${cuda}) +endif() + +add_library(caffe ${srcs}) +caffe_default_properties(caffe) +target_link_libraries(caffe ${Caffe_LINKER_LIBS}) +target_include_directories(caffe ${Caffe_INCLUDE_DIRS} + PUBLIC + $ + $) +target_compile_definitions(caffe ${Caffe_DEFINITIONS}) +if(Caffe_COMPILE_OPTIONS) + target_compile_options(caffe ${Caffe_COMPILE_OPTIONS}) +endif() +set_target_properties(caffe PROPERTIES + VERSION ${CAFFE_TARGET_VERSION} + SOVERSION ${CAFFE_TARGET_SOVERSION} + ) + +# ---[ Tests + add_subdirectory(test) + +# ---[ Install +install(DIRECTORY ${Caffe_INCLUDE_DIR}/caffe DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${proto_hdrs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/caffe/proto) +install(TARGETS caffe proto EXPORT CaffeTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +file(WRITE ${PROJECT_BINARY_DIR}/__init__.py) +list(APPEND proto_python ${PROJECT_BINARY_DIR}/__init__.py) +install(PROGRAMS ${proto_python} DESTINATION python/caffe/proto) + diff --git a/3rdparty/caffe/src/caffe/blob.cpp b/3rdparty/caffe/src/caffe/blob.cpp new file mode 100644 index 00000000..603e52f7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/blob.cpp @@ -0,0 +1,561 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/syncedmem.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void Blob::Reshape(const int num, const int channels, const int height, + const int width) { + vector shape(4); + shape[0] = num; + shape[1] = channels; + shape[2] = height; + shape[3] = width; + Reshape(shape); +} + +template +void Blob::Reshape(const vector& shape) { + CHECK_LE(shape.size(), kMaxBlobAxes); + count_ = 1; + shape_.resize(shape.size()); + if (!shape_data_ || shape_data_->size() < shape.size() * sizeof(int)) { + shape_data_.reset(new SyncedMemory(shape.size() * sizeof(int))); + } + int* shape_data = static_cast(shape_data_->mutable_cpu_data()); + for (int i = 0; i < shape.size(); ++i) { + CHECK_GE(shape[i], 0); + if (count_ != 0) { + CHECK_LE(shape[i], INT_MAX / count_) << "blob size exceeds INT_MAX"; + } + count_ *= shape[i]; + shape_[i] = shape[i]; + shape_data[i] = shape[i]; + } + if (count_ > capacity_) { + capacity_ = count_; + data_.reset(new SyncedMemory(capacity_ * sizeof(Dtype))); + diff_.reset(new SyncedMemory(capacity_ * sizeof(Dtype))); + } +} + +template +void Blob::Reshape(const BlobShape& shape) { + CHECK_LE(shape.dim_size(), kMaxBlobAxes); + vector shape_vec(shape.dim_size()); + for (int i = 0; i < shape.dim_size(); ++i) { + shape_vec[i] = shape.dim(i); + } + Reshape(shape_vec); +} + +template +void Blob::ReshapeLike(const Blob& other) { + Reshape(other.shape()); +} + +template +Blob::Blob(const int num, const int channels, const int height, + const int width) + // capacity_ must be initialized before calling Reshape + : capacity_(0) { + Reshape(num, channels, height, width); +} + +template +Blob::Blob(const vector& shape) + // capacity_ must be initialized before calling Reshape + : capacity_(0) { + Reshape(shape); +} + +template +const int* Blob::gpu_shape() const { + CHECK(shape_data_); + return (const int*)shape_data_->gpu_data(); +} + +template +const Dtype* Blob::cpu_data() const { + CHECK(data_); + return (const Dtype*)data_->cpu_data(); +} + +template +void Blob::set_cpu_data(Dtype* data) { + CHECK(data); + // Make sure CPU and GPU sizes remain equal + size_t size = count_ * sizeof(Dtype); + if (data_->size() != size) { + data_.reset(new SyncedMemory(size)); + diff_.reset(new SyncedMemory(size)); + } + data_->set_cpu_data(data); +} + +template +const Dtype* Blob::gpu_data() const { + CHECK(data_); + return (const Dtype*)data_->gpu_data(); +} + +template +void Blob::set_gpu_data(Dtype* data) { + CHECK(data); + // Make sure CPU and GPU sizes remain equal + size_t size = count_ * sizeof(Dtype); + if (data_->size() != size) { + data_.reset(new SyncedMemory(size)); + diff_.reset(new SyncedMemory(size)); + } + data_->set_gpu_data(data); +} + +template +const Dtype* Blob::cpu_diff() const { + CHECK(diff_); + return (const Dtype*)diff_->cpu_data(); +} + +template +const Dtype* Blob::gpu_diff() const { + CHECK(diff_); + return (const Dtype*)diff_->gpu_data(); +} + +template +Dtype* Blob::mutable_cpu_data() { + CHECK(data_); + return static_cast(data_->mutable_cpu_data()); +} + +template +Dtype* Blob::mutable_gpu_data() { + CHECK(data_); + return static_cast(data_->mutable_gpu_data()); +} + +template +Dtype* Blob::mutable_cpu_diff() { + CHECK(diff_); + return static_cast(diff_->mutable_cpu_data()); +} + +template +Dtype* Blob::mutable_gpu_diff() { + CHECK(diff_); + return static_cast(diff_->mutable_gpu_data()); +} + +template +void Blob::ShareData(const Blob& other) { + CHECK_EQ(count_, other.count()); + data_ = other.data(); +} + +template +void Blob::ShareDiff(const Blob& other) { + CHECK_EQ(count_, other.count()); + diff_ = other.diff(); +} + +// The "update" method is used for parameter blobs in a Net, which are stored +// as Blob or Blob -- hence we do not define it for +// Blob or Blob. +template <> void Blob::Update() { NOT_IMPLEMENTED; } +template <> void Blob::Update() { NOT_IMPLEMENTED; } + +template +void Blob::Update() { + // We will perform update based on where the data is located. + switch (data_->head()) { + case SyncedMemory::HEAD_AT_CPU: + // perform computation on CPU + caffe_axpy(count_, Dtype(-1), + static_cast(diff_->cpu_data()), + static_cast(data_->mutable_cpu_data())); + break; + case SyncedMemory::HEAD_AT_GPU: + case SyncedMemory::SYNCED: +#ifndef CPU_ONLY + // perform computation on GPU + caffe_gpu_axpy(count_, Dtype(-1), + static_cast(diff_->gpu_data()), + static_cast(data_->mutable_gpu_data())); +#else + NO_GPU; +#endif + break; + default: + LOG(FATAL) << "Syncedmem not initialized."; + } +} + +template <> unsigned int Blob::asum_data() const { + NOT_IMPLEMENTED; + return 0; +} + +template <> int Blob::asum_data() const { + NOT_IMPLEMENTED; + return 0; +} + +template +Dtype Blob::asum_data() const { + if (!data_) { return 0; } + switch (data_->head()) { + case SyncedMemory::HEAD_AT_CPU: + return caffe_cpu_asum(count_, cpu_data()); + case SyncedMemory::HEAD_AT_GPU: + case SyncedMemory::SYNCED: +#ifndef CPU_ONLY + { + Dtype asum; + caffe_gpu_asum(count_, gpu_data(), &asum); + return asum; + } +#else + NO_GPU; +#endif + case SyncedMemory::UNINITIALIZED: + return 0; + default: + LOG(FATAL) << "Unknown SyncedMemory head state: " << data_->head(); + } + return 0; +} + +template <> unsigned int Blob::asum_diff() const { + NOT_IMPLEMENTED; + return 0; +} + +template <> int Blob::asum_diff() const { + NOT_IMPLEMENTED; + return 0; +} + +template +Dtype Blob::asum_diff() const { + if (!diff_) { return 0; } + switch (diff_->head()) { + case SyncedMemory::HEAD_AT_CPU: + return caffe_cpu_asum(count_, cpu_diff()); + case SyncedMemory::HEAD_AT_GPU: + case SyncedMemory::SYNCED: +#ifndef CPU_ONLY + { + Dtype asum; + caffe_gpu_asum(count_, gpu_diff(), &asum); + return asum; + } +#else + NO_GPU; +#endif + case SyncedMemory::UNINITIALIZED: + return 0; + default: + LOG(FATAL) << "Unknown SyncedMemory head state: " << diff_->head(); + } + return 0; +} + +template <> unsigned int Blob::sumsq_data() const { + NOT_IMPLEMENTED; + return 0; +} + +template <> int Blob::sumsq_data() const { + NOT_IMPLEMENTED; + return 0; +} + +template +Dtype Blob::sumsq_data() const { + Dtype sumsq; + const Dtype* data; + if (!data_) { return 0; } + switch (data_->head()) { + case SyncedMemory::HEAD_AT_CPU: + data = cpu_data(); + sumsq = caffe_cpu_dot(count_, data, data); + break; + case SyncedMemory::HEAD_AT_GPU: + case SyncedMemory::SYNCED: +#ifndef CPU_ONLY + data = gpu_data(); + caffe_gpu_dot(count_, data, data, &sumsq); +#else + NO_GPU; +#endif + break; + case SyncedMemory::UNINITIALIZED: + return 0; + default: + LOG(FATAL) << "Unknown SyncedMemory head state: " << data_->head(); + } + return sumsq; +} + +template <> unsigned int Blob::sumsq_diff() const { + NOT_IMPLEMENTED; + return 0; +} + +template <> int Blob::sumsq_diff() const { + NOT_IMPLEMENTED; + return 0; +} + +template +Dtype Blob::sumsq_diff() const { + Dtype sumsq; + const Dtype* diff; + if (!diff_) { return 0; } + switch (diff_->head()) { + case SyncedMemory::HEAD_AT_CPU: + diff = cpu_diff(); + sumsq = caffe_cpu_dot(count_, diff, diff); + break; + case SyncedMemory::HEAD_AT_GPU: + case SyncedMemory::SYNCED: +#ifndef CPU_ONLY + diff = gpu_diff(); + caffe_gpu_dot(count_, diff, diff, &sumsq); + break; +#else + NO_GPU; +#endif + case SyncedMemory::UNINITIALIZED: + return 0; + default: + LOG(FATAL) << "Unknown SyncedMemory head state: " << data_->head(); + } + return sumsq; +} + +template <> void Blob::scale_data(unsigned int scale_factor) { + NOT_IMPLEMENTED; +} + +template <> void Blob::scale_data(int scale_factor) { + NOT_IMPLEMENTED; +} + +template +void Blob::scale_data(Dtype scale_factor) { + Dtype* data; + if (!data_) { return; } + switch (data_->head()) { + case SyncedMemory::HEAD_AT_CPU: + data = mutable_cpu_data(); + caffe_scal(count_, scale_factor, data); + return; + case SyncedMemory::HEAD_AT_GPU: + case SyncedMemory::SYNCED: +#ifndef CPU_ONLY + data = mutable_gpu_data(); + caffe_gpu_scal(count_, scale_factor, data); + return; +#else + NO_GPU; +#endif + case SyncedMemory::UNINITIALIZED: + return; + default: + LOG(FATAL) << "Unknown SyncedMemory head state: " << data_->head(); + } +} + +template <> void Blob::scale_diff(unsigned int scale_factor) { + NOT_IMPLEMENTED; +} + +template <> void Blob::scale_diff(int scale_factor) { + NOT_IMPLEMENTED; +} + +template +void Blob::scale_diff(Dtype scale_factor) { + Dtype* diff; + if (!diff_) { return; } + switch (diff_->head()) { + case SyncedMemory::HEAD_AT_CPU: + diff = mutable_cpu_diff(); + caffe_scal(count_, scale_factor, diff); + return; + case SyncedMemory::HEAD_AT_GPU: + case SyncedMemory::SYNCED: +#ifndef CPU_ONLY + diff = mutable_gpu_diff(); + caffe_gpu_scal(count_, scale_factor, diff); + return; +#else + NO_GPU; +#endif + case SyncedMemory::UNINITIALIZED: + return; + default: + LOG(FATAL) << "Unknown SyncedMemory head state: " << diff_->head(); + } +} + +template +bool Blob::ShapeEquals(const BlobProto& other) { + if (other.has_num() || other.has_channels() || + other.has_height() || other.has_width()) { + // Using deprecated 4D Blob dimensions -- + // shape is (num, channels, height, width). + // Note: we do not use the normal Blob::num(), Blob::channels(), etc. + // methods as these index from the beginning of the blob shape, where legacy + // parameter blobs were indexed from the end of the blob shape (e.g., bias + // Blob shape (1 x 1 x 1 x N), IP layer weight Blob shape (1 x 1 x M x N)). + return shape_.size() <= 4 && + LegacyShape(-4) == other.num() && + LegacyShape(-3) == other.channels() && + LegacyShape(-2) == other.height() && + LegacyShape(-1) == other.width(); + } + vector other_shape(other.shape().dim_size()); + for (int i = 0; i < other.shape().dim_size(); ++i) { + other_shape[i] = other.shape().dim(i); + } + return shape_ == other_shape; +} + +template +void Blob::CopyFrom(const Blob& source, bool copy_diff, bool reshape) { + if (source.count() != count_ || source.shape() != shape_) { + if (reshape) { + ReshapeLike(source); + } else { + LOG(FATAL) << "Trying to copy blobs of different sizes."; + } + } + switch (Caffe::mode()) { + case Caffe::GPU: + if (copy_diff) { + caffe_copy(count_, source.gpu_diff(), + static_cast(diff_->mutable_gpu_data())); + } else { + caffe_copy(count_, source.gpu_data(), + static_cast(data_->mutable_gpu_data())); + } + break; + case Caffe::CPU: + if (copy_diff) { + caffe_copy(count_, source.cpu_diff(), + static_cast(diff_->mutable_cpu_data())); + } else { + caffe_copy(count_, source.cpu_data(), + static_cast(data_->mutable_cpu_data())); + } + break; + default: + LOG(FATAL) << "Unknown caffe mode."; + } +} + +template +void Blob::FromProto(const BlobProto& proto, bool reshape) { + if (reshape) { + vector shape; + if (proto.has_num() || proto.has_channels() || + proto.has_height() || proto.has_width()) { + // Using deprecated 4D Blob dimensions -- + // shape is (num, channels, height, width). + shape.resize(4); + shape[0] = proto.num(); + shape[1] = proto.channels(); + shape[2] = proto.height(); + shape[3] = proto.width(); + } else { + shape.resize(proto.shape().dim_size()); + for (int i = 0; i < proto.shape().dim_size(); ++i) { + shape[i] = proto.shape().dim(i); + } + } + Reshape(shape); + } else { + CHECK(ShapeEquals(proto)) << "shape mismatch (reshape not set)"; + } + // copy data + Dtype* data_vec = mutable_cpu_data(); + if (proto.double_data_size() > 0) { + CHECK_EQ(count_, proto.double_data_size()); + for (int i = 0; i < count_; ++i) { + data_vec[i] = proto.double_data(i); + } + } else { + CHECK_EQ(count_, proto.data_size()); + for (int i = 0; i < count_; ++i) { + data_vec[i] = proto.data(i); + } + } + if (proto.double_diff_size() > 0) { + CHECK_EQ(count_, proto.double_diff_size()); + Dtype* diff_vec = mutable_cpu_diff(); + for (int i = 0; i < count_; ++i) { + diff_vec[i] = proto.double_diff(i); + } + } else if (proto.diff_size() > 0) { + CHECK_EQ(count_, proto.diff_size()); + Dtype* diff_vec = mutable_cpu_diff(); + for (int i = 0; i < count_; ++i) { + diff_vec[i] = proto.diff(i); + } + } +} + +template <> +void Blob::ToProto(BlobProto* proto, bool write_diff) const { + proto->clear_shape(); + for (int i = 0; i < shape_.size(); ++i) { + proto->mutable_shape()->add_dim(shape_[i]); + } + proto->clear_double_data(); + proto->clear_double_diff(); + const double* data_vec = cpu_data(); + for (int i = 0; i < count_; ++i) { + proto->add_double_data(data_vec[i]); + } + if (write_diff) { + const double* diff_vec = cpu_diff(); + for (int i = 0; i < count_; ++i) { + proto->add_double_diff(diff_vec[i]); + } + } +} + +template <> +void Blob::ToProto(BlobProto* proto, bool write_diff) const { + proto->clear_shape(); + for (int i = 0; i < shape_.size(); ++i) { + proto->mutable_shape()->add_dim(shape_[i]); + } + proto->clear_data(); + proto->clear_diff(); + const float* data_vec = cpu_data(); + for (int i = 0; i < count_; ++i) { + proto->add_data(data_vec[i]); + } + if (write_diff) { + const float* diff_vec = cpu_diff(); + for (int i = 0; i < count_; ++i) { + proto->add_diff(diff_vec[i]); + } + } +} + +INSTANTIATE_CLASS(Blob); +template class Blob; +template class Blob; + +} // namespace caffe + diff --git a/3rdparty/caffe/src/caffe/common.cpp b/3rdparty/caffe/src/caffe/common.cpp new file mode 100644 index 00000000..4f6f9bcc --- /dev/null +++ b/3rdparty/caffe/src/caffe/common.cpp @@ -0,0 +1,325 @@ +#include +#include +#include +#include +#include + +#include "caffe/common.hpp" +#include "caffe/util/rng.hpp" + +namespace caffe { + +// Make sure each thread can have different values. +static boost::thread_specific_ptr thread_instance_; + +Caffe& Caffe::Get() { + if (!thread_instance_.get()) { + thread_instance_.reset(new Caffe()); + } + return *(thread_instance_.get()); +} + +// random seeding +int64_t cluster_seedgen(void) { + int64_t s, seed, pid; + FILE* f = fopen("/dev/urandom", "rb"); + if (f && fread(&seed, 1, sizeof(seed), f) == sizeof(seed)) { + fclose(f); + return seed; + } + + LOG(INFO) << "System entropy source not available, " + "using fallback algorithm to generate seed instead."; + if (f) + fclose(f); + + pid = getpid(); + s = time(NULL); + seed = std::abs(((s * 181) * ((pid - 83) * 359)) % 104729); + return seed; +} + + +void GlobalInit(int* pargc, char*** pargv) { + // Google flags. + ::gflags::ParseCommandLineFlags(pargc, pargv, true); + // Google logging. + ::google::InitGoogleLogging(*(pargv)[0]); + // Provide a backtrace on segfault. + ::google::InstallFailureSignalHandler(); +} + +#ifdef CPU_ONLY // CPU-only Caffe. + +Caffe::Caffe() + : random_generator_(), mode_(Caffe::CPU), + solver_count_(1), solver_rank_(0), multiprocess_(false) { } + +Caffe::~Caffe() { } + +void Caffe::set_random_seed(const unsigned int seed) { + // RNG seed + Get().random_generator_.reset(new RNG(seed)); +} + +void Caffe::SetDevice(const int device_id) { + NO_GPU; +} + +void Caffe::DeviceQuery() { + NO_GPU; +} + +bool Caffe::CheckDevice(const int device_id) { + NO_GPU; + return false; +} + +int Caffe::FindDevice(const int start_id) { + NO_GPU; + return -1; +} + +class Caffe::RNG::Generator { + public: + Generator() : rng_(new caffe::rng_t(cluster_seedgen())) {} + explicit Generator(unsigned int seed) : rng_(new caffe::rng_t(seed)) {} + caffe::rng_t* rng() { return rng_.get(); } + private: + shared_ptr rng_; +}; + +Caffe::RNG::RNG() : generator_(new Generator()) { } + +Caffe::RNG::RNG(unsigned int seed) : generator_(new Generator(seed)) { } + +Caffe::RNG& Caffe::RNG::operator=(const RNG& other) { + generator_ = other.generator_; + return *this; +} + +void* Caffe::RNG::generator() { + return static_cast(generator_->rng()); +} + +#else // Normal GPU + CPU Caffe. + +Caffe::Caffe() + : cublas_handle_(NULL), curand_generator_(NULL), random_generator_(), + mode_(Caffe::CPU), + solver_count_(1), solver_rank_(0), multiprocess_(false) { + // Try to create a cublas handler, and report an error if failed (but we will + // keep the program running as one might just want to run CPU code). + if (cublasCreate(&cublas_handle_) != CUBLAS_STATUS_SUCCESS) { + LOG(ERROR) << "Cannot create Cublas handle. Cublas won't be available."; + } + // Try to create a curand handler. + if (curandCreateGenerator(&curand_generator_, CURAND_RNG_PSEUDO_DEFAULT) + != CURAND_STATUS_SUCCESS || + curandSetPseudoRandomGeneratorSeed(curand_generator_, cluster_seedgen()) + != CURAND_STATUS_SUCCESS) { + LOG(ERROR) << "Cannot create Curand generator. Curand won't be available."; + } +} + +Caffe::~Caffe() { + if (cublas_handle_) CUBLAS_CHECK(cublasDestroy(cublas_handle_)); + if (curand_generator_) { + CURAND_CHECK(curandDestroyGenerator(curand_generator_)); + } +} + +void Caffe::set_random_seed(const unsigned int seed) { + // Curand seed + static bool g_curand_availability_logged = false; + if (Get().curand_generator_) { + CURAND_CHECK(curandSetPseudoRandomGeneratorSeed(curand_generator(), + seed)); + CURAND_CHECK(curandSetGeneratorOffset(curand_generator(), 0)); + } else { + if (!g_curand_availability_logged) { + LOG(ERROR) << + "Curand not available. Skipping setting the curand seed."; + g_curand_availability_logged = true; + } + } + // RNG seed + Get().random_generator_.reset(new RNG(seed)); +} + +void Caffe::SetDevice(const int device_id) { + int current_device; + CUDA_CHECK(cudaGetDevice(¤t_device)); + if (current_device == device_id) { + return; + } + // The call to cudaSetDevice must come before any calls to Get, which + // may perform initialization using the GPU. + CUDA_CHECK(cudaSetDevice(device_id)); + if (Get().cublas_handle_) CUBLAS_CHECK(cublasDestroy(Get().cublas_handle_)); + if (Get().curand_generator_) { + CURAND_CHECK(curandDestroyGenerator(Get().curand_generator_)); + } + CUBLAS_CHECK(cublasCreate(&Get().cublas_handle_)); + CURAND_CHECK(curandCreateGenerator(&Get().curand_generator_, + CURAND_RNG_PSEUDO_DEFAULT)); + CURAND_CHECK(curandSetPseudoRandomGeneratorSeed(Get().curand_generator_, + cluster_seedgen())); +} + +void Caffe::DeviceQuery() { + cudaDeviceProp prop; + int device; + if (cudaSuccess != cudaGetDevice(&device)) { + printf("No cuda device present.\n"); + return; + } + CUDA_CHECK(cudaGetDeviceProperties(&prop, device)); + LOG(INFO) << "Device id: " << device; + LOG(INFO) << "Major revision number: " << prop.major; + LOG(INFO) << "Minor revision number: " << prop.minor; + LOG(INFO) << "Name: " << prop.name; + LOG(INFO) << "Total global memory: " << prop.totalGlobalMem; + LOG(INFO) << "Total shared memory per block: " << prop.sharedMemPerBlock; + LOG(INFO) << "Total registers per block: " << prop.regsPerBlock; + LOG(INFO) << "Warp size: " << prop.warpSize; + LOG(INFO) << "Maximum memory pitch: " << prop.memPitch; + LOG(INFO) << "Maximum threads per block: " << prop.maxThreadsPerBlock; + LOG(INFO) << "Maximum dimension of block: " + << prop.maxThreadsDim[0] << ", " << prop.maxThreadsDim[1] << ", " + << prop.maxThreadsDim[2]; + LOG(INFO) << "Maximum dimension of grid: " + << prop.maxGridSize[0] << ", " << prop.maxGridSize[1] << ", " + << prop.maxGridSize[2]; + LOG(INFO) << "Clock rate: " << prop.clockRate; + LOG(INFO) << "Total constant memory: " << prop.totalConstMem; + LOG(INFO) << "Texture alignment: " << prop.textureAlignment; + LOG(INFO) << "Concurrent copy and execution: " + << (prop.deviceOverlap ? "Yes" : "No"); + LOG(INFO) << "Number of multiprocessors: " << prop.multiProcessorCount; + LOG(INFO) << "Kernel execution timeout: " + << (prop.kernelExecTimeoutEnabled ? "Yes" : "No"); + return; +} + +bool Caffe::CheckDevice(const int device_id) { + // This function checks the availability of GPU #device_id. + // It attempts to create a context on the device by calling cudaFree(0). + // cudaSetDevice() alone is not sufficient to check the availability. + // It lazily records device_id, however, does not initialize a + // context. So it does not know if the host thread has the permission to use + // the device or not. + // + // In a shared environment where the devices are set to EXCLUSIVE_PROCESS + // or EXCLUSIVE_THREAD mode, cudaSetDevice() returns cudaSuccess + // even if the device is exclusively occupied by another process or thread. + // Cuda operations that initialize the context are needed to check + // the permission. cudaFree(0) is one of those with no side effect, + // except the context initialization. + bool r = ((cudaSuccess == cudaSetDevice(device_id)) && + (cudaSuccess == cudaFree(0))); + // reset any error that may have occurred. + cudaGetLastError(); + return r; +} + +int Caffe::FindDevice(const int start_id) { + // This function finds the first available device by checking devices with + // ordinal from start_id to the highest available value. In the + // EXCLUSIVE_PROCESS or EXCLUSIVE_THREAD mode, if it succeeds, it also + // claims the device due to the initialization of the context. + int count = 0; + CUDA_CHECK(cudaGetDeviceCount(&count)); + for (int i = start_id; i < count; i++) { + if (CheckDevice(i)) return i; + } + return -1; +} + +class Caffe::RNG::Generator { + public: + Generator() : rng_(new caffe::rng_t(cluster_seedgen())) {} + explicit Generator(unsigned int seed) : rng_(new caffe::rng_t(seed)) {} + caffe::rng_t* rng() { return rng_.get(); } + private: + shared_ptr rng_; +}; + +Caffe::RNG::RNG() : generator_(new Generator()) { } + +Caffe::RNG::RNG(unsigned int seed) : generator_(new Generator(seed)) { } + +Caffe::RNG& Caffe::RNG::operator=(const RNG& other) { + generator_.reset(other.generator_.get()); + return *this; +} + +void* Caffe::RNG::generator() { + return static_cast(generator_->rng()); +} + +const char* cublasGetErrorString(cublasStatus_t error) { + switch (error) { + case CUBLAS_STATUS_SUCCESS: + return "CUBLAS_STATUS_SUCCESS"; + case CUBLAS_STATUS_NOT_INITIALIZED: + return "CUBLAS_STATUS_NOT_INITIALIZED"; + case CUBLAS_STATUS_ALLOC_FAILED: + return "CUBLAS_STATUS_ALLOC_FAILED"; + case CUBLAS_STATUS_INVALID_VALUE: + return "CUBLAS_STATUS_INVALID_VALUE"; + case CUBLAS_STATUS_ARCH_MISMATCH: + return "CUBLAS_STATUS_ARCH_MISMATCH"; + case CUBLAS_STATUS_MAPPING_ERROR: + return "CUBLAS_STATUS_MAPPING_ERROR"; + case CUBLAS_STATUS_EXECUTION_FAILED: + return "CUBLAS_STATUS_EXECUTION_FAILED"; + case CUBLAS_STATUS_INTERNAL_ERROR: + return "CUBLAS_STATUS_INTERNAL_ERROR"; +#if CUDA_VERSION >= 6000 + case CUBLAS_STATUS_NOT_SUPPORTED: + return "CUBLAS_STATUS_NOT_SUPPORTED"; +#endif +#if CUDA_VERSION >= 6050 + case CUBLAS_STATUS_LICENSE_ERROR: + return "CUBLAS_STATUS_LICENSE_ERROR"; +#endif + } + return "Unknown cublas status"; +} + +const char* curandGetErrorString(curandStatus_t error) { + switch (error) { + case CURAND_STATUS_SUCCESS: + return "CURAND_STATUS_SUCCESS"; + case CURAND_STATUS_VERSION_MISMATCH: + return "CURAND_STATUS_VERSION_MISMATCH"; + case CURAND_STATUS_NOT_INITIALIZED: + return "CURAND_STATUS_NOT_INITIALIZED"; + case CURAND_STATUS_ALLOCATION_FAILED: + return "CURAND_STATUS_ALLOCATION_FAILED"; + case CURAND_STATUS_TYPE_ERROR: + return "CURAND_STATUS_TYPE_ERROR"; + case CURAND_STATUS_OUT_OF_RANGE: + return "CURAND_STATUS_OUT_OF_RANGE"; + case CURAND_STATUS_LENGTH_NOT_MULTIPLE: + return "CURAND_STATUS_LENGTH_NOT_MULTIPLE"; + case CURAND_STATUS_DOUBLE_PRECISION_REQUIRED: + return "CURAND_STATUS_DOUBLE_PRECISION_REQUIRED"; + case CURAND_STATUS_LAUNCH_FAILURE: + return "CURAND_STATUS_LAUNCH_FAILURE"; + case CURAND_STATUS_PREEXISTING_FAILURE: + return "CURAND_STATUS_PREEXISTING_FAILURE"; + case CURAND_STATUS_INITIALIZATION_FAILED: + return "CURAND_STATUS_INITIALIZATION_FAILED"; + case CURAND_STATUS_ARCH_MISMATCH: + return "CURAND_STATUS_ARCH_MISMATCH"; + case CURAND_STATUS_INTERNAL_ERROR: + return "CURAND_STATUS_INTERNAL_ERROR"; + } + return "Unknown curand status"; +} + +#endif // CPU_ONLY + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/data_transformer.cpp b/3rdparty/caffe/src/caffe/data_transformer.cpp new file mode 100644 index 00000000..3012251e --- /dev/null +++ b/3rdparty/caffe/src/caffe/data_transformer.cpp @@ -0,0 +1,545 @@ +#ifdef USE_OPENCV +#include +#endif // USE_OPENCV + +#include +#include + +#include "caffe/data_transformer.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/util/rng.hpp" + +namespace caffe { + +template +DataTransformer::DataTransformer(const TransformationParameter& param, + Phase phase) + : param_(param), phase_(phase) { + // check if we want to use mean_file + if (param_.has_mean_file()) { + CHECK_EQ(param_.mean_value_size(), 0) << + "Cannot specify mean_file and mean_value at the same time"; + const string& mean_file = param.mean_file(); + if (Caffe::root_solver()) { + LOG(INFO) << "Loading mean file from: " << mean_file; + } + BlobProto blob_proto; + ReadProtoFromBinaryFileOrDie(mean_file.c_str(), &blob_proto); + data_mean_.FromProto(blob_proto); + } + // check if we want to use mean_value + if (param_.mean_value_size() > 0) { + CHECK(param_.has_mean_file() == false) << + "Cannot specify mean_file and mean_value at the same time"; + for (int c = 0; c < param_.mean_value_size(); ++c) { + mean_values_.push_back(param_.mean_value(c)); + } + } +} + +template +void DataTransformer::Transform(const Datum& datum, + Dtype* transformed_data) { + const string& data = datum.data(); + const int datum_channels = datum.channels(); + const int datum_height = datum.height(); + const int datum_width = datum.width(); + + const int crop_size = param_.crop_size(); + const Dtype scale = param_.scale(); + const bool do_mirror = param_.mirror() && Rand(2); + const bool has_mean_file = param_.has_mean_file(); + const bool has_uint8 = data.size() > 0; + const bool has_mean_values = mean_values_.size() > 0; + + CHECK_GT(datum_channels, 0); + CHECK_GE(datum_height, crop_size); + CHECK_GE(datum_width, crop_size); + + Dtype* mean = NULL; + if (has_mean_file) { + CHECK_EQ(datum_channels, data_mean_.channels()); + CHECK_EQ(datum_height, data_mean_.height()); + CHECK_EQ(datum_width, data_mean_.width()); + mean = data_mean_.mutable_cpu_data(); + } + if (has_mean_values) { + CHECK(mean_values_.size() == 1 || mean_values_.size() == datum_channels) << + "Specify either 1 mean_value or as many as channels: " << datum_channels; + if (datum_channels > 1 && mean_values_.size() == 1) { + // Replicate the mean_value for simplicity + for (int c = 1; c < datum_channels; ++c) { + mean_values_.push_back(mean_values_[0]); + } + } + } + + int height = datum_height; + int width = datum_width; + + int h_off = 0; + int w_off = 0; + if (crop_size) { + height = crop_size; + width = crop_size; + // We only do random crop when we do training. + if (phase_ == TRAIN) { + h_off = Rand(datum_height - crop_size + 1); + w_off = Rand(datum_width - crop_size + 1); + } else { + h_off = (datum_height - crop_size) / 2; + w_off = (datum_width - crop_size) / 2; + } + } + + Dtype datum_element; + int top_index, data_index; + for (int c = 0; c < datum_channels; ++c) { + for (int h = 0; h < height; ++h) { + for (int w = 0; w < width; ++w) { + data_index = (c * datum_height + h_off + h) * datum_width + w_off + w; + if (do_mirror) { + top_index = (c * height + h) * width + (width - 1 - w); + } else { + top_index = (c * height + h) * width + w; + } + if (has_uint8) { + datum_element = + static_cast(static_cast(data[data_index])); + } else { + datum_element = datum.float_data(data_index); + } + if (has_mean_file) { + transformed_data[top_index] = + (datum_element - mean[data_index]) * scale; + } else { + if (has_mean_values) { + transformed_data[top_index] = + (datum_element - mean_values_[c]) * scale; + } else { + transformed_data[top_index] = datum_element * scale; + } + } + } + } + } +} + + +template +void DataTransformer::Transform(const Datum& datum, + Blob* transformed_blob) { + // If datum is encoded, decode and transform the cv::image. + if (datum.encoded()) { +#ifdef USE_OPENCV + CHECK(!(param_.force_color() && param_.force_gray())) + << "cannot set both force_color and force_gray"; + cv::Mat cv_img; + if (param_.force_color() || param_.force_gray()) { + // If force_color then decode in color otherwise decode in gray. + cv_img = DecodeDatumToCVMat(datum, param_.force_color()); + } else { + cv_img = DecodeDatumToCVMatNative(datum); + } + // Transform the cv::image into blob. + return Transform(cv_img, transformed_blob); +#else + LOG(FATAL) << "Encoded datum requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV + } else { + if (param_.force_color() || param_.force_gray()) { + LOG(ERROR) << "force_color and force_gray only for encoded datum"; + } + } + + const int crop_size = param_.crop_size(); + const int datum_channels = datum.channels(); + const int datum_height = datum.height(); + const int datum_width = datum.width(); + + // Check dimensions. + const int channels = transformed_blob->channels(); + const int height = transformed_blob->height(); + const int width = transformed_blob->width(); + const int num = transformed_blob->num(); + + CHECK_EQ(channels, datum_channels); + CHECK_LE(height, datum_height); + CHECK_LE(width, datum_width); + CHECK_GE(num, 1); + + if (crop_size) { + CHECK_EQ(crop_size, height); + CHECK_EQ(crop_size, width); + } else { + CHECK_EQ(datum_height, height); + CHECK_EQ(datum_width, width); + } + + Dtype* transformed_data = transformed_blob->mutable_cpu_data(); + Transform(datum, transformed_data); +} + +template +void DataTransformer::Transform(const vector & datum_vector, + Blob* transformed_blob) { + const int datum_num = datum_vector.size(); + const int num = transformed_blob->num(); + const int channels = transformed_blob->channels(); + const int height = transformed_blob->height(); + const int width = transformed_blob->width(); + + CHECK_GT(datum_num, 0) << "There is no datum to add"; + CHECK_LE(datum_num, num) << + "The size of datum_vector must be no greater than transformed_blob->num()"; + Blob uni_blob(1, channels, height, width); + for (int item_id = 0; item_id < datum_num; ++item_id) { + int offset = transformed_blob->offset(item_id); + uni_blob.set_cpu_data(transformed_blob->mutable_cpu_data() + offset); + Transform(datum_vector[item_id], &uni_blob); + } +} + +#ifdef USE_OPENCV +template +void DataTransformer::Transform(const vector & mat_vector, + Blob* transformed_blob) { + const int mat_num = mat_vector.size(); + const int num = transformed_blob->num(); + const int channels = transformed_blob->channels(); + const int height = transformed_blob->height(); + const int width = transformed_blob->width(); + + CHECK_GT(mat_num, 0) << "There is no MAT to add"; + CHECK_EQ(mat_num, num) << + "The size of mat_vector must be equals to transformed_blob->num()"; + Blob uni_blob(1, channels, height, width); + for (int item_id = 0; item_id < mat_num; ++item_id) { + int offset = transformed_blob->offset(item_id); + uni_blob.set_cpu_data(transformed_blob->mutable_cpu_data() + offset); + Transform(mat_vector[item_id], &uni_blob); + } +} + +template +void DataTransformer::Transform(const cv::Mat& cv_img, + Blob* transformed_blob) { + const int crop_size = param_.crop_size(); + const int img_channels = cv_img.channels(); + const int img_height = cv_img.rows; + const int img_width = cv_img.cols; + + // Check dimensions. + const int channels = transformed_blob->channels(); + const int height = transformed_blob->height(); + const int width = transformed_blob->width(); + const int num = transformed_blob->num(); + + CHECK_EQ(channels, img_channels); + CHECK_LE(height, img_height); + CHECK_LE(width, img_width); + CHECK_GE(num, 1); + + CHECK(cv_img.depth() == CV_8U) << "Image data type must be unsigned byte"; + + const Dtype scale = param_.scale(); + const bool do_mirror = param_.mirror() && Rand(2); + const bool has_mean_file = param_.has_mean_file(); + const bool has_mean_values = mean_values_.size() > 0; + + CHECK_GT(img_channels, 0); + CHECK_GE(img_height, crop_size); + CHECK_GE(img_width, crop_size); + + Dtype* mean = NULL; + if (has_mean_file) { + CHECK_EQ(img_channels, data_mean_.channels()); + CHECK_EQ(img_height, data_mean_.height()); + CHECK_EQ(img_width, data_mean_.width()); + mean = data_mean_.mutable_cpu_data(); + } + if (has_mean_values) { + CHECK(mean_values_.size() == 1 || mean_values_.size() == img_channels) << + "Specify either 1 mean_value or as many as channels: " << img_channels; + if (img_channels > 1 && mean_values_.size() == 1) { + // Replicate the mean_value for simplicity + for (int c = 1; c < img_channels; ++c) { + mean_values_.push_back(mean_values_[0]); + } + } + } + + int h_off = 0; + int w_off = 0; + cv::Mat cv_cropped_img = cv_img; + if (crop_size) { + CHECK_EQ(crop_size, height); + CHECK_EQ(crop_size, width); + // We only do random crop when we do training. + if (phase_ == TRAIN) { + h_off = Rand(img_height - crop_size + 1); + w_off = Rand(img_width - crop_size + 1); + } else { + h_off = (img_height - crop_size) / 2; + w_off = (img_width - crop_size) / 2; + } + cv::Rect roi(w_off, h_off, crop_size, crop_size); + cv_cropped_img = cv_img(roi); + } else { + CHECK_EQ(img_height, height); + CHECK_EQ(img_width, width); + } + + CHECK(cv_cropped_img.data); + + Dtype* transformed_data = transformed_blob->mutable_cpu_data(); + int top_index; + for (int h = 0; h < height; ++h) { + const uchar* ptr = cv_cropped_img.ptr(h); + int img_index = 0; + for (int w = 0; w < width; ++w) { + for (int c = 0; c < img_channels; ++c) { + if (do_mirror) { + top_index = (c * height + h) * width + (width - 1 - w); + } else { + top_index = (c * height + h) * width + w; + } + // int top_index = (c * height + h) * width + w; + Dtype pixel = static_cast(ptr[img_index++]); + if (has_mean_file) { + int mean_index = (c * img_height + h_off + h) * img_width + w_off + w; + transformed_data[top_index] = + (pixel - mean[mean_index]) * scale; + } else { + if (has_mean_values) { + transformed_data[top_index] = + (pixel - mean_values_[c]) * scale; + } else { + transformed_data[top_index] = pixel * scale; + } + } + } + } + } +} +#endif // USE_OPENCV + +template +void DataTransformer::Transform(Blob* input_blob, + Blob* transformed_blob) { + const int crop_size = param_.crop_size(); + const int input_num = input_blob->num(); + const int input_channels = input_blob->channels(); + const int input_height = input_blob->height(); + const int input_width = input_blob->width(); + + if (transformed_blob->count() == 0) { + // Initialize transformed_blob with the right shape. + if (crop_size) { + transformed_blob->Reshape(input_num, input_channels, + crop_size, crop_size); + } else { + transformed_blob->Reshape(input_num, input_channels, + input_height, input_width); + } + } + + const int num = transformed_blob->num(); + const int channels = transformed_blob->channels(); + const int height = transformed_blob->height(); + const int width = transformed_blob->width(); + const int size = transformed_blob->count(); + + CHECK_LE(input_num, num); + CHECK_EQ(input_channels, channels); + CHECK_GE(input_height, height); + CHECK_GE(input_width, width); + + + const Dtype scale = param_.scale(); + const bool do_mirror = param_.mirror() && Rand(2); + const bool has_mean_file = param_.has_mean_file(); + const bool has_mean_values = mean_values_.size() > 0; + + int h_off = 0; + int w_off = 0; + if (crop_size) { + CHECK_EQ(crop_size, height); + CHECK_EQ(crop_size, width); + // We only do random crop when we do training. + if (phase_ == TRAIN) { + h_off = Rand(input_height - crop_size + 1); + w_off = Rand(input_width - crop_size + 1); + } else { + h_off = (input_height - crop_size) / 2; + w_off = (input_width - crop_size) / 2; + } + } else { + CHECK_EQ(input_height, height); + CHECK_EQ(input_width, width); + } + + Dtype* input_data = input_blob->mutable_cpu_data(); + if (has_mean_file) { + CHECK_EQ(input_channels, data_mean_.channels()); + CHECK_EQ(input_height, data_mean_.height()); + CHECK_EQ(input_width, data_mean_.width()); + for (int n = 0; n < input_num; ++n) { + int offset = input_blob->offset(n); + caffe_sub(data_mean_.count(), input_data + offset, + data_mean_.cpu_data(), input_data + offset); + } + } + + if (has_mean_values) { + CHECK(mean_values_.size() == 1 || mean_values_.size() == input_channels) << + "Specify either 1 mean_value or as many as channels: " << input_channels; + if (mean_values_.size() == 1) { + caffe_add_scalar(input_blob->count(), -(mean_values_[0]), input_data); + } else { + for (int n = 0; n < input_num; ++n) { + for (int c = 0; c < input_channels; ++c) { + int offset = input_blob->offset(n, c); + caffe_add_scalar(input_height * input_width, -(mean_values_[c]), + input_data + offset); + } + } + } + } + + Dtype* transformed_data = transformed_blob->mutable_cpu_data(); + + for (int n = 0; n < input_num; ++n) { + int top_index_n = n * channels; + int data_index_n = n * channels; + for (int c = 0; c < channels; ++c) { + int top_index_c = (top_index_n + c) * height; + int data_index_c = (data_index_n + c) * input_height + h_off; + for (int h = 0; h < height; ++h) { + int top_index_h = (top_index_c + h) * width; + int data_index_h = (data_index_c + h) * input_width + w_off; + if (do_mirror) { + int top_index_w = top_index_h + width - 1; + for (int w = 0; w < width; ++w) { + transformed_data[top_index_w-w] = input_data[data_index_h + w]; + } + } else { + for (int w = 0; w < width; ++w) { + transformed_data[top_index_h + w] = input_data[data_index_h + w]; + } + } + } + } + } + if (scale != Dtype(1)) { + DLOG(INFO) << "Scale: " << scale; + caffe_scal(size, scale, transformed_data); + } +} + +template +vector DataTransformer::InferBlobShape(const Datum& datum) { + if (datum.encoded()) { +#ifdef USE_OPENCV + CHECK(!(param_.force_color() && param_.force_gray())) + << "cannot set both force_color and force_gray"; + cv::Mat cv_img; + if (param_.force_color() || param_.force_gray()) { + // If force_color then decode in color otherwise decode in gray. + cv_img = DecodeDatumToCVMat(datum, param_.force_color()); + } else { + cv_img = DecodeDatumToCVMatNative(datum); + } + // InferBlobShape using the cv::image. + return InferBlobShape(cv_img); +#else + LOG(FATAL) << "Encoded datum requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV + } + const int crop_size = param_.crop_size(); + const int datum_channels = datum.channels(); + const int datum_height = datum.height(); + const int datum_width = datum.width(); + // Check dimensions. + CHECK_GT(datum_channels, 0); + CHECK_GE(datum_height, crop_size); + CHECK_GE(datum_width, crop_size); + // Build BlobShape. + vector shape(4); + shape[0] = 1; + shape[1] = datum_channels; + shape[2] = (crop_size)? crop_size: datum_height; + shape[3] = (crop_size)? crop_size: datum_width; + return shape; +} + +template +vector DataTransformer::InferBlobShape( + const vector & datum_vector) { + const int num = datum_vector.size(); + CHECK_GT(num, 0) << "There is no datum to in the vector"; + // Use first datum in the vector to InferBlobShape. + vector shape = InferBlobShape(datum_vector[0]); + // Adjust num to the size of the vector. + shape[0] = num; + return shape; +} + +#ifdef USE_OPENCV +template +vector DataTransformer::InferBlobShape(const cv::Mat& cv_img) { + const int crop_size = param_.crop_size(); + const int img_channels = cv_img.channels(); + const int img_height = cv_img.rows; + const int img_width = cv_img.cols; + // Check dimensions. + CHECK_GT(img_channels, 0); + CHECK_GE(img_height, crop_size); + CHECK_GE(img_width, crop_size); + // Build BlobShape. + vector shape(4); + shape[0] = 1; + shape[1] = img_channels; + shape[2] = (crop_size)? crop_size: img_height; + shape[3] = (crop_size)? crop_size: img_width; + return shape; +} + +template +vector DataTransformer::InferBlobShape( + const vector & mat_vector) { + const int num = mat_vector.size(); + CHECK_GT(num, 0) << "There is no cv_img to in the vector"; + // Use first cv_img in the vector to InferBlobShape. + vector shape = InferBlobShape(mat_vector[0]); + // Adjust num to the size of the vector. + shape[0] = num; + return shape; +} +#endif // USE_OPENCV + +template +void DataTransformer::InitRand() { + const bool needs_rand = param_.mirror() || + (phase_ == TRAIN && param_.crop_size()); + if (needs_rand) { + const unsigned int rng_seed = caffe_rng_rand(); + rng_.reset(new Caffe::RNG(rng_seed)); + } else { + rng_.reset(); + } +} + +template +int DataTransformer::Rand(int n) { + CHECK(rng_); + CHECK_GT(n, 0); + caffe::rng_t* rng = + static_cast(rng_->generator()); + return ((*rng)() % n); +} + +INSTANTIATE_CLASS(DataTransformer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/internal_thread.cpp b/3rdparty/caffe/src/caffe/internal_thread.cpp new file mode 100644 index 00000000..11de4979 --- /dev/null +++ b/3rdparty/caffe/src/caffe/internal_thread.cpp @@ -0,0 +1,68 @@ +#include +#include + +#include "caffe/internal_thread.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +InternalThread::~InternalThread() { + StopInternalThread(); +} + +bool InternalThread::is_started() const { + return thread_ && thread_->joinable(); +} + +bool InternalThread::must_stop() { + return thread_ && thread_->interruption_requested(); +} + +void InternalThread::StartInternalThread() { + CHECK(!is_started()) << "Threads should persist and not be restarted."; + + int device = 0; +#ifndef CPU_ONLY + CUDA_CHECK(cudaGetDevice(&device)); +#endif + Caffe::Brew mode = Caffe::mode(); + int rand_seed = caffe_rng_rand(); + int solver_count = Caffe::solver_count(); + int solver_rank = Caffe::solver_rank(); + bool multiprocess = Caffe::multiprocess(); + + try { + thread_.reset(new boost::thread(&InternalThread::entry, this, device, mode, + rand_seed, solver_count, solver_rank, multiprocess)); + } catch (std::exception& e) { + LOG(FATAL) << "Thread exception: " << e.what(); + } +} + +void InternalThread::entry(int device, Caffe::Brew mode, int rand_seed, + int solver_count, int solver_rank, bool multiprocess) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaSetDevice(device)); +#endif + Caffe::set_mode(mode); + Caffe::set_random_seed(rand_seed); + Caffe::set_solver_count(solver_count); + Caffe::set_solver_rank(solver_rank); + Caffe::set_multiprocess(multiprocess); + + InternalThreadEntry(); +} + +void InternalThread::StopInternalThread() { + if (is_started()) { + thread_->interrupt(); + try { + thread_->join(); + } catch (boost::thread_interrupted&) { + } catch (std::exception& e) { + LOG(FATAL) << "Thread exception: " << e.what(); + } + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layer.cpp b/3rdparty/caffe/src/caffe/layer.cpp new file mode 100644 index 00000000..684ae88b --- /dev/null +++ b/3rdparty/caffe/src/caffe/layer.cpp @@ -0,0 +1,7 @@ +#include "caffe/layer.hpp" + +namespace caffe { + +INSTANTIATE_CLASS(Layer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layer_factory.cpp b/3rdparty/caffe/src/caffe/layer_factory.cpp new file mode 100644 index 00000000..f14253a5 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layer_factory.cpp @@ -0,0 +1,267 @@ +// Make sure we include Python.h before any system header +// to avoid _POSIX_C_SOURCE redefinition +#ifdef WITH_PYTHON_LAYER +#include +#endif +#include + +#include "caffe/layer.hpp" +#include "caffe/layer_factory.hpp" +#include "caffe/layers/conv_layer.hpp" +#include "caffe/layers/lrn_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/relu_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" +#include "caffe/layers/softmax_layer.hpp" +#include "caffe/layers/tanh_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_conv_layer.hpp" +#include "caffe/layers/cudnn_lcn_layer.hpp" +#include "caffe/layers/cudnn_lrn_layer.hpp" +#include "caffe/layers/cudnn_pooling_layer.hpp" +#include "caffe/layers/cudnn_relu_layer.hpp" +#include "caffe/layers/cudnn_sigmoid_layer.hpp" +#include "caffe/layers/cudnn_softmax_layer.hpp" +#include "caffe/layers/cudnn_tanh_layer.hpp" +#endif + +#ifdef WITH_PYTHON_LAYER +#include "caffe/layers/python_layer.hpp" +#endif + +namespace caffe { + +// Get convolution layer according to engine. +template +shared_ptr > GetConvolutionLayer( + const LayerParameter& param) { + ConvolutionParameter conv_param = param.convolution_param(); + ConvolutionParameter_Engine engine = conv_param.engine(); +#ifdef USE_CUDNN + bool use_dilation = false; + for (int i = 0; i < conv_param.dilation_size(); ++i) { + if (conv_param.dilation(i) > 1) { + use_dilation = true; + } + } +#endif + if (engine == ConvolutionParameter_Engine_DEFAULT) { + engine = ConvolutionParameter_Engine_CAFFE; +#ifdef USE_CUDNN + if (!use_dilation) { + engine = ConvolutionParameter_Engine_CUDNN; + } +#endif + } + if (engine == ConvolutionParameter_Engine_CAFFE) { + return shared_ptr >(new ConvolutionLayer(param)); +#ifdef USE_CUDNN + } else if (engine == ConvolutionParameter_Engine_CUDNN) { + if (use_dilation) { + LOG(FATAL) << "CuDNN doesn't support the dilated convolution at Layer " + << param.name(); + } + return shared_ptr >(new CuDNNConvolutionLayer(param)); +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning + } +} + +REGISTER_LAYER_CREATOR(Convolution, GetConvolutionLayer); + +// Get pooling layer according to engine. +template +shared_ptr > GetPoolingLayer(const LayerParameter& param) { + PoolingParameter_Engine engine = param.pooling_param().engine(); + if (engine == PoolingParameter_Engine_DEFAULT) { + engine = PoolingParameter_Engine_CAFFE; +#ifdef USE_CUDNN + engine = PoolingParameter_Engine_CUDNN; +#endif + } + if (engine == PoolingParameter_Engine_CAFFE) { + return shared_ptr >(new PoolingLayer(param)); +#ifdef USE_CUDNN + } else if (engine == PoolingParameter_Engine_CUDNN) { + if (param.top_size() > 1) { + LOG(INFO) << "cuDNN does not support multiple tops. " + << "Using Caffe's own pooling layer."; + return shared_ptr >(new PoolingLayer(param)); + } + // CuDNN assumes layers are not being modified in place, thus + // breaking our index tracking for updates in some cases in Caffe. + // Until there is a workaround in Caffe (index management) or + // cuDNN, use Caffe layer to max pooling, or don't use in place + // layers after max pooling layers + if (param.pooling_param().pool() == PoolingParameter_PoolMethod_MAX) { + return shared_ptr >(new PoolingLayer(param)); + } else { + return shared_ptr >(new CuDNNPoolingLayer(param)); + } +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning + } +} + +REGISTER_LAYER_CREATOR(Pooling, GetPoolingLayer); + +// Get LRN layer according to engine +template +shared_ptr > GetLRNLayer(const LayerParameter& param) { + LRNParameter_Engine engine = param.lrn_param().engine(); + + if (engine == LRNParameter_Engine_DEFAULT) { +#ifdef USE_CUDNN + engine = LRNParameter_Engine_CUDNN; +#else + engine = LRNParameter_Engine_CAFFE; +#endif + } + + if (engine == LRNParameter_Engine_CAFFE) { + return shared_ptr >(new LRNLayer(param)); +#ifdef USE_CUDNN + } else if (engine == LRNParameter_Engine_CUDNN) { + LRNParameter lrn_param = param.lrn_param(); + + if (lrn_param.norm_region() ==LRNParameter_NormRegion_WITHIN_CHANNEL) { + return shared_ptr >(new CuDNNLCNLayer(param)); + } else { + // local size is too big to be handled through cuDNN + if (param.lrn_param().local_size() > CUDNN_LRN_MAX_N) { + return shared_ptr >(new LRNLayer(param)); + } else { + return shared_ptr >(new CuDNNLRNLayer(param)); + } + } +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning + } +} + +REGISTER_LAYER_CREATOR(LRN, GetLRNLayer); + +// Get relu layer according to engine. +template +shared_ptr > GetReLULayer(const LayerParameter& param) { + ReLUParameter_Engine engine = param.relu_param().engine(); + if (engine == ReLUParameter_Engine_DEFAULT) { + engine = ReLUParameter_Engine_CAFFE; +#ifdef USE_CUDNN + engine = ReLUParameter_Engine_CUDNN; +#endif + } + if (engine == ReLUParameter_Engine_CAFFE) { + return shared_ptr >(new ReLULayer(param)); +#ifdef USE_CUDNN + } else if (engine == ReLUParameter_Engine_CUDNN) { + return shared_ptr >(new CuDNNReLULayer(param)); +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning + } +} + +REGISTER_LAYER_CREATOR(ReLU, GetReLULayer); + +// Get sigmoid layer according to engine. +template +shared_ptr > GetSigmoidLayer(const LayerParameter& param) { + SigmoidParameter_Engine engine = param.sigmoid_param().engine(); + if (engine == SigmoidParameter_Engine_DEFAULT) { + engine = SigmoidParameter_Engine_CAFFE; +#ifdef USE_CUDNN + engine = SigmoidParameter_Engine_CUDNN; +#endif + } + if (engine == SigmoidParameter_Engine_CAFFE) { + return shared_ptr >(new SigmoidLayer(param)); +#ifdef USE_CUDNN + } else if (engine == SigmoidParameter_Engine_CUDNN) { + return shared_ptr >(new CuDNNSigmoidLayer(param)); +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning + } +} + +REGISTER_LAYER_CREATOR(Sigmoid, GetSigmoidLayer); + +// Get softmax layer according to engine. +template +shared_ptr > GetSoftmaxLayer(const LayerParameter& param) { + SoftmaxParameter_Engine engine = param.softmax_param().engine(); + if (engine == SoftmaxParameter_Engine_DEFAULT) { + engine = SoftmaxParameter_Engine_CAFFE; +#ifdef USE_CUDNN + engine = SoftmaxParameter_Engine_CUDNN; +#endif + } + if (engine == SoftmaxParameter_Engine_CAFFE) { + return shared_ptr >(new SoftmaxLayer(param)); +#ifdef USE_CUDNN + } else if (engine == SoftmaxParameter_Engine_CUDNN) { + return shared_ptr >(new CuDNNSoftmaxLayer(param)); +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning + } +} + +REGISTER_LAYER_CREATOR(Softmax, GetSoftmaxLayer); + +// Get tanh layer according to engine. +template +shared_ptr > GetTanHLayer(const LayerParameter& param) { + TanHParameter_Engine engine = param.tanh_param().engine(); + if (engine == TanHParameter_Engine_DEFAULT) { + engine = TanHParameter_Engine_CAFFE; +#ifdef USE_CUDNN + engine = TanHParameter_Engine_CUDNN; +#endif + } + if (engine == TanHParameter_Engine_CAFFE) { + return shared_ptr >(new TanHLayer(param)); +#ifdef USE_CUDNN + } else if (engine == TanHParameter_Engine_CUDNN) { + return shared_ptr >(new CuDNNTanHLayer(param)); +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning + } +} + +REGISTER_LAYER_CREATOR(TanH, GetTanHLayer); + +#ifdef WITH_PYTHON_LAYER +template +shared_ptr > GetPythonLayer(const LayerParameter& param) { + Py_Initialize(); + try { + bp::object module = bp::import(param.python_param().module().c_str()); + bp::object layer = module.attr(param.python_param().layer().c_str())(param); + return bp::extract > >(layer)(); + } catch (bp::error_already_set) { + PyErr_Print(); + throw; + } +} + +REGISTER_LAYER_CREATOR(Python, GetPythonLayer); +#endif + +// Layers that use their constructor as their default creator should be +// registered in their corresponding cpp files. Do not register them here. +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/absval_layer.cpp b/3rdparty/caffe/src/caffe/layers/absval_layer.cpp new file mode 100644 index 00000000..855bf0bf --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/absval_layer.cpp @@ -0,0 +1,44 @@ +#include + +#include "caffe/layers/absval_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void AbsValLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + NeuronLayer::LayerSetUp(bottom, top); + CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not " + "allow in-place computation."; +} + +template +void AbsValLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + const int count = top[0]->count(); + Dtype* top_data = top[0]->mutable_cpu_data(); + caffe_abs(count, bottom[0]->cpu_data(), top_data); +} + +template +void AbsValLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const int count = top[0]->count(); + const Dtype* top_diff = top[0]->cpu_diff(); + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_cpu_sign(count, bottom_data, bottom_diff); + caffe_mul(count, bottom_diff, top_diff, bottom_diff); + } +} + +#ifdef CPU_ONLY +STUB_GPU(AbsValLayer); +#endif + +INSTANTIATE_CLASS(AbsValLayer); +REGISTER_LAYER_CLASS(AbsVal); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/absval_layer.cu b/3rdparty/caffe/src/caffe/layers/absval_layer.cu new file mode 100644 index 00000000..6c927e6f --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/absval_layer.cu @@ -0,0 +1,32 @@ +#include + +#include "caffe/layers/absval_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void AbsValLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + const int count = top[0]->count(); + Dtype* top_data = top[0]->mutable_gpu_data(); + caffe_gpu_abs(count, bottom[0]->gpu_data(), top_data); +} + +template +void AbsValLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const int count = top[0]->count(); + const Dtype* top_diff = top[0]->gpu_diff(); + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + caffe_gpu_sign(count, bottom_data, bottom_diff); + caffe_gpu_mul(count, bottom_diff, top_diff, bottom_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(AbsValLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/accuracy_layer.cpp b/3rdparty/caffe/src/caffe/layers/accuracy_layer.cpp new file mode 100644 index 00000000..4eddbb5c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/accuracy_layer.cpp @@ -0,0 +1,108 @@ +#include +#include +#include + +#include "caffe/layers/accuracy_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void AccuracyLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + top_k_ = this->layer_param_.accuracy_param().top_k(); + + has_ignore_label_ = + this->layer_param_.accuracy_param().has_ignore_label(); + if (has_ignore_label_) { + ignore_label_ = this->layer_param_.accuracy_param().ignore_label(); + } +} + +template +void AccuracyLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + CHECK_LE(top_k_, bottom[0]->count() / bottom[1]->count()) + << "top_k must be less than or equal to the number of classes."; + label_axis_ = + bottom[0]->CanonicalAxisIndex(this->layer_param_.accuracy_param().axis()); + outer_num_ = bottom[0]->count(0, label_axis_); + inner_num_ = bottom[0]->count(label_axis_ + 1); + CHECK_EQ(outer_num_ * inner_num_, bottom[1]->count()) + << "Number of labels must match number of predictions; " + << "e.g., if label axis == 1 and prediction shape is (N, C, H, W), " + << "label count (number of labels) must be N*H*W, " + << "with integer values in {0, 1, ..., C-1}."; + vector top_shape(0); // Accuracy is a scalar; 0 axes. + top[0]->Reshape(top_shape); + if (top.size() > 1) { + // Per-class accuracy is a vector; 1 axes. + vector top_shape_per_class(1); + top_shape_per_class[0] = bottom[0]->shape(label_axis_); + top[1]->Reshape(top_shape_per_class); + nums_buffer_.Reshape(top_shape_per_class); + } +} + +template +void AccuracyLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + Dtype accuracy = 0; + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* bottom_label = bottom[1]->cpu_data(); + const int dim = bottom[0]->count() / outer_num_; + const int num_labels = bottom[0]->shape(label_axis_); + vector maxval(top_k_+1); + vector max_id(top_k_+1); + if (top.size() > 1) { + caffe_set(nums_buffer_.count(), Dtype(0), nums_buffer_.mutable_cpu_data()); + caffe_set(top[1]->count(), Dtype(0), top[1]->mutable_cpu_data()); + } + int count = 0; + for (int i = 0; i < outer_num_; ++i) { + for (int j = 0; j < inner_num_; ++j) { + const int label_value = + static_cast(bottom_label[i * inner_num_ + j]); + if (has_ignore_label_ && label_value == ignore_label_) { + continue; + } + if (top.size() > 1) ++nums_buffer_.mutable_cpu_data()[label_value]; + DCHECK_GE(label_value, 0); + DCHECK_LT(label_value, num_labels); + // Top-k accuracy + std::vector > bottom_data_vector; + for (int k = 0; k < num_labels; ++k) { + bottom_data_vector.push_back(std::make_pair( + bottom_data[i * dim + k * inner_num_ + j], k)); + } + std::partial_sort( + bottom_data_vector.begin(), bottom_data_vector.begin() + top_k_, + bottom_data_vector.end(), std::greater >()); + // check if true label is in top k predictions + for (int k = 0; k < top_k_; k++) { + if (bottom_data_vector[k].second == label_value) { + ++accuracy; + if (top.size() > 1) ++top[1]->mutable_cpu_data()[label_value]; + break; + } + } + ++count; + } + } + + // LOG(INFO) << "Accuracy: " << accuracy; + top[0]->mutable_cpu_data()[0] = accuracy / count; + if (top.size() > 1) { + for (int i = 0; i < top[1]->count(); ++i) { + top[1]->mutable_cpu_data()[i] = + nums_buffer_.cpu_data()[i] == 0 ? 0 + : top[1]->cpu_data()[i] / nums_buffer_.cpu_data()[i]; + } + } + // Accuracy layer should not be used as a loss function. +} + +INSTANTIATE_CLASS(AccuracyLayer); +REGISTER_LAYER_CLASS(Accuracy); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/argmax_layer.cpp b/3rdparty/caffe/src/caffe/layers/argmax_layer.cpp new file mode 100644 index 00000000..2d3d6f2d --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/argmax_layer.cpp @@ -0,0 +1,101 @@ +#include +#include +#include +#include + +#include "caffe/layers/argmax_layer.hpp" + +namespace caffe { + +template +void ArgMaxLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const ArgMaxParameter& argmax_param = this->layer_param_.argmax_param(); + out_max_val_ = argmax_param.out_max_val(); + top_k_ = argmax_param.top_k(); + has_axis_ = argmax_param.has_axis(); + CHECK_GE(top_k_, 1) << "top k must not be less than 1."; + if (has_axis_) { + axis_ = bottom[0]->CanonicalAxisIndex(argmax_param.axis()); + CHECK_GE(axis_, 0) << "axis must not be less than 0."; + CHECK_LE(axis_, bottom[0]->num_axes()) << + "axis must be less than or equal to the number of axis."; + CHECK_LE(top_k_, bottom[0]->shape(axis_)) + << "top_k must be less than or equal to the dimension of the axis."; + } else { + CHECK_LE(top_k_, bottom[0]->count(1)) + << "top_k must be less than or equal to" + " the dimension of the flattened bottom blob per instance."; + } +} + +template +void ArgMaxLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + int num_top_axes = bottom[0]->num_axes(); + if ( num_top_axes < 3 ) num_top_axes = 3; + std::vector shape(num_top_axes, 1); + if (has_axis_) { + // Produces max_ind or max_val per axis + shape = bottom[0]->shape(); + shape[axis_] = top_k_; + } else { + shape[0] = bottom[0]->shape(0); + // Produces max_ind + shape[2] = top_k_; + if (out_max_val_) { + // Produces max_ind and max_val + shape[1] = 2; + } + } + top[0]->Reshape(shape); +} + +template +void ArgMaxLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + int dim, axis_dist; + if (has_axis_) { + dim = bottom[0]->shape(axis_); + // Distance between values of axis in blob + axis_dist = bottom[0]->count(axis_) / dim; + } else { + dim = bottom[0]->count(1); + axis_dist = 1; + } + int num = bottom[0]->count() / dim; + std::vector > bottom_data_vector(dim); + for (int i = 0; i < num; ++i) { + for (int j = 0; j < dim; ++j) { + bottom_data_vector[j] = std::make_pair( + bottom_data[(i / axis_dist * dim + j) * axis_dist + i % axis_dist], j); + } + std::partial_sort( + bottom_data_vector.begin(), bottom_data_vector.begin() + top_k_, + bottom_data_vector.end(), std::greater >()); + for (int j = 0; j < top_k_; ++j) { + if (out_max_val_) { + if (has_axis_) { + // Produces max_val per axis + top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] + = bottom_data_vector[j].first; + } else { + // Produces max_ind and max_val + top_data[2 * i * top_k_ + j] = bottom_data_vector[j].second; + top_data[2 * i * top_k_ + top_k_ + j] = bottom_data_vector[j].first; + } + } else { + // Produces max_ind per axis + top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] + = bottom_data_vector[j].second; + } + } + } +} + +INSTANTIATE_CLASS(ArgMaxLayer); +REGISTER_LAYER_CLASS(ArgMax); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/base_conv_layer.cpp b/3rdparty/caffe/src/caffe/layers/base_conv_layer.cpp new file mode 100644 index 00000000..35c90145 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/base_conv_layer.cpp @@ -0,0 +1,395 @@ +#include +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/base_conv_layer.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + // Configure the kernel size, padding, stride, and inputs. + ConvolutionParameter conv_param = this->layer_param_.convolution_param(); + force_nd_im2col_ = conv_param.force_nd_im2col(); + channel_axis_ = bottom[0]->CanonicalAxisIndex(conv_param.axis()); + const int first_spatial_axis = channel_axis_ + 1; + const int num_axes = bottom[0]->num_axes(); + num_spatial_axes_ = num_axes - first_spatial_axis; + CHECK_GE(num_spatial_axes_, 0); + vector spatial_dim_blob_shape(1, std::max(num_spatial_axes_, 1)); + // Setup filter kernel dimensions (kernel_shape_). + kernel_shape_.Reshape(spatial_dim_blob_shape); + int* kernel_shape_data = kernel_shape_.mutable_cpu_data(); + if (conv_param.has_kernel_h() || conv_param.has_kernel_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "kernel_h & kernel_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.kernel_size_size()) + << "Either kernel_size or kernel_h/w should be specified; not both."; + kernel_shape_data[0] = conv_param.kernel_h(); + kernel_shape_data[1] = conv_param.kernel_w(); + } else { + const int num_kernel_dims = conv_param.kernel_size_size(); + CHECK(num_kernel_dims == 1 || num_kernel_dims == num_spatial_axes_) + << "kernel_size must be specified once, or once per spatial dimension " + << "(kernel_size specified " << num_kernel_dims << " times; " + << num_spatial_axes_ << " spatial dims)."; + for (int i = 0; i < num_spatial_axes_; ++i) { + kernel_shape_data[i] = + conv_param.kernel_size((num_kernel_dims == 1) ? 0 : i); + } + } + for (int i = 0; i < num_spatial_axes_; ++i) { + CHECK_GT(kernel_shape_data[i], 0) << "Filter dimensions must be nonzero."; + } + // Setup stride dimensions (stride_). + stride_.Reshape(spatial_dim_blob_shape); + int* stride_data = stride_.mutable_cpu_data(); + if (conv_param.has_stride_h() || conv_param.has_stride_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "stride_h & stride_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.stride_size()) + << "Either stride or stride_h/w should be specified; not both."; + stride_data[0] = conv_param.stride_h(); + stride_data[1] = conv_param.stride_w(); + } else { + const int num_stride_dims = conv_param.stride_size(); + CHECK(num_stride_dims == 0 || num_stride_dims == 1 || + num_stride_dims == num_spatial_axes_) + << "stride must be specified once, or once per spatial dimension " + << "(stride specified " << num_stride_dims << " times; " + << num_spatial_axes_ << " spatial dims)."; + const int kDefaultStride = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + stride_data[i] = (num_stride_dims == 0) ? kDefaultStride : + conv_param.stride((num_stride_dims == 1) ? 0 : i); + CHECK_GT(stride_data[i], 0) << "Stride dimensions must be nonzero."; + } + } + // Setup pad dimensions (pad_). + pad_.Reshape(spatial_dim_blob_shape); + int* pad_data = pad_.mutable_cpu_data(); + if (conv_param.has_pad_h() || conv_param.has_pad_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "pad_h & pad_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.pad_size()) + << "Either pad or pad_h/w should be specified; not both."; + pad_data[0] = conv_param.pad_h(); + pad_data[1] = conv_param.pad_w(); + } else { + const int num_pad_dims = conv_param.pad_size(); + CHECK(num_pad_dims == 0 || num_pad_dims == 1 || + num_pad_dims == num_spatial_axes_) + << "pad must be specified once, or once per spatial dimension " + << "(pad specified " << num_pad_dims << " times; " + << num_spatial_axes_ << " spatial dims)."; + const int kDefaultPad = 0; + for (int i = 0; i < num_spatial_axes_; ++i) { + pad_data[i] = (num_pad_dims == 0) ? kDefaultPad : + conv_param.pad((num_pad_dims == 1) ? 0 : i); + } + } + // Setup dilation dimensions (dilation_). + dilation_.Reshape(spatial_dim_blob_shape); + int* dilation_data = dilation_.mutable_cpu_data(); + const int num_dilation_dims = conv_param.dilation_size(); + CHECK(num_dilation_dims == 0 || num_dilation_dims == 1 || + num_dilation_dims == num_spatial_axes_) + << "dilation must be specified once, or once per spatial dimension " + << "(dilation specified " << num_dilation_dims << " times; " + << num_spatial_axes_ << " spatial dims)."; + const int kDefaultDilation = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + dilation_data[i] = (num_dilation_dims == 0) ? kDefaultDilation : + conv_param.dilation((num_dilation_dims == 1) ? 0 : i); + } + // Special case: im2col is the identity for 1x1 convolution with stride 1 + // and no padding, so flag for skipping the buffer and transformation. + is_1x1_ = true; + for (int i = 0; i < num_spatial_axes_; ++i) { + is_1x1_ &= + kernel_shape_data[i] == 1 && stride_data[i] == 1 && pad_data[i] == 0; + if (!is_1x1_) { break; } + } + // Configure output channels and groups. + channels_ = bottom[0]->shape(channel_axis_); + num_output_ = this->layer_param_.convolution_param().num_output(); + CHECK_GT(num_output_, 0); + group_ = this->layer_param_.convolution_param().group(); + CHECK_EQ(channels_ % group_, 0); + CHECK_EQ(num_output_ % group_, 0) + << "Number of output should be multiples of group."; + if (reverse_dimensions()) { + conv_out_channels_ = channels_; + conv_in_channels_ = num_output_; + } else { + conv_out_channels_ = num_output_; + conv_in_channels_ = channels_; + } + // Handle the parameters: weights and biases. + // - blobs_[0] holds the filter weights + // - blobs_[1] holds the biases (optional) + vector weight_shape(2); + weight_shape[0] = conv_out_channels_; + weight_shape[1] = conv_in_channels_ / group_; + for (int i = 0; i < num_spatial_axes_; ++i) { + weight_shape.push_back(kernel_shape_data[i]); + } + bias_term_ = this->layer_param_.convolution_param().bias_term(); + vector bias_shape(bias_term_, num_output_); + if (this->blobs_.size() > 0) { + CHECK_EQ(1 + bias_term_, this->blobs_.size()) + << "Incorrect number of weight blobs."; + if (weight_shape != this->blobs_[0]->shape()) { + Blob weight_shaped_blob(weight_shape); + LOG(FATAL) << "Incorrect weight shape: expected shape " + << weight_shaped_blob.shape_string() << "; instead, shape was " + << this->blobs_[0]->shape_string(); + } + if (bias_term_ && bias_shape != this->blobs_[1]->shape()) { + Blob bias_shaped_blob(bias_shape); + LOG(FATAL) << "Incorrect bias shape: expected shape " + << bias_shaped_blob.shape_string() << "; instead, shape was " + << this->blobs_[1]->shape_string(); + } + LOG(INFO) << "Skipping parameter initialization"; + } else { + if (bias_term_) { + this->blobs_.resize(2); + } else { + this->blobs_.resize(1); + } + // Initialize and fill the weights: + // output channels x input channels per-group x kernel height x kernel width + this->blobs_[0].reset(new Blob(weight_shape)); + shared_ptr > weight_filler(GetFiller( + this->layer_param_.convolution_param().weight_filler())); + weight_filler->Fill(this->blobs_[0].get()); + // If necessary, initialize and fill the biases. + if (bias_term_) { + this->blobs_[1].reset(new Blob(bias_shape)); + shared_ptr > bias_filler(GetFiller( + this->layer_param_.convolution_param().bias_filler())); + bias_filler->Fill(this->blobs_[1].get()); + } + } + kernel_dim_ = this->blobs_[0]->count(1); + weight_offset_ = conv_out_channels_ * kernel_dim_ / group_; + // Propagate gradients to the parameters (as directed by backward pass). + this->param_propagate_down_.resize(this->blobs_.size(), true); +} + +template +void BaseConvolutionLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const int first_spatial_axis = channel_axis_ + 1; + CHECK_EQ(bottom[0]->num_axes(), first_spatial_axis + num_spatial_axes_) + << "bottom num_axes may not change."; + num_ = bottom[0]->count(0, channel_axis_); + CHECK_EQ(bottom[0]->shape(channel_axis_), channels_) + << "Input size incompatible with convolution kernel."; + // TODO: generalize to handle inputs of different shapes. + for (int bottom_id = 1; bottom_id < bottom.size(); ++bottom_id) { + CHECK(bottom[0]->shape() == bottom[bottom_id]->shape()) + << "All inputs must have the same shape."; + } + // Shape the tops. + bottom_shape_ = &bottom[0]->shape(); + compute_output_shape(); + vector top_shape(bottom[0]->shape().begin(), + bottom[0]->shape().begin() + channel_axis_); + top_shape.push_back(num_output_); + for (int i = 0; i < num_spatial_axes_; ++i) { + top_shape.push_back(output_shape_[i]); + } + for (int top_id = 0; top_id < top.size(); ++top_id) { + top[top_id]->Reshape(top_shape); + } + if (reverse_dimensions()) { + conv_out_spatial_dim_ = bottom[0]->count(first_spatial_axis); + } else { + conv_out_spatial_dim_ = top[0]->count(first_spatial_axis); + } + col_offset_ = kernel_dim_ * conv_out_spatial_dim_; + output_offset_ = conv_out_channels_ * conv_out_spatial_dim_ / group_; + // Setup input dimensions (conv_input_shape_). + vector bottom_dim_blob_shape(1, num_spatial_axes_ + 1); + conv_input_shape_.Reshape(bottom_dim_blob_shape); + int* conv_input_shape_data = conv_input_shape_.mutable_cpu_data(); + for (int i = 0; i < num_spatial_axes_ + 1; ++i) { + if (reverse_dimensions()) { + conv_input_shape_data[i] = top[0]->shape(channel_axis_ + i); + } else { + conv_input_shape_data[i] = bottom[0]->shape(channel_axis_ + i); + } + } + // The im2col result buffer will only hold one image at a time to avoid + // overly large memory usage. In the special case of 1x1 convolution + // it goes lazily unused to save memory. + col_buffer_shape_.clear(); + col_buffer_shape_.push_back(kernel_dim_ * group_); + for (int i = 0; i < num_spatial_axes_; ++i) { + if (reverse_dimensions()) { + col_buffer_shape_.push_back(input_shape(i + 1)); + } else { + col_buffer_shape_.push_back(output_shape_[i]); + } + } + col_buffer_.Reshape(col_buffer_shape_); + bottom_dim_ = bottom[0]->count(channel_axis_); + top_dim_ = top[0]->count(channel_axis_); + num_kernels_im2col_ = conv_in_channels_ * conv_out_spatial_dim_; + num_kernels_col2im_ = reverse_dimensions() ? top_dim_ : bottom_dim_; + // Set up the all ones "bias multiplier" for adding biases by BLAS + out_spatial_dim_ = top[0]->count(first_spatial_axis); + if (bias_term_) { + vector bias_multiplier_shape(1, out_spatial_dim_); + bias_multiplier_.Reshape(bias_multiplier_shape); + caffe_set(bias_multiplier_.count(), Dtype(1), + bias_multiplier_.mutable_cpu_data()); + } +} + +template +void BaseConvolutionLayer::forward_cpu_gemm(const Dtype* input, + const Dtype* weights, Dtype* output, bool skip_im2col) { + const Dtype* col_buff = input; + if (!is_1x1_) { + if (!skip_im2col) { + conv_im2col_cpu(input, col_buffer_.mutable_cpu_data()); + } + col_buff = col_buffer_.cpu_data(); + } + for (int g = 0; g < group_; ++g) { + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, conv_out_channels_ / + group_, conv_out_spatial_dim_, kernel_dim_, + (Dtype)1., weights + weight_offset_ * g, col_buff + col_offset_ * g, + (Dtype)0., output + output_offset_ * g); + } +} + +template +void BaseConvolutionLayer::forward_cpu_bias(Dtype* output, + const Dtype* bias) { + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num_output_, + out_spatial_dim_, 1, (Dtype)1., bias, bias_multiplier_.cpu_data(), + (Dtype)1., output); +} + +template +void BaseConvolutionLayer::backward_cpu_gemm(const Dtype* output, + const Dtype* weights, Dtype* input) { + Dtype* col_buff = col_buffer_.mutable_cpu_data(); + if (is_1x1_) { + col_buff = input; + } + for (int g = 0; g < group_; ++g) { + caffe_cpu_gemm(CblasTrans, CblasNoTrans, kernel_dim_, + conv_out_spatial_dim_, conv_out_channels_ / group_, + (Dtype)1., weights + weight_offset_ * g, output + output_offset_ * g, + (Dtype)0., col_buff + col_offset_ * g); + } + if (!is_1x1_) { + conv_col2im_cpu(col_buff, input); + } +} + +template +void BaseConvolutionLayer::weight_cpu_gemm(const Dtype* input, + const Dtype* output, Dtype* weights) { + const Dtype* col_buff = input; + if (!is_1x1_) { + conv_im2col_cpu(input, col_buffer_.mutable_cpu_data()); + col_buff = col_buffer_.cpu_data(); + } + for (int g = 0; g < group_; ++g) { + caffe_cpu_gemm(CblasNoTrans, CblasTrans, conv_out_channels_ / group_, + kernel_dim_, conv_out_spatial_dim_, + (Dtype)1., output + output_offset_ * g, col_buff + col_offset_ * g, + (Dtype)1., weights + weight_offset_ * g); + } +} + +template +void BaseConvolutionLayer::backward_cpu_bias(Dtype* bias, + const Dtype* input) { + caffe_cpu_gemv(CblasNoTrans, num_output_, out_spatial_dim_, 1., + input, bias_multiplier_.cpu_data(), 1., bias); +} + +#ifndef CPU_ONLY + +template +void BaseConvolutionLayer::forward_gpu_gemm(const Dtype* input, + const Dtype* weights, Dtype* output, bool skip_im2col) { + const Dtype* col_buff = input; + if (!is_1x1_) { + if (!skip_im2col) { + conv_im2col_gpu(input, col_buffer_.mutable_gpu_data()); + } + col_buff = col_buffer_.gpu_data(); + } + for (int g = 0; g < group_; ++g) { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, conv_out_channels_ / + group_, conv_out_spatial_dim_, kernel_dim_, + (Dtype)1., weights + weight_offset_ * g, col_buff + col_offset_ * g, + (Dtype)0., output + output_offset_ * g); + } +} + +template +void BaseConvolutionLayer::forward_gpu_bias(Dtype* output, + const Dtype* bias) { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num_output_, + out_spatial_dim_, 1, (Dtype)1., bias, bias_multiplier_.gpu_data(), + (Dtype)1., output); +} + +template +void BaseConvolutionLayer::backward_gpu_gemm(const Dtype* output, + const Dtype* weights, Dtype* input) { + Dtype* col_buff = col_buffer_.mutable_gpu_data(); + if (is_1x1_) { + col_buff = input; + } + for (int g = 0; g < group_; ++g) { + caffe_gpu_gemm(CblasTrans, CblasNoTrans, kernel_dim_, + conv_out_spatial_dim_, conv_out_channels_ / group_, + (Dtype)1., weights + weight_offset_ * g, output + output_offset_ * g, + (Dtype)0., col_buff + col_offset_ * g); + } + if (!is_1x1_) { + conv_col2im_gpu(col_buff, input); + } +} + +template +void BaseConvolutionLayer::weight_gpu_gemm(const Dtype* input, + const Dtype* output, Dtype* weights) { + const Dtype* col_buff = input; + if (!is_1x1_) { + conv_im2col_gpu(input, col_buffer_.mutable_gpu_data()); + col_buff = col_buffer_.gpu_data(); + } + for (int g = 0; g < group_; ++g) { + caffe_gpu_gemm(CblasNoTrans, CblasTrans, conv_out_channels_ / group_, + kernel_dim_, conv_out_spatial_dim_, + (Dtype)1., output + output_offset_ * g, col_buff + col_offset_ * g, + (Dtype)1., weights + weight_offset_ * g); + } +} + +template +void BaseConvolutionLayer::backward_gpu_bias(Dtype* bias, + const Dtype* input) { + caffe_gpu_gemv(CblasNoTrans, num_output_, out_spatial_dim_, 1., + input, bias_multiplier_.gpu_data(), 1., bias); +} + +#endif // !CPU_ONLY + +INSTANTIATE_CLASS(BaseConvolutionLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/base_data_layer.cpp b/3rdparty/caffe/src/caffe/layers/base_data_layer.cpp new file mode 100644 index 00000000..93a798f3 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/base_data_layer.cpp @@ -0,0 +1,136 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/blocking_queue.hpp" + +namespace caffe { + +template +BaseDataLayer::BaseDataLayer(const LayerParameter& param) + : Layer(param), + transform_param_(param.transform_param()) { +} + +template +void BaseDataLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + if (top.size() == 1) { + output_labels_ = false; + } else { + output_labels_ = true; + } + data_transformer_.reset( + new DataTransformer(transform_param_, this->phase_)); + data_transformer_->InitRand(); + // The subclasses should setup the size of bottom and top + DataLayerSetUp(bottom, top); +} + +template +BasePrefetchingDataLayer::BasePrefetchingDataLayer( + const LayerParameter& param) + : BaseDataLayer(param), + prefetch_(param.data_param().prefetch()), + prefetch_free_(), prefetch_full_(), prefetch_current_() { + for (int i = 0; i < prefetch_.size(); ++i) { + prefetch_[i].reset(new Batch()); + prefetch_free_.push(prefetch_[i].get()); + } +} + +template +void BasePrefetchingDataLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + BaseDataLayer::LayerSetUp(bottom, top); + + // Before starting the prefetch thread, we make cpu_data and gpu_data + // calls so that the prefetch thread does not accidentally make simultaneous + // cudaMalloc calls when the main thread is running. In some GPUs this + // seems to cause failures if we do not so. + for (int i = 0; i < prefetch_.size(); ++i) { + prefetch_[i]->data_.mutable_cpu_data(); + if (this->output_labels_) { + prefetch_[i]->label_.mutable_cpu_data(); + } + } +#ifndef CPU_ONLY + if (Caffe::mode() == Caffe::GPU) { + for (int i = 0; i < prefetch_.size(); ++i) { + prefetch_[i]->data_.mutable_gpu_data(); + if (this->output_labels_) { + prefetch_[i]->label_.mutable_gpu_data(); + } + } + } +#endif + DLOG(INFO) << "Initializing prefetch"; + this->data_transformer_->InitRand(); + StartInternalThread(); + DLOG(INFO) << "Prefetch initialized."; +} + +template +void BasePrefetchingDataLayer::InternalThreadEntry() { +#ifndef CPU_ONLY + cudaStream_t stream; + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaStreamCreateWithFlags(&stream, cudaStreamNonBlocking)); + } +#endif + + try { + while (!must_stop()) { + Batch* batch = prefetch_free_.pop(); + load_batch(batch); +#ifndef CPU_ONLY + if (Caffe::mode() == Caffe::GPU) { + batch->data_.data().get()->async_gpu_push(stream); + if (this->output_labels_) { + batch->label_.data().get()->async_gpu_push(stream); + } + CUDA_CHECK(cudaStreamSynchronize(stream)); + } +#endif + prefetch_full_.push(batch); + } + } catch (boost::thread_interrupted&) { + // Interrupted exception is expected on shutdown + } +#ifndef CPU_ONLY + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaStreamDestroy(stream)); + } +#endif +} + +template +void BasePrefetchingDataLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + if (prefetch_current_) { + prefetch_free_.push(prefetch_current_); + } + prefetch_current_ = prefetch_full_.pop("Waiting for data"); + // Reshape to loaded data. + top[0]->ReshapeLike(prefetch_current_->data_); + top[0]->set_cpu_data(prefetch_current_->data_.mutable_cpu_data()); + if (this->output_labels_) { + // Reshape to loaded labels. + top[1]->ReshapeLike(prefetch_current_->label_); + top[1]->set_cpu_data(prefetch_current_->label_.mutable_cpu_data()); + } +} + +#ifdef CPU_ONLY +STUB_GPU_FORWARD(BasePrefetchingDataLayer, Forward); +#endif + +INSTANTIATE_CLASS(BaseDataLayer); +INSTANTIATE_CLASS(BasePrefetchingDataLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/base_data_layer.cu b/3rdparty/caffe/src/caffe/layers/base_data_layer.cu new file mode 100644 index 00000000..64c621a7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/base_data_layer.cu @@ -0,0 +1,26 @@ +#include + +#include "caffe/layers/base_data_layer.hpp" + +namespace caffe { + +template +void BasePrefetchingDataLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + if (prefetch_current_) { + prefetch_free_.push(prefetch_current_); + } + prefetch_current_ = prefetch_full_.pop("Waiting for data"); + // Reshape to loaded data. + top[0]->ReshapeLike(prefetch_current_->data_); + top[0]->set_gpu_data(prefetch_current_->data_.mutable_gpu_data()); + if (this->output_labels_) { + // Reshape to loaded labels. + top[1]->ReshapeLike(prefetch_current_->label_); + top[1]->set_gpu_data(prefetch_current_->label_.mutable_gpu_data()); + } +} + +INSTANTIATE_LAYER_GPU_FORWARD(BasePrefetchingDataLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/batch_norm_layer.cpp b/3rdparty/caffe/src/caffe/layers/batch_norm_layer.cpp new file mode 100644 index 00000000..c6a1d5b1 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/batch_norm_layer.cpp @@ -0,0 +1,251 @@ +#include +#include + +#include "caffe/layers/batch_norm_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void BatchNormLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + BatchNormParameter param = this->layer_param_.batch_norm_param(); + moving_average_fraction_ = param.moving_average_fraction(); + use_global_stats_ = this->phase_ == TEST; + if (param.has_use_global_stats()) + use_global_stats_ = param.use_global_stats(); + if (bottom[0]->num_axes() == 1) + channels_ = 1; + else + channels_ = bottom[0]->shape(1); + eps_ = param.eps(); + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + this->blobs_.resize(3); + vector sz; + sz.push_back(channels_); + this->blobs_[0].reset(new Blob(sz)); + this->blobs_[1].reset(new Blob(sz)); + sz[0] = 1; + this->blobs_[2].reset(new Blob(sz)); + for (int i = 0; i < 3; ++i) { + caffe_set(this->blobs_[i]->count(), Dtype(0), + this->blobs_[i]->mutable_cpu_data()); + } + } + // Mask statistics from optimization by setting local learning rates + // for mean, variance, and the bias correction to zero. + for (int i = 0; i < this->blobs_.size(); ++i) { + if (this->layer_param_.param_size() == i) { + ParamSpec* fixed_param_spec = this->layer_param_.add_param(); + fixed_param_spec->set_lr_mult(0.f); + } else { + CHECK_EQ(this->layer_param_.param(i).lr_mult(), 0.f) + << "Cannot configure batch normalization statistics as layer " + << "parameters."; + } + } +} + +template +void BatchNormLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + if (bottom[0]->num_axes() >= 1) + CHECK_EQ(bottom[0]->shape(1), channels_); + top[0]->ReshapeLike(*bottom[0]); + + vector sz; + sz.push_back(channels_); + mean_.Reshape(sz); + variance_.Reshape(sz); + temp_.ReshapeLike(*bottom[0]); + x_norm_.ReshapeLike(*bottom[0]); + sz[0] = bottom[0]->shape(0); + batch_sum_multiplier_.Reshape(sz); + + int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); + if (spatial_sum_multiplier_.num_axes() == 0 || + spatial_sum_multiplier_.shape(0) != spatial_dim) { + sz[0] = spatial_dim; + spatial_sum_multiplier_.Reshape(sz); + Dtype* multiplier_data = spatial_sum_multiplier_.mutable_cpu_data(); + caffe_set(spatial_sum_multiplier_.count(), Dtype(1), multiplier_data); + } + + int numbychans = channels_*bottom[0]->shape(0); + if (num_by_chans_.num_axes() == 0 || + num_by_chans_.shape(0) != numbychans) { + sz[0] = numbychans; + num_by_chans_.Reshape(sz); + caffe_set(batch_sum_multiplier_.count(), Dtype(1), + batch_sum_multiplier_.mutable_cpu_data()); + } +} + +template +void BatchNormLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + int num = bottom[0]->shape(0); + int spatial_dim = bottom[0]->count()/(bottom[0]->shape(0)*channels_); + + if (bottom[0] != top[0]) { + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } + + if (use_global_stats_) { + // use the stored mean/variance estimates. + const Dtype scale_factor = this->blobs_[2]->cpu_data()[0] == 0 ? + 0 : 1 / this->blobs_[2]->cpu_data()[0]; + caffe_cpu_scale(variance_.count(), scale_factor, + this->blobs_[0]->cpu_data(), mean_.mutable_cpu_data()); + caffe_cpu_scale(variance_.count(), scale_factor, + this->blobs_[1]->cpu_data(), variance_.mutable_cpu_data()); + } else { + // compute mean + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), bottom_data, + spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + mean_.mutable_cpu_data()); + } + + // subtract mean + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, -1, num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 1., top_data); + + if (!use_global_stats_) { + // compute variance using var(X) = E((X-EX)^2) + caffe_sqr(top[0]->count(), top_data, + temp_.mutable_cpu_data()); // (X-EX)^2 + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), temp_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + variance_.mutable_cpu_data()); // E((X_EX)^2) + + // compute and save moving average + this->blobs_[2]->mutable_cpu_data()[0] *= moving_average_fraction_; + this->blobs_[2]->mutable_cpu_data()[0] += 1; + caffe_cpu_axpby(mean_.count(), Dtype(1), mean_.cpu_data(), + moving_average_fraction_, this->blobs_[0]->mutable_cpu_data()); + int m = bottom[0]->count()/channels_; + Dtype bias_correction_factor = m > 1 ? Dtype(m)/(m-1) : 1; + caffe_cpu_axpby(variance_.count(), bias_correction_factor, + variance_.cpu_data(), moving_average_fraction_, + this->blobs_[1]->mutable_cpu_data()); + } + + // normalize variance + caffe_add_scalar(variance_.count(), eps_, variance_.mutable_cpu_data()); + caffe_sqrt(variance_.count(), variance_.cpu_data(), + variance_.mutable_cpu_data()); + + // replicate variance to input size + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), variance_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 0., temp_.mutable_cpu_data()); + caffe_div(temp_.count(), top_data, temp_.cpu_data(), top_data); + // TODO(cdoersch): The caching is only needed because later in-place layers + // might clobber the data. Can we skip this if they won't? + caffe_copy(x_norm_.count(), top_data, + x_norm_.mutable_cpu_data()); +} + +template +void BatchNormLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff; + if (bottom[0] != top[0]) { + top_diff = top[0]->cpu_diff(); + } else { + caffe_copy(x_norm_.count(), top[0]->cpu_diff(), x_norm_.mutable_cpu_diff()); + top_diff = x_norm_.cpu_diff(); + } + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + if (use_global_stats_) { + caffe_div(temp_.count(), top_diff, temp_.cpu_data(), bottom_diff); + return; + } + const Dtype* top_data = x_norm_.cpu_data(); + int num = bottom[0]->shape()[0]; + int spatial_dim = bottom[0]->count()/(bottom[0]->shape(0)*channels_); + // if Y = (X-mean(X))/(sqrt(var(X)+eps)), then + // + // dE(Y)/dX = + // (dE/dY - mean(dE/dY) - mean(dE/dY \cdot Y) \cdot Y) + // ./ sqrt(var(X) + eps) + // + // where \cdot and ./ are hadamard product and elementwise division, + // respectively, dE/dY is the top diff, and mean/var/sum are all computed + // along all dimensions except the channels dimension. In the above + // equation, the operations allow for expansion (i.e. broadcast) along all + // dimensions except the channels dimension where required. + + // sum(dE/dY \cdot Y) + caffe_mul(temp_.count(), top_data, top_diff, bottom_diff); + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + bottom_diff, spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + mean_.mutable_cpu_data()); + + // reshape (broadcast) the above + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 0., bottom_diff); + + // sum(dE/dY \cdot Y) \cdot Y + caffe_mul(temp_.count(), top_data, bottom_diff, bottom_diff); + + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + top_diff, spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + mean_.mutable_cpu_data()); + // reshape (broadcast) the above to make + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num * channels_, + spatial_dim, 1, 1., num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 1., bottom_diff); + + // dE/dY - mean(dE/dY)-mean(dE/dY \cdot Y) \cdot Y + caffe_cpu_axpby(temp_.count(), Dtype(1), top_diff, + Dtype(-1. / (num * spatial_dim)), bottom_diff); + + // note: temp_ still contains sqrt(var(X)+eps), computed during the forward + // pass. + caffe_div(temp_.count(), bottom_diff, temp_.cpu_data(), bottom_diff); +} + + +#ifdef CPU_ONLY +STUB_GPU(BatchNormLayer); +#endif + +INSTANTIATE_CLASS(BatchNormLayer); +REGISTER_LAYER_CLASS(BatchNorm); +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/batch_norm_layer.cu b/3rdparty/caffe/src/caffe/layers/batch_norm_layer.cu new file mode 100644 index 00000000..a35e778e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/batch_norm_layer.cu @@ -0,0 +1,171 @@ +#include +#include + +#include "caffe/layers/batch_norm_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void BatchNormLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + int num = bottom[0]->shape(0); + int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); + + if (bottom[0] != top[0]) { + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } + + + if (use_global_stats_) { + // use the stored mean/variance estimates. + const Dtype scale_factor = this->blobs_[2]->cpu_data()[0] == 0 ? + 0 : 1 / this->blobs_[2]->cpu_data()[0]; + caffe_gpu_scale(variance_.count(), scale_factor, + this->blobs_[0]->gpu_data(), mean_.mutable_gpu_data()); + caffe_gpu_scale(variance_.count(), scale_factor, + this->blobs_[1]->gpu_data(), variance_.mutable_gpu_data()); + } else { + // compute mean + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), bottom_data, + spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + mean_.mutable_gpu_data()); + } + + // subtract mean + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, -1, num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 1., top_data); + + if (!use_global_stats_) { + // compute variance using var(X) = E((X-EX)^2) + caffe_gpu_mul(top[0]->count(), top[0]->gpu_data(), top[0]->gpu_data(), + temp_.mutable_gpu_data()); // (X-EX)^2 + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), temp_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, Dtype(1.), + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), Dtype(0.), + variance_.mutable_gpu_data()); // E((X_EX)^2) + + // compute and save moving average + this->blobs_[2]->mutable_cpu_data()[0] *= moving_average_fraction_; + this->blobs_[2]->mutable_cpu_data()[0] += 1; + caffe_gpu_axpby(mean_.count(), Dtype(1), mean_.gpu_data(), + moving_average_fraction_, this->blobs_[0]->mutable_gpu_data()); + int m = bottom[0]->count()/channels_; + Dtype bias_correction_factor = m > 1 ? Dtype(m)/(m-1) : 1; + caffe_gpu_axpby(variance_.count(), bias_correction_factor, + variance_.gpu_data(), moving_average_fraction_, + this->blobs_[1]->mutable_gpu_data()); + } + + // normalize variance + caffe_gpu_add_scalar(variance_.count(), eps_, variance_.mutable_gpu_data()); + caffe_gpu_sqrt(variance_.count(), variance_.gpu_data(), + variance_.mutable_gpu_data()); + + // replicate variance to input size + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), variance_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 0., temp_.mutable_gpu_data()); + caffe_gpu_div(temp_.count(), top_data, temp_.gpu_data(), top_data); + // TODO(cdoersch): The caching is only needed because later in-place layers + // might clobber the data. Can we skip this if they won't? + caffe_copy(x_norm_.count(), top_data, + x_norm_.mutable_gpu_data()); +} + +template +void BatchNormLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff; + if (bottom[0] != top[0]) { + top_diff = top[0]->gpu_diff(); + } else { + caffe_copy(x_norm_.count(), top[0]->gpu_diff(), x_norm_.mutable_gpu_diff()); + top_diff = x_norm_.gpu_diff(); + } + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + if (use_global_stats_) { + caffe_gpu_div(temp_.count(), top_diff, temp_.gpu_data(), bottom_diff); + return; + } + const Dtype* top_data = x_norm_.gpu_data(); + int num = bottom[0]->shape()[0]; + int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); + // if Y = (X-mean(X))/(sqrt(var(X)+eps)), then + // + // dE(Y)/dX = + // (dE/dY - mean(dE/dY) - mean(dE/dY \cdot Y) \cdot Y) + // ./ sqrt(var(X) + eps) + // + // where \cdot and ./ are hadamard product and elementwise division, + // respectively, dE/dY is the top diff, and mean/var/sum are all computed + // along all dimensions except the channels dimension. In the above + // equation, the operations allow for expansion (i.e. broadcast) along all + // dimensions except the channels dimension where required. + + // sum(dE/dY \cdot Y) + caffe_gpu_mul(temp_.count(), top_data, top_diff, bottom_diff); + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + bottom_diff, spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + mean_.mutable_gpu_data()); + + // reshape (broadcast) the above + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 0., bottom_diff); + + // sum(dE/dY \cdot Y) \cdot Y + caffe_gpu_mul(temp_.count(), top_data, bottom_diff, bottom_diff); + + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + top_diff, spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + mean_.mutable_gpu_data()); + // reshape (broadcast) the above to make + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num * channels_, + spatial_dim, 1, 1., num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 1., bottom_diff); + + // dE/dY - mean(dE/dY)-mean(dE/dY \cdot Y) \cdot Y + caffe_gpu_axpby(temp_.count(), Dtype(1), top_diff, + Dtype(-1. / (num * spatial_dim)), bottom_diff); + + // note: temp_ still contains sqrt(var(X)+eps), computed during the forward + // pass. + caffe_gpu_div(temp_.count(), bottom_diff, temp_.gpu_data(), bottom_diff); +} + +INSTANTIATE_LAYER_GPU_FUNCS(BatchNormLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cpp b/3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cpp new file mode 100644 index 00000000..b14e56f7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cpp @@ -0,0 +1,78 @@ +#include + +#include "caffe/layers/batch_reindex_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void BatchReindexLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_EQ(1, bottom[1]->num_axes()); + vector newshape; + newshape.push_back(bottom[1]->shape(0)); + for (int i = 1; i < bottom[0]->shape().size(); ++i) { + newshape.push_back(bottom[0]->shape()[i]); + } + top[0]->Reshape(newshape); +} + +template +void BatchReindexLayer::check_batch_reindex(int initial_num, + int final_num, + const Dtype* ridx_data) { + for (int i = 0; i < final_num; ++i) { + CHECK_GE(ridx_data[i], 0) + << "Index specified for reindex layer was negative."; + CHECK_LT(ridx_data[i], initial_num) + << "Index specified for reindex layer was greater than batch size."; + } +} + +template +void BatchReindexLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + check_batch_reindex(bottom[0]->shape(0), bottom[1]->count(), + bottom[1]->cpu_data()); + if (top[0]->count() == 0) { + return; + } + int inner_dim = bottom[0]->count() / bottom[0]->shape(0); + const Dtype* in = bottom[0]->cpu_data(); + const Dtype* permut = bottom[1]->cpu_data(); + Dtype* out = top[0]->mutable_cpu_data(); + for (int index = 0; index < top[0]->count(); ++index) { + int n = index / (inner_dim); + int in_n = static_cast(permut[n]); + out[index] = in[in_n * (inner_dim) + index % (inner_dim)]; + } +} + +template +void BatchReindexLayer::Backward_cpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + CHECK(!propagate_down[1]) << "Cannot backprop to index."; + if (!propagate_down[0]) { + return; + } + int inner_dim = bottom[0]->count() / bottom[0]->shape(0); + Dtype* bot_diff = bottom[0]->mutable_cpu_diff(); + const Dtype* permut = bottom[1]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + caffe_set(bottom[0]->count(), Dtype(0), bot_diff); + for (int index = 0; index < top[0]->count(); ++index) { + int n = index / (inner_dim); + int in_n = static_cast(permut[n]); + bot_diff[in_n * (inner_dim) + index % (inner_dim)] += top_diff[index]; + } +} + +#ifdef CPU_ONLY +STUB_GPU(BatchReindexLayer); +#endif + +INSTANTIATE_CLASS(BatchReindexLayer); +REGISTER_LAYER_CLASS(BatchReindex); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cu b/3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cu new file mode 100644 index 00000000..83054d36 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/batch_reindex_layer.cu @@ -0,0 +1,106 @@ +#include +#include +#include + +#include "caffe/layers/batch_reindex_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void BRForward(const int count, const int inner_dim, const Dtype* in, + const Dtype* permut, Dtype* out) { + CUDA_KERNEL_LOOP(index, count) { + int n = index / (inner_dim); + int in_n = static_cast(permut[n]); + out[index] = in[in_n * (inner_dim) + index % (inner_dim)]; + } +} + +template +void BatchReindexLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + check_batch_reindex(bottom[0]->shape(0), bottom[1]->count(), + bottom[1]->cpu_data()); + if (top[0]->count() == 0) { + return; + } + int threads = top[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + BRForward <<>>( + top[0]->count(), bottom[0]->count() / bottom[0]->shape(0), + bottom[0]->gpu_data(), bottom[1]->gpu_data(), top[0]->mutable_gpu_data()); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void BRBackward(const int count, const int inner_dim, + const Dtype* in, const Dtype* top_indexes, + const Dtype* begins, const Dtype* counts, + Dtype* out) { + CUDA_KERNEL_LOOP(index, count) { + int n = index / (inner_dim); + out[index] = 0; + int lower = static_cast(begins[n]); + int upper = lower + static_cast(counts[n]); + for (int i = lower; i < upper; ++i) { + int in_n = static_cast(top_indexes[i]); + out[index] += in[in_n * (inner_dim) + index % (inner_dim)]; + } + } +} + +template +void BatchReindexLayer::Backward_gpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + CHECK(!propagate_down[1]) << "Cannot backprop to index."; + if (!propagate_down[0]) { + return; + } + + vector > mapping; + const Dtype* perm = bottom[1]->cpu_data(); + for (int i = 0; i < bottom[1]->count(); ++i) { + mapping.push_back(pair(static_cast(perm[i]), i)); + } + std::sort(mapping.begin(), mapping.end(), pair_sort_first()); + + // Each element of the bottom diff is potentially the sum of many top diffs. + // However, we'd like each CUDA thread to handle exactly one output. Hence, + // we first pre-compute a list of lists of indices that need to be summed for + // each output. `top_indexes` holds the data of this list of lists. The + // k'th element of `begins` points to the location in `top_indexes` where the + // list for the k'th example begin, and the k'th element of `counts` is the + // length of that list. + vector shape; + shape.push_back(bottom[1]->count()); + Blob top_indexes(shape); + shape[0] = bottom[0]->shape(0); + Blob counts(shape); + Blob begins(shape); + Dtype* t_i_data = top_indexes.mutable_cpu_data(); + Dtype* c_data = counts.mutable_cpu_data(); + Dtype* b_data = begins.mutable_cpu_data(); + caffe_set(begins.count(), Dtype(-1), b_data); + caffe_set(counts.count(), Dtype(0), c_data); + for (int i = 0; i < mapping.size(); ++i) { + t_i_data[i] = mapping[i].second; + if (b_data[mapping[i].first] == -1) { + b_data[mapping[i].first] = i; + } + c_data[mapping[i].first] += 1; + } + + int threads = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + BRBackward <<>>( + bottom[0]->count(), bottom[0]->count() / bottom[0]->shape(0), + top[0]->gpu_diff(), top_indexes.gpu_data(), begins.gpu_data(), + counts.gpu_data(), bottom[0]->mutable_gpu_diff()); + CUDA_POST_KERNEL_CHECK; +} + +INSTANTIATE_LAYER_GPU_FUNCS(BatchReindexLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/bias_layer.cpp b/3rdparty/caffe/src/caffe/layers/bias_layer.cpp new file mode 100644 index 00000000..4726a729 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/bias_layer.cpp @@ -0,0 +1,121 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/bias_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void BiasLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + if (bottom.size() == 1 && this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else if (bottom.size() == 1) { + // bias is a learned parameter; initialize it + const BiasParameter& param = this->layer_param_.bias_param(); + const int axis = bottom[0]->CanonicalAxisIndex(param.axis()); + const int num_axes = param.num_axes(); + CHECK_GE(num_axes, -1) << "num_axes must be non-negative, " + << "or -1 to extend to the end of bottom[0]"; + if (num_axes >= 0) { + CHECK_GE(bottom[0]->num_axes(), axis + num_axes) + << "bias blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis; + } + this->blobs_.resize(1); + const vector::const_iterator& shape_start = + bottom[0]->shape().begin() + axis; + const vector::const_iterator& shape_end = + (num_axes == -1) ? bottom[0]->shape().end() : (shape_start + num_axes); + vector bias_shape(shape_start, shape_end); + this->blobs_[0].reset(new Blob(bias_shape)); + shared_ptr > filler(GetFiller(param.filler())); + filler->Fill(this->blobs_[0].get()); + } + this->param_propagate_down_.resize(this->blobs_.size(), true); +} + +template +void BiasLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const BiasParameter& param = this->layer_param_.bias_param(); + Blob* bias = (bottom.size() > 1) ? bottom[1] : this->blobs_[0].get(); + // Always set axis == 0 in special case where bias is a scalar + // (num_axes == 0). Mathematically equivalent for any choice of axis, so the + // actual setting can be safely ignored; and computation is most efficient + // with axis == 0 and (therefore) outer_dim_ == 1. + const int axis = (bias->num_axes() == 0) ? + 0 : bottom[0]->CanonicalAxisIndex(param.axis()); + CHECK_GE(bottom[0]->num_axes(), axis + bias->num_axes()) + << "bias blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis; + for (int i = 0; i < bias->num_axes(); ++i) { + CHECK_EQ(bottom[0]->shape(axis + i), bias->shape(i)) + << "dimension mismatch between bottom[0]->shape(" << axis + i + << ") and bias->shape(" << i << ")"; + } + outer_dim_ = bottom[0]->count(0, axis); + bias_dim_ = bias->count(); + inner_dim_ = bottom[0]->count(axis + bias->num_axes()); + dim_ = bias_dim_ * inner_dim_; + if (bottom[0] != top[0]) { + top[0]->ReshapeLike(*bottom[0]); + } + bias_multiplier_.Reshape(vector(1, inner_dim_)); + if (bias_multiplier_.cpu_data()[inner_dim_ - 1] != Dtype(1)) { + caffe_set(inner_dim_, Dtype(1), bias_multiplier_.mutable_cpu_data()); + } +} + +template +void BiasLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bias_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + if (bottom[0] != top[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } + for (int n = 0; n < outer_dim_; ++n) { + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, bias_dim_, + inner_dim_, 1, Dtype(1), bias_data, + bias_multiplier_.cpu_data(), Dtype(1), top_data); + top_data += dim_; + } +} + +template +void BiasLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[0] && bottom[0] != top[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_copy(bottom[0]->count(), top_diff, bottom_diff); + } + // in-place, we don't need to do anything with the data diff + const bool bias_param = (bottom.size() == 1); + if ((!bias_param && propagate_down[1]) || + (bias_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bias_diff = (bias_param ? this->blobs_[0].get() : bottom[1]) + ->mutable_cpu_diff(); + bool accum = bias_param; + for (int n = 0; n < outer_dim_; ++n) { + caffe_cpu_gemv(CblasNoTrans, bias_dim_, inner_dim_, Dtype(1), + top_diff, bias_multiplier_.cpu_data(), Dtype(accum), bias_diff); + top_diff += dim_; + accum = true; + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(BiasLayer); +#endif + +INSTANTIATE_CLASS(BiasLayer); +REGISTER_LAYER_CLASS(Bias); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/bias_layer.cu b/3rdparty/caffe/src/caffe/layers/bias_layer.cu new file mode 100644 index 00000000..8ac913a5 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/bias_layer.cu @@ -0,0 +1,59 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/bias_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void BiasForward(const int n, const Dtype* in, + const Dtype* bias, const int bias_dim, const int inner_dim, + Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + const int bias_index = (index / inner_dim) % bias_dim; + out[index] = in[index] + bias[bias_index]; + } +} + +template +void BiasLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const int count = top[0]->count(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* bias_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + BiasForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, bottom_data, bias_data, bias_dim_, inner_dim_, top_data); +} + +template +void BiasLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[0] && bottom[0] != top[0]) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + caffe_copy(bottom[0]->count(), top_diff, bottom_diff); + } + // in-place, we don't need to do anything with the data diff + const bool bias_param = (bottom.size() == 1); + if ((!bias_param && propagate_down[1]) || + (bias_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bias_diff = (bias_param ? this->blobs_[0].get() : bottom[1]) + ->mutable_gpu_diff(); + bool accum = bias_param; + for (int n = 0; n < outer_dim_; ++n) { + caffe_gpu_gemv(CblasNoTrans, bias_dim_, inner_dim_, Dtype(1), + top_diff, bias_multiplier_.gpu_data(), Dtype(accum), bias_diff); + top_diff += dim_; + accum = true; + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(BiasLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/bnll_layer.cpp b/3rdparty/caffe/src/caffe/layers/bnll_layer.cpp new file mode 100644 index 00000000..448d86d7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/bnll_layer.cpp @@ -0,0 +1,47 @@ +#include +#include + +#include "caffe/layers/bnll_layer.hpp" + +namespace caffe { + +const float kBNLL_THRESHOLD = 50.; + +template +void BNLLLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + top_data[i] = bottom_data[i] > 0 ? + bottom_data[i] + log(1. + exp(-bottom_data[i])) : + log(1. + exp(bottom_data[i])); + } +} + +template +void BNLLLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int count = bottom[0]->count(); + Dtype expval; + for (int i = 0; i < count; ++i) { + expval = exp(std::min(bottom_data[i], Dtype(kBNLL_THRESHOLD))); + bottom_diff[i] = top_diff[i] * expval / (expval + 1.); + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(BNLLLayer); +#endif + +INSTANTIATE_CLASS(BNLLLayer); +REGISTER_LAYER_CLASS(BNLL); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/bnll_layer.cu b/3rdparty/caffe/src/caffe/layers/bnll_layer.cu new file mode 100644 index 00000000..8df8ef09 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/bnll_layer.cu @@ -0,0 +1,59 @@ +#include +#include + +#include "caffe/layers/bnll_layer.hpp" + +namespace caffe { + +const float kBNLL_THRESHOLD = 50.; + +template +__global__ void BNLLForward(const int n, const Dtype* in, Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = in[index] > 0 ? + in[index] + log(1. + exp(-in[index])) : + log(1. + exp(in[index])); + } +} + +template +void BNLLLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + BNLLForward<<>>( + count, bottom_data, top_data); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void BNLLBackward(const int n, const Dtype* in_diff, + const Dtype* in_data, Dtype* out_diff) { + CUDA_KERNEL_LOOP(index, n) { + Dtype expval = exp(min(in_data[index], Dtype(kBNLL_THRESHOLD))); + out_diff[index] = in_diff[index] * expval / (expval + 1.); + } +} + +template +void BNLLLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + BNLLBackward<<>>( + count, top_diff, bottom_data, bottom_diff); + CUDA_POST_KERNEL_CHECK; + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(BNLLLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/concat_layer.cpp b/3rdparty/caffe/src/caffe/layers/concat_layer.cpp new file mode 100644 index 00000000..580bd479 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/concat_layer.cpp @@ -0,0 +1,104 @@ +#include + +#include "caffe/layers/concat_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ConcatLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const ConcatParameter& concat_param = this->layer_param_.concat_param(); + CHECK(!(concat_param.has_axis() && concat_param.has_concat_dim())) + << "Either axis or concat_dim should be specified; not both."; +} + +template +void ConcatLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const int num_axes = bottom[0]->num_axes(); + const ConcatParameter& concat_param = this->layer_param_.concat_param(); + if (concat_param.has_concat_dim()) { + concat_axis_ = static_cast(concat_param.concat_dim()); + // Don't allow negative indexing for concat_dim, a uint32 -- almost + // certainly unintended. + CHECK_GE(concat_axis_, 0) << "casting concat_dim from uint32 to int32 " + << "produced negative result; concat_dim must satisfy " + << "0 <= concat_dim < " << kMaxBlobAxes; + CHECK_LT(concat_axis_, num_axes) << "concat_dim out of range."; + } else { + concat_axis_ = bottom[0]->CanonicalAxisIndex(concat_param.axis()); + } + // Initialize with the first blob. + vector top_shape = bottom[0]->shape(); + num_concats_ = bottom[0]->count(0, concat_axis_); + concat_input_size_ = bottom[0]->count(concat_axis_ + 1); + int bottom_count_sum = bottom[0]->count(); + for (int i = 1; i < bottom.size(); ++i) { + CHECK_EQ(num_axes, bottom[i]->num_axes()) + << "All inputs must have the same #axes."; + for (int j = 0; j < num_axes; ++j) { + if (j == concat_axis_) { continue; } + CHECK_EQ(top_shape[j], bottom[i]->shape(j)) + << "All inputs must have the same shape, except at concat_axis."; + } + bottom_count_sum += bottom[i]->count(); + top_shape[concat_axis_] += bottom[i]->shape(concat_axis_); + } + top[0]->Reshape(top_shape); + CHECK_EQ(bottom_count_sum, top[0]->count()); + if (bottom.size() == 1) { + top[0]->ShareData(*bottom[0]); + top[0]->ShareDiff(*bottom[0]); + } +} + +template +void ConcatLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + if (bottom.size() == 1) { return; } + Dtype* top_data = top[0]->mutable_cpu_data(); + int offset_concat_axis = 0; + const int top_concat_axis = top[0]->shape(concat_axis_); + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->cpu_data(); + const int bottom_concat_axis = bottom[i]->shape(concat_axis_); + for (int n = 0; n < num_concats_; ++n) { + caffe_copy(bottom_concat_axis * concat_input_size_, + bottom_data + n * bottom_concat_axis * concat_input_size_, + top_data + (n * top_concat_axis + offset_concat_axis) + * concat_input_size_); + } + offset_concat_axis += bottom_concat_axis; + } +} + +template +void ConcatLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (bottom.size() == 1) { return; } + const Dtype* top_diff = top[0]->cpu_diff(); + int offset_concat_axis = 0; + const int top_concat_axis = top[0]->shape(concat_axis_); + for (int i = 0; i < bottom.size(); ++i) { + const int bottom_concat_axis = bottom[i]->shape(concat_axis_); + if (propagate_down[i]) { + Dtype* bottom_diff = bottom[i]->mutable_cpu_diff(); + for (int n = 0; n < num_concats_; ++n) { + caffe_copy(bottom_concat_axis * concat_input_size_, top_diff + + (n * top_concat_axis + offset_concat_axis) * concat_input_size_, + bottom_diff + n * bottom_concat_axis * concat_input_size_); + } + } + offset_concat_axis += bottom_concat_axis; + } +} + +#ifdef CPU_ONLY +STUB_GPU(ConcatLayer); +#endif + +INSTANTIATE_CLASS(ConcatLayer); +REGISTER_LAYER_CLASS(Concat); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/concat_layer.cu b/3rdparty/caffe/src/caffe/layers/concat_layer.cu new file mode 100644 index 00000000..a3a0bf6f --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/concat_layer.cu @@ -0,0 +1,73 @@ +#include + +#include "caffe/layers/concat_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void Concat(const int nthreads, const Dtype* in_data, + const bool forward, const int num_concats, const int concat_size, + const int top_concat_axis, const int bottom_concat_axis, + const int offset_concat_axis, Dtype* out_data) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int total_concat_size = concat_size * bottom_concat_axis; + const int concat_num = index / total_concat_size; + const int concat_index = index % total_concat_size; + const int top_index = concat_index + + (concat_num * top_concat_axis + offset_concat_axis) * concat_size; + if (forward) { + out_data[top_index] = in_data[index]; + } else { + out_data[index] = in_data[top_index]; + } + } +} + +template +void ConcatLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + if (bottom.size() == 1) { return; } + Dtype* top_data = top[0]->mutable_gpu_data(); + int offset_concat_axis = 0; + const int top_concat_axis = top[0]->shape(concat_axis_); + const bool kForward = true; + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + const int bottom_concat_axis = bottom[i]->shape(concat_axis_); + const int bottom_concat_size = bottom_concat_axis * concat_input_size_; + const int nthreads = bottom_concat_size * num_concats_; + Concat // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + nthreads, bottom_data, kForward, num_concats_, concat_input_size_, + top_concat_axis, bottom_concat_axis, offset_concat_axis, top_data); + offset_concat_axis += bottom_concat_axis; + } +} + +template +void ConcatLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (bottom.size() == 1) { return; } + const Dtype* top_diff = top[0]->gpu_diff(); + int offset_concat_axis = 0; + const int top_concat_axis = top[0]->shape(concat_axis_); + const bool kForward = false; + for (int i = 0; i < bottom.size(); ++i) { + const int bottom_concat_axis = bottom[i]->shape(concat_axis_); + if (propagate_down[i]) { + Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); + const int bottom_concat_size = bottom_concat_axis * concat_input_size_; + const int nthreads = bottom_concat_size * num_concats_; + Concat // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + nthreads, top_diff, kForward, num_concats_, concat_input_size_, + top_concat_axis, bottom_concat_axis, offset_concat_axis, bottom_diff); + } + offset_concat_axis += bottom_concat_axis; + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ConcatLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cpp new file mode 100644 index 00000000..599e178e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cpp @@ -0,0 +1,120 @@ +#include +#include + +#include "caffe/layers/contrastive_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ContrastiveLossLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + LossLayer::LayerSetUp(bottom, top); + CHECK_EQ(bottom[0]->channels(), bottom[1]->channels()); + CHECK_EQ(bottom[0]->height(), 1); + CHECK_EQ(bottom[0]->width(), 1); + CHECK_EQ(bottom[1]->height(), 1); + CHECK_EQ(bottom[1]->width(), 1); + CHECK_EQ(bottom[2]->channels(), 1); + CHECK_EQ(bottom[2]->height(), 1); + CHECK_EQ(bottom[2]->width(), 1); + diff_.Reshape(bottom[0]->num(), bottom[0]->channels(), 1, 1); + diff_sq_.Reshape(bottom[0]->num(), bottom[0]->channels(), 1, 1); + dist_sq_.Reshape(bottom[0]->num(), 1, 1, 1); + // vector of ones used to sum along channels + summer_vec_.Reshape(bottom[0]->channels(), 1, 1, 1); + for (int i = 0; i < bottom[0]->channels(); ++i) + summer_vec_.mutable_cpu_data()[i] = Dtype(1); +} + +template +void ContrastiveLossLayer::Forward_cpu( + const vector*>& bottom, + const vector*>& top) { + int count = bottom[0]->count(); + caffe_sub( + count, + bottom[0]->cpu_data(), // a + bottom[1]->cpu_data(), // b + diff_.mutable_cpu_data()); // a_i-b_i + const int channels = bottom[0]->channels(); + Dtype margin = this->layer_param_.contrastive_loss_param().margin(); + bool legacy_version = + this->layer_param_.contrastive_loss_param().legacy_version(); + Dtype loss(0.0); + for (int i = 0; i < bottom[0]->num(); ++i) { + dist_sq_.mutable_cpu_data()[i] = caffe_cpu_dot(channels, + diff_.cpu_data() + (i*channels), diff_.cpu_data() + (i*channels)); + if (static_cast(bottom[2]->cpu_data()[i])) { // similar pairs + loss += dist_sq_.cpu_data()[i]; + } else { // dissimilar pairs + if (legacy_version) { + loss += std::max(margin - dist_sq_.cpu_data()[i], Dtype(0.0)); + } else { + Dtype dist = std::max(margin - sqrt(dist_sq_.cpu_data()[i]), + Dtype(0.0)); + loss += dist*dist; + } + } + } + loss = loss / static_cast(bottom[0]->num()) / Dtype(2); + top[0]->mutable_cpu_data()[0] = loss; +} + +template +void ContrastiveLossLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + Dtype margin = this->layer_param_.contrastive_loss_param().margin(); + bool legacy_version = + this->layer_param_.contrastive_loss_param().legacy_version(); + for (int i = 0; i < 2; ++i) { + if (propagate_down[i]) { + const Dtype sign = (i == 0) ? 1 : -1; + const Dtype alpha = sign * top[0]->cpu_diff()[0] / + static_cast(bottom[i]->num()); + int num = bottom[i]->num(); + int channels = bottom[i]->channels(); + for (int j = 0; j < num; ++j) { + Dtype* bout = bottom[i]->mutable_cpu_diff(); + if (static_cast(bottom[2]->cpu_data()[j])) { // similar pairs + caffe_cpu_axpby( + channels, + alpha, + diff_.cpu_data() + (j*channels), + Dtype(0.0), + bout + (j*channels)); + } else { // dissimilar pairs + Dtype mdist(0.0); + Dtype beta(0.0); + if (legacy_version) { + mdist = margin - dist_sq_.cpu_data()[j]; + beta = -alpha; + } else { + Dtype dist = sqrt(dist_sq_.cpu_data()[j]); + mdist = margin - dist; + beta = -alpha * mdist / (dist + Dtype(1e-4)); + } + if (mdist > Dtype(0.0)) { + caffe_cpu_axpby( + channels, + beta, + diff_.cpu_data() + (j*channels), + Dtype(0.0), + bout + (j*channels)); + } else { + caffe_set(channels, Dtype(0), bout + (j*channels)); + } + } + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(ContrastiveLossLayer); +#endif + +INSTANTIATE_CLASS(ContrastiveLossLayer); +REGISTER_LAYER_CLASS(ContrastiveLoss); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cu b/3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cu new file mode 100644 index 00000000..fd7d67cc --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/contrastive_loss_layer.cu @@ -0,0 +1,109 @@ +#include +#include + +#include "caffe/layers/contrastive_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ContrastiveLossLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + const int count = bottom[0]->count(); + caffe_gpu_sub( + count, + bottom[0]->gpu_data(), // a + bottom[1]->gpu_data(), // b + diff_.mutable_gpu_data()); // a_i-b_i + caffe_gpu_powx( + count, + diff_.mutable_gpu_data(), // a_i-b_i + Dtype(2), + diff_sq_.mutable_gpu_data()); // (a_i-b_i)^2 + caffe_gpu_gemv( + CblasNoTrans, + bottom[0]->num(), + bottom[0]->channels(), + Dtype(1.0), + diff_sq_.gpu_data(), // (a_i-b_i)^2 + summer_vec_.gpu_data(), + Dtype(0.0), + dist_sq_.mutable_gpu_data()); // \Sum (a_i-b_i)^2 + Dtype margin = this->layer_param_.contrastive_loss_param().margin(); + bool legacy_version = + this->layer_param_.contrastive_loss_param().legacy_version(); + Dtype loss(0.0); + for (int i = 0; i < bottom[0]->num(); ++i) { + if (static_cast(bottom[2]->cpu_data()[i])) { // similar pairs + loss += dist_sq_.cpu_data()[i]; + } else { // dissimilar pairs + if (legacy_version) { + loss += std::max(margin - dist_sq_.cpu_data()[i], Dtype(0.0)); + } else { + Dtype dist = std::max(margin - sqrt(dist_sq_.cpu_data()[i]), + Dtype(0.0)); + loss += dist*dist; + } + } + } + loss = loss / static_cast(bottom[0]->num()) / Dtype(2); + top[0]->mutable_cpu_data()[0] = loss; +} + +template +__global__ void CLLBackward(const int count, const int channels, + const Dtype margin, const bool legacy_version, const Dtype alpha, + const Dtype* y, const Dtype* diff, const Dtype* dist_sq, + Dtype *bottom_diff) { + CUDA_KERNEL_LOOP(i, count) { + int n = i / channels; // the num index, to access y and dist_sq + if (static_cast(y[n])) { // similar pairs + bottom_diff[i] = alpha * diff[i]; + } else { // dissimilar pairs + Dtype mdist(0.0); + Dtype beta(0.0); + if (legacy_version) { + mdist = (margin - dist_sq[n]); + beta = -alpha; + } else { + Dtype dist = sqrt(dist_sq[n]); + mdist = (margin - dist); + beta = -alpha * mdist / (dist + Dtype(1e-4)) * diff[i]; + } + if (mdist > 0.0) { + bottom_diff[i] = beta; + } else { + bottom_diff[i] = 0; + } + } + } +} + +template +void ContrastiveLossLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + for (int i = 0; i < 2; ++i) { + if (propagate_down[i]) { + const int count = bottom[0]->count(); + const int channels = bottom[0]->channels(); + Dtype margin = this->layer_param_.contrastive_loss_param().margin(); + const bool legacy_version = + this->layer_param_.contrastive_loss_param().legacy_version(); + const Dtype sign = (i == 0) ? 1 : -1; + const Dtype alpha = sign * top[0]->cpu_diff()[0] / + static_cast(bottom[0]->num()); + // NOLINT_NEXT_LINE(whitespace/operators) + CLLBackward<<>>( + count, channels, margin, legacy_version, alpha, + bottom[2]->gpu_data(), // pair similarity 0 or 1 + diff_.gpu_data(), // the cached eltwise difference between a and b + dist_sq_.gpu_data(), // the cached square distance between a and b + bottom[i]->mutable_gpu_diff()); + CUDA_POST_KERNEL_CHECK; + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ContrastiveLossLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/conv_layer.cpp b/3rdparty/caffe/src/caffe/layers/conv_layer.cpp new file mode 100644 index 00000000..5d522ab3 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/conv_layer.cpp @@ -0,0 +1,81 @@ +#include + +#include "caffe/layers/conv_layer.hpp" + +namespace caffe { + +template +void ConvolutionLayer::compute_output_shape() { + const int* kernel_shape_data = this->kernel_shape_.cpu_data(); + const int* stride_data = this->stride_.cpu_data(); + const int* pad_data = this->pad_.cpu_data(); + const int* dilation_data = this->dilation_.cpu_data(); + this->output_shape_.clear(); + for (int i = 0; i < this->num_spatial_axes_; ++i) { + // i + 1 to skip channel axis + const int input_dim = this->input_shape(i + 1); + const int kernel_extent = dilation_data[i] * (kernel_shape_data[i] - 1) + 1; + const int output_dim = (input_dim + 2 * pad_data[i] - kernel_extent) + / stride_data[i] + 1; + this->output_shape_.push_back(output_dim); + } +} + +template +void ConvolutionLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* weight = this->blobs_[0]->cpu_data(); + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->cpu_data(); + Dtype* top_data = top[i]->mutable_cpu_data(); + for (int n = 0; n < this->num_; ++n) { + this->forward_cpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); + if (this->bias_term_) { + const Dtype* bias = this->blobs_[1]->cpu_data(); + this->forward_cpu_bias(top_data + n * this->top_dim_, bias); + } + } + } +} + +template +void ConvolutionLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* weight = this->blobs_[0]->cpu_data(); + Dtype* weight_diff = this->blobs_[0]->mutable_cpu_diff(); + for (int i = 0; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->cpu_diff(); + const Dtype* bottom_data = bottom[i]->cpu_data(); + Dtype* bottom_diff = bottom[i]->mutable_cpu_diff(); + // Bias gradient, if necessary. + if (this->bias_term_ && this->param_propagate_down_[1]) { + Dtype* bias_diff = this->blobs_[1]->mutable_cpu_diff(); + for (int n = 0; n < this->num_; ++n) { + this->backward_cpu_bias(bias_diff, top_diff + n * this->top_dim_); + } + } + if (this->param_propagate_down_[0] || propagate_down[i]) { + for (int n = 0; n < this->num_; ++n) { + // gradient w.r.t. weight. Note that we will accumulate diffs. + if (this->param_propagate_down_[0]) { + this->weight_cpu_gemm(bottom_data + n * this->bottom_dim_, + top_diff + n * this->top_dim_, weight_diff); + } + // gradient w.r.t. bottom data, if necessary. + if (propagate_down[i]) { + this->backward_cpu_gemm(top_diff + n * this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_); + } + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(ConvolutionLayer); +#endif + +INSTANTIATE_CLASS(ConvolutionLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/conv_layer.cu b/3rdparty/caffe/src/caffe/layers/conv_layer.cu new file mode 100644 index 00000000..d06e4b62 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/conv_layer.cu @@ -0,0 +1,60 @@ +#include + +#include "caffe/layers/conv_layer.hpp" + +namespace caffe { + +template +void ConvolutionLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* weight = this->blobs_[0]->gpu_data(); + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + Dtype* top_data = top[i]->mutable_gpu_data(); + for (int n = 0; n < this->num_; ++n) { + this->forward_gpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); + if (this->bias_term_) { + const Dtype* bias = this->blobs_[1]->gpu_data(); + this->forward_gpu_bias(top_data + n * this->top_dim_, bias); + } + } + } +} + +template +void ConvolutionLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* weight = this->blobs_[0]->gpu_data(); + Dtype* weight_diff = this->blobs_[0]->mutable_gpu_diff(); + for (int i = 0; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->gpu_diff(); + // Bias gradient, if necessary. + if (this->bias_term_ && this->param_propagate_down_[1]) { + Dtype* bias_diff = this->blobs_[1]->mutable_gpu_diff(); + for (int n = 0; n < this->num_; ++n) { + this->backward_gpu_bias(bias_diff, top_diff + n * this->top_dim_); + } + } + if (this->param_propagate_down_[0] || propagate_down[i]) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); + for (int n = 0; n < this->num_; ++n) { + // gradient w.r.t. weight. Note that we will accumulate diffs. + if (this->param_propagate_down_[0]) { + this->weight_gpu_gemm(bottom_data + n * this->bottom_dim_, + top_diff + n * this->top_dim_, weight_diff); + } + // gradient w.r.t. bottom data, if necessary. + if (propagate_down[i]) { + this->backward_gpu_gemm(top_diff + n * this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_); + } + } + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ConvolutionLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/crop_layer.cpp b/3rdparty/caffe/src/caffe/layers/crop_layer.cpp new file mode 100644 index 00000000..ef8c177c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/crop_layer.cpp @@ -0,0 +1,141 @@ +#include +#include +#include +#include +#include + + +#include "caffe/layer.hpp" +#include "caffe/layers/crop_layer.hpp" +#include "caffe/net.hpp" + + +namespace caffe { + +template +void CropLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + // LayerSetup() handles the number of dimensions; Reshape() handles the sizes. + // bottom[0] supplies the data + // bottom[1] supplies the size + const CropParameter& param = this->layer_param_.crop_param(); + CHECK_EQ(bottom.size(), 2) << "Wrong number of bottom blobs."; + int input_dim = bottom[0]->num_axes(); + const int start_axis = bottom[0]->CanonicalAxisIndex(param.axis()); + CHECK_LT(start_axis, input_dim) << "crop axis bigger than input dim"; + if (param.offset_size() > 1) { + // the number of crop values specified must be equal to the number + // of dimensions following axis + CHECK_EQ(start_axis + param.offset_size(), input_dim) + << "number of offset values specified must be equal to the number of " + << "dimensions following axis."; + } +} + +template +void CropLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const CropParameter& param = this->layer_param_.crop_param(); + int input_dim = bottom[0]->num_axes(); + const int start_axis = bottom[0]->CanonicalAxisIndex(param.axis()); + + // Initialize offsets to 0 and the new shape to the current shape of the data. + offsets = vector(input_dim, 0); + vector new_shape(bottom[0]->shape()); + + // Determine crop offsets and the new shape post-crop. + for (int i = 0; i < input_dim; ++i) { + int crop_offset = 0; + int new_size = bottom[0]->shape(i); + if (i >= start_axis) { + new_size = bottom[1]->shape(i); + if (param.offset_size() == 1) { + // If only one offset is given, all crops have the same offset. + crop_offset = param.offset(0); + } else if (param.offset_size() > 1) { + // For several offsets, the number of offsets must be equal to the + // number of dimensions to crop, that is dimensions after the axis. + crop_offset = param.offset(i - start_axis); + } + // Check that the crop and offset are within the dimension's bounds. + CHECK_GE(bottom[0]->shape(i) - crop_offset, bottom[1]->shape(i)) + << "the crop for dimension " << i << " is out-of-bounds with " + << "size " << bottom[1]->shape(i) << " and offset " << crop_offset; + } + new_shape[i] = new_size; + offsets[i] = crop_offset; + } + top[0]->Reshape(new_shape); +} + +template +void CropLayer::crop_copy(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward) { + if (cur_dim + 1 < top[0]->num_axes()) { + // We are not yet at the final dimension, call copy recursively + for (int i = 0; i < top[0]->shape(cur_dim); ++i) { + indices[cur_dim] = i; + crop_copy(bottom, top, offsets, indices, cur_dim+1, + src_data, dest_data, is_forward); + } + } else { + // We are at the last dimensions, which is stored continuously in memory + // prepare index vector reduced(red) and with offsets(off) + std::vector ind_red(cur_dim, 0); + std::vector ind_off(cur_dim+1, 0); + for (int j = 0; j < cur_dim; ++j) { + ind_red[j] = indices[j]; + ind_off[j] = indices[j] + offsets[j]; + } + ind_off[cur_dim] = offsets[cur_dim]; + // do the copy + if (is_forward) { + caffe_copy(top[0]->shape(cur_dim), + src_data + bottom[0]->offset(ind_off), + dest_data + top[0]->offset(ind_red)); + } else { + // in the backwards pass the src_data is top_diff + // and the dest_data is bottom_diff + caffe_copy(top[0]->shape(cur_dim), + src_data + top[0]->offset(ind_red), + dest_data + bottom[0]->offset(ind_off)); + } + } +} + +template +void CropLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + std::vector indices(top[0]->num_axes(), 0); + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + crop_copy(bottom, top, offsets, indices, 0, bottom_data, top_data, true); +} + +template +void CropLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + + if (propagate_down[0]) { + caffe_set(bottom[0]->count(), static_cast(0), bottom_diff); + std::vector indices(top[0]->num_axes(), 0); + crop_copy(bottom, top, offsets, indices, 0, top_diff, bottom_diff, false); + } +} + +#ifdef CPU_ONLY +STUB_GPU(CropLayer); +#endif + +INSTANTIATE_CLASS(CropLayer); +REGISTER_LAYER_CLASS(Crop); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/crop_layer.cu b/3rdparty/caffe/src/caffe/layers/crop_layer.cu new file mode 100644 index 00000000..677077cd --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/crop_layer.cu @@ -0,0 +1,109 @@ +#include + +#include "caffe/layers/crop_layer.hpp" + +namespace caffe { + +// Copy (one line per thread) from one array to another, with arbitrary +// strides in the last two dimensions. +template +__global__ void copy_kernel(const int n, const int height, const int width, + const int src_inner_stride, + const int dest_inner_stride, + const Dtype* src, Dtype* dest) { + CUDA_KERNEL_LOOP(index, n) { + int src_start = index * src_inner_stride; + int dest_start = index * dest_inner_stride; + for (int i = 0; i < width; ++i) { + dest[dest_start + i] = src[src_start + i]; + } + } +} + +template +void CropLayer::crop_copy_gpu(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward) { + if (cur_dim + 2 < top[0]->num_axes()) { + // We are not yet at the final dimension, call copy recursivley + for (int i = 0; i < top[0]->shape(cur_dim); ++i) { + indices[cur_dim] = i; + crop_copy_gpu(bottom, top, offsets, indices, cur_dim+1, + src_data, dest_data, is_forward); + } + } else { + // We are at the last two dimensions, which are stored continuously in + // memory. With (N,C,H,W) + // (0,1,2,3) cur_dim -> H + // cur_dim+1 -> W + const int lines = top[0]->shape(cur_dim); + const int height = top[0]->shape(cur_dim); + const int width = top[0]->shape(cur_dim+1); + std::vector ind_off(cur_dim+2, 0); + for (int j = 0; j < cur_dim; ++j) { + ind_off[j] = indices[j] + offsets[j]; + } + ind_off[cur_dim] = offsets[cur_dim]; + ind_off[cur_dim+1] = offsets[cur_dim+1]; + // Compute copy strides + const int src_inner_stride = bottom[0]->shape(cur_dim+1); + const int dest_inner_stride = top[0]->shape(cur_dim+1); + + if (is_forward) { + const Dtype* bottom_data = bottom[0]->gpu_data() + + bottom[0]->offset(ind_off); + Dtype* top_data = top[0]->mutable_gpu_data() + + top[0]->offset(indices); + // NOLINT_NEXT_LINE(whitespace/operators) + copy_kernel<<>>( + lines, height, width, + src_inner_stride, + dest_inner_stride, + bottom_data, top_data); + + } else { + const Dtype* top_diff = top[0]->gpu_diff() + + top[0]->offset(indices); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff() + + bottom[0]->offset(ind_off); + // NOLINT_NEXT_LINE(whitespace/operators) + copy_kernel<<>>( + lines, height, width, + dest_inner_stride, + src_inner_stride, + top_diff, bottom_diff); + } + } +} + +template +void CropLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + std::vector indices(top[0]->num_axes(), 0); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + crop_copy_gpu(bottom, top, offsets, indices, 0, bottom_data, top_data, true); +} + +template +void CropLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + + if (propagate_down[0]) { + caffe_gpu_set(bottom[0]->count(), static_cast(0), bottom_diff); + std::vector indices(top[0]->num_axes(), 0); + crop_copy_gpu(bottom, top, offsets, indices, 0, top_diff, bottom_diff, + false); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(CropLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cpp new file mode 100644 index 00000000..efc9e04e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cpp @@ -0,0 +1,269 @@ +#ifdef USE_CUDNN +#include +#include + +#include "caffe/layers/cudnn_conv_layer.hpp" + +namespace caffe { + +// Set to three for the benefit of the backward pass, which +// can use separate streams for calculating the gradient w.r.t. +// bias, filter weights, and bottom data for each group independently +#define CUDNN_STREAMS_PER_GROUP 3 + +/** + * TODO(dox) explain cuDNN interface + */ +template +void CuDNNConvolutionLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + ConvolutionLayer::LayerSetUp(bottom, top); + // Initialize CUDA streams and cuDNN. + stream_ = new cudaStream_t[this->group_ * CUDNN_STREAMS_PER_GROUP]; + handle_ = new cudnnHandle_t[this->group_ * CUDNN_STREAMS_PER_GROUP]; + + // Initialize algorithm arrays + fwd_algo_ = new cudnnConvolutionFwdAlgo_t[bottom.size()]; + bwd_filter_algo_= new cudnnConvolutionBwdFilterAlgo_t[bottom.size()]; + bwd_data_algo_ = new cudnnConvolutionBwdDataAlgo_t[bottom.size()]; + + // initialize size arrays + workspace_fwd_sizes_ = new size_t[bottom.size()]; + workspace_bwd_filter_sizes_ = new size_t[bottom.size()]; + workspace_bwd_data_sizes_ = new size_t[bottom.size()]; + + // workspace data + workspaceSizeInBytes = 0; + workspaceData = NULL; + workspace = new void*[this->group_ * CUDNN_STREAMS_PER_GROUP]; + + for (size_t i = 0; i < bottom.size(); ++i) { + // initialize all to default algorithms + fwd_algo_[i] = (cudnnConvolutionFwdAlgo_t)0; + bwd_filter_algo_[i] = (cudnnConvolutionBwdFilterAlgo_t)0; + bwd_data_algo_[i] = (cudnnConvolutionBwdDataAlgo_t)0; + // default algorithms don't require workspace + workspace_fwd_sizes_[i] = 0; + workspace_bwd_data_sizes_[i] = 0; + workspace_bwd_filter_sizes_[i] = 0; + } + + for (int g = 0; g < this->group_ * CUDNN_STREAMS_PER_GROUP; g++) { + CUDA_CHECK(cudaStreamCreate(&stream_[g])); + CUDNN_CHECK(cudnnCreate(&handle_[g])); + CUDNN_CHECK(cudnnSetStream(handle_[g], stream_[g])); + workspace[g] = NULL; + } + + // Set the indexing parameters. + bias_offset_ = (this->num_output_ / this->group_); + + // Create filter descriptor. + const int* kernel_shape_data = this->kernel_shape_.cpu_data(); + const int kernel_h = kernel_shape_data[0]; + const int kernel_w = kernel_shape_data[1]; + cudnn::createFilterDesc(&filter_desc_, + this->num_output_ / this->group_, this->channels_ / this->group_, + kernel_h, kernel_w); + + // Create tensor descriptor(s) for data and corresponding convolution(s). + for (int i = 0; i < bottom.size(); i++) { + cudnnTensorDescriptor_t bottom_desc; + cudnn::createTensor4dDesc(&bottom_desc); + bottom_descs_.push_back(bottom_desc); + cudnnTensorDescriptor_t top_desc; + cudnn::createTensor4dDesc(&top_desc); + top_descs_.push_back(top_desc); + cudnnConvolutionDescriptor_t conv_desc; + cudnn::createConvolutionDesc(&conv_desc); + conv_descs_.push_back(conv_desc); + } + + // Tensor descriptor for bias. + if (this->bias_term_) { + cudnn::createTensor4dDesc(&bias_desc_); + } + + handles_setup_ = true; +} + +template +void CuDNNConvolutionLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + ConvolutionLayer::Reshape(bottom, top); + CHECK_EQ(2, this->num_spatial_axes_) + << "CuDNNConvolution input must have 2 spatial axes " + << "(e.g., height and width). " + << "Use 'engine: CAFFE' for general ND convolution."; + bottom_offset_ = this->bottom_dim_ / this->group_; + top_offset_ = this->top_dim_ / this->group_; + const int height = bottom[0]->shape(this->channel_axis_ + 1); + const int width = bottom[0]->shape(this->channel_axis_ + 2); + const int height_out = top[0]->shape(this->channel_axis_ + 1); + const int width_out = top[0]->shape(this->channel_axis_ + 2); + const int* pad_data = this->pad_.cpu_data(); + const int pad_h = pad_data[0]; + const int pad_w = pad_data[1]; + const int* stride_data = this->stride_.cpu_data(); + const int stride_h = stride_data[0]; + const int stride_w = stride_data[1]; + + // Specify workspace limit for kernels directly until we have a + // planning strategy and a rewrite of Caffe's GPU memory mangagement + size_t workspace_limit_bytes = 8*1024*1024; + + for (int i = 0; i < bottom.size(); i++) { + cudnn::setTensor4dDesc(&bottom_descs_[i], + this->num_, + this->channels_ / this->group_, height, width, + this->channels_ * height * width, + height * width, width, 1); + cudnn::setTensor4dDesc(&top_descs_[i], + this->num_, + this->num_output_ / this->group_, height_out, width_out, + this->num_output_ * this->out_spatial_dim_, + this->out_spatial_dim_, width_out, 1); + cudnn::setConvolutionDesc(&conv_descs_[i], bottom_descs_[i], + filter_desc_, pad_h, pad_w, + stride_h, stride_w); + + // choose forward and backward algorithms + workspace(s) + CUDNN_CHECK(cudnnGetConvolutionForwardAlgorithm(handle_[0], + bottom_descs_[i], + filter_desc_, + conv_descs_[i], + top_descs_[i], + CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT, + workspace_limit_bytes, + &fwd_algo_[i])); + + CUDNN_CHECK(cudnnGetConvolutionForwardWorkspaceSize(handle_[0], + bottom_descs_[i], + filter_desc_, + conv_descs_[i], + top_descs_[i], + fwd_algo_[i], + &(workspace_fwd_sizes_[i]))); + + // choose backward algorithm for filter + CUDNN_CHECK(cudnnGetConvolutionBackwardFilterAlgorithm(handle_[0], + bottom_descs_[i], top_descs_[i], conv_descs_[i], filter_desc_, + CUDNN_CONVOLUTION_BWD_FILTER_SPECIFY_WORKSPACE_LIMIT, + workspace_limit_bytes, &bwd_filter_algo_[i]) ); + + // get workspace for backwards filter algorithm + CUDNN_CHECK(cudnnGetConvolutionBackwardFilterWorkspaceSize(handle_[0], + bottom_descs_[i], top_descs_[i], conv_descs_[i], filter_desc_, + bwd_filter_algo_[i], &workspace_bwd_filter_sizes_[i])); + + // choose backward algo for data + CUDNN_CHECK(cudnnGetConvolutionBackwardDataAlgorithm(handle_[0], + filter_desc_, top_descs_[i], conv_descs_[i], bottom_descs_[i], + CUDNN_CONVOLUTION_BWD_DATA_SPECIFY_WORKSPACE_LIMIT, + workspace_limit_bytes, &bwd_data_algo_[i])); + + // get workspace size + CUDNN_CHECK(cudnnGetConvolutionBackwardDataWorkspaceSize(handle_[0], + filter_desc_, top_descs_[i], conv_descs_[i], bottom_descs_[i], + bwd_data_algo_[i], &workspace_bwd_data_sizes_[i]) ); + } + + // reduce over all workspace sizes to get a maximum to allocate / reallocate + size_t total_workspace_fwd = 0; + size_t total_workspace_bwd_data = 0; + size_t total_workspace_bwd_filter = 0; + + for (size_t i = 0; i < bottom.size(); i++) { + total_workspace_fwd = std::max(total_workspace_fwd, + workspace_fwd_sizes_[i]); + total_workspace_bwd_data = std::max(total_workspace_bwd_data, + workspace_bwd_data_sizes_[i]); + total_workspace_bwd_filter = std::max(total_workspace_bwd_filter, + workspace_bwd_filter_sizes_[i]); + } + // get max over all operations + size_t max_workspace = std::max(total_workspace_fwd, + total_workspace_bwd_data); + max_workspace = std::max(max_workspace, total_workspace_bwd_filter); + // ensure all groups have enough workspace + size_t total_max_workspace = max_workspace * + (this->group_ * CUDNN_STREAMS_PER_GROUP); + + // this is the total amount of storage needed over all groups + streams + if (total_max_workspace > workspaceSizeInBytes) { + DLOG(INFO) << "Reallocating workspace storage: " << total_max_workspace; + workspaceSizeInBytes = total_max_workspace; + + // free the existing workspace and allocate a new (larger) one + cudaFree(this->workspaceData); + + cudaError_t err = cudaMalloc(&(this->workspaceData), workspaceSizeInBytes); + if (err != cudaSuccess) { + // force zero memory path + for (int i = 0; i < bottom.size(); i++) { + workspace_fwd_sizes_[i] = 0; + workspace_bwd_filter_sizes_[i] = 0; + workspace_bwd_data_sizes_[i] = 0; + fwd_algo_[i] = CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM; + bwd_filter_algo_[i] = CUDNN_CONVOLUTION_BWD_FILTER_ALGO_0; + bwd_data_algo_[i] = CUDNN_CONVOLUTION_BWD_DATA_ALGO_0; + } + + // NULL out all workspace pointers + for (int g = 0; g < (this->group_ * CUDNN_STREAMS_PER_GROUP); g++) { + workspace[g] = NULL; + } + // NULL out underlying data + workspaceData = NULL; + workspaceSizeInBytes = 0; + } + + // if we succeed in the allocation, set pointer aliases for workspaces + for (int g = 0; g < (this->group_ * CUDNN_STREAMS_PER_GROUP); g++) { + workspace[g] = reinterpret_cast(workspaceData) + g*max_workspace; + } + } + + // Tensor descriptor for bias. + if (this->bias_term_) { + cudnn::setTensor4dDesc(&bias_desc_, + 1, this->num_output_ / this->group_, 1, 1); + } +} + +template +CuDNNConvolutionLayer::~CuDNNConvolutionLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + for (int i = 0; i < bottom_descs_.size(); i++) { + cudnnDestroyTensorDescriptor(bottom_descs_[i]); + cudnnDestroyTensorDescriptor(top_descs_[i]); + cudnnDestroyConvolutionDescriptor(conv_descs_[i]); + } + if (this->bias_term_) { + cudnnDestroyTensorDescriptor(bias_desc_); + } + cudnnDestroyFilterDescriptor(filter_desc_); + + for (int g = 0; g < this->group_ * CUDNN_STREAMS_PER_GROUP; g++) { + cudaStreamDestroy(stream_[g]); + cudnnDestroy(handle_[g]); + } + + cudaFree(workspaceData); + delete [] workspace; + delete [] stream_; + delete [] handle_; + delete [] fwd_algo_; + delete [] bwd_filter_algo_; + delete [] bwd_data_algo_; + delete [] workspace_fwd_sizes_; + delete [] workspace_bwd_data_sizes_; + delete [] workspace_bwd_filter_sizes_; +} + +INSTANTIATE_CLASS(CuDNNConvolutionLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cu new file mode 100644 index 00000000..8bc53462 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_conv_layer.cu @@ -0,0 +1,118 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_conv_layer.hpp" + +namespace caffe { + +__global__ void sync_conv_groups() { } + +template +void CuDNNConvolutionLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* weight = this->blobs_[0]->gpu_data(); + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + Dtype* top_data = top[i]->mutable_gpu_data(); + + // Forward through cuDNN in parallel over groups. + for (int g = 0; g < this->group_; g++) { + // Filters. + CUDNN_CHECK(cudnnConvolutionForward(handle_[g], + cudnn::dataType::one, + bottom_descs_[i], bottom_data + bottom_offset_ * g, + filter_desc_, weight + this->weight_offset_ * g, + conv_descs_[i], + fwd_algo_[i], workspace[g], workspace_fwd_sizes_[i], + cudnn::dataType::zero, + top_descs_[i], top_data + top_offset_ * g)); + + // Bias. + if (this->bias_term_) { + const Dtype* bias_data = this->blobs_[1]->gpu_data(); + CUDNN_CHECK(cudnnAddTensor(handle_[g], + cudnn::dataType::one, + bias_desc_, bias_data + bias_offset_ * g, + cudnn::dataType::one, + top_descs_[i], top_data + top_offset_ * g)); + } + } + + // Synchronize the work across groups, each of which went into its own + // stream, by launching an empty kernel into the default (null) stream. + // NOLINT_NEXT_LINE(whitespace/operators) + sync_conv_groups<<<1, 1>>>(); + } +} + +template +void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* weight = NULL; + Dtype* weight_diff = NULL; + if (this->param_propagate_down_[0]) { + weight = this->blobs_[0]->gpu_data(); + weight_diff = this->blobs_[0]->mutable_gpu_diff(); + } + Dtype* bias_diff = NULL; + if (this->bias_term_ && this->param_propagate_down_[1]) { + bias_diff = this->blobs_[1]->mutable_gpu_diff(); + } + for (int i = 0; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->gpu_diff(); + // Backward through cuDNN in parallel over groups and gradients. + for (int g = 0; g < this->group_; g++) { + // Gradient w.r.t. bias. + if (this->bias_term_ && this->param_propagate_down_[1]) { + CUDNN_CHECK(cudnnConvolutionBackwardBias(handle_[0*this->group_ + g], + cudnn::dataType::one, + top_descs_[i], top_diff + top_offset_ * g, + cudnn::dataType::one, + bias_desc_, bias_diff + bias_offset_ * g)); + } + + // Gradient w.r.t. weights. + if (this->param_propagate_down_[0]) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + CUDNN_CHECK(cudnnConvolutionBackwardFilter( + handle_[1*this->group_ + g], + cudnn::dataType::one, + bottom_descs_[i], bottom_data + bottom_offset_ * g, + top_descs_[i], top_diff + top_offset_ * g, + conv_descs_[i], + bwd_filter_algo_[i], workspace[1*this->group_ + g], + workspace_bwd_filter_sizes_[i], + cudnn::dataType::one, + filter_desc_, weight_diff + this->weight_offset_ * g)); + } + + // Gradient w.r.t. bottom data. + if (propagate_down[i]) { + if (weight == NULL) { + weight = this->blobs_[0]->gpu_data(); + } + Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); + CUDNN_CHECK(cudnnConvolutionBackwardData( + handle_[2*this->group_ + g], + cudnn::dataType::one, + filter_desc_, weight + this->weight_offset_ * g, + top_descs_[i], top_diff + top_offset_ * g, + conv_descs_[i], + bwd_data_algo_[i], workspace[2*this->group_ + g], + workspace_bwd_data_sizes_[i], + cudnn::dataType::zero, + bottom_descs_[i], bottom_diff + bottom_offset_ * g)); + } + } + + // Synchronize the work across groups, each of which went into its own + // stream, by launching an empty kernel into the default (null) stream. + // NOLINT_NEXT_LINE(whitespace/operators) + sync_conv_groups<<<1, 1>>>(); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNConvolutionLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cpp new file mode 100644 index 00000000..9c09bf26 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cpp @@ -0,0 +1,73 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_lcn_layer.hpp" + +namespace caffe { + +template +void CuDNNLCNLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + LRNLayer::LayerSetUp(bottom, top); + + CUDNN_CHECK(cudnnCreate(&handle_)); + CUDNN_CHECK(cudnnCreateLRNDescriptor(&norm_desc_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + + // create a LRN handle + handles_setup_ = true; + + size_ = this->layer_param().lrn_param().local_size(); + pre_pad_ = (size_ - 1) / 2; + alpha_ = this->layer_param().lrn_param().alpha(); + beta_ = this->layer_param().lrn_param().beta(); + k_ = this->layer_param().lrn_param().k(); +} + +template +void CuDNNLCNLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + LRNLayer::Reshape(bottom, top); + cudnn::setTensor4dDesc(&bottom_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + cudnn::setTensor4dDesc(&top_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + CUDNN_CHECK(cudnnSetLRNDescriptor(norm_desc_, size_, alpha_, beta_, k_)); + + // allocate / reallocate tempData buffers + size_t totalSizeInBytes = sizeof(Dtype)*bottom[0]->num()* \ + this->channels_*this->height_*this->width_; + + if (totalSizeInBytes > tempDataSize) { + tempDataSize = totalSizeInBytes; + + cudaFree(tempData1); + cudaFree(tempData2); + + // allocate new buffers + CUDA_CHECK(cudaMalloc(&tempData1, totalSizeInBytes)); + CUDA_CHECK(cudaMalloc(&tempData2, totalSizeInBytes)); + } +} + +template +CuDNNLCNLayer::~CuDNNLCNLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(bottom_desc_); + cudnnDestroyTensorDescriptor(top_desc_); + + // destroy LRN handle + cudnnDestroy(handle_); + + // free temp buffers + cudaFree(tempData1); + cudaFree(tempData2); +} + +INSTANTIATE_CLASS(CuDNNLCNLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cu new file mode 100644 index 00000000..b44ef473 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_lcn_layer.cu @@ -0,0 +1,46 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_lcn_layer.hpp" + +namespace caffe { + +template +void CuDNNLCNLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + + CUDNN_CHECK(cudnnDivisiveNormalizationForward( + handle_, norm_desc_, CUDNN_DIVNORM_PRECOMPUTED_MEANS, + cudnn::dataType::one, + bottom_desc_, bottom_data, + NULL, // srcMeansData + this->tempData1, this->tempData2, + cudnn::dataType::zero, + top_desc_, top_data) ); +} + +template +void CuDNNLCNLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + + CUDNN_CHECK(cudnnDivisiveNormalizationBackward( + handle_, norm_desc_, CUDNN_DIVNORM_PRECOMPUTED_MEANS, + cudnn::dataType::one, + bottom_desc_, bottom_data, + NULL, top_diff, // NULL - srcMeansData + this->tempData1, this->tempData2, + cudnn::dataType::zero, + bottom_desc_, bottom_diff, + NULL) ); +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNLCNLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cpp new file mode 100644 index 00000000..0495b802 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cpp @@ -0,0 +1,53 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_lrn_layer.hpp" + +namespace caffe { + +template +void CuDNNLRNLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + LRNLayer::LayerSetUp(bottom, top); + + CUDNN_CHECK(cudnnCreate(&handle_)); + CUDNN_CHECK(cudnnCreateLRNDescriptor(&norm_desc_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + + // create a LRN handle + handles_setup_ = true; + + size_ = this->layer_param().lrn_param().local_size(); + alpha_ = this->layer_param().lrn_param().alpha(); + beta_ = this->layer_param().lrn_param().beta(); + k_ = this->layer_param().lrn_param().k(); +} + +template +void CuDNNLRNLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + LRNLayer::Reshape(bottom, top); + cudnn::setTensor4dDesc(&bottom_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + cudnn::setTensor4dDesc(&top_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + CUDNN_CHECK(cudnnSetLRNDescriptor(norm_desc_, size_, alpha_, beta_, k_)); +} + +template +CuDNNLRNLayer::~CuDNNLRNLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(bottom_desc_); + cudnnDestroyTensorDescriptor(top_desc_); + + // destroy LRN handle + cudnnDestroy(handle_); +} + +INSTANTIATE_CLASS(CuDNNLRNLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cu new file mode 100644 index 00000000..ca647f3c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_lrn_layer.cu @@ -0,0 +1,44 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_lrn_layer.hpp" + +namespace caffe { + +template +void CuDNNLRNLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + + CUDNN_CHECK(cudnnLRNCrossChannelForward( + handle_, norm_desc_, CUDNN_LRN_CROSS_CHANNEL_DIM1, + cudnn::dataType::one, + bottom_desc_, bottom_data, + cudnn::dataType::zero, + top_desc_, top_data) ); +} + +template +void CuDNNLRNLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + + CUDNN_CHECK(cudnnLRNCrossChannelBackward( + handle_, norm_desc_, CUDNN_LRN_CROSS_CHANNEL_DIM1, + cudnn::dataType::one, + top_desc_, top_data, + top_desc_, top_diff, + bottom_desc_, bottom_data, + cudnn::dataType::zero, + bottom_desc_, bottom_diff) ); +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNLRNLayer); + +}; // namespace caffe + +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cpp new file mode 100644 index 00000000..24f14780 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cpp @@ -0,0 +1,46 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_pooling_layer.hpp" + +namespace caffe { + +template +void CuDNNPoolingLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + PoolingLayer::LayerSetUp(bottom, top); + CUDNN_CHECK(cudnnCreate(&handle_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + cudnn::createPoolingDesc(&pooling_desc_, + this->layer_param_.pooling_param().pool(), &mode_, + this->kernel_h_, this->kernel_w_, this->pad_h_, this->pad_w_, + this->stride_h_, this->stride_w_); + handles_setup_ = true; +} + +template +void CuDNNPoolingLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + PoolingLayer::Reshape(bottom, top); + cudnn::setTensor4dDesc(&bottom_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + cudnn::setTensor4dDesc(&top_desc_, bottom[0]->num(), + this->channels_, this->pooled_height_, this->pooled_width_); +} + +template +CuDNNPoolingLayer::~CuDNNPoolingLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(bottom_desc_); + cudnnDestroyTensorDescriptor(top_desc_); + cudnnDestroyPoolingDescriptor(pooling_desc_); + cudnnDestroy(handle_); +} + +INSTANTIATE_CLASS(CuDNNPoolingLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cu new file mode 100644 index 00000000..6f00195f --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_pooling_layer.cu @@ -0,0 +1,41 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_pooling_layer.hpp" + +namespace caffe { + +template +void CuDNNPoolingLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + CUDNN_CHECK(cudnnPoolingForward(handle_, pooling_desc_, + cudnn::dataType::one, + bottom_desc_, bottom_data, + cudnn::dataType::zero, + top_desc_, top_data)); +} + +template +void CuDNNPoolingLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { + return; + } + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + CUDNN_CHECK(cudnnPoolingBackward(handle_, pooling_desc_, + cudnn::dataType::one, + top_desc_, top_data, top_desc_, top_diff, + bottom_desc_, bottom_data, + cudnn::dataType::zero, + bottom_desc_, bottom_diff)); +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNPoolingLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cpp new file mode 100644 index 00000000..687c9057 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cpp @@ -0,0 +1,46 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_relu_layer.hpp" + +namespace caffe { + +template +void CuDNNReLULayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + ReLULayer::LayerSetUp(bottom, top); + // initialize cuDNN + CUDNN_CHECK(cudnnCreate(&handle_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + cudnn::createActivationDescriptor(&activ_desc_, CUDNN_ACTIVATION_RELU); + handles_setup_ = true; +} + +template +void CuDNNReLULayer::Reshape(const vector*>& bottom, + const vector*>& top) { + ReLULayer::Reshape(bottom, top); + const int N = bottom[0]->num(); + const int K = bottom[0]->channels(); + const int H = bottom[0]->height(); + const int W = bottom[0]->width(); + cudnn::setTensor4dDesc(&bottom_desc_, N, K, H, W); + cudnn::setTensor4dDesc(&top_desc_, N, K, H, W); +} + +template +CuDNNReLULayer::~CuDNNReLULayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(this->bottom_desc_); + cudnnDestroyTensorDescriptor(this->top_desc_); + cudnnDestroyActivationDescriptor(this->activ_desc_); + cudnnDestroy(this->handle_); +} + +INSTANTIATE_CLASS(CuDNNReLULayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cu new file mode 100644 index 00000000..e7928bbd --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_relu_layer.cu @@ -0,0 +1,74 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_relu_layer.hpp" + +namespace caffe { + +template +void CuDNNReLULayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + // Fallback to standard Caffe for leaky ReLU. + if (ReLULayer::layer_param_.relu_param().negative_slope() != 0) { + return ReLULayer::Forward_gpu(bottom, top); + } + + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnActivationForward(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#else + CUDNN_CHECK(cudnnActivationForward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#endif +} + +template +void CuDNNReLULayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (!propagate_down[0]) { + return; + } + + // Fallback to standard Caffe for leaky ReLU. + if (ReLULayer::layer_param_.relu_param().negative_slope() != 0) { + return ReLULayer::Backward_gpu(top, propagate_down, bottom); + } + + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnActivationBackward(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#else + CUDNN_CHECK(cudnnActivationBackward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#endif +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNReLULayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cpp new file mode 100644 index 00000000..3ce6aef1 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cpp @@ -0,0 +1,46 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_sigmoid_layer.hpp" + +namespace caffe { + +template +void CuDNNSigmoidLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + SigmoidLayer::LayerSetUp(bottom, top); + // initialize cuDNN + CUDNN_CHECK(cudnnCreate(&handle_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + cudnn::createActivationDescriptor(&activ_desc_, + CUDNN_ACTIVATION_SIGMOID); + handles_setup_ = true; +} + +template +void CuDNNSigmoidLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + SigmoidLayer::Reshape(bottom, top); + const int N = bottom[0]->num(); + const int K = bottom[0]->channels(); + const int H = bottom[0]->height(); + const int W = bottom[0]->width(); + cudnn::setTensor4dDesc(&bottom_desc_, N, K, H, W); + cudnn::setTensor4dDesc(&top_desc_, N, K, H, W); +} + +template +CuDNNSigmoidLayer::~CuDNNSigmoidLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(this->bottom_desc_); + cudnnDestroyTensorDescriptor(this->top_desc_); + cudnnDestroy(this->handle_); +} + +INSTANTIATE_CLASS(CuDNNSigmoidLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cu new file mode 100644 index 00000000..48d6cbab --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_sigmoid_layer.cu @@ -0,0 +1,64 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_sigmoid_layer.hpp" + +namespace caffe { + +template +void CuDNNSigmoidLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnActivationForward(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#else + CUDNN_CHECK(cudnnActivationForward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#endif +} + +template +void CuDNNSigmoidLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (!propagate_down[0]) { + return; + } + + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnActivationBackward(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#else + CUDNN_CHECK(cudnnActivationBackward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#endif +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNSigmoidLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cpp new file mode 100644 index 00000000..6440df98 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cpp @@ -0,0 +1,46 @@ +#ifdef USE_CUDNN +#include + +#include "thrust/device_vector.h" + +#include "caffe/layers/cudnn_softmax_layer.hpp" + +namespace caffe { + +template +void CuDNNSoftmaxLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + SoftmaxLayer::LayerSetUp(bottom, top); + // Initialize CUDNN. + CUDNN_CHECK(cudnnCreate(&handle_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + handles_setup_ = true; +} + +template +void CuDNNSoftmaxLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + SoftmaxLayer::Reshape(bottom, top); + int N = this->outer_num_; + int K = bottom[0]->shape(this->softmax_axis_); + int H = this->inner_num_; + int W = 1; + cudnn::setTensor4dDesc(&bottom_desc_, N, K, H, W); + cudnn::setTensor4dDesc(&top_desc_, N, K, H, W); +} + +template +CuDNNSoftmaxLayer::~CuDNNSoftmaxLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(bottom_desc_); + cudnnDestroyTensorDescriptor(top_desc_); + cudnnDestroy(handle_); +} + +INSTANTIATE_CLASS(CuDNNSoftmaxLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cu new file mode 100644 index 00000000..7283eb71 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_softmax_layer.cu @@ -0,0 +1,44 @@ +#ifdef USE_CUDNN +#include + +#include "thrust/device_vector.h" + +#include "caffe/layers/cudnn_softmax_layer.hpp" + +namespace caffe { + +template +void CuDNNSoftmaxLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + CUDNN_CHECK(cudnnSoftmaxForward(handle_, CUDNN_SOFTMAX_ACCURATE, + CUDNN_SOFTMAX_MODE_CHANNEL, + cudnn::dataType::one, + bottom_desc_, bottom_data, + cudnn::dataType::zero, + top_desc_, top_data)); +} + +template +void CuDNNSoftmaxLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + + CUDNN_CHECK(cudnnSoftmaxBackward(handle_, CUDNN_SOFTMAX_ACCURATE, + CUDNN_SOFTMAX_MODE_CHANNEL, + cudnn::dataType::one, + top_desc_, top_data, top_desc_, top_diff, + cudnn::dataType::zero, + bottom_desc_, bottom_diff)); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNSoftmaxLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cpp b/3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cpp new file mode 100644 index 00000000..e87dd9de --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cpp @@ -0,0 +1,45 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_tanh_layer.hpp" + +namespace caffe { + +template +void CuDNNTanHLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + TanHLayer::LayerSetUp(bottom, top); + // initialize cuDNN + CUDNN_CHECK(cudnnCreate(&handle_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + cudnn::createActivationDescriptor(&activ_desc_, CUDNN_ACTIVATION_TANH); + handles_setup_ = true; +} + +template +void CuDNNTanHLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + TanHLayer::Reshape(bottom, top); + const int N = bottom[0]->num(); + const int K = bottom[0]->channels(); + const int H = bottom[0]->height(); + const int W = bottom[0]->width(); + cudnn::setTensor4dDesc(&bottom_desc_, N, K, H, W); + cudnn::setTensor4dDesc(&top_desc_, N, K, H, W); +} + +template +CuDNNTanHLayer::~CuDNNTanHLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(this->bottom_desc_); + cudnnDestroyTensorDescriptor(this->top_desc_); + cudnnDestroy(this->handle_); +} + +INSTANTIATE_CLASS(CuDNNTanHLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cu b/3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cu new file mode 100644 index 00000000..6b5d7ae7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/cudnn_tanh_layer.cu @@ -0,0 +1,65 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/layers/cudnn_tanh_layer.hpp" + +namespace caffe { + +template +void CuDNNTanHLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnActivationForward(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#else + CUDNN_CHECK(cudnnActivationForward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#endif +} + +template +void CuDNNTanHLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (!propagate_down[0]) { + return; + } + + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnActivationBackward(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#else + CUDNN_CHECK(cudnnActivationBackward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#endif +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNTanHLayer); + +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/layers/data_layer.cpp b/3rdparty/caffe/src/caffe/layers/data_layer.cpp new file mode 100644 index 00000000..0f1296bb --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/data_layer.cpp @@ -0,0 +1,136 @@ +#ifdef USE_OPENCV +#include +#endif // USE_OPENCV +#include + +#include + +#include "caffe/data_transformer.hpp" +#include "caffe/layers/data_layer.hpp" +#include "caffe/util/benchmark.hpp" + +namespace caffe { + +template +DataLayer::DataLayer(const LayerParameter& param) + : BasePrefetchingDataLayer(param), + offset_() { + db_.reset(db::GetDB(param.data_param().backend())); + db_->Open(param.data_param().source(), db::READ); + cursor_.reset(db_->NewCursor()); +} + +template +DataLayer::~DataLayer() { + this->StopInternalThread(); +} + +template +void DataLayer::DataLayerSetUp(const vector*>& bottom, + const vector*>& top) { + const int batch_size = this->layer_param_.data_param().batch_size(); + // Read a data point, and use it to initialize the top blob. + Datum datum; + datum.ParseFromString(cursor_->value()); + + // Use data_transformer to infer the expected blob shape from datum. + vector top_shape = this->data_transformer_->InferBlobShape(datum); + this->transformed_data_.Reshape(top_shape); + // Reshape top[0] and prefetch_data according to the batch_size. + top_shape[0] = batch_size; + top[0]->Reshape(top_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->data_.Reshape(top_shape); + } + LOG_IF(INFO, Caffe::root_solver()) + << "output data size: " << top[0]->num() << "," + << top[0]->channels() << "," << top[0]->height() << "," + << top[0]->width(); + // label + if (this->output_labels_) { + vector label_shape(1, batch_size); + top[1]->Reshape(label_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->label_.Reshape(label_shape); + } + } +} + +template +bool DataLayer::Skip() { + int size = Caffe::solver_count(); + int rank = Caffe::solver_rank(); + bool keep = (offset_ % size) == rank || + // In test mode, only rank 0 runs, so avoid skipping + this->layer_param_.phase() == TEST; + return !keep; +} + +template +void DataLayer::Next() { + cursor_->Next(); + if (!cursor_->valid()) { + LOG_IF(INFO, Caffe::root_solver()) + << "Restarting data prefetching from start."; + cursor_->SeekToFirst(); + } + offset_++; +} + +// This function is called on prefetch thread +template +void DataLayer::load_batch(Batch* batch) { + CPUTimer batch_timer; + batch_timer.Start(); + double read_time = 0; + double trans_time = 0; + CPUTimer timer; + CHECK(batch->data_.count()); + CHECK(this->transformed_data_.count()); + const int batch_size = this->layer_param_.data_param().batch_size(); + + Datum datum; + for (int item_id = 0; item_id < batch_size; ++item_id) { + timer.Start(); + while (Skip()) { + Next(); + } + datum.ParseFromString(cursor_->value()); + read_time += timer.MicroSeconds(); + + if (item_id == 0) { + // Reshape according to the first datum of each batch + // on single input batches allows for inputs of varying dimension. + // Use data_transformer to infer the expected blob shape from datum. + vector top_shape = this->data_transformer_->InferBlobShape(datum); + this->transformed_data_.Reshape(top_shape); + // Reshape batch according to the batch_size. + top_shape[0] = batch_size; + batch->data_.Reshape(top_shape); + } + + // Apply data transformations (mirror, scale, crop...) + timer.Start(); + int offset = batch->data_.offset(item_id); + Dtype* top_data = batch->data_.mutable_cpu_data(); + this->transformed_data_.set_cpu_data(top_data + offset); + this->data_transformer_->Transform(datum, &(this->transformed_data_)); + // Copy label. + if (this->output_labels_) { + Dtype* top_label = batch->label_.mutable_cpu_data(); + top_label[item_id] = datum.label(); + } + trans_time += timer.MicroSeconds(); + Next(); + } + timer.Stop(); + batch_timer.Stop(); + DLOG(INFO) << "Prefetch batch: " << batch_timer.MilliSeconds() << " ms."; + DLOG(INFO) << " Read time: " << read_time / 1000 << " ms."; + DLOG(INFO) << "Transform time: " << trans_time / 1000 << " ms."; +} + +INSTANTIATE_CLASS(DataLayer); +REGISTER_LAYER_CLASS(Data); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/deconv_layer.cpp b/3rdparty/caffe/src/caffe/layers/deconv_layer.cpp new file mode 100644 index 00000000..20a460fb --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/deconv_layer.cpp @@ -0,0 +1,84 @@ +#include + +#include "caffe/layers/deconv_layer.hpp" + +namespace caffe { + +template +void DeconvolutionLayer::compute_output_shape() { + const int* kernel_shape_data = this->kernel_shape_.cpu_data(); + const int* stride_data = this->stride_.cpu_data(); + const int* pad_data = this->pad_.cpu_data(); + const int* dilation_data = this->dilation_.cpu_data(); + this->output_shape_.clear(); + for (int i = 0; i < this->num_spatial_axes_; ++i) { + // i + 1 to skip channel axis + const int input_dim = this->input_shape(i + 1); + const int kernel_extent = dilation_data[i] * (kernel_shape_data[i] - 1) + 1; + const int output_dim = stride_data[i] * (input_dim - 1) + + kernel_extent - 2 * pad_data[i]; + this->output_shape_.push_back(output_dim); + } +} + +template +void DeconvolutionLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* weight = this->blobs_[0]->cpu_data(); + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->cpu_data(); + Dtype* top_data = top[i]->mutable_cpu_data(); + for (int n = 0; n < this->num_; ++n) { + this->backward_cpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); + if (this->bias_term_) { + const Dtype* bias = this->blobs_[1]->cpu_data(); + this->forward_cpu_bias(top_data + n * this->top_dim_, bias); + } + } + } +} + +template +void DeconvolutionLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* weight = this->blobs_[0]->cpu_data(); + Dtype* weight_diff = this->blobs_[0]->mutable_cpu_diff(); + for (int i = 0; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->cpu_diff(); + const Dtype* bottom_data = bottom[i]->cpu_data(); + Dtype* bottom_diff = bottom[i]->mutable_cpu_diff(); + // Bias gradient, if necessary. + if (this->bias_term_ && this->param_propagate_down_[1]) { + Dtype* bias_diff = this->blobs_[1]->mutable_cpu_diff(); + for (int n = 0; n < this->num_; ++n) { + this->backward_cpu_bias(bias_diff, top_diff + n * this->top_dim_); + } + } + if (this->param_propagate_down_[0] || propagate_down[i]) { + for (int n = 0; n < this->num_; ++n) { + // Gradient w.r.t. weight. Note that we will accumulate diffs. + if (this->param_propagate_down_[0]) { + this->weight_cpu_gemm(top_diff + n * this->top_dim_, + bottom_data + n * this->bottom_dim_, weight_diff); + } + // Gradient w.r.t. bottom data, if necessary, reusing the column buffer + // we might have just computed above. + if (propagate_down[i]) { + this->forward_cpu_gemm(top_diff + n * this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_, + this->param_propagate_down_[0]); + } + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(DeconvolutionLayer); +#endif + +INSTANTIATE_CLASS(DeconvolutionLayer); +REGISTER_LAYER_CLASS(Deconvolution); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/deconv_layer.cu b/3rdparty/caffe/src/caffe/layers/deconv_layer.cu new file mode 100644 index 00000000..22676322 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/deconv_layer.cu @@ -0,0 +1,61 @@ +#include + +#include "caffe/layers/deconv_layer.hpp" + +namespace caffe { + +template +void DeconvolutionLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* weight = this->blobs_[0]->gpu_data(); + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + Dtype* top_data = top[i]->mutable_gpu_data(); + for (int n = 0; n < this->num_; ++n) { + this->backward_gpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); + if (this->bias_term_) { + const Dtype* bias = this->blobs_[1]->gpu_data(); + this->forward_gpu_bias(top_data + n * this->top_dim_, bias); + } + } + } +} + +template +void DeconvolutionLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* weight = this->blobs_[0]->gpu_data(); + Dtype* weight_diff = this->blobs_[0]->mutable_gpu_diff(); + for (int i = 0; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->gpu_diff(); + const Dtype* bottom_data = bottom[i]->gpu_data(); + Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); + // Bias gradient, if necessary. + if (this->bias_term_ && this->param_propagate_down_[1]) { + Dtype* bias_diff = this->blobs_[1]->mutable_gpu_diff(); + for (int n = 0; n < this->num_; ++n) { + this->backward_gpu_bias(bias_diff, top_diff + n * this->top_dim_); + } + } + if (this->param_propagate_down_[0] || propagate_down[i]) { + for (int n = 0; n < this->num_; ++n) { + // gradient w.r.t. weight. Note that we will accumulate diffs. + if (this->param_propagate_down_[0]) { + this->weight_gpu_gemm(top_diff + n * this->top_dim_, + bottom_data + n * this->bottom_dim_, weight_diff); + } + // gradient w.r.t. bottom data, if necessary. + if (propagate_down[i]) { + this->forward_gpu_gemm(top_diff + n * this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_, + this->param_propagate_down_[0]); + } + } + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(DeconvolutionLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/dropout_layer.cpp b/3rdparty/caffe/src/caffe/layers/dropout_layer.cpp new file mode 100644 index 00000000..533ab26c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/dropout_layer.cpp @@ -0,0 +1,75 @@ +// TODO (sergeyk): effect should not be dependent on phase. wasted memcpy. + +#include + +#include "caffe/layers/dropout_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void DropoutLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + NeuronLayer::LayerSetUp(bottom, top); + threshold_ = this->layer_param_.dropout_param().dropout_ratio(); + DCHECK(threshold_ > 0.); + DCHECK(threshold_ < 1.); + scale_ = 1. / (1. - threshold_); + uint_thres_ = static_cast(UINT_MAX * threshold_); +} + +template +void DropoutLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + NeuronLayer::Reshape(bottom, top); + // Set up the cache for random number generation + // ReshapeLike does not work because rand_vec_ is of Dtype uint + rand_vec_.Reshape(bottom[0]->shape()); +} + +template +void DropoutLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + unsigned int* mask = rand_vec_.mutable_cpu_data(); + const int count = bottom[0]->count(); + if (this->phase_ == TRAIN) { + // Create random numbers + caffe_rng_bernoulli(count, 1. - threshold_, mask); + for (int i = 0; i < count; ++i) { + top_data[i] = bottom_data[i] * mask[i] * scale_; + } + } else { + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } +} + +template +void DropoutLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + if (this->phase_ == TRAIN) { + const unsigned int* mask = rand_vec_.cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + bottom_diff[i] = top_diff[i] * mask[i] * scale_; + } + } else { + caffe_copy(top[0]->count(), top_diff, bottom_diff); + } + } +} + + +#ifdef CPU_ONLY +STUB_GPU(DropoutLayer); +#endif + +INSTANTIATE_CLASS(DropoutLayer); +REGISTER_LAYER_CLASS(Dropout); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/dropout_layer.cu b/3rdparty/caffe/src/caffe/layers/dropout_layer.cu new file mode 100644 index 00000000..186c10ca --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/dropout_layer.cu @@ -0,0 +1,70 @@ +#include + +#include "caffe/layers/dropout_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void DropoutForward(const int n, const Dtype* in, + const unsigned int* mask, const unsigned int threshold, const float scale, + Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = in[index] * (mask[index] > threshold) * scale; + } +} + +template +void DropoutLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + if (this->phase_ == TRAIN) { + unsigned int* mask = + static_cast(rand_vec_.mutable_gpu_data()); + caffe_gpu_rng_uniform(count, mask); + // set thresholds + // NOLINT_NEXT_LINE(whitespace/operators) + DropoutForward<<>>( + count, bottom_data, mask, uint_thres_, scale_, top_data); + CUDA_POST_KERNEL_CHECK; + } else { + caffe_copy(count, bottom_data, top_data); + } +} + +template +__global__ void DropoutBackward(const int n, const Dtype* in_diff, + const unsigned int* mask, const unsigned int threshold, const float scale, + Dtype* out_diff) { + CUDA_KERNEL_LOOP(index, n) { + out_diff[index] = in_diff[index] * scale * (mask[index] > threshold); + } +} + +template +void DropoutLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + if (this->phase_ == TRAIN) { + const unsigned int* mask = + static_cast(rand_vec_.gpu_data()); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + DropoutBackward<<>>( + count, top_diff, mask, uint_thres_, scale_, bottom_diff); + CUDA_POST_KERNEL_CHECK; + } else { + caffe_copy(top[0]->count(), top_diff, bottom_diff); + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(DropoutLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/dummy_data_layer.cpp b/3rdparty/caffe/src/caffe/layers/dummy_data_layer.cpp new file mode 100644 index 00000000..e382bfea --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/dummy_data_layer.cpp @@ -0,0 +1,114 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/dummy_data_layer.hpp" + +namespace caffe { + +template +void DummyDataLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const int num_top = top.size(); + const DummyDataParameter& param = this->layer_param_.dummy_data_param(); + const int num_data_filler = param.data_filler_size(); + CHECK(num_data_filler == 0 || num_data_filler == 1 || + num_data_filler == num_top) + << "Number of data fillers must be 0, 1 or equal to the number of tops: " + << num_top << "; you specified " << num_data_filler << " data fillers."; + + const bool legacy_dims = param.num_size() || param.channels_size() || + param.height_size() || param.width_size(); + if (legacy_dims) { + CHECK_EQ(0, param.shape_size()) + << "Both shape and legacy fields were specified"; + // Using deprecated 4D output dim specifiers. + CHECK(param.num_size() == 1 || param.num_size() == num_top) + << "Must specify 'num' once, or once per top blob " + << "(" << num_top << "); specified " << param.num_size() << "."; + CHECK(param.channels_size() == 1 || param.channels_size() == num_top) + << "Must specify 'channels' once, or once per top blob " + << "(" << num_top << "); specified " << param.channels_size() << "."; + CHECK(param.height_size() == 1 || param.height_size() == num_top) + << "Must specify 'height' once, or once per top blob " + << "(" << num_top << "); specified " << param.height_size() << "."; + CHECK(param.width_size() == 1 || param.width_size() == num_top) + << "Must specify 'width' once, or once per top blob " + << "(" << num_top << "); specified " << param.width_size() << "."; + } else { + CHECK(param.shape_size() == 1 || param.shape_size() == num_top) + << "Must specify 'shape' once, or once per top blob " + << "(" << num_top << "); specified " << param.shape_size() << "."; + } + // refill_[i] tells Forward i whether or not to actually refill top Blob i. + // If refill_[i] is false, Forward does nothing for Blob i. We use this to + // avoid wastefully refilling "constant" Blobs in every forward pass. + // We first fill refill_ in with the INVERSE of its final values. + // The first time we run Forward from the LayerSetUp method, we'll fill only + // Blobs for which refill_ is normally false. These Blobs will never be + // filled again. + refill_.clear(); + fillers_.clear(); + if (num_data_filler <= 1) { + FillerParameter filler_param; + if (num_data_filler == 0) { + filler_param.set_type("constant"); + filler_param.set_value(0); + } else { + filler_param.CopyFrom(param.data_filler(0)); + } + // Refill on each iteration iff not using a constant filler, + // but use the inverse of this rule for the first run. + refill_.resize(1); + refill_[0] = (strcmp(filler_param.type().c_str(), "constant") == 0); + fillers_.resize(1); + fillers_[0].reset(GetFiller(filler_param)); + } else { + refill_.resize(num_top); + fillers_.resize(num_top); + for (int i = 0; i < num_top; ++i) { + fillers_[i].reset(GetFiller(param.data_filler(i))); + // Refill on each iteration iff not using a constant filler, + // but use the inverse of this rule for the first run. + refill_[i] = + (strcmp(param.data_filler(i).type().c_str(), "constant") == 0); + } + } + for (int i = 0; i < num_top; ++i) { + if (legacy_dims) { + const int num = (param.num_size() == 1) ? param.num(0) : param.num(i); + const int channels = + (param.channels_size() == 1) ? param.channels(0) : param.channels(i); + const int height = + (param.height_size() == 1) ? param.height(0) : param.height(i); + const int width = + (param.width_size() == 1) ? param.width(0) : param.width(i); + top[i]->Reshape(num, channels, height, width); + } else { + const int shape_index = (param.shape_size() == 1) ? 0 : i; + top[i]->Reshape(param.shape(shape_index)); + } + } + // Run Forward once, with refill_ inverted, to fill the constant Blobs. + this->Forward(bottom, top); + // Invert the inverted refill_ values to refill the desired (non-constant) + // Blobs in every usual forward pass. + for (int i = 0; i < refill_.size(); ++i) { + refill_[i] = !refill_[i]; + } +} + +template +void DummyDataLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + for (int i = 0; i < top.size(); ++i) { + const int filler_id = (fillers_.size() > 1) ? i : 0; + if (refill_[filler_id]) { + fillers_[filler_id]->Fill(top[i]); + } + } +} + +INSTANTIATE_CLASS(DummyDataLayer); +REGISTER_LAYER_CLASS(DummyData); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/eltwise_layer.cpp b/3rdparty/caffe/src/caffe/layers/eltwise_layer.cpp new file mode 100644 index 00000000..3d82b0e1 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/eltwise_layer.cpp @@ -0,0 +1,162 @@ +#include +#include + +#include "caffe/layers/eltwise_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void EltwiseLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + CHECK(this->layer_param().eltwise_param().coeff_size() == 0 + || this->layer_param().eltwise_param().coeff_size() == bottom.size()) << + "Eltwise Layer takes one coefficient per bottom blob."; + CHECK(!(this->layer_param().eltwise_param().operation() + == EltwiseParameter_EltwiseOp_PROD + && this->layer_param().eltwise_param().coeff_size())) << + "Eltwise layer only takes coefficients for summation."; + op_ = this->layer_param_.eltwise_param().operation(); + // Blob-wise coefficients for the elementwise operation. + coeffs_ = vector(bottom.size(), 1); + if (this->layer_param().eltwise_param().coeff_size()) { + for (int i = 0; i < bottom.size(); ++i) { + coeffs_[i] = this->layer_param().eltwise_param().coeff(i); + } + } + stable_prod_grad_ = this->layer_param_.eltwise_param().stable_prod_grad(); +} + +template +void EltwiseLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + for (int i = 1; i < bottom.size(); ++i) { + CHECK(bottom[0]->shape() == bottom[i]->shape()) + << "bottom[0]: " << bottom[0]->shape_string() + << ", bottom[" << i << "]: " << bottom[i]->shape_string(); + } + top[0]->ReshapeLike(*bottom[0]); + // If max operation, we will initialize the vector index part. + if (this->layer_param_.eltwise_param().operation() == + EltwiseParameter_EltwiseOp_MAX && top.size() == 1) { + max_idx_.Reshape(bottom[0]->shape()); + } +} + +template +void EltwiseLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + int* mask = NULL; + const Dtype* bottom_data_a = NULL; + const Dtype* bottom_data_b = NULL; + const int count = top[0]->count(); + Dtype* top_data = top[0]->mutable_cpu_data(); + switch (op_) { + case EltwiseParameter_EltwiseOp_PROD: + caffe_mul(count, bottom[0]->cpu_data(), bottom[1]->cpu_data(), top_data); + for (int i = 2; i < bottom.size(); ++i) { + caffe_mul(count, top_data, bottom[i]->cpu_data(), top_data); + } + break; + case EltwiseParameter_EltwiseOp_SUM: + caffe_set(count, Dtype(0), top_data); + // TODO(shelhamer) does BLAS optimize to sum for coeff = 1? + for (int i = 0; i < bottom.size(); ++i) { + caffe_axpy(count, coeffs_[i], bottom[i]->cpu_data(), top_data); + } + break; + case EltwiseParameter_EltwiseOp_MAX: + // Initialize + mask = max_idx_.mutable_cpu_data(); + caffe_set(count, -1, mask); + caffe_set(count, Dtype(-FLT_MAX), top_data); + // bottom 0 & 1 + bottom_data_a = bottom[0]->cpu_data(); + bottom_data_b = bottom[1]->cpu_data(); + for (int idx = 0; idx < count; ++idx) { + if (bottom_data_a[idx] > bottom_data_b[idx]) { + top_data[idx] = bottom_data_a[idx]; // maxval + mask[idx] = 0; // maxid + } else { + top_data[idx] = bottom_data_b[idx]; // maxval + mask[idx] = 1; // maxid + } + } + // bottom 2++ + for (int blob_idx = 2; blob_idx < bottom.size(); ++blob_idx) { + bottom_data_b = bottom[blob_idx]->cpu_data(); + for (int idx = 0; idx < count; ++idx) { + if (bottom_data_b[idx] > top_data[idx]) { + top_data[idx] = bottom_data_b[idx]; // maxval + mask[idx] = blob_idx; // maxid + } + } + } + break; + default: + LOG(FATAL) << "Unknown elementwise operation."; + } +} + +template +void EltwiseLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const int* mask = NULL; + const int count = top[0]->count(); + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + for (int i = 0; i < bottom.size(); ++i) { + if (propagate_down[i]) { + const Dtype* bottom_data = bottom[i]->cpu_data(); + Dtype* bottom_diff = bottom[i]->mutable_cpu_diff(); + switch (op_) { + case EltwiseParameter_EltwiseOp_PROD: + if (stable_prod_grad_) { + bool initialized = false; + for (int j = 0; j < bottom.size(); ++j) { + if (i == j) { continue; } + if (!initialized) { + caffe_copy(count, bottom[j]->cpu_data(), bottom_diff); + initialized = true; + } else { + caffe_mul(count, bottom[j]->cpu_data(), bottom_diff, + bottom_diff); + } + } + } else { + caffe_div(count, top_data, bottom_data, bottom_diff); + } + caffe_mul(count, bottom_diff, top_diff, bottom_diff); + break; + case EltwiseParameter_EltwiseOp_SUM: + if (coeffs_[i] == Dtype(1)) { + caffe_copy(count, top_diff, bottom_diff); + } else { + caffe_cpu_scale(count, coeffs_[i], top_diff, bottom_diff); + } + break; + case EltwiseParameter_EltwiseOp_MAX: + mask = max_idx_.cpu_data(); + for (int index = 0; index < count; ++index) { + Dtype gradient = 0; + if (mask[index] == i) { + gradient += top_diff[index]; + } + bottom_diff[index] = gradient; + } + break; + default: + LOG(FATAL) << "Unknown elementwise operation."; + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(EltwiseLayer); +#endif + +INSTANTIATE_CLASS(EltwiseLayer); +REGISTER_LAYER_CLASS(Eltwise); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/eltwise_layer.cu b/3rdparty/caffe/src/caffe/layers/eltwise_layer.cu new file mode 100644 index 00000000..c142852e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/eltwise_layer.cu @@ -0,0 +1,134 @@ +#include +#include + +#include "caffe/layers/eltwise_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void MaxForward(const int nthreads, const Dtype* bottom_data_a, + const Dtype* bottom_data_b, const int blob_idx, Dtype* top_data, + int* mask) { + CUDA_KERNEL_LOOP(index, nthreads) { + Dtype maxval = -FLT_MAX; + int maxidx = -1; + if (bottom_data_a[index] > bottom_data_b[index]) { + // only update for very first bottom_data blob (blob_idx == 0) + if (blob_idx == 0) { + maxval = bottom_data_a[index]; + top_data[index] = maxval; + maxidx = blob_idx; + mask[index] = maxidx; + } + } else { + maxval = bottom_data_b[index]; + top_data[index] = maxval; + maxidx = blob_idx + 1; + mask[index] = maxidx; + } + } +} + +template +void EltwiseLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + int* mask = NULL; + const int count = top[0]->count(); + Dtype* top_data = top[0]->mutable_gpu_data(); + switch (op_) { + case EltwiseParameter_EltwiseOp_PROD: + caffe_gpu_mul(count, bottom[0]->gpu_data(), bottom[1]->gpu_data(), + top_data); + for (int i = 2; i < bottom.size(); ++i) { + caffe_gpu_mul(count, top_data, bottom[i]->gpu_data(), top_data); + } + break; + case EltwiseParameter_EltwiseOp_SUM: + caffe_gpu_set(count, Dtype(0.), top_data); + // TODO(shelhamer) does cuBLAS optimize to sum for coeff = 1? + for (int i = 0; i < bottom.size(); ++i) { + caffe_gpu_axpy(count, coeffs_[i], bottom[i]->gpu_data(), top_data); + } + break; + case EltwiseParameter_EltwiseOp_MAX: + mask = max_idx_.mutable_gpu_data(); + // NOLINT_NEXT_LINE(whitespace/operators) + MaxForward <<>>( + count, bottom[0]->gpu_data(), bottom[1]->gpu_data(), 0, top_data, mask); + for (int i = 2; i < bottom.size(); ++i) { + // NOLINT_NEXT_LINE(whitespace/operators) + MaxForward<<>>( + count, top_data, bottom[i]->gpu_data(), i-1, top_data, mask); + } + break; + default: + LOG(FATAL) << "Unknown elementwise operation."; + } +} + +template +__global__ void MaxBackward(const int nthreads, const Dtype* top_diff, + const int blob_idx, const int* mask, Dtype* bottom_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + Dtype gradient = 0; + if (mask[index] == blob_idx) { + gradient += top_diff[index]; + } + bottom_diff[index] = gradient; + } +} + +template +void EltwiseLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const int* mask = NULL; + const int count = top[0]->count(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + for (int i = 0; i < bottom.size(); ++i) { + if (propagate_down[i]) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); + switch (op_) { + case EltwiseParameter_EltwiseOp_PROD: + if (stable_prod_grad_) { + bool initialized = false; + for (int j = 0; j < bottom.size(); ++j) { + if (i == j) { continue; } + if (!initialized) { + caffe_copy(count, bottom[j]->gpu_data(), bottom_diff); + initialized = true; + } else { + caffe_gpu_mul(count, bottom[j]->gpu_data(), bottom_diff, + bottom_diff); + } + } + } else { + caffe_gpu_div(count, top_data, bottom_data, bottom_diff); + } + caffe_gpu_mul(count, bottom_diff, top_diff, bottom_diff); + break; + case EltwiseParameter_EltwiseOp_SUM: + if (coeffs_[i] == Dtype(1.)) { + caffe_copy(count, top_diff, bottom_diff); + } else { + caffe_gpu_scale(count, coeffs_[i], top_diff, bottom_diff); + } + break; + case EltwiseParameter_EltwiseOp_MAX: + mask = max_idx_.gpu_data(); + MaxBackward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, top_diff, i, mask, bottom_diff); + break; + default: + LOG(FATAL) << "Unknown elementwise operation."; + } + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(EltwiseLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/elu_layer.cpp b/3rdparty/caffe/src/caffe/layers/elu_layer.cpp new file mode 100644 index 00000000..a0f87635 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/elu_layer.cpp @@ -0,0 +1,47 @@ +#include +#include + +#include "caffe/layers/elu_layer.hpp" + +namespace caffe { + +template +void ELULayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + for (int i = 0; i < count; ++i) { + top_data[i] = std::max(bottom_data[i], Dtype(0)) + + alpha * (exp(std::min(bottom_data[i], Dtype(0))) - Dtype(1)); + } +} + +template +void ELULayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + for (int i = 0; i < count; ++i) { + bottom_diff[i] = top_diff[i] * ((bottom_data[i] > 0) + + (alpha + top_data[i]) * (bottom_data[i] <= 0)); + } + } +} + + +#ifdef CPU_ONLY +STUB_GPU(ELULayer); +#endif + +INSTANTIATE_CLASS(ELULayer); +REGISTER_LAYER_CLASS(ELU); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/elu_layer.cu b/3rdparty/caffe/src/caffe/layers/elu_layer.cu new file mode 100644 index 00000000..12545aa8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/elu_layer.cu @@ -0,0 +1,62 @@ +#include +#include + +#include "caffe/layers/elu_layer.hpp" + +namespace caffe { + +template +__global__ void ELUForward(const int n, const Dtype* in, Dtype* out, + Dtype alpha) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = in[index] > 0 ? in[index] : + alpha * (exp(in[index]) - 1); + } +} + +template +void ELULayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + // NOLINT_NEXT_LINE(whitespace/operators) + ELUForward<<>>( + count, bottom_data, top_data, alpha); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void ELUBackward(const int n, const Dtype* in_diff, + const Dtype* out_data, const Dtype* in_data, + Dtype* out_diff, Dtype alpha) { + CUDA_KERNEL_LOOP(index, n) { + out_diff[index] = in_data[index] > 0 ? in_diff[index] : + in_diff[index] * (out_data[index] + alpha); + } +} + +template +void ELULayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + // NOLINT_NEXT_LINE(whitespace/operators) + ELUBackward<<>>( + count, top_diff, top_data, bottom_data, bottom_diff, alpha); + CUDA_POST_KERNEL_CHECK; + } +} + + +INSTANTIATE_LAYER_GPU_FUNCS(ELULayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/embed_layer.cpp b/3rdparty/caffe/src/caffe/layers/embed_layer.cpp new file mode 100644 index 00000000..36b40d70 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/embed_layer.cpp @@ -0,0 +1,119 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/embed_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void EmbedLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + N_ = this->layer_param_.embed_param().num_output(); + CHECK_GT(N_, 0) << "EmbedLayer num_output must be positive."; + K_ = this->layer_param_.embed_param().input_dim(); + CHECK_GT(K_, 0) << "EmbedLayer input_dim must be positive."; + bias_term_ = this->layer_param_.embed_param().bias_term(); + // Check if we need to set up the weights + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + if (bias_term_) { + this->blobs_.resize(2); + } else { + this->blobs_.resize(1); + } + // Initialize the weights -- + // transposed from InnerProductLayer for spatial locality. + vector weight_shape(2); + weight_shape[0] = K_; + weight_shape[1] = N_; + this->blobs_[0].reset(new Blob(weight_shape)); + // fill the weights + shared_ptr > weight_filler(GetFiller( + this->layer_param_.embed_param().weight_filler())); + weight_filler->Fill(this->blobs_[0].get()); + // If necessary, initialize and fill the bias term + if (bias_term_) { + vector bias_shape(1, N_); + this->blobs_[1].reset(new Blob(bias_shape)); + shared_ptr > bias_filler(GetFiller( + this->layer_param_.embed_param().bias_filler())); + bias_filler->Fill(this->blobs_[1].get()); + } + } // parameter initialization + this->param_propagate_down_.resize(this->blobs_.size(), true); +} + +template +void EmbedLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + // Figure out the dimensions + M_ = bottom[0]->count(); + vector top_shape = bottom[0]->shape(); + top_shape.push_back(N_); + top[0]->Reshape(top_shape); + // Set up the bias multiplier + if (bias_term_) { + vector bias_shape(1, M_); + bias_multiplier_.Reshape(bias_shape); + caffe_set(M_, Dtype(1), bias_multiplier_.mutable_cpu_data()); + } +} + +template +void EmbedLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* weight = this->blobs_[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + int index; + for (int n = 0; n < M_; ++n) { + index = static_cast(bottom_data[n]); + DCHECK_GE(index, 0); + DCHECK_LT(index, K_); + DCHECK_EQ(static_cast(index), bottom_data[n]) << "non-integer input"; + caffe_copy(N_, weight + index * N_, top_data + n * N_); + } + if (bias_term_) { + const Dtype* bias = this->blobs_[1]->cpu_data(); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, Dtype(1), + bias_multiplier_.cpu_data(), bias, Dtype(1), top_data); + } +} + +template +void EmbedLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + CHECK(!propagate_down[0]) << "Can't backpropagate to EmbedLayer input."; + if (this->param_propagate_down_[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + // Gradient with respect to weight + Dtype* weight_diff = this->blobs_[0]->mutable_cpu_diff(); + int index; + for (int n = 0; n < M_; ++n) { + index = static_cast(bottom_data[n]); + DCHECK_GE(index, 0); + DCHECK_LT(index, K_); + DCHECK_EQ(static_cast(index), bottom_data[n]) + << "non-integer input"; + caffe_axpy(N_, Dtype(1), top_diff + n * N_, weight_diff + index * N_); + } + } + if (bias_term_ && this->param_propagate_down_[1]) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bias_diff = this->blobs_[1]->mutable_cpu_diff(); + caffe_cpu_gemv(CblasTrans, M_, N_, Dtype(1), top_diff, + bias_multiplier_.cpu_data(), Dtype(1), bias_diff); + } +} + +#ifdef CPU_ONLY +STUB_GPU(EmbedLayer); +#endif + +INSTANTIATE_CLASS(EmbedLayer); +REGISTER_LAYER_CLASS(Embed); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/embed_layer.cu b/3rdparty/caffe/src/caffe/layers/embed_layer.cu new file mode 100644 index 00000000..6324a3a8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/embed_layer.cu @@ -0,0 +1,81 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/embed_layer.hpp" +#include "caffe/util/gpu_util.cuh" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void EmbedForward(const int nthreads, const Dtype* bottom_data, + const Dtype* weight, const int M, const int N, const int K, + Dtype* top_data) { + CUDA_KERNEL_LOOP(top_index, nthreads) { + const int n = top_index / N; + const int d = top_index % N; + const int index = static_cast(bottom_data[n]); + const int weight_index = index * N + d; + top_data[top_index] = weight[weight_index]; + } +} + +template +__global__ void EmbedBackward(const int nthreads, const Dtype* bottom_data, + const Dtype* top_diff, const int M, const int N, const int K, + Dtype* weight_diff); + +template +__global__ void EmbedBackward(const int nthreads, const Dtype* bottom_data, + const Dtype* top_diff, const int M, const int N, const int K, + Dtype* weight_diff) { + CUDA_KERNEL_LOOP(top_index, nthreads) { + const int n = top_index / N; + const int d = top_index % N; + const int index = static_cast(bottom_data[n]); + const int weight_index = index * N + d; + caffe_gpu_atomic_add(top_diff[top_index], weight_diff + weight_index); + } +} + +template +void EmbedLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const Dtype* weight = this->blobs_[0]->gpu_data(); + const int count = top[0]->count(); + EmbedForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, bottom_data, weight, M_, N_, K_, top_data); + if (bias_term_) { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, Dtype(1), + bias_multiplier_.gpu_data(), + this->blobs_[1]->gpu_data(), Dtype(1), top_data); + } +} + +template +void EmbedLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + CHECK(!propagate_down[0]) << "Can't backpropagate to EmbedLayer input."; + if (this->param_propagate_down_[0]) { + const int top_count = top[0]->count(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* weight_diff = this->blobs_[0]->mutable_gpu_diff(); + EmbedBackward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + top_count, bottom_data, top_diff, M_, N_, K_, weight_diff); + } + if (bias_term_ && this->param_propagate_down_[1]) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bias_diff = this->blobs_[1]->mutable_gpu_diff(); + caffe_gpu_gemv(CblasTrans, M_, N_, Dtype(1), top_diff, + bias_multiplier_.gpu_data(), Dtype(1), bias_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(EmbedLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cpp new file mode 100644 index 00000000..300d991e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cpp @@ -0,0 +1,55 @@ +#include + +#include "caffe/layers/euclidean_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void EuclideanLossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + LossLayer::Reshape(bottom, top); + CHECK_EQ(bottom[0]->count(1), bottom[1]->count(1)) + << "Inputs must have the same dimension."; + diff_.ReshapeLike(*bottom[0]); +} + +template +void EuclideanLossLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + int count = bottom[0]->count(); + caffe_sub( + count, + bottom[0]->cpu_data(), + bottom[1]->cpu_data(), + diff_.mutable_cpu_data()); + Dtype dot = caffe_cpu_dot(count, diff_.cpu_data(), diff_.cpu_data()); + Dtype loss = dot / bottom[0]->num() / Dtype(2); + top[0]->mutable_cpu_data()[0] = loss; +} + +template +void EuclideanLossLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + for (int i = 0; i < 2; ++i) { + if (propagate_down[i]) { + const Dtype sign = (i == 0) ? 1 : -1; + const Dtype alpha = sign * top[0]->cpu_diff()[0] / bottom[i]->num(); + caffe_cpu_axpby( + bottom[i]->count(), // count + alpha, // alpha + diff_.cpu_data(), // a + Dtype(0), // beta + bottom[i]->mutable_cpu_diff()); // b + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(EuclideanLossLayer); +#endif + +INSTANTIATE_CLASS(EuclideanLossLayer); +REGISTER_LAYER_CLASS(EuclideanLoss); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cu b/3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cu new file mode 100644 index 00000000..4c221b64 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/euclidean_loss_layer.cu @@ -0,0 +1,42 @@ +#include + +#include "caffe/layers/euclidean_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void EuclideanLossLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + int count = bottom[0]->count(); + caffe_gpu_sub( + count, + bottom[0]->gpu_data(), + bottom[1]->gpu_data(), + diff_.mutable_gpu_data()); + Dtype dot; + caffe_gpu_dot(count, diff_.gpu_data(), diff_.gpu_data(), &dot); + Dtype loss = dot / bottom[0]->num() / Dtype(2); + top[0]->mutable_cpu_data()[0] = loss; +} + +template +void EuclideanLossLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + for (int i = 0; i < 2; ++i) { + if (propagate_down[i]) { + const Dtype sign = (i == 0) ? 1 : -1; + const Dtype alpha = sign * top[0]->cpu_diff()[0] / bottom[i]->num(); + caffe_gpu_axpby( + bottom[i]->count(), // count + alpha, // alpha + diff_.gpu_data(), // a + Dtype(0), // beta + bottom[i]->mutable_gpu_diff()); // b + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(EuclideanLossLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/exp_layer.cpp b/3rdparty/caffe/src/caffe/layers/exp_layer.cpp new file mode 100644 index 00000000..0c1b463a --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/exp_layer.cpp @@ -0,0 +1,68 @@ +#include + +#include "caffe/layers/exp_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ExpLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + NeuronLayer::LayerSetUp(bottom, top); + const Dtype base = this->layer_param_.exp_param().base(); + if (base != Dtype(-1)) { + CHECK_GT(base, 0) << "base must be strictly positive."; + } + // If base == -1, interpret the base as e and set log_base = 1 exactly. + // Otherwise, calculate its log explicitly. + const Dtype log_base = (base == Dtype(-1)) ? Dtype(1) : log(base); + CHECK(!isnan(log_base)) + << "NaN result: log(base) = log(" << base << ") = " << log_base; + CHECK(!isinf(log_base)) + << "Inf result: log(base) = log(" << base << ") = " << log_base; + const Dtype input_scale = this->layer_param_.exp_param().scale(); + const Dtype input_shift = this->layer_param_.exp_param().shift(); + inner_scale_ = log_base * input_scale; + outer_scale_ = (input_shift == Dtype(0)) ? Dtype(1) : + ( (base != Dtype(-1)) ? pow(base, input_shift) : exp(input_shift) ); +} + +template +void ExpLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const int count = bottom[0]->count(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + if (inner_scale_ == Dtype(1)) { + caffe_exp(count, bottom_data, top_data); + } else { + caffe_cpu_scale(count, inner_scale_, bottom_data, top_data); + caffe_exp(count, top_data, top_data); + } + if (outer_scale_ != Dtype(1)) { + caffe_scal(count, outer_scale_, top_data); + } +} + +template +void ExpLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + const int count = bottom[0]->count(); + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_mul(count, top_data, top_diff, bottom_diff); + if (inner_scale_ != Dtype(1)) { + caffe_scal(count, inner_scale_, bottom_diff); + } +} + +#ifdef CPU_ONLY +STUB_GPU(ExpLayer); +#endif + +INSTANTIATE_CLASS(ExpLayer); +REGISTER_LAYER_CLASS(Exp); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/exp_layer.cu b/3rdparty/caffe/src/caffe/layers/exp_layer.cu new file mode 100644 index 00000000..61f7f11d --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/exp_layer.cu @@ -0,0 +1,42 @@ +#include + +#include "caffe/layers/exp_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ExpLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const int count = bottom[0]->count(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + if (inner_scale_ == Dtype(1)) { + caffe_gpu_exp(count, bottom_data, top_data); + } else { + caffe_gpu_scale(count, inner_scale_, bottom_data, top_data); + caffe_gpu_exp(count, top_data, top_data); + } + if (outer_scale_ != Dtype(1)) { + caffe_gpu_scal(count, outer_scale_, top_data); + } +} + +template +void ExpLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + const int count = bottom[0]->count(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + caffe_gpu_mul(count, top_data, top_diff, bottom_diff); + if (inner_scale_ != Dtype(1)) { + caffe_gpu_scal(count, inner_scale_, bottom_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ExpLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/filter_layer.cpp b/3rdparty/caffe/src/caffe/layers/filter_layer.cpp new file mode 100644 index 00000000..e226c0b6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/filter_layer.cpp @@ -0,0 +1,125 @@ +#include + +#include "caffe/layers/filter_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void FilterLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + CHECK_EQ(top.size(), bottom.size() - 1); + first_reshape_ = true; +} + +template +void FilterLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + // bottom[0...k-1] are the blobs to filter + // bottom[last] is the "selector_blob" + int selector_index = bottom.size() - 1; + for (int i = 1; i < bottom[selector_index]->num_axes(); ++i) { + CHECK_EQ(bottom[selector_index]->shape(i), 1) + << "Selector blob dimensions must be singletons (1), except the first"; + } + for (int i = 0; i < bottom.size() - 1; ++i) { + CHECK_EQ(bottom[selector_index]->shape(0), bottom[i]->shape(0)) << + "Each bottom should have the same 0th dimension as the selector blob"; + } + + const Dtype* bottom_data_selector = bottom[selector_index]->cpu_data(); + indices_to_forward_.clear(); + + // look for non-zero elements in bottom[0]. Items of each bottom that + // have the same index as the items in bottom[0] with value == non-zero + // will be forwarded + for (int item_id = 0; item_id < bottom[selector_index]->shape(0); ++item_id) { + // we don't need an offset because item size == 1 + const Dtype* tmp_data_selector = bottom_data_selector + item_id; + if (*tmp_data_selector) { + indices_to_forward_.push_back(item_id); + } + } + // only filtered items will be forwarded + int new_tops_num = indices_to_forward_.size(); + // init + if (first_reshape_) { + new_tops_num = bottom[0]->shape(0); + first_reshape_ = false; + } + for (int t = 0; t < top.size(); ++t) { + int num_axes = bottom[t]->num_axes(); + vector shape_top(num_axes); + shape_top[0] = new_tops_num; + for (int ts = 1; ts < num_axes; ++ts) + shape_top[ts] = bottom[t]->shape(ts); + top[t]->Reshape(shape_top); + } +} + +template +void FilterLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + int new_tops_num = indices_to_forward_.size(); + // forward all filtered items for all bottoms but the Selector (bottom[last]) + for (int t = 0; t < top.size(); ++t) { + const Dtype* bottom_data = bottom[t]->cpu_data(); + Dtype* top_data = top[t]->mutable_cpu_data(); + int dim = bottom[t]->count() / bottom[t]->shape(0); + for (int n = 0; n < new_tops_num; ++n) { + int data_offset_top = n * dim; + int data_offset_bottom = indices_to_forward_[n] * bottom[t]->count(1); + caffe_copy(dim, bottom_data + data_offset_bottom, + top_data + data_offset_top); + } + } +} + +template +void FilterLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[bottom.size() - 1]) { + LOG(FATAL) << this->type() + << "Layer cannot backpropagate to filter index inputs"; + } + for (int i = 0; i < top.size(); i++) { + // bottom[last] is the selector and never needs backpropagation + // so we can iterate over top vector because top.size() == bottom.size() -1 + if (propagate_down[i]) { + const int dim = top[i]->count() / top[i]->shape(0); + int next_to_backward_offset = 0; + int batch_offset = 0; + int data_offset_bottom = 0; + int data_offset_top = 0; + for (int n = 0; n < bottom[i]->shape(0); n++) { + data_offset_bottom = n * dim; + if (next_to_backward_offset >= indices_to_forward_.size()) { + // we already visited all items that were been forwarded, so + // just set to zero remaining ones + caffe_set(dim, Dtype(0), + bottom[i]->mutable_cpu_diff() + data_offset_bottom); + } else { + batch_offset = indices_to_forward_[next_to_backward_offset]; + if (n != batch_offset) { // this data was not been forwarded + caffe_set(dim, Dtype(0), + bottom[i]->mutable_cpu_diff() + data_offset_bottom); + } else { // this data was been forwarded + data_offset_top = next_to_backward_offset * dim; + next_to_backward_offset++; // point to next forwarded item index + caffe_copy(dim, top[i]->mutable_cpu_diff() + data_offset_top, + bottom[i]->mutable_cpu_diff() + data_offset_bottom); + } + } + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(FilterLayer); +#endif + +INSTANTIATE_CLASS(FilterLayer); +REGISTER_LAYER_CLASS(Filter); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/filter_layer.cu b/3rdparty/caffe/src/caffe/layers/filter_layer.cu new file mode 100644 index 00000000..b01b16f8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/filter_layer.cu @@ -0,0 +1,69 @@ +#include + +#include "caffe/layers/filter_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void FilterLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + int new_tops_num = indices_to_forward_.size(); + // forward all filtered items for all bottoms but the Selector (bottom[last]) + for (int t = 0; t < top.size(); ++t) { + const Dtype* bottom_data = bottom[t]->gpu_data(); + Dtype* top_data = top[t]->mutable_gpu_data(); + int dim = bottom[t]->count() / bottom[t]->shape(0); + for (int n = 0; n < new_tops_num; ++n) { + int data_offset_top = n * dim; + int data_offset_bottom = indices_to_forward_[n] * dim; + caffe_copy(dim, bottom_data + data_offset_bottom, + top_data + data_offset_top); + } + } +} + +template +void FilterLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[bottom.size() - 1]) { + LOG(FATAL) << this->type() + << "Layer cannot backpropagate to filter index inputs"; + } + for (int i = 0; i < top.size(); ++i) { + // bottom[last] is the selector and never needs backpropagation + // so we can iterate over top vector because top.size() == bottom.size() -1 + if (propagate_down[i]) { + const int dim = top[i]->count() / top[i]->shape(0); + int next_to_backward_offset = 0; + int batch_offset = 0; + int data_offset_bottom = 0; + int data_offset_top = 0; + for (int n = 0; n < bottom[i]->shape(0); ++n) { + if (next_to_backward_offset >= indices_to_forward_.size()) { + // we already visited all items that were been forwarded, so + // just set to zero remaining ones + data_offset_bottom = n * dim; + caffe_gpu_set(dim, Dtype(0), + bottom[i]->mutable_gpu_diff() + data_offset_bottom); + } else { + batch_offset = indices_to_forward_[next_to_backward_offset]; + data_offset_bottom = n * dim; + if (n != batch_offset) { // this data was not been forwarded + caffe_gpu_set(dim, Dtype(0), + bottom[i]->mutable_gpu_diff() + data_offset_bottom); + } else { // this data was been forwarded + data_offset_top = next_to_backward_offset * dim; + ++next_to_backward_offset; // point to next forwarded item index + caffe_copy(dim, top[i]->mutable_gpu_diff() + data_offset_top, + bottom[i]->mutable_gpu_diff() + data_offset_bottom); + } + } + } + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(FilterLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/flatten_layer.cpp b/3rdparty/caffe/src/caffe/layers/flatten_layer.cpp new file mode 100644 index 00000000..d4ab3935 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/flatten_layer.cpp @@ -0,0 +1,44 @@ +#include + +#include "caffe/layers/flatten_layer.hpp" + +namespace caffe { + +template +void FlattenLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not " + "allow in-place computation."; + const int start_axis = bottom[0]->CanonicalAxisIndex( + this->layer_param_.flatten_param().axis()); + const int end_axis = bottom[0]->CanonicalAxisIndex( + this->layer_param_.flatten_param().end_axis()); + vector top_shape; + for (int i = 0; i < start_axis; ++i) { + top_shape.push_back(bottom[0]->shape(i)); + } + const int flattened_dim = bottom[0]->count(start_axis, end_axis + 1); + top_shape.push_back(flattened_dim); + for (int i = end_axis + 1; i < bottom[0]->num_axes(); ++i) { + top_shape.push_back(bottom[0]->shape(i)); + } + top[0]->Reshape(top_shape); + CHECK_EQ(top[0]->count(), bottom[0]->count()); +} + +template +void FlattenLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + top[0]->ShareData(*bottom[0]); +} + +template +void FlattenLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + bottom[0]->ShareDiff(*top[0]); +} + +INSTANTIATE_CLASS(FlattenLayer); +REGISTER_LAYER_CLASS(Flatten); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cpp b/3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cpp new file mode 100644 index 00000000..00716a92 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cpp @@ -0,0 +1,186 @@ +/* +TODO: +- load file in a separate thread ("prefetch") +- can be smarter about the memcpy call instead of doing it row-by-row + :: use util functions caffe_copy, and Blob->offset() + :: don't forget to update hdf5_daa_layer.cu accordingly +- add ability to shuffle filenames if flag is set +*/ +#include // NOLINT(readability/streams) +#include +#include + +#include "hdf5.h" +#include "hdf5_hl.h" +#include "stdint.h" + +#include "caffe/layers/hdf5_data_layer.hpp" +#include "caffe/util/hdf5.hpp" + +namespace caffe { + +template +HDF5DataLayer::~HDF5DataLayer() { } + +// Load data and label from HDF5 filename into the class property blobs. +template +void HDF5DataLayer::LoadHDF5FileData(const char* filename) { + DLOG(INFO) << "Loading HDF5 file: " << filename; + hid_t file_id = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT); + if (file_id < 0) { + LOG(FATAL) << "Failed opening HDF5 file: " << filename; + } + + int top_size = this->layer_param_.top_size(); + hdf_blobs_.resize(top_size); + + const int MIN_DATA_DIM = 1; + const int MAX_DATA_DIM = INT_MAX; + + for (int i = 0; i < top_size; ++i) { + hdf_blobs_[i] = shared_ptr >(new Blob()); + // Allow reshape here, as we are loading data not params + hdf5_load_nd_dataset(file_id, this->layer_param_.top(i).c_str(), + MIN_DATA_DIM, MAX_DATA_DIM, hdf_blobs_[i].get(), true); + } + + herr_t status = H5Fclose(file_id); + CHECK_GE(status, 0) << "Failed to close HDF5 file: " << filename; + + // MinTopBlobs==1 guarantees at least one top blob + CHECK_GE(hdf_blobs_[0]->num_axes(), 1) << "Input must have at least 1 axis."; + const int num = hdf_blobs_[0]->shape(0); + for (int i = 1; i < top_size; ++i) { + CHECK_EQ(hdf_blobs_[i]->shape(0), num); + } + // Default to identity permutation. + data_permutation_.clear(); + data_permutation_.resize(hdf_blobs_[0]->shape(0)); + for (int i = 0; i < hdf_blobs_[0]->shape(0); i++) + data_permutation_[i] = i; + + // Shuffle if needed. + if (this->layer_param_.hdf5_data_param().shuffle()) { + std::random_shuffle(data_permutation_.begin(), data_permutation_.end()); + DLOG(INFO) << "Successfully loaded " << hdf_blobs_[0]->shape(0) + << " rows (shuffled)"; + } else { + DLOG(INFO) << "Successfully loaded " << hdf_blobs_[0]->shape(0) << " rows"; + } +} + +template +void HDF5DataLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + // Refuse transformation parameters since HDF5 is totally generic. + CHECK(!this->layer_param_.has_transform_param()) << + this->type() << " does not transform data."; + // Read the source to parse the filenames. + const string& source = this->layer_param_.hdf5_data_param().source(); + LOG(INFO) << "Loading list of HDF5 filenames from: " << source; + hdf_filenames_.clear(); + std::ifstream source_file(source.c_str()); + if (source_file.is_open()) { + std::string line; + while (source_file >> line) { + hdf_filenames_.push_back(line); + } + } else { + LOG(FATAL) << "Failed to open source file: " << source; + } + source_file.close(); + num_files_ = hdf_filenames_.size(); + current_file_ = 0; + LOG(INFO) << "Number of HDF5 files: " << num_files_; + CHECK_GE(num_files_, 1) << "Must have at least 1 HDF5 filename listed in " + << source; + + file_permutation_.clear(); + file_permutation_.resize(num_files_); + // Default to identity permutation. + for (int i = 0; i < num_files_; i++) { + file_permutation_[i] = i; + } + + // Shuffle if needed. + if (this->layer_param_.hdf5_data_param().shuffle()) { + std::random_shuffle(file_permutation_.begin(), file_permutation_.end()); + } + + // Load the first HDF5 file and initialize the line counter. + LoadHDF5FileData(hdf_filenames_[file_permutation_[current_file_]].c_str()); + current_row_ = 0; + + // Reshape blobs. + const int batch_size = this->layer_param_.hdf5_data_param().batch_size(); + const int top_size = this->layer_param_.top_size(); + vector top_shape; + for (int i = 0; i < top_size; ++i) { + top_shape.resize(hdf_blobs_[i]->num_axes()); + top_shape[0] = batch_size; + for (int j = 1; j < top_shape.size(); ++j) { + top_shape[j] = hdf_blobs_[i]->shape(j); + } + top[i]->Reshape(top_shape); + } +} + +template +bool HDF5DataLayer::Skip() { + int size = Caffe::solver_count(); + int rank = Caffe::solver_rank(); + bool keep = (offset_ % size) == rank || + // In test mode, only rank 0 runs, so avoid skipping + this->layer_param_.phase() == TEST; + return !keep; +} + +template +void HDF5DataLayer::Next() { + if (++current_row_ == hdf_blobs_[0]->shape(0)) { + if (num_files_ > 1) { + ++current_file_; + if (current_file_ == num_files_) { + current_file_ = 0; + if (this->layer_param_.hdf5_data_param().shuffle()) { + std::random_shuffle(file_permutation_.begin(), + file_permutation_.end()); + } + DLOG(INFO) << "Looping around to first file."; + } + LoadHDF5FileData( + hdf_filenames_[file_permutation_[current_file_]].c_str()); + } + current_row_ = 0; + if (this->layer_param_.hdf5_data_param().shuffle()) + std::random_shuffle(data_permutation_.begin(), data_permutation_.end()); + } + offset_++; +} + +template +void HDF5DataLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const int batch_size = this->layer_param_.hdf5_data_param().batch_size(); + for (int i = 0; i < batch_size; ++i) { + while (Skip()) { + Next(); + } + for (int j = 0; j < this->layer_param_.top_size(); ++j) { + int data_dim = top[j]->count() / top[j]->shape(0); + caffe_copy(data_dim, + &hdf_blobs_[j]->cpu_data()[data_permutation_[current_row_] + * data_dim], &top[j]->mutable_cpu_data()[i * data_dim]); + } + Next(); + } +} + +#ifdef CPU_ONLY +STUB_GPU_FORWARD(HDF5DataLayer, Forward); +#endif + +INSTANTIATE_CLASS(HDF5DataLayer); +REGISTER_LAYER_CLASS(HDF5Data); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cu b/3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cu new file mode 100644 index 00000000..33eebd41 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/hdf5_data_layer.cu @@ -0,0 +1,36 @@ +/* +TODO: +- only load parts of the file, in accordance with a prototxt param "max_mem" +*/ + +#include +#include + +#include "hdf5.h" +#include "hdf5_hl.h" + +#include "caffe/layers/hdf5_data_layer.hpp" + +namespace caffe { + +template +void HDF5DataLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const int batch_size = this->layer_param_.hdf5_data_param().batch_size(); + for (int i = 0; i < batch_size; ++i) { + while (Skip()) { + Next(); + } + for (int j = 0; j < this->layer_param_.top_size(); ++j) { + int data_dim = top[j]->count() / top[j]->shape(0); + caffe_copy(data_dim, + &hdf_blobs_[j]->cpu_data()[data_permutation_[current_row_] + * data_dim], &top[j]->mutable_gpu_data()[i * data_dim]); + } + Next(); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(HDF5DataLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cpp b/3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cpp new file mode 100644 index 00000000..f8f1edcd --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cpp @@ -0,0 +1,74 @@ +#include + +#include "hdf5.h" +#include "hdf5_hl.h" + +#include "caffe/layers/hdf5_output_layer.hpp" +#include "caffe/util/hdf5.hpp" + +namespace caffe { + +template +void HDF5OutputLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + file_name_ = this->layer_param_.hdf5_output_param().file_name(); + file_id_ = H5Fcreate(file_name_.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, + H5P_DEFAULT); + CHECK_GE(file_id_, 0) << "Failed to open HDF5 file" << file_name_; + file_opened_ = true; +} + +template +HDF5OutputLayer::~HDF5OutputLayer() { + if (file_opened_) { + herr_t status = H5Fclose(file_id_); + CHECK_GE(status, 0) << "Failed to close HDF5 file " << file_name_; + } +} + +template +void HDF5OutputLayer::SaveBlobs() { + // TODO: no limit on the number of blobs + LOG(INFO) << "Saving HDF5 file " << file_name_; + CHECK_EQ(data_blob_.num(), label_blob_.num()) << + "data blob and label blob must have the same batch size"; + hdf5_save_nd_dataset(file_id_, HDF5_DATA_DATASET_NAME, data_blob_); + hdf5_save_nd_dataset(file_id_, HDF5_DATA_LABEL_NAME, label_blob_); + LOG(INFO) << "Successfully saved " << data_blob_.num() << " rows"; +} + +template +void HDF5OutputLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom.size(), 2); + CHECK_EQ(bottom[0]->num(), bottom[1]->num()); + data_blob_.Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + label_blob_.Reshape(bottom[1]->num(), bottom[1]->channels(), + bottom[1]->height(), bottom[1]->width()); + const int data_datum_dim = bottom[0]->count() / bottom[0]->num(); + const int label_datum_dim = bottom[1]->count() / bottom[1]->num(); + + for (int i = 0; i < bottom[0]->num(); ++i) { + caffe_copy(data_datum_dim, &bottom[0]->cpu_data()[i * data_datum_dim], + &data_blob_.mutable_cpu_data()[i * data_datum_dim]); + caffe_copy(label_datum_dim, &bottom[1]->cpu_data()[i * label_datum_dim], + &label_blob_.mutable_cpu_data()[i * label_datum_dim]); + } + SaveBlobs(); +} + +template +void HDF5OutputLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + return; +} + +#ifdef CPU_ONLY +STUB_GPU(HDF5OutputLayer); +#endif + +INSTANTIATE_CLASS(HDF5OutputLayer); +REGISTER_LAYER_CLASS(HDF5Output); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cu b/3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cu new file mode 100644 index 00000000..c1685cd3 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/hdf5_output_layer.cu @@ -0,0 +1,39 @@ +#include + +#include "hdf5.h" +#include "hdf5_hl.h" + +#include "caffe/layers/hdf5_output_layer.hpp" + +namespace caffe { + +template +void HDF5OutputLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom.size(), 2); + CHECK_EQ(bottom[0]->num(), bottom[1]->num()); + data_blob_.Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + label_blob_.Reshape(bottom[1]->num(), bottom[1]->channels(), + bottom[1]->height(), bottom[1]->width()); + const int data_datum_dim = bottom[0]->count() / bottom[0]->num(); + const int label_datum_dim = bottom[1]->count() / bottom[1]->num(); + + for (int i = 0; i < bottom[0]->num(); ++i) { + caffe_copy(data_datum_dim, &bottom[0]->gpu_data()[i * data_datum_dim], + &data_blob_.mutable_cpu_data()[i * data_datum_dim]); + caffe_copy(label_datum_dim, &bottom[1]->gpu_data()[i * label_datum_dim], + &label_blob_.mutable_cpu_data()[i * label_datum_dim]); + } + SaveBlobs(); +} + +template +void HDF5OutputLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + return; +} + +INSTANTIATE_LAYER_GPU_FUNCS(HDF5OutputLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/hinge_loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/hinge_loss_layer.cpp new file mode 100644 index 00000000..374aed3c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/hinge_loss_layer.cpp @@ -0,0 +1,78 @@ +#include +#include + +#include "caffe/layers/hinge_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void HingeLossLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const Dtype* label = bottom[1]->cpu_data(); + int num = bottom[0]->num(); + int count = bottom[0]->count(); + int dim = count / num; + + caffe_copy(count, bottom_data, bottom_diff); + for (int i = 0; i < num; ++i) { + bottom_diff[i * dim + static_cast(label[i])] *= -1; + } + for (int i = 0; i < num; ++i) { + for (int j = 0; j < dim; ++j) { + bottom_diff[i * dim + j] = std::max( + Dtype(0), 1 + bottom_diff[i * dim + j]); + } + } + Dtype* loss = top[0]->mutable_cpu_data(); + switch (this->layer_param_.hinge_loss_param().norm()) { + case HingeLossParameter_Norm_L1: + loss[0] = caffe_cpu_asum(count, bottom_diff) / num; + break; + case HingeLossParameter_Norm_L2: + loss[0] = caffe_cpu_dot(count, bottom_diff, bottom_diff) / num; + break; + default: + LOG(FATAL) << "Unknown Norm"; + } +} + +template +void HingeLossLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const Dtype* label = bottom[1]->cpu_data(); + int num = bottom[0]->num(); + int count = bottom[0]->count(); + int dim = count / num; + + for (int i = 0; i < num; ++i) { + bottom_diff[i * dim + static_cast(label[i])] *= -1; + } + + const Dtype loss_weight = top[0]->cpu_diff()[0]; + switch (this->layer_param_.hinge_loss_param().norm()) { + case HingeLossParameter_Norm_L1: + caffe_cpu_sign(count, bottom_diff, bottom_diff); + caffe_scal(count, loss_weight / num, bottom_diff); + break; + case HingeLossParameter_Norm_L2: + caffe_scal(count, loss_weight * 2 / num, bottom_diff); + break; + default: + LOG(FATAL) << "Unknown Norm"; + } + } +} + +INSTANTIATE_CLASS(HingeLossLayer); +REGISTER_LAYER_CLASS(HingeLoss); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/im2col_layer.cpp b/3rdparty/caffe/src/caffe/layers/im2col_layer.cpp new file mode 100644 index 00000000..2fb9b3c1 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/im2col_layer.cpp @@ -0,0 +1,193 @@ +#include + +#include "caffe/layers/im2col_layer.hpp" +#include "caffe/util/im2col.hpp" + +namespace caffe { + +template +void Im2colLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + ConvolutionParameter conv_param = this->layer_param_.convolution_param(); + force_nd_im2col_ = conv_param.force_nd_im2col(); + const int input_num_dims = bottom[0]->shape().size(); + channel_axis_ = bottom[0]->CanonicalAxisIndex(conv_param.axis()); + const int first_spatial_dim = channel_axis_ + 1; + num_spatial_axes_ = input_num_dims - first_spatial_dim; + CHECK_GE(num_spatial_axes_, 1); + vector dim_blob_shape(1, num_spatial_axes_); + // Setup filter kernel dimensions (kernel_shape_). + kernel_shape_.Reshape(dim_blob_shape); + int* kernel_shape_data = kernel_shape_.mutable_cpu_data(); + if (conv_param.has_kernel_h() || conv_param.has_kernel_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "kernel_h & kernel_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.kernel_size_size()) + << "Either kernel_size or kernel_h/w should be specified; not both."; + kernel_shape_data[0] = conv_param.kernel_h(); + kernel_shape_data[1] = conv_param.kernel_w(); + } else { + const int num_kernel_dims = conv_param.kernel_size_size(); + CHECK(num_kernel_dims == 1 || num_kernel_dims == num_spatial_axes_) + << "kernel_size must be specified once, or once per spatial dimension " + << "(kernel_size specified " << num_kernel_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + for (int i = 0; i < num_spatial_axes_; ++i) { + kernel_shape_data[i] = + conv_param.kernel_size((num_kernel_dims == 1) ? 0 : i); + } + } + for (int i = 0; i < num_spatial_axes_; ++i) { + CHECK_GT(kernel_shape_data[i], 0) << "Filter dimensions must be nonzero."; + } + // Setup stride dimensions (stride_). + stride_.Reshape(dim_blob_shape); + int* stride_data = stride_.mutable_cpu_data(); + if (conv_param.has_stride_h() || conv_param.has_stride_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "stride_h & stride_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.stride_size()) + << "Either stride or stride_h/w should be specified; not both."; + stride_data[0] = conv_param.stride_h(); + stride_data[1] = conv_param.stride_w(); + } else { + const int num_stride_dims = conv_param.stride_size(); + CHECK(num_stride_dims == 0 || num_stride_dims == 1 || + num_stride_dims == num_spatial_axes_) + << "stride must be specified once, or once per spatial dimension " + << "(stride specified " << num_stride_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + const int kDefaultStride = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + stride_data[i] = (num_stride_dims == 0) ? kDefaultStride : + conv_param.stride((num_stride_dims == 1) ? 0 : i); + CHECK_GT(stride_data[i], 0) << "Stride dimensions must be nonzero."; + } + } + // Setup pad dimensions (pad_). + pad_.Reshape(dim_blob_shape); + int* pad_data = pad_.mutable_cpu_data(); + if (conv_param.has_pad_h() || conv_param.has_pad_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "pad_h & pad_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.pad_size()) + << "Either pad or pad_h/w should be specified; not both."; + pad_data[0] = conv_param.pad_h(); + pad_data[1] = conv_param.pad_w(); + } else { + const int num_pad_dims = conv_param.pad_size(); + CHECK(num_pad_dims == 0 || num_pad_dims == 1 || + num_pad_dims == num_spatial_axes_) + << "pad must be specified once, or once per spatial dimension " + << "(pad specified " << num_pad_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + const int kDefaultPad = 0; + for (int i = 0; i < num_spatial_axes_; ++i) { + pad_data[i] = (num_pad_dims == 0) ? kDefaultPad : + conv_param.pad((num_pad_dims == 1) ? 0 : i); + } + } + // Setup dilation dimensions (dilation_). + dilation_.Reshape(dim_blob_shape); + int* dilation_data = dilation_.mutable_cpu_data(); + const int num_dilation_dims = conv_param.dilation_size(); + CHECK(num_dilation_dims == 0 || num_dilation_dims == 1 || + num_dilation_dims == num_spatial_axes_) + << "dilation must be specified once, or once per spatial dimension " + << "(dilation specified " << num_dilation_dims << " times; " + << num_spatial_axes_ << " spatial dims)."; + const int kDefaultDilation = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + dilation_data[i] = (num_dilation_dims == 0) ? kDefaultDilation : + conv_param.dilation((num_dilation_dims == 1) ? 0 : i); + } +} + +template +void Im2colLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + vector top_shape = bottom[0]->shape(); + const int* kernel_shape_data = kernel_shape_.cpu_data(); + const int* stride_data = stride_.cpu_data(); + const int* pad_data = pad_.cpu_data(); + const int* dilation_data = dilation_.cpu_data(); + for (int i = 0; i < num_spatial_axes_; ++i) { + top_shape[channel_axis_] *= kernel_shape_data[i]; + const int input_dim = bottom[0]->shape(channel_axis_ + i + 1); + const int kernel_extent = dilation_data[i] * (kernel_shape_data[i] - 1) + 1; + const int output_dim = (input_dim + 2 * pad_data[i] - kernel_extent) + / stride_data[i] + 1; + top_shape[channel_axis_ + i + 1] = output_dim; + } + top[0]->Reshape(top_shape); + num_ = bottom[0]->count(0, channel_axis_); + bottom_dim_ = bottom[0]->count(channel_axis_); + top_dim_ = top[0]->count(channel_axis_); + + channels_ = bottom[0]->shape(channel_axis_); +} + +template +void Im2colLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + for (int n = 0; n < num_; ++n) { + DCHECK_EQ(bottom[0]->shape().size() - channel_axis_, num_spatial_axes_ + 1); + DCHECK_EQ(top[0]->shape().size() - channel_axis_, num_spatial_axes_ + 1); + DCHECK_EQ(kernel_shape_.count(), num_spatial_axes_); + DCHECK_EQ(pad_.count(), num_spatial_axes_); + DCHECK_EQ(stride_.count(), num_spatial_axes_); + DCHECK_EQ(dilation_.count(), num_spatial_axes_); + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_cpu(bottom_data + n * bottom_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], + top_data + n * top_dim_); + } else { + im2col_nd_cpu(bottom_data + n * bottom_dim_, num_spatial_axes_, + bottom[0]->shape().data() + channel_axis_, + top[0]->shape().data() + channel_axis_, + kernel_shape_.cpu_data(), pad_.cpu_data(), stride_.cpu_data(), + dilation_.cpu_data(), top_data + n * top_dim_); + } + } +} + +template +void Im2colLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + for (int n = 0; n < num_; ++n) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_cpu(top_diff + n * top_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], + bottom_diff + n * bottom_dim_); + } else { + col2im_nd_cpu(top_diff + n * top_dim_, num_spatial_axes_, + bottom[0]->shape().data() + channel_axis_, + top[0]->shape().data() + channel_axis_, + kernel_shape_.cpu_data(), pad_.cpu_data(), stride_.cpu_data(), + dilation_.cpu_data(), bottom_diff + n * bottom_dim_); + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(Im2colLayer); +#endif + +INSTANTIATE_CLASS(Im2colLayer); +REGISTER_LAYER_CLASS(Im2col); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/im2col_layer.cu b/3rdparty/caffe/src/caffe/layers/im2col_layer.cu new file mode 100644 index 00000000..792c97f7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/im2col_layer.cu @@ -0,0 +1,62 @@ +#include + +#include "caffe/layers/im2col_layer.hpp" +#include "caffe/util/im2col.hpp" + +namespace caffe { + +template +void Im2colLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int num_kernels = channels_ * top[0]->count(channel_axis_ + 1); + for (int n = 0; n < num_; ++n) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_gpu(bottom_data + n * bottom_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], + top_data + n * top_dim_); + } else { + im2col_nd_gpu(bottom_data + n * bottom_dim_, num_spatial_axes_, + num_kernels, bottom[0]->gpu_shape() + channel_axis_, + top[0]->gpu_shape() + channel_axis_, + kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), + dilation_.gpu_data(), top_data + n * top_dim_); + } + } +} + +template +void Im2colLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + for (int n = 0; n < num_; ++n) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_gpu(top_diff + n * top_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], + bottom_diff + n * bottom_dim_); + } else { + col2im_nd_gpu(top_diff + n * top_dim_, num_spatial_axes_, bottom_dim_, + bottom[0]->gpu_shape() + channel_axis_, + top[0]->gpu_shape() + channel_axis_, + kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), + dilation_.gpu_data(), bottom_diff + n * bottom_dim_); + } + } +} + + +INSTANTIATE_LAYER_GPU_FUNCS(Im2colLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/image_data_layer.cpp b/3rdparty/caffe/src/caffe/layers/image_data_layer.cpp new file mode 100644 index 00000000..ec0fc5b0 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/image_data_layer.cpp @@ -0,0 +1,179 @@ +#ifdef USE_OPENCV +#include + +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include +#include +#include + +#include "caffe/data_transformer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/layers/image_data_layer.hpp" +#include "caffe/util/benchmark.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/util/rng.hpp" + +namespace caffe { + +template +ImageDataLayer::~ImageDataLayer() { + this->StopInternalThread(); +} + +template +void ImageDataLayer::DataLayerSetUp(const vector*>& bottom, + const vector*>& top) { + const int new_height = this->layer_param_.image_data_param().new_height(); + const int new_width = this->layer_param_.image_data_param().new_width(); + const bool is_color = this->layer_param_.image_data_param().is_color(); + string root_folder = this->layer_param_.image_data_param().root_folder(); + + CHECK((new_height == 0 && new_width == 0) || + (new_height > 0 && new_width > 0)) << "Current implementation requires " + "new_height and new_width to be set at the same time."; + // Read the file with filenames and labels + const string& source = this->layer_param_.image_data_param().source(); + LOG(INFO) << "Opening file " << source; + std::ifstream infile(source.c_str()); + string line; + size_t pos; + int label; + while (std::getline(infile, line)) { + pos = line.find_last_of(' '); + label = atoi(line.substr(pos + 1).c_str()); + lines_.push_back(std::make_pair(line.substr(0, pos), label)); + } + + CHECK(!lines_.empty()) << "File is empty"; + + if (this->layer_param_.image_data_param().shuffle()) { + // randomly shuffle data + LOG(INFO) << "Shuffling data"; + const unsigned int prefetch_rng_seed = caffe_rng_rand(); + prefetch_rng_.reset(new Caffe::RNG(prefetch_rng_seed)); + ShuffleImages(); + } else { + if (this->phase_ == TRAIN && Caffe::solver_rank() > 0 && + this->layer_param_.image_data_param().rand_skip() == 0) { + LOG(WARNING) << "Shuffling or skipping recommended for multi-GPU"; + } + } + LOG(INFO) << "A total of " << lines_.size() << " images."; + + lines_id_ = 0; + // Check if we would need to randomly skip a few data points + if (this->layer_param_.image_data_param().rand_skip()) { + unsigned int skip = caffe_rng_rand() % + this->layer_param_.image_data_param().rand_skip(); + LOG(INFO) << "Skipping first " << skip << " data points."; + CHECK_GT(lines_.size(), skip) << "Not enough points to skip"; + lines_id_ = skip; + } + // Read an image, and use it to initialize the top blob. + cv::Mat cv_img = ReadImageToCVMat(root_folder + lines_[lines_id_].first, + new_height, new_width, is_color); + CHECK(cv_img.data) << "Could not load " << lines_[lines_id_].first; + // Use data_transformer to infer the expected blob shape from a cv_image. + vector top_shape = this->data_transformer_->InferBlobShape(cv_img); + this->transformed_data_.Reshape(top_shape); + // Reshape prefetch_data and top[0] according to the batch_size. + const int batch_size = this->layer_param_.image_data_param().batch_size(); + CHECK_GT(batch_size, 0) << "Positive batch size required"; + top_shape[0] = batch_size; + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->data_.Reshape(top_shape); + } + top[0]->Reshape(top_shape); + + LOG(INFO) << "output data size: " << top[0]->num() << "," + << top[0]->channels() << "," << top[0]->height() << "," + << top[0]->width(); + // label + vector label_shape(1, batch_size); + top[1]->Reshape(label_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->label_.Reshape(label_shape); + } +} + +template +void ImageDataLayer::ShuffleImages() { + caffe::rng_t* prefetch_rng = + static_cast(prefetch_rng_->generator()); + shuffle(lines_.begin(), lines_.end(), prefetch_rng); +} + +// This function is called on prefetch thread +template +void ImageDataLayer::load_batch(Batch* batch) { + CPUTimer batch_timer; + batch_timer.Start(); + double read_time = 0; + double trans_time = 0; + CPUTimer timer; + CHECK(batch->data_.count()); + CHECK(this->transformed_data_.count()); + ImageDataParameter image_data_param = this->layer_param_.image_data_param(); + const int batch_size = image_data_param.batch_size(); + const int new_height = image_data_param.new_height(); + const int new_width = image_data_param.new_width(); + const bool is_color = image_data_param.is_color(); + string root_folder = image_data_param.root_folder(); + + // Reshape according to the first image of each batch + // on single input batches allows for inputs of varying dimension. + cv::Mat cv_img = ReadImageToCVMat(root_folder + lines_[lines_id_].first, + new_height, new_width, is_color); + CHECK(cv_img.data) << "Could not load " << lines_[lines_id_].first; + // Use data_transformer to infer the expected blob shape from a cv_img. + vector top_shape = this->data_transformer_->InferBlobShape(cv_img); + this->transformed_data_.Reshape(top_shape); + // Reshape batch according to the batch_size. + top_shape[0] = batch_size; + batch->data_.Reshape(top_shape); + + Dtype* prefetch_data = batch->data_.mutable_cpu_data(); + Dtype* prefetch_label = batch->label_.mutable_cpu_data(); + + // datum scales + const int lines_size = lines_.size(); + for (int item_id = 0; item_id < batch_size; ++item_id) { + // get a blob + timer.Start(); + CHECK_GT(lines_size, lines_id_); + cv::Mat cv_img = ReadImageToCVMat(root_folder + lines_[lines_id_].first, + new_height, new_width, is_color); + CHECK(cv_img.data) << "Could not load " << lines_[lines_id_].first; + read_time += timer.MicroSeconds(); + timer.Start(); + // Apply transformations (mirror, crop...) to the image + int offset = batch->data_.offset(item_id); + this->transformed_data_.set_cpu_data(prefetch_data + offset); + this->data_transformer_->Transform(cv_img, &(this->transformed_data_)); + trans_time += timer.MicroSeconds(); + + prefetch_label[item_id] = lines_[lines_id_].second; + // go to the next iter + lines_id_++; + if (lines_id_ >= lines_size) { + // We have reached the end. Restart from the first. + DLOG(INFO) << "Restarting data prefetching from start."; + lines_id_ = 0; + if (this->layer_param_.image_data_param().shuffle()) { + ShuffleImages(); + } + } + } + batch_timer.Stop(); + DLOG(INFO) << "Prefetch batch: " << batch_timer.MilliSeconds() << " ms."; + DLOG(INFO) << " Read time: " << read_time / 1000 << " ms."; + DLOG(INFO) << "Transform time: " << trans_time / 1000 << " ms."; +} + +INSTANTIATE_CLASS(ImageDataLayer); +REGISTER_LAYER_CLASS(ImageData); + +} // namespace caffe +#endif // USE_OPENCV diff --git a/3rdparty/caffe/src/caffe/layers/infogain_loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/infogain_loss_layer.cpp new file mode 100644 index 00000000..3c3f460e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/infogain_loss_layer.cpp @@ -0,0 +1,223 @@ +#include +#include +#include + +#include "caffe/layers/infogain_loss_layer.hpp" +#include "caffe/util/io.hpp" // for bolb reading of matrix H +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void InfogainLossLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + LossLayer::LayerSetUp(bottom, top); + // internal softmax layer + LayerParameter softmax_layer_param(this->layer_param_); + SoftmaxParameter* softmax_param = softmax_layer_param.mutable_softmax_param(); + softmax_param->set_axis(this->layer_param_.infogain_loss_param().axis()); + softmax_layer_param.set_type("Softmax"); + softmax_layer_param.clear_loss_weight(); + softmax_layer_param.add_loss_weight(1); + softmax_layer_ = LayerRegistry::CreateLayer(softmax_layer_param); + softmax_bottom_vec_.clear(); + softmax_bottom_vec_.push_back(bottom[0]); + softmax_top_vec_.clear(); + softmax_top_vec_.push_back(&prob_); + softmax_layer_->SetUp(softmax_bottom_vec_, softmax_top_vec_); + + // ignore label + has_ignore_label_ = + this->layer_param_.loss_param().has_ignore_label(); + if (has_ignore_label_) { + ignore_label_ = this->layer_param_.loss_param().ignore_label(); + } + // normalization + CHECK(!this->layer_param_.loss_param().has_normalize()) + << "normalize is deprecated. use \"normalization\""; + normalization_ = this->layer_param_.loss_param().normalization(); + // matrix H + if (bottom.size() < 3) { + CHECK(this->layer_param_.infogain_loss_param().has_source()) + << "Infogain matrix source must be specified."; + BlobProto blob_proto; + ReadProtoFromBinaryFile( + this->layer_param_.infogain_loss_param().source(), &blob_proto); + infogain_.FromProto(blob_proto); + } +} + +template +void InfogainLossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + LossLayer::Reshape(bottom, top); + softmax_layer_->Reshape(softmax_bottom_vec_, softmax_top_vec_); + infogain_axis_ = + bottom[0]->CanonicalAxisIndex( + this->layer_param_.infogain_loss_param().axis()); + outer_num_ = bottom[0]->count(0, infogain_axis_); + inner_num_ = bottom[0]->count(infogain_axis_ + 1); + CHECK_EQ(outer_num_ * inner_num_, bottom[1]->count()) + << "Number of labels must match number of predictions; " + << "e.g., if infogain axis == 1 and prediction shape is (N, C, H, W), " + << "label count (number of labels) must be N*H*W, " + << "with integer values in {0, 1, ..., C-1}."; + num_labels_ = bottom[0]->shape(infogain_axis_); + Blob* infogain = NULL; + if (bottom.size() < 3) { + infogain = &infogain_; + } else { + infogain = bottom[2]; + } + CHECK_EQ(infogain->count(), num_labels_*num_labels_); + sum_rows_H_.Reshape(vector(1, num_labels_)); + if (bottom.size() == 2) { + // H is provided as a parameter and will not change. sum rows once + sum_rows_of_H(infogain); + } + if (top.size() >= 2) { + // softmax output + top[1]->ReshapeLike(*bottom[0]); + } +} + +template +Dtype InfogainLossLayer::get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count) { + Dtype normalizer; + switch (normalization_mode) { + case LossParameter_NormalizationMode_FULL: + normalizer = Dtype(outer_num_ * inner_num_); + break; + case LossParameter_NormalizationMode_VALID: + if (valid_count == -1) { + normalizer = Dtype(outer_num_ * inner_num_); + } else { + normalizer = Dtype(valid_count); + } + break; + case LossParameter_NormalizationMode_BATCH_SIZE: + normalizer = Dtype(outer_num_); + break; + case LossParameter_NormalizationMode_NONE: + normalizer = Dtype(1); + break; + default: + LOG(FATAL) << "Unknown normalization mode: " + << LossParameter_NormalizationMode_Name(normalization_mode); + } + // Some users will have no labels for some examples in order to 'turn off' a + // particular loss in a multi-task setup. The max prevents NaNs in that case. + return std::max(Dtype(1.0), normalizer); +} + +template +void InfogainLossLayer::sum_rows_of_H(const Blob* H) { + CHECK_EQ(H->count(), num_labels_*num_labels_) + << "H must be " << num_labels_ << "x" << num_labels_; + const Dtype* infogain_mat = H->cpu_data(); + Dtype* sum = sum_rows_H_.mutable_cpu_data(); + for ( int row = 0; row < num_labels_ ; row++ ) { + sum[row] = 0; + for ( int col = 0; col < num_labels_ ; col++ ) { + sum[row] += infogain_mat[row*num_labels_+col]; + } + } +} + +template +void InfogainLossLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + // The forward pass computes the softmax prob values. + softmax_layer_->Forward(softmax_bottom_vec_, softmax_top_vec_); + const Dtype* prob_data = prob_.cpu_data(); + const Dtype* bottom_label = bottom[1]->cpu_data(); + const Dtype* infogain_mat = NULL; + if (bottom.size() < 3) { + infogain_mat = infogain_.cpu_data(); + } else { + infogain_mat = bottom[2]->cpu_data(); + } + int count = 0; + Dtype loss = 0; + for (int i = 0; i < outer_num_; ++i) { + for (int j = 0; j < inner_num_; j++) { + const int label_value = + static_cast(bottom_label[i * inner_num_ + j]); + if (has_ignore_label_ && label_value == ignore_label_) { + continue; + } + DCHECK_GE(label_value, 0); + DCHECK_LT(label_value, num_labels_); + for (int l = 0; l < num_labels_; l++) { + loss -= infogain_mat[label_value * num_labels_ + l] * + log(std::max( + prob_data[i * inner_num_*num_labels_ + l * inner_num_ + j], + Dtype(kLOG_THRESHOLD))); + } + ++count; + } + } + top[0]->mutable_cpu_data()[0] = loss / get_normalizer(normalization_, count); + if (top.size() == 2) { + top[1]->ShareData(prob_); + } +} + +template +void InfogainLossLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down.size() > 2 && propagate_down[2]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to infogain inputs."; + } + if (propagate_down[0]) { + const Dtype* prob_data = prob_.cpu_data(); + const Dtype* bottom_label = bottom[1]->cpu_data(); + const Dtype* infogain_mat = NULL; + if (bottom.size() < 3) { + infogain_mat = infogain_.cpu_data(); + } else { + infogain_mat = bottom[2]->cpu_data(); + // H is provided as a "bottom" and might change. sum rows every time. + sum_rows_of_H(bottom[2]); + } + const Dtype* sum_rows_H = sum_rows_H_.cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int dim = bottom[0]->count() / outer_num_; + int count = 0; + for (int i = 0; i < outer_num_; ++i) { + for (int j = 0; j < inner_num_; ++j) { + const int label_value = + static_cast(bottom_label[i * inner_num_ + j]); + DCHECK_GE(label_value, 0); + DCHECK_LT(label_value, num_labels_); + if (has_ignore_label_ && label_value == ignore_label_) { + for (int l = 0; l < num_labels_; ++l) { + bottom_diff[i * dim + l * inner_num_ + j] = 0; + } + } else { + for (int l = 0; l < num_labels_; ++l) { + bottom_diff[i * dim + l * inner_num_ + j] = + prob_data[i*dim + l*inner_num_ + j]*sum_rows_H[label_value] + - infogain_mat[label_value * num_labels_ + l]; + } + ++count; + } + } + } + // Scale gradient + Dtype loss_weight = top[0]->cpu_diff()[0] / + get_normalizer(normalization_, count); + caffe_scal(bottom[0]->count(), loss_weight, bottom_diff); + } +} + +INSTANTIATE_CLASS(InfogainLossLayer); +REGISTER_LAYER_CLASS(InfogainLoss); +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/inner_product_layer.cpp b/3rdparty/caffe/src/caffe/layers/inner_product_layer.cpp new file mode 100644 index 00000000..e65349f0 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/inner_product_layer.cpp @@ -0,0 +1,150 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/inner_product_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void InnerProductLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const int num_output = this->layer_param_.inner_product_param().num_output(); + bias_term_ = this->layer_param_.inner_product_param().bias_term(); + transpose_ = this->layer_param_.inner_product_param().transpose(); + N_ = num_output; + const int axis = bottom[0]->CanonicalAxisIndex( + this->layer_param_.inner_product_param().axis()); + // Dimensions starting from "axis" are "flattened" into a single + // length K_ vector. For example, if bottom[0]'s shape is (N, C, H, W), + // and axis == 1, N inner products with dimension CHW are performed. + K_ = bottom[0]->count(axis); + // Check if we need to set up the weights + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + if (bias_term_) { + this->blobs_.resize(2); + } else { + this->blobs_.resize(1); + } + // Initialize the weights + vector weight_shape(2); + if (transpose_) { + weight_shape[0] = K_; + weight_shape[1] = N_; + } else { + weight_shape[0] = N_; + weight_shape[1] = K_; + } + this->blobs_[0].reset(new Blob(weight_shape)); + // fill the weights + shared_ptr > weight_filler(GetFiller( + this->layer_param_.inner_product_param().weight_filler())); + weight_filler->Fill(this->blobs_[0].get()); + // If necessary, intiialize and fill the bias term + if (bias_term_) { + vector bias_shape(1, N_); + this->blobs_[1].reset(new Blob(bias_shape)); + shared_ptr > bias_filler(GetFiller( + this->layer_param_.inner_product_param().bias_filler())); + bias_filler->Fill(this->blobs_[1].get()); + } + } // parameter initialization + this->param_propagate_down_.resize(this->blobs_.size(), true); +} + +template +void InnerProductLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + // Figure out the dimensions + const int axis = bottom[0]->CanonicalAxisIndex( + this->layer_param_.inner_product_param().axis()); + const int new_K = bottom[0]->count(axis); + CHECK_EQ(K_, new_K) + << "Input size incompatible with inner product parameters."; + // The first "axis" dimensions are independent inner products; the total + // number of these is M_, the product over these dimensions. + M_ = bottom[0]->count(0, axis); + // The top shape will be the bottom shape with the flattened axes dropped, + // and replaced by a single axis with dimension num_output (N_). + vector top_shape = bottom[0]->shape(); + top_shape.resize(axis + 1); + top_shape[axis] = N_; + top[0]->Reshape(top_shape); + // Set up the bias multiplier + if (bias_term_) { + vector bias_shape(1, M_); + bias_multiplier_.Reshape(bias_shape); + caffe_set(M_, Dtype(1), bias_multiplier_.mutable_cpu_data()); + } +} + +template +void InnerProductLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const Dtype* weight = this->blobs_[0]->cpu_data(); + caffe_cpu_gemm(CblasNoTrans, transpose_ ? CblasNoTrans : CblasTrans, + M_, N_, K_, (Dtype)1., + bottom_data, weight, (Dtype)0., top_data); + if (bias_term_) { + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, (Dtype)1., + bias_multiplier_.cpu_data(), + this->blobs_[1]->cpu_data(), (Dtype)1., top_data); + } +} + +template +void InnerProductLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (this->param_propagate_down_[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + // Gradient with respect to weight + if (transpose_) { + caffe_cpu_gemm(CblasTrans, CblasNoTrans, + K_, N_, M_, + (Dtype)1., bottom_data, top_diff, + (Dtype)1., this->blobs_[0]->mutable_cpu_diff()); + } else { + caffe_cpu_gemm(CblasTrans, CblasNoTrans, + N_, K_, M_, + (Dtype)1., top_diff, bottom_data, + (Dtype)1., this->blobs_[0]->mutable_cpu_diff()); + } + } + if (bias_term_ && this->param_propagate_down_[1]) { + const Dtype* top_diff = top[0]->cpu_diff(); + // Gradient with respect to bias + caffe_cpu_gemv(CblasTrans, M_, N_, (Dtype)1., top_diff, + bias_multiplier_.cpu_data(), (Dtype)1., + this->blobs_[1]->mutable_cpu_diff()); + } + if (propagate_down[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + // Gradient with respect to bottom data + if (transpose_) { + caffe_cpu_gemm(CblasNoTrans, CblasTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->cpu_data(), + (Dtype)0., bottom[0]->mutable_cpu_diff()); + } else { + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->cpu_data(), + (Dtype)0., bottom[0]->mutable_cpu_diff()); + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(InnerProductLayer); +#endif + +INSTANTIATE_CLASS(InnerProductLayer); +REGISTER_LAYER_CLASS(InnerProduct); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/inner_product_layer.cu b/3rdparty/caffe/src/caffe/layers/inner_product_layer.cu new file mode 100644 index 00000000..a58b56e3 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/inner_product_layer.cu @@ -0,0 +1,79 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/inner_product_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void InnerProductLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const Dtype* weight = this->blobs_[0]->gpu_data(); + if (M_ == 1) { + caffe_gpu_gemv(CblasNoTrans, N_, K_, (Dtype)1., + weight, bottom_data, (Dtype)0., top_data); + if (bias_term_) + caffe_gpu_axpy(N_, bias_multiplier_.cpu_data()[0], + this->blobs_[1]->gpu_data(), top_data); + } else { + caffe_gpu_gemm(CblasNoTrans, + transpose_ ? CblasNoTrans : CblasTrans, + M_, N_, K_, (Dtype)1., + bottom_data, weight, (Dtype)0., top_data); + if (bias_term_) + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, (Dtype)1., + bias_multiplier_.gpu_data(), + this->blobs_[1]->gpu_data(), (Dtype)1., top_data); + } +} + +template +void InnerProductLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (this->param_propagate_down_[0]) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + // Gradient with respect to weight + if (transpose_) { + caffe_gpu_gemm(CblasTrans, CblasNoTrans, + K_, N_, M_, + (Dtype)1., bottom_data, top_diff, + (Dtype)1., this->blobs_[0]->mutable_gpu_diff()); + } else { + caffe_gpu_gemm(CblasTrans, CblasNoTrans, + N_, K_, M_, + (Dtype)1., top_diff, bottom_data, + (Dtype)1., this->blobs_[0]->mutable_gpu_diff()); + } + } + if (bias_term_ && this->param_propagate_down_[1]) { + const Dtype* top_diff = top[0]->gpu_diff(); + // Gradient with respect to bias + caffe_gpu_gemv(CblasTrans, M_, N_, (Dtype)1., top_diff, + bias_multiplier_.gpu_data(), (Dtype)1., + this->blobs_[1]->mutable_gpu_diff()); + } + if (propagate_down[0]) { + const Dtype* top_diff = top[0]->gpu_diff(); + // Gradient with respect to bottom data + if (transpose_) { + caffe_gpu_gemm(CblasNoTrans, CblasTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->gpu_data(), + (Dtype)0., bottom[0]->mutable_gpu_diff()); + } else { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->gpu_data(), + (Dtype)0., bottom[0]->mutable_gpu_diff()); + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(InnerProductLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/input_layer.cpp b/3rdparty/caffe/src/caffe/layers/input_layer.cpp new file mode 100644 index 00000000..667d8ad6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/input_layer.cpp @@ -0,0 +1,27 @@ +#include + +#include "caffe/layers/input_layer.hpp" + +namespace caffe { + +template +void InputLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const int num_top = top.size(); + const InputParameter& param = this->layer_param_.input_param(); + const int num_shape = param.shape_size(); + CHECK(num_shape == 0 || num_shape == 1 || num_shape == num_top) + << "Must specify 'shape' once, once per top blob, or not at all: " + << num_top << " tops vs. " << num_shape << " shapes."; + if (num_shape > 0) { + for (int i = 0; i < num_top; ++i) { + const int shape_index = (param.shape_size() == 1) ? 0 : i; + top[i]->Reshape(param.shape(shape_index)); + } + } +} + +INSTANTIATE_CLASS(InputLayer); +REGISTER_LAYER_CLASS(Input); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/log_layer.cpp b/3rdparty/caffe/src/caffe/layers/log_layer.cpp new file mode 100644 index 00000000..c70a795c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/log_layer.cpp @@ -0,0 +1,85 @@ +#include + +#include "caffe/layers/log_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void LogLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + NeuronLayer::LayerSetUp(bottom, top); + const Dtype base = this->layer_param_.log_param().base(); + if (base != Dtype(-1)) { + CHECK_GT(base, 0) << "base must be strictly positive."; + } + // If base == -1, interpret the base as e and set log_base = 1 exactly. + // Otherwise, calculate its log explicitly. + const Dtype log_base = (base == Dtype(-1)) ? Dtype(1) : log(base); + CHECK(!isnan(log_base)) + << "NaN result: log(base) = log(" << base << ") = " << log_base; + CHECK(!isinf(log_base)) + << "Inf result: log(base) = log(" << base << ") = " << log_base; + base_scale_ = Dtype(1) / log_base; + CHECK(!isnan(base_scale_)) + << "NaN result: 1/log(base) = 1/log(" << base << ") = " << base_scale_; + CHECK(!isinf(base_scale_)) + << "Inf result: 1/log(base) = 1/log(" << base << ") = " << base_scale_; + input_scale_ = this->layer_param_.log_param().scale(); + input_shift_ = this->layer_param_.log_param().shift(); + backward_num_scale_ = input_scale_ / log_base; +} + +template +void LogLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const int count = bottom[0]->count(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + if (input_scale_ == Dtype(1) && input_shift_ == Dtype(0)) { + caffe_log(count, bottom_data, top_data); + } else { + caffe_copy(count, bottom_data, top_data); + if (input_scale_ != Dtype(1)) { + caffe_scal(count, input_scale_, top_data); + } + if (input_shift_ != Dtype(0)) { + caffe_add_scalar(count, input_shift_, top_data); + } + caffe_log(count, top_data, top_data); + } + if (base_scale_ != Dtype(1)) { + caffe_scal(count, base_scale_, top_data); + } +} + +template +void LogLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + const int count = bottom[0]->count(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_copy(count, bottom_data, bottom_diff); + if (input_scale_ != Dtype(1)) { + caffe_scal(count, input_scale_, bottom_diff); + } + if (input_shift_ != Dtype(0)) { + caffe_add_scalar(count, input_shift_, bottom_diff); + } + caffe_powx(count, bottom_diff, Dtype(-1), bottom_diff); + if (backward_num_scale_ != Dtype(1)) { + caffe_scal(count, backward_num_scale_, bottom_diff); + } + caffe_mul(count, top_diff, bottom_diff, bottom_diff); +} + +#ifdef CPU_ONLY +STUB_GPU(LogLayer); +#endif + +INSTANTIATE_CLASS(LogLayer); +REGISTER_LAYER_CLASS(Log); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/log_layer.cu b/3rdparty/caffe/src/caffe/layers/log_layer.cu new file mode 100644 index 00000000..db466dba --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/log_layer.cu @@ -0,0 +1,55 @@ +#include + +#include "caffe/layers/log_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void LogLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const int count = bottom[0]->count(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + if (input_scale_ == Dtype(1) && input_shift_ == Dtype(0)) { + caffe_gpu_log(count, bottom_data, top_data); + } else { + caffe_copy(count, bottom_data, top_data); + if (input_scale_ != Dtype(1)) { + caffe_gpu_scal(count, input_scale_, top_data); + } + if (input_shift_ != Dtype(0)) { + caffe_gpu_add_scalar(count, input_shift_, top_data); + } + caffe_gpu_log(count, top_data, top_data); + } + if (base_scale_ != Dtype(1)) { + caffe_gpu_scal(count, base_scale_, top_data); + } +} + +template +void LogLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + const int count = bottom[0]->count(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + caffe_copy(count, bottom_data, bottom_diff); + if (input_scale_ != Dtype(1)) { + caffe_gpu_scal(count, input_scale_, bottom_diff); + } + if (input_shift_ != Dtype(0)) { + caffe_gpu_add_scalar(count, input_shift_, bottom_diff); + } + caffe_gpu_powx(count, bottom_diff, Dtype(-1), bottom_diff); + if (backward_num_scale_ != Dtype(1)) { + caffe_gpu_scal(count, backward_num_scale_, bottom_diff); + } + caffe_gpu_mul(count, top_diff, bottom_diff, bottom_diff); +} + +INSTANTIATE_LAYER_GPU_FUNCS(LogLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/loss_layer.cpp new file mode 100644 index 00000000..afb1ce94 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/loss_layer.cpp @@ -0,0 +1,27 @@ +#include + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +template +void LossLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + // LossLayers have a non-zero (1) loss by default. + if (this->layer_param_.loss_weight_size() == 0) { + this->layer_param_.add_loss_weight(Dtype(1)); + } +} + +template +void LossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + CHECK_EQ(bottom[0]->shape(0), bottom[1]->shape(0)) + << "The data and label should have the same first dimension."; + vector loss_shape(0); // Loss layers output a scalar; 0 axes. + top[0]->Reshape(loss_shape); +} + +INSTANTIATE_CLASS(LossLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/lrn_layer.cpp b/3rdparty/caffe/src/caffe/layers/lrn_layer.cpp new file mode 100644 index 00000000..210525e2 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/lrn_layer.cpp @@ -0,0 +1,257 @@ +#include + +#include "caffe/layers/lrn_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void LRNLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + size_ = this->layer_param_.lrn_param().local_size(); + CHECK_EQ(size_ % 2, 1) << "LRN only supports odd values for local_size"; + pre_pad_ = (size_ - 1) / 2; + alpha_ = this->layer_param_.lrn_param().alpha(); + beta_ = this->layer_param_.lrn_param().beta(); + k_ = this->layer_param_.lrn_param().k(); + if (this->layer_param_.lrn_param().norm_region() == + LRNParameter_NormRegion_WITHIN_CHANNEL) { + // Set up split_layer_ to use inputs in the numerator and denominator. + split_top_vec_.clear(); + split_top_vec_.push_back(&product_input_); + split_top_vec_.push_back(&square_input_); + LayerParameter split_param; + split_layer_.reset(new SplitLayer(split_param)); + split_layer_->SetUp(bottom, split_top_vec_); + // Set up square_layer_ to square the inputs. + square_bottom_vec_.clear(); + square_top_vec_.clear(); + square_bottom_vec_.push_back(&square_input_); + square_top_vec_.push_back(&square_output_); + LayerParameter square_param; + square_param.mutable_power_param()->set_power(Dtype(2)); + square_layer_.reset(new PowerLayer(square_param)); + square_layer_->SetUp(square_bottom_vec_, square_top_vec_); + // Set up pool_layer_ to sum over square neighborhoods of the input. + pool_top_vec_.clear(); + pool_top_vec_.push_back(&pool_output_); + LayerParameter pool_param; + pool_param.mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_AVE); + pool_param.mutable_pooling_param()->set_pad(pre_pad_); + pool_param.mutable_pooling_param()->set_kernel_size(size_); + pool_layer_.reset(new PoolingLayer(pool_param)); + pool_layer_->SetUp(square_top_vec_, pool_top_vec_); + // Set up power_layer_ to compute (1 + alpha_/N^2 s)^-beta_, where s is + // the sum of a squared neighborhood (the output of pool_layer_). + power_top_vec_.clear(); + power_top_vec_.push_back(&power_output_); + LayerParameter power_param; + power_param.mutable_power_param()->set_power(-beta_); + power_param.mutable_power_param()->set_scale(alpha_); + power_param.mutable_power_param()->set_shift(Dtype(1)); + power_layer_.reset(new PowerLayer(power_param)); + power_layer_->SetUp(pool_top_vec_, power_top_vec_); + // Set up a product_layer_ to compute outputs by multiplying inputs by the + // inverse demoninator computed by the power layer. + product_bottom_vec_.clear(); + product_bottom_vec_.push_back(&product_input_); + product_bottom_vec_.push_back(&power_output_); + LayerParameter product_param; + EltwiseParameter* eltwise_param = product_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_PROD); + product_layer_.reset(new EltwiseLayer(product_param)); + product_layer_->SetUp(product_bottom_vec_, top); + } +} + +template +void LRNLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_EQ(4, bottom[0]->num_axes()) << "Input must have 4 axes, " + << "corresponding to (num, channels, height, width)"; + num_ = bottom[0]->num(); + channels_ = bottom[0]->channels(); + height_ = bottom[0]->height(); + width_ = bottom[0]->width(); + switch (this->layer_param_.lrn_param().norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + top[0]->Reshape(num_, channels_, height_, width_); + scale_.Reshape(num_, channels_, height_, width_); + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + split_layer_->Reshape(bottom, split_top_vec_); + square_layer_->Reshape(square_bottom_vec_, square_top_vec_); + pool_layer_->Reshape(square_top_vec_, pool_top_vec_); + power_layer_->Reshape(pool_top_vec_, power_top_vec_); + product_layer_->Reshape(product_bottom_vec_, top); + break; + } +} + +template +void LRNLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + switch (this->layer_param_.lrn_param().norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + CrossChannelForward_cpu(bottom, top); + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + WithinChannelForward(bottom, top); + break; + default: + LOG(FATAL) << "Unknown normalization region."; + } +} + +template +void LRNLayer::CrossChannelForward_cpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + Dtype* scale_data = scale_.mutable_cpu_data(); + // start with the constant value + for (int i = 0; i < scale_.count(); ++i) { + scale_data[i] = k_; + } + Blob padded_square(1, channels_ + size_ - 1, height_, width_); + Dtype* padded_square_data = padded_square.mutable_cpu_data(); + caffe_set(padded_square.count(), Dtype(0), padded_square_data); + Dtype alpha_over_size = alpha_ / size_; + // go through the images + for (int n = 0; n < num_; ++n) { + // compute the padded square + caffe_sqr(channels_ * height_ * width_, + bottom_data + bottom[0]->offset(n), + padded_square_data + padded_square.offset(0, pre_pad_)); + // Create the first channel scale + for (int c = 0; c < size_; ++c) { + caffe_axpy(height_ * width_, alpha_over_size, + padded_square_data + padded_square.offset(0, c), + scale_data + scale_.offset(n, 0)); + } + for (int c = 1; c < channels_; ++c) { + // copy previous scale + caffe_copy(height_ * width_, + scale_data + scale_.offset(n, c - 1), + scale_data + scale_.offset(n, c)); + // add head + caffe_axpy(height_ * width_, alpha_over_size, + padded_square_data + padded_square.offset(0, c + size_ - 1), + scale_data + scale_.offset(n, c)); + // subtract tail + caffe_axpy(height_ * width_, -alpha_over_size, + padded_square_data + padded_square.offset(0, c - 1), + scale_data + scale_.offset(n, c)); + } + } + + // In the end, compute output + caffe_powx(scale_.count(), scale_data, -beta_, top_data); + caffe_mul(scale_.count(), top_data, bottom_data, top_data); +} + +template +void LRNLayer::WithinChannelForward( + const vector*>& bottom, const vector*>& top) { + split_layer_->Forward(bottom, split_top_vec_); + square_layer_->Forward(square_bottom_vec_, square_top_vec_); + pool_layer_->Forward(square_top_vec_, pool_top_vec_); + power_layer_->Forward(pool_top_vec_, power_top_vec_); + product_layer_->Forward(product_bottom_vec_, top); +} + +template +void LRNLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + switch (this->layer_param_.lrn_param().norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + CrossChannelBackward_cpu(top, propagate_down, bottom); + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + WithinChannelBackward(top, propagate_down, bottom); + break; + default: + LOG(FATAL) << "Unknown normalization region."; + } +} + +template +void LRNLayer::CrossChannelBackward_cpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* scale_data = scale_.cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + Blob padded_ratio(1, channels_ + size_ - 1, height_, width_); + Blob accum_ratio(1, 1, height_, width_); + Dtype* padded_ratio_data = padded_ratio.mutable_cpu_data(); + Dtype* accum_ratio_data = accum_ratio.mutable_cpu_data(); + // We hack a little bit by using the diff() to store an additional result + Dtype* accum_ratio_times_bottom = accum_ratio.mutable_cpu_diff(); + caffe_set(padded_ratio.count(), Dtype(0), padded_ratio_data); + Dtype cache_ratio_value = 2. * alpha_ * beta_ / size_; + + caffe_powx(scale_.count(), scale_data, -beta_, bottom_diff); + caffe_mul(scale_.count(), top_diff, bottom_diff, bottom_diff); + + // go through individual data + int inverse_pre_pad = size_ - (size_ + 1) / 2; + for (int n = 0; n < num_; ++n) { + int block_offset = scale_.offset(n); + // first, compute diff_i * y_i / s_i + caffe_mul(channels_ * height_ * width_, + top_diff + block_offset, top_data + block_offset, + padded_ratio_data + padded_ratio.offset(0, inverse_pre_pad)); + caffe_div(channels_ * height_ * width_, + padded_ratio_data + padded_ratio.offset(0, inverse_pre_pad), + scale_data + block_offset, + padded_ratio_data + padded_ratio.offset(0, inverse_pre_pad)); + // Now, compute the accumulated ratios and the bottom diff + caffe_set(accum_ratio.count(), Dtype(0), accum_ratio_data); + for (int c = 0; c < size_ - 1; ++c) { + caffe_axpy(height_ * width_, 1., + padded_ratio_data + padded_ratio.offset(0, c), accum_ratio_data); + } + for (int c = 0; c < channels_; ++c) { + caffe_axpy(height_ * width_, 1., + padded_ratio_data + padded_ratio.offset(0, c + size_ - 1), + accum_ratio_data); + // compute bottom diff + caffe_mul(height_ * width_, + bottom_data + top[0]->offset(n, c), + accum_ratio_data, accum_ratio_times_bottom); + caffe_axpy(height_ * width_, -cache_ratio_value, + accum_ratio_times_bottom, bottom_diff + top[0]->offset(n, c)); + caffe_axpy(height_ * width_, -1., + padded_ratio_data + padded_ratio.offset(0, c), accum_ratio_data); + } + } +} + +template +void LRNLayer::WithinChannelBackward( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + vector product_propagate_down(2, true); + product_layer_->Backward(top, product_propagate_down, product_bottom_vec_); + power_layer_->Backward(power_top_vec_, propagate_down, pool_top_vec_); + pool_layer_->Backward(pool_top_vec_, propagate_down, square_top_vec_); + square_layer_->Backward(square_top_vec_, propagate_down, + square_bottom_vec_); + split_layer_->Backward(split_top_vec_, propagate_down, bottom); + } +} + +#ifdef CPU_ONLY +STUB_GPU(LRNLayer); +STUB_GPU_FORWARD(LRNLayer, CrossChannelForward); +STUB_GPU_BACKWARD(LRNLayer, CrossChannelBackward); +#endif + +INSTANTIATE_CLASS(LRNLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/lrn_layer.cu b/3rdparty/caffe/src/caffe/layers/lrn_layer.cu new file mode 100644 index 00000000..26e619c7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/lrn_layer.cu @@ -0,0 +1,202 @@ +#include + +#include "caffe/layers/lrn_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void LRNFillScale(const int nthreads, const Dtype* const in, + const int num, const int channels, const int height, + const int width, const int size, const Dtype alpha_over_size, + const Dtype k, Dtype* const scale) { + CUDA_KERNEL_LOOP(index, nthreads) { + // find out the local offset + const int w = index % width; + const int h = (index / width) % height; + const int n = index / width / height; + const int offset = (n * channels * height + h) * width + w; + const int step = height * width; + const Dtype* const in_off = in + offset; + Dtype* const scale_off = scale + offset; + int head = 0; + const int pre_pad = (size - 1) / 2; + const int post_pad = size - pre_pad - 1; + Dtype accum_scale = 0; + // fill the scale at [n, :, h, w] + // accumulate values + while (head < post_pad && head < channels) { + accum_scale += in_off[head * step] * in_off[head * step]; + ++head; + } + // both add and subtract + while (head < channels) { + accum_scale += in_off[head * step] * in_off[head * step]; + if (head - size >= 0) { + accum_scale -= in_off[(head - size) * step] + * in_off[(head - size) * step]; + } + scale_off[(head - post_pad) * step] = k + accum_scale * alpha_over_size; + ++head; + } + // subtract only + while (head < channels + post_pad) { + if (head - size >= 0) { + accum_scale -= in_off[(head - size) * step] + * in_off[(head - size) * step]; + } + scale_off[(head - post_pad) * step] = k + accum_scale * alpha_over_size; + ++head; + } + } +} + + +template +void LRNLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + switch (this->layer_param_.lrn_param().norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + CrossChannelForward_gpu(bottom, top); + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + WithinChannelForward(bottom, top); + break; + default: + LOG(FATAL) << "Unknown normalization region."; + } +} + +// TODO: check if it would be faster to just put it into the previous kernel. +template +__global__ void LRNComputeOutput(const int nthreads, const Dtype* const in, + const Dtype* const scale, const Dtype negative_beta, Dtype* const out) { + CUDA_KERNEL_LOOP(index, nthreads) { + out[index] = in[index] * pow(scale[index], negative_beta); + } +} + +template +void LRNLayer::CrossChannelForward_gpu( + const vector*>& bottom, const vector*>& top) { + // First, compute scale + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + Dtype* scale_data = scale_.mutable_gpu_data(); + // We will launch one kernel for each pixel location, and have the kernel + // go through all the channels. + int n_threads = num_ * height_ * width_; + // NOLINT_NEXT_LINE(whitespace/operators) + LRNFillScale<<>>( + n_threads, bottom_data, num_, channels_, height_, width_, size_, + alpha_ / size_, k_, scale_data); + CUDA_POST_KERNEL_CHECK; + n_threads = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + LRNComputeOutput<<>>( + n_threads, bottom_data, scale_data, -beta_, top_data); + CUDA_POST_KERNEL_CHECK; +} +template void LRNLayer::CrossChannelForward_gpu( + const vector*>& bottom, const vector*>& top); +template void LRNLayer::CrossChannelForward_gpu( + const vector*>& bottom, const vector*>& top); + + +template +void LRNLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + switch (this->layer_param_.lrn_param().norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + CrossChannelBackward_gpu(top, propagate_down, bottom); + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + WithinChannelBackward(top, propagate_down, bottom); + break; + default: + LOG(FATAL) << "Unknown normalization region."; + } +} + +template +__global__ void LRNComputeDiff(const int nthreads, + const Dtype* const bottom_data, const Dtype* const top_data, + const Dtype* const scale, const Dtype* const top_diff, + const int num, const int channels, const int height, + const int width, const int size, const Dtype negative_beta, + const Dtype cache_ratio, Dtype* const bottom_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + // find out the local offset + const int w = index % width; + const int h = (index / width) % height; + const int n = index / width / height; + const int offset = (n * channels * height + h) * width + w; + const int step = height * width; + const Dtype* const bottom_off = bottom_data + offset; + const Dtype* const top_off = top_data + offset; + const Dtype* const scale_off = scale + offset; + const Dtype* const top_diff_off = top_diff + offset; + Dtype* const bottom_diff_off = bottom_diff + offset; + int head = 0; + const int pre_pad = size - (size + 1) / 2; + const int post_pad = size - pre_pad - 1; + Dtype accum_ratio = 0; + // accumulate values + while (head < post_pad && head < channels) { + accum_ratio += top_diff_off[head * step] * top_off[head * step] / + scale_off[head * step]; + ++head; + } + // both add and subtract + while (head < channels) { + accum_ratio += top_diff_off[head * step] * top_off[head * step] / + scale_off[head * step]; + if (head - size >= 0) { + accum_ratio -= top_diff_off[(head - size) * step] * + top_off[(head - size) * step] / scale_off[(head - size) * step]; + } + bottom_diff_off[(head - post_pad) * step] = + top_diff_off[(head - post_pad) * step] + * pow(scale_off[(head - post_pad) * step], negative_beta) + - cache_ratio * bottom_off[(head - post_pad) * step] * accum_ratio; + ++head; + } + // subtract only + while (head < channels + post_pad) { + if (head - size >= 0) { + accum_ratio -= top_diff_off[(head - size) * step] * + top_off[(head - size) * step] / scale_off[(head - size) * step]; + } + bottom_diff_off[(head - post_pad) * step] = + top_diff_off[(head - post_pad) * step] + * pow(scale_off[(head - post_pad) * step], negative_beta) + - cache_ratio * bottom_off[(head - post_pad) * step] * accum_ratio; + ++head; + } + } +} + +template +void LRNLayer::CrossChannelBackward_gpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + int n_threads = num_ * height_ * width_; + // NOLINT_NEXT_LINE(whitespace/operators) + LRNComputeDiff<<>>( + n_threads, bottom[0]->gpu_data(), top[0]->gpu_data(), + scale_.gpu_data(), top[0]->gpu_diff(), num_, channels_, height_, width_, + size_, -beta_, Dtype(2. * alpha_ * beta_ / size_), + bottom[0]->mutable_gpu_diff()); +} +template void LRNLayer::CrossChannelBackward_gpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom); +template void LRNLayer::CrossChannelBackward_gpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom); + + + +INSTANTIATE_LAYER_GPU_FUNCS(LRNLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/lstm_layer.cpp b/3rdparty/caffe/src/caffe/layers/lstm_layer.cpp new file mode 100644 index 00000000..da48dba4 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/lstm_layer.cpp @@ -0,0 +1,244 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/lstm_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void LSTMLayer::RecurrentInputBlobNames(vector* names) const { + names->resize(2); + (*names)[0] = "h_0"; + (*names)[1] = "c_0"; +} + +template +void LSTMLayer::RecurrentOutputBlobNames(vector* names) const { + names->resize(2); + (*names)[0] = "h_" + format_int(this->T_); + (*names)[1] = "c_T"; +} + +template +void LSTMLayer::RecurrentInputShapes(vector* shapes) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + const int num_blobs = 2; + shapes->resize(num_blobs); + for (int i = 0; i < num_blobs; ++i) { + (*shapes)[i].Clear(); + (*shapes)[i].add_dim(1); // a single timestep + (*shapes)[i].add_dim(this->N_); + (*shapes)[i].add_dim(num_output); + } +} + +template +void LSTMLayer::OutputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "h"; +} + +template +void LSTMLayer::FillUnrolledNet(NetParameter* net_param) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + CHECK_GT(num_output, 0) << "num_output must be positive"; + const FillerParameter& weight_filler = + this->layer_param_.recurrent_param().weight_filler(); + const FillerParameter& bias_filler = + this->layer_param_.recurrent_param().bias_filler(); + + // Add generic LayerParameter's (without bottoms/tops) of layer types we'll + // use to save redundant code. + LayerParameter hidden_param; + hidden_param.set_type("InnerProduct"); + hidden_param.mutable_inner_product_param()->set_num_output(num_output * 4); + hidden_param.mutable_inner_product_param()->set_bias_term(false); + hidden_param.mutable_inner_product_param()->set_axis(2); + hidden_param.mutable_inner_product_param()-> + mutable_weight_filler()->CopyFrom(weight_filler); + + LayerParameter biased_hidden_param(hidden_param); + biased_hidden_param.mutable_inner_product_param()->set_bias_term(true); + biased_hidden_param.mutable_inner_product_param()-> + mutable_bias_filler()->CopyFrom(bias_filler); + + LayerParameter sum_param; + sum_param.set_type("Eltwise"); + sum_param.mutable_eltwise_param()->set_operation( + EltwiseParameter_EltwiseOp_SUM); + + LayerParameter scale_param; + scale_param.set_type("Scale"); + scale_param.mutable_scale_param()->set_axis(0); + + LayerParameter slice_param; + slice_param.set_type("Slice"); + slice_param.mutable_slice_param()->set_axis(0); + + LayerParameter split_param; + split_param.set_type("Split"); + + vector input_shapes; + RecurrentInputShapes(&input_shapes); + CHECK_EQ(2, input_shapes.size()); + + LayerParameter* input_layer_param = net_param->add_layer(); + input_layer_param->set_type("Input"); + InputParameter* input_param = input_layer_param->mutable_input_param(); + + input_layer_param->add_top("c_0"); + input_param->add_shape()->CopyFrom(input_shapes[0]); + + input_layer_param->add_top("h_0"); + input_param->add_shape()->CopyFrom(input_shapes[1]); + + LayerParameter* cont_slice_param = net_param->add_layer(); + cont_slice_param->CopyFrom(slice_param); + cont_slice_param->set_name("cont_slice"); + cont_slice_param->add_bottom("cont"); + cont_slice_param->mutable_slice_param()->set_axis(0); + + // Add layer to transform all timesteps of x to the hidden state dimension. + // W_xc_x = W_xc * x + b_c + { + LayerParameter* x_transform_param = net_param->add_layer(); + x_transform_param->CopyFrom(biased_hidden_param); + x_transform_param->set_name("x_transform"); + x_transform_param->add_param()->set_name("W_xc"); + x_transform_param->add_param()->set_name("b_c"); + x_transform_param->add_bottom("x"); + x_transform_param->add_top("W_xc_x"); + x_transform_param->add_propagate_down(true); + } + + if (this->static_input_) { + // Add layer to transform x_static to the gate dimension. + // W_xc_x_static = W_xc_static * x_static + LayerParameter* x_static_transform_param = net_param->add_layer(); + x_static_transform_param->CopyFrom(hidden_param); + x_static_transform_param->mutable_inner_product_param()->set_axis(1); + x_static_transform_param->set_name("W_xc_x_static"); + x_static_transform_param->add_param()->set_name("W_xc_static"); + x_static_transform_param->add_bottom("x_static"); + x_static_transform_param->add_top("W_xc_x_static_preshape"); + x_static_transform_param->add_propagate_down(true); + + LayerParameter* reshape_param = net_param->add_layer(); + reshape_param->set_type("Reshape"); + BlobShape* new_shape = + reshape_param->mutable_reshape_param()->mutable_shape(); + new_shape->add_dim(1); // One timestep. + // Should infer this->N as the dimension so we can reshape on batch size. + new_shape->add_dim(-1); + new_shape->add_dim( + x_static_transform_param->inner_product_param().num_output()); + reshape_param->set_name("W_xc_x_static_reshape"); + reshape_param->add_bottom("W_xc_x_static_preshape"); + reshape_param->add_top("W_xc_x_static"); + } + + LayerParameter* x_slice_param = net_param->add_layer(); + x_slice_param->CopyFrom(slice_param); + x_slice_param->add_bottom("W_xc_x"); + x_slice_param->set_name("W_xc_x_slice"); + + LayerParameter output_concat_layer; + output_concat_layer.set_name("h_concat"); + output_concat_layer.set_type("Concat"); + output_concat_layer.add_top("h"); + output_concat_layer.mutable_concat_param()->set_axis(0); + + for (int t = 1; t <= this->T_; ++t) { + string tm1s = format_int(t - 1); + string ts = format_int(t); + + cont_slice_param->add_top("cont_" + ts); + x_slice_param->add_top("W_xc_x_" + ts); + + // Add layers to flush the hidden state when beginning a new + // sequence, as indicated by cont_t. + // h_conted_{t-1} := cont_t * h_{t-1} + // + // Normally, cont_t is binary (i.e., 0 or 1), so: + // h_conted_{t-1} := h_{t-1} if cont_t == 1 + // 0 otherwise + { + LayerParameter* cont_h_param = net_param->add_layer(); + cont_h_param->CopyFrom(scale_param); + cont_h_param->set_name("h_conted_" + tm1s); + cont_h_param->add_bottom("h_" + tm1s); + cont_h_param->add_bottom("cont_" + ts); + cont_h_param->add_top("h_conted_" + tm1s); + } + + // Add layer to compute + // W_hc_h_{t-1} := W_hc * h_conted_{t-1} + { + LayerParameter* w_param = net_param->add_layer(); + w_param->CopyFrom(hidden_param); + w_param->set_name("transform_" + ts); + w_param->add_param()->set_name("W_hc"); + w_param->add_bottom("h_conted_" + tm1s); + w_param->add_top("W_hc_h_" + tm1s); + w_param->mutable_inner_product_param()->set_axis(2); + } + + // Add the outputs of the linear transformations to compute the gate input. + // gate_input_t := W_hc * h_conted_{t-1} + W_xc * x_t + b_c + // = W_hc_h_{t-1} + W_xc_x_t + b_c + { + LayerParameter* input_sum_layer = net_param->add_layer(); + input_sum_layer->CopyFrom(sum_param); + input_sum_layer->set_name("gate_input_" + ts); + input_sum_layer->add_bottom("W_hc_h_" + tm1s); + input_sum_layer->add_bottom("W_xc_x_" + ts); + if (this->static_input_) { + input_sum_layer->add_bottom("W_xc_x_static"); + } + input_sum_layer->add_top("gate_input_" + ts); + } + + // Add LSTMUnit layer to compute the cell & hidden vectors c_t and h_t. + // Inputs: c_{t-1}, gate_input_t = (i_t, f_t, o_t, g_t), cont_t + // Outputs: c_t, h_t + // [ i_t' ] + // [ f_t' ] := gate_input_t + // [ o_t' ] + // [ g_t' ] + // i_t := \sigmoid[i_t'] + // f_t := \sigmoid[f_t'] + // o_t := \sigmoid[o_t'] + // g_t := \tanh[g_t'] + // c_t := cont_t * (f_t .* c_{t-1}) + (i_t .* g_t) + // h_t := o_t .* \tanh[c_t] + { + LayerParameter* lstm_unit_param = net_param->add_layer(); + lstm_unit_param->set_type("LSTMUnit"); + lstm_unit_param->add_bottom("c_" + tm1s); + lstm_unit_param->add_bottom("gate_input_" + ts); + lstm_unit_param->add_bottom("cont_" + ts); + lstm_unit_param->add_top("c_" + ts); + lstm_unit_param->add_top("h_" + ts); + lstm_unit_param->set_name("unit_" + ts); + } + output_concat_layer.add_bottom("h_" + ts); + } // for (int t = 1; t <= this->T_; ++t) + + { + LayerParameter* c_T_copy_param = net_param->add_layer(); + c_T_copy_param->CopyFrom(split_param); + c_T_copy_param->add_bottom("c_" + format_int(this->T_)); + c_T_copy_param->add_top("c_T"); + } + net_param->add_layer()->CopyFrom(output_concat_layer); +} + +INSTANTIATE_CLASS(LSTMLayer); +REGISTER_LAYER_CLASS(LSTM); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cpp b/3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cpp new file mode 100644 index 00000000..d1ab59c4 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cpp @@ -0,0 +1,130 @@ +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/layers/lstm_layer.hpp" + +namespace caffe { + +template +inline Dtype sigmoid(Dtype x) { + return 1. / (1. + exp(-x)); +} + +template +inline Dtype tanh(Dtype x) { + return 2. * sigmoid(2. * x) - 1.; +} + +template +void LSTMUnitLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const int num_instances = bottom[0]->shape(1); + for (int i = 0; i < bottom.size(); ++i) { + if (i == 2) { + CHECK_EQ(2, bottom[i]->num_axes()); + } else { + CHECK_EQ(3, bottom[i]->num_axes()); + } + CHECK_EQ(1, bottom[i]->shape(0)); + CHECK_EQ(num_instances, bottom[i]->shape(1)); + } + hidden_dim_ = bottom[0]->shape(2); + CHECK_EQ(4 * hidden_dim_, bottom[1]->shape(2)); + top[0]->ReshapeLike(*bottom[0]); + top[1]->ReshapeLike(*bottom[0]); + X_acts_.ReshapeLike(*bottom[1]); +} + +template +void LSTMUnitLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const int num = bottom[0]->shape(1); + const int x_dim = hidden_dim_ * 4; + const Dtype* C_prev = bottom[0]->cpu_data(); + const Dtype* X = bottom[1]->cpu_data(); + const Dtype* cont = bottom[2]->cpu_data(); + Dtype* C = top[0]->mutable_cpu_data(); + Dtype* H = top[1]->mutable_cpu_data(); + for (int n = 0; n < num; ++n) { + for (int d = 0; d < hidden_dim_; ++d) { + const Dtype i = sigmoid(X[d]); + const Dtype f = (*cont == 0) ? 0 : + (*cont * sigmoid(X[1 * hidden_dim_ + d])); + const Dtype o = sigmoid(X[2 * hidden_dim_ + d]); + const Dtype g = tanh(X[3 * hidden_dim_ + d]); + const Dtype c_prev = C_prev[d]; + const Dtype c = f * c_prev + i * g; + C[d] = c; + const Dtype tanh_c = tanh(c); + H[d] = o * tanh_c; + } + C_prev += hidden_dim_; + X += x_dim; + C += hidden_dim_; + H += hidden_dim_; + ++cont; + } +} + +template +void LSTMUnitLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + CHECK(!propagate_down[2]) << "Cannot backpropagate to sequence indicators."; + if (!propagate_down[0] && !propagate_down[1]) { return; } + + const int num = bottom[0]->shape(1); + const int x_dim = hidden_dim_ * 4; + const Dtype* C_prev = bottom[0]->cpu_data(); + const Dtype* X = bottom[1]->cpu_data(); + const Dtype* cont = bottom[2]->cpu_data(); + const Dtype* C = top[0]->cpu_data(); + const Dtype* H = top[1]->cpu_data(); + const Dtype* C_diff = top[0]->cpu_diff(); + const Dtype* H_diff = top[1]->cpu_diff(); + Dtype* C_prev_diff = bottom[0]->mutable_cpu_diff(); + Dtype* X_diff = bottom[1]->mutable_cpu_diff(); + for (int n = 0; n < num; ++n) { + for (int d = 0; d < hidden_dim_; ++d) { + const Dtype i = sigmoid(X[d]); + const Dtype f = (*cont == 0) ? 0 : + (*cont * sigmoid(X[1 * hidden_dim_ + d])); + const Dtype o = sigmoid(X[2 * hidden_dim_ + d]); + const Dtype g = tanh(X[3 * hidden_dim_ + d]); + const Dtype c_prev = C_prev[d]; + const Dtype c = C[d]; + const Dtype tanh_c = tanh(c); + Dtype* c_prev_diff = C_prev_diff + d; + Dtype* i_diff = X_diff + d; + Dtype* f_diff = X_diff + 1 * hidden_dim_ + d; + Dtype* o_diff = X_diff + 2 * hidden_dim_ + d; + Dtype* g_diff = X_diff + 3 * hidden_dim_ + d; + const Dtype c_term_diff = + C_diff[d] + H_diff[d] * o * (1 - tanh_c * tanh_c); + *c_prev_diff = c_term_diff * f; + *i_diff = c_term_diff * g * i * (1 - i); + *f_diff = c_term_diff * c_prev * f * (1 - f); + *o_diff = H_diff[d] * tanh_c * o * (1 - o); + *g_diff = c_term_diff * i * (1 - g * g); + } + C_prev += hidden_dim_; + X += x_dim; + C += hidden_dim_; + H += hidden_dim_; + C_diff += hidden_dim_; + H_diff += hidden_dim_; + X_diff += x_dim; + C_prev_diff += hidden_dim_; + ++cont; + } +} + +#ifdef CPU_ONLY +STUB_GPU(LSTMUnitLayer); +#endif + +INSTANTIATE_CLASS(LSTMUnitLayer); +REGISTER_LAYER_CLASS(LSTMUnit); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cu b/3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cu new file mode 100644 index 00000000..15bb451d --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/lstm_unit_layer.cu @@ -0,0 +1,154 @@ +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/layers/lstm_layer.hpp" + +namespace caffe { + +template +__device__ Dtype sigmoid(const Dtype x) { + return Dtype(1) / (Dtype(1) + exp(-x)); +} + +template +__device__ Dtype tanh(const Dtype x) { + return Dtype(2) * sigmoid(Dtype(2) * x) - Dtype(1); +} + +template +__global__ void LSTMActsForward(const int nthreads, const int dim, + const Dtype* X, Dtype* X_acts) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int x_dim = 4 * dim; + const int d = index % x_dim; + if (d < 3 * dim) { + X_acts[index] = sigmoid(X[index]); + } else { + X_acts[index] = tanh(X[index]); + } + } +} + +template +__global__ void LSTMUnitForward(const int nthreads, const int dim, + const Dtype* C_prev, const Dtype* X, const Dtype* cont, + Dtype* C, Dtype* H) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int n = index / dim; + const int d = index % dim; + const Dtype* X_offset = X + 4 * dim * n; + const Dtype i = X_offset[d]; + const Dtype f = X_offset[1 * dim + d]; + const Dtype o = X_offset[2 * dim + d]; + const Dtype g = X_offset[3 * dim + d]; + const Dtype c_prev = C_prev[index]; + const Dtype c = cont[n] * f * c_prev + i * g; + C[index] = c; + const Dtype tanh_c = tanh(c); + H[index] = o * tanh_c; + } +} + +template +void LSTMUnitLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const int count = top[1]->count(); + const Dtype* C_prev = bottom[0]->gpu_data(); + const Dtype* X = bottom[1]->gpu_data(); + const Dtype* cont = bottom[2]->gpu_data(); + Dtype* X_acts = X_acts_.mutable_gpu_data(); + Dtype* C = top[0]->mutable_gpu_data(); + Dtype* H = top[1]->mutable_gpu_data(); + const int X_count = bottom[1]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + LSTMActsForward<<>>( + X_count, hidden_dim_, X, X_acts); + CUDA_POST_KERNEL_CHECK; + // NOLINT_NEXT_LINE(whitespace/operators) + LSTMUnitForward<<>>( + count, hidden_dim_, C_prev, X_acts, cont, C, H); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void LSTMUnitBackward(const int nthreads, const int dim, + const Dtype* C_prev, const Dtype* X, const Dtype* C, const Dtype* H, + const Dtype* cont, const Dtype* C_diff, const Dtype* H_diff, + Dtype* C_prev_diff, Dtype* X_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int n = index / dim; + const int d = index % dim; + const Dtype* X_offset = X + 4 * dim * n; + const Dtype i = X_offset[d]; + const Dtype f = X_offset[1 * dim + d]; + const Dtype o = X_offset[2 * dim + d]; + const Dtype g = X_offset[3 * dim + d]; + const Dtype c_prev = C_prev[index]; + const Dtype c = C[index]; + const Dtype tanh_c = tanh(c); + Dtype* c_prev_diff = C_prev_diff + index; + Dtype* X_diff_offset = X_diff + 4 * dim * n; + Dtype* i_diff = X_diff_offset + d; + Dtype* f_diff = X_diff_offset + 1 * dim + d; + Dtype* o_diff = X_diff_offset + 2 * dim + d; + Dtype* g_diff = X_diff_offset + 3 * dim + d; + const Dtype c_term_diff = + C_diff[index] + H_diff[index] * o * (1 - tanh_c * tanh_c); + const Dtype cont_n = cont[n]; + *c_prev_diff = cont_n * c_term_diff * f; + *i_diff = c_term_diff * g; + *f_diff = cont_n * c_term_diff * c_prev; + *o_diff = H_diff[index] * tanh_c; + *g_diff = c_term_diff * i; + } +} + +template +__global__ void LSTMActsBackward(const int nthreads, const int dim, + const Dtype* X_acts, const Dtype* X_acts_diff, Dtype* X_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int x_dim = 4 * dim; + const int d = index % x_dim; + const Dtype X_act = X_acts[index]; + if (d < 3 * dim) { + X_diff[index] = X_acts_diff[index] * X_act * (Dtype(1) - X_act); + } else { + X_diff[index] = X_acts_diff[index] * (Dtype(1) - X_act * X_act); + } + } +} + +template +void LSTMUnitLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + CHECK(!propagate_down[2]) << "Cannot backpropagate to sequence indicators."; + if (!propagate_down[0] && !propagate_down[1]) { return; } + + const int count = top[1]->count(); + const Dtype* C_prev = bottom[0]->gpu_data(); + const Dtype* X_acts = X_acts_.gpu_data(); + const Dtype* cont = bottom[2]->gpu_data(); + const Dtype* C = top[0]->gpu_data(); + const Dtype* H = top[1]->gpu_data(); + const Dtype* C_diff = top[0]->gpu_diff(); + const Dtype* H_diff = top[1]->gpu_diff(); + Dtype* C_prev_diff = bottom[0]->mutable_gpu_diff(); + Dtype* X_acts_diff = X_acts_.mutable_gpu_diff(); + LSTMUnitBackward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>(count, hidden_dim_, + C_prev, X_acts, C, H, cont, C_diff, H_diff, C_prev_diff, X_acts_diff); + CUDA_POST_KERNEL_CHECK; + const int X_count = bottom[1]->count(); + Dtype* X_diff = bottom[1]->mutable_gpu_diff(); + LSTMActsBackward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + X_count, hidden_dim_, X_acts, X_acts_diff, X_diff); + CUDA_POST_KERNEL_CHECK; +} + +INSTANTIATE_LAYER_GPU_FUNCS(LSTMUnitLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/memory_data_layer.cpp b/3rdparty/caffe/src/caffe/layers/memory_data_layer.cpp new file mode 100644 index 00000000..975f4841 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/memory_data_layer.cpp @@ -0,0 +1,123 @@ +#ifdef USE_OPENCV +#include +#endif // USE_OPENCV + +#include + +#include "caffe/layers/memory_data_layer.hpp" + +namespace caffe { + +template +void MemoryDataLayer::DataLayerSetUp(const vector*>& bottom, + const vector*>& top) { + batch_size_ = this->layer_param_.memory_data_param().batch_size(); + channels_ = this->layer_param_.memory_data_param().channels(); + height_ = this->layer_param_.memory_data_param().height(); + width_ = this->layer_param_.memory_data_param().width(); + size_ = channels_ * height_ * width_; + CHECK_GT(batch_size_ * size_, 0) << + "batch_size, channels, height, and width must be specified and" + " positive in memory_data_param"; + vector label_shape(1, batch_size_); + top[0]->Reshape(batch_size_, channels_, height_, width_); + top[1]->Reshape(label_shape); + added_data_.Reshape(batch_size_, channels_, height_, width_); + added_label_.Reshape(label_shape); + data_ = NULL; + labels_ = NULL; + added_data_.cpu_data(); + added_label_.cpu_data(); +} + +template +void MemoryDataLayer::AddDatumVector(const vector& datum_vector) { + CHECK(!has_new_data_) << + "Can't add data until current data has been consumed."; + size_t num = datum_vector.size(); + CHECK_GT(num, 0) << "There is no datum to add."; + CHECK_EQ(num % batch_size_, 0) << + "The added data must be a multiple of the batch size."; + added_data_.Reshape(num, channels_, height_, width_); + added_label_.Reshape(num, 1, 1, 1); + // Apply data transformations (mirror, scale, crop...) + this->data_transformer_->Transform(datum_vector, &added_data_); + // Copy Labels + Dtype* top_label = added_label_.mutable_cpu_data(); + for (int item_id = 0; item_id < num; ++item_id) { + top_label[item_id] = datum_vector[item_id].label(); + } + // num_images == batch_size_ + Dtype* top_data = added_data_.mutable_cpu_data(); + Reset(top_data, top_label, num); + has_new_data_ = true; +} + +#ifdef USE_OPENCV +template +void MemoryDataLayer::AddMatVector(const vector& mat_vector, + const vector& labels) { + size_t num = mat_vector.size(); + CHECK(!has_new_data_) << + "Can't add mat until current data has been consumed."; + CHECK_GT(num, 0) << "There is no mat to add"; + CHECK_EQ(num % batch_size_, 0) << + "The added data must be a multiple of the batch size."; + added_data_.Reshape(num, channels_, height_, width_); + added_label_.Reshape(num, 1, 1, 1); + // Apply data transformations (mirror, scale, crop...) + this->data_transformer_->Transform(mat_vector, &added_data_); + // Copy Labels + Dtype* top_label = added_label_.mutable_cpu_data(); + for (int item_id = 0; item_id < num; ++item_id) { + top_label[item_id] = labels[item_id]; + } + // num_images == batch_size_ + Dtype* top_data = added_data_.mutable_cpu_data(); + Reset(top_data, top_label, num); + has_new_data_ = true; +} +#endif // USE_OPENCV + +template +void MemoryDataLayer::Reset(Dtype* data, Dtype* labels, int n) { + CHECK(data); + CHECK(labels); + CHECK_EQ(n % batch_size_, 0) << "n must be a multiple of batch size"; + // Warn with transformation parameters since a memory array is meant to + // be generic and no transformations are done with Reset(). + if (this->layer_param_.has_transform_param()) { + LOG(WARNING) << this->type() << " does not transform array data on Reset()"; + } + data_ = data; + labels_ = labels; + n_ = n; + pos_ = 0; +} + +template +void MemoryDataLayer::set_batch_size(int new_size) { + CHECK(!has_new_data_) << + "Can't change batch_size until current data has been consumed."; + batch_size_ = new_size; + added_data_.Reshape(batch_size_, channels_, height_, width_); + added_label_.Reshape(batch_size_, 1, 1, 1); +} + +template +void MemoryDataLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + CHECK(data_) << "MemoryDataLayer needs to be initialized by calling Reset"; + top[0]->Reshape(batch_size_, channels_, height_, width_); + top[1]->Reshape(batch_size_, 1, 1, 1); + top[0]->set_cpu_data(data_ + pos_ * size_); + top[1]->set_cpu_data(labels_ + pos_); + pos_ = (pos_ + batch_size_) % n_; + if (pos_ == 0) + has_new_data_ = false; +} + +INSTANTIATE_CLASS(MemoryDataLayer); +REGISTER_LAYER_CLASS(MemoryData); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/multinomial_logistic_loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/multinomial_logistic_loss_layer.cpp new file mode 100644 index 00000000..65664998 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/multinomial_logistic_loss_layer.cpp @@ -0,0 +1,64 @@ +#include +#include +#include + +#include "caffe/layers/multinomial_logistic_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void MultinomialLogisticLossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + LossLayer::Reshape(bottom, top); + CHECK_EQ(bottom[1]->channels(), 1); + CHECK_EQ(bottom[1]->height(), 1); + CHECK_EQ(bottom[1]->width(), 1); +} + +template +void MultinomialLogisticLossLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* bottom_label = bottom[1]->cpu_data(); + int num = bottom[0]->num(); + int dim = bottom[0]->count() / bottom[0]->num(); + Dtype loss = 0; + for (int i = 0; i < num; ++i) { + int label = static_cast(bottom_label[i]); + Dtype prob = std::max( + bottom_data[i * dim + label], Dtype(kLOG_THRESHOLD)); + loss -= log(prob); + } + top[0]->mutable_cpu_data()[0] = loss / num; +} + +template +void MultinomialLogisticLossLayer::Backward_cpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* bottom_label = bottom[1]->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + int num = bottom[0]->num(); + int dim = bottom[0]->count() / bottom[0]->num(); + caffe_set(bottom[0]->count(), Dtype(0), bottom_diff); + const Dtype scale = - top[0]->cpu_diff()[0] / num; + for (int i = 0; i < num; ++i) { + int label = static_cast(bottom_label[i]); + Dtype prob = std::max( + bottom_data[i * dim + label], Dtype(kLOG_THRESHOLD)); + bottom_diff[i * dim + label] = scale / prob; + } + } +} + +INSTANTIATE_CLASS(MultinomialLogisticLossLayer); +REGISTER_LAYER_CLASS(MultinomialLogisticLoss); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/mvn_layer.cpp b/3rdparty/caffe/src/caffe/layers/mvn_layer.cpp new file mode 100644 index 00000000..8fe4ef8c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/mvn_layer.cpp @@ -0,0 +1,134 @@ +#include + +#include "caffe/layers/mvn_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void MVNLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + top[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + mean_.Reshape(bottom[0]->num(), bottom[0]->channels(), + 1, 1); + variance_.Reshape(bottom[0]->num(), bottom[0]->channels(), + 1, 1); + temp_.Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + if ( this->layer_param_.mvn_param().across_channels() ) { + sum_multiplier_.Reshape(1, bottom[0]->channels(), bottom[0]->height(), + bottom[0]->width()); + } else { + sum_multiplier_.Reshape(1, 1, bottom[0]->height(), bottom[0]->width()); + } + Dtype* multiplier_data = sum_multiplier_.mutable_cpu_data(); + caffe_set(sum_multiplier_.count(), Dtype(1), multiplier_data); + eps_ = this->layer_param_.mvn_param().eps(); +} + +template +void MVNLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + int num; + if (this->layer_param_.mvn_param().across_channels()) + num = bottom[0]->num(); + else + num = bottom[0]->num() * bottom[0]->channels(); + + int dim = bottom[0]->count() / num; + + // subtract mean + caffe_cpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, + sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); // EX + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + mean_.cpu_data(), sum_multiplier_.cpu_data(), 0., + temp_.mutable_cpu_data()); + caffe_add(temp_.count(), bottom_data, temp_.cpu_data(), top_data); // X-EX + + if (this->layer_param_.mvn_param().normalize_variance()) { + // compute variance using var(X) = E((X-EX)^2) + caffe_powx(bottom[0]->count(), top_data, Dtype(2), + temp_.mutable_cpu_data()); // (X-EX)^2 + caffe_cpu_gemv(CblasNoTrans, num, dim, 1. / dim, temp_.cpu_data(), + sum_multiplier_.cpu_data(), 0., + variance_.mutable_cpu_data()); // E((X-EX)^2) + + // normalize variance + caffe_powx(variance_.count(), variance_.cpu_data(), Dtype(0.5), + variance_.mutable_cpu_data()); + + caffe_add_scalar(variance_.count(), eps_, variance_.mutable_cpu_data()); + + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + variance_.cpu_data(), sum_multiplier_.cpu_data(), 0., + temp_.mutable_cpu_data()); + + caffe_div(temp_.count(), top_data, temp_.cpu_data(), top_data); + } +} + +template +void MVNLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + + int num; + if (this->layer_param_.mvn_param().across_channels()) + num = bottom[0]->num(); + else + num = bottom[0]->num() * bottom[0]->channels(); + + int dim = bottom[0]->count() / num; + + if (this->layer_param_.mvn_param().normalize_variance()) { + caffe_mul(temp_.count(), top_data, top_diff, bottom_diff); + caffe_cpu_gemv(CblasNoTrans, num, dim, 1., bottom_diff, + sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + mean_.cpu_data(), sum_multiplier_.cpu_data(), 0., + bottom_diff); + caffe_mul(temp_.count(), top_data, bottom_diff, bottom_diff); + + caffe_cpu_gemv(CblasNoTrans, num, dim, 1., top_diff, + sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + mean_.cpu_data(), sum_multiplier_.cpu_data(), 1., + bottom_diff); + + caffe_cpu_axpby(temp_.count(), Dtype(1), top_diff, Dtype(-1. / dim), + bottom_diff); + + // put the squares of bottom into temp_ + caffe_powx(temp_.count(), bottom_data, Dtype(2), + temp_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + variance_.cpu_data(), sum_multiplier_.cpu_data(), 0., + temp_.mutable_cpu_data()); + + caffe_div(temp_.count(), bottom_diff, temp_.cpu_data(), bottom_diff); + } else { + caffe_cpu_gemv(CblasNoTrans, num, dim, 1. / dim, top_diff, + sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + mean_.cpu_data(), sum_multiplier_.cpu_data(), 0., + temp_.mutable_cpu_data()); + caffe_add(temp_.count(), top_diff, temp_.cpu_data(), bottom_diff); + } +} + + +#ifdef CPU_ONLY +STUB_GPU(MVNLayer); +#endif + +INSTANTIATE_CLASS(MVNLayer); +REGISTER_LAYER_CLASS(MVN); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/mvn_layer.cu b/3rdparty/caffe/src/caffe/layers/mvn_layer.cu new file mode 100644 index 00000000..739293be --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/mvn_layer.cu @@ -0,0 +1,110 @@ +#include + +#include "caffe/layers/mvn_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void MVNLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + int num; + if (this->layer_param_.mvn_param().across_channels()) + num = bottom[0]->num(); + else + num = bottom[0]->num() * bottom[0]->channels(); + + int dim = bottom[0]->count() / num; + + // subtract mean + caffe_gpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, + sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); // EX + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + mean_.gpu_data(), sum_multiplier_.gpu_data(), 0., + temp_.mutable_gpu_data()); + caffe_gpu_add(temp_.count(), bottom_data, temp_.gpu_data(), + top_data); // X-EX + + if (this->layer_param_.mvn_param().normalize_variance()) { + // compute variance using var(X) = E((X-EX)^2) + caffe_gpu_powx(bottom[0]->count(), top_data, Dtype(2), + temp_.mutable_gpu_data()); // (X-EX)^2 + caffe_gpu_gemv(CblasNoTrans, num, dim, 1. / dim, temp_.gpu_data(), + sum_multiplier_.gpu_data(), 0., + variance_.mutable_gpu_data()); // E((X-EX)^2) + + // normalize variance + caffe_gpu_powx(variance_.count(), variance_.gpu_data(), Dtype(0.5), + variance_.mutable_gpu_data()); + + caffe_gpu_add_scalar(variance_.count(), eps_, variance_.mutable_gpu_data()); + + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + variance_.gpu_data(), sum_multiplier_.gpu_data(), 0., + temp_.mutable_gpu_data()); + + caffe_gpu_div(temp_.count(), top_data, temp_.gpu_data(), top_data); + } +} + +template +void MVNLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + + int num; + if (this->layer_param_.mvn_param().across_channels()) + num = bottom[0]->num(); + else + num = bottom[0]->num() * bottom[0]->channels(); + + int dim = bottom[0]->count() / num; + + if (this->layer_param_.mvn_param().normalize_variance()) { + caffe_gpu_mul(temp_.count(), top_data, top_diff, bottom_diff); + caffe_gpu_gemv(CblasNoTrans, num, dim, 1., bottom_diff, + sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + mean_.gpu_data(), sum_multiplier_.gpu_data(), 0., + bottom_diff); + caffe_gpu_mul(temp_.count(), top_data, bottom_diff, bottom_diff); + + caffe_gpu_gemv(CblasNoTrans, num, dim, 1., top_diff, + sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + mean_.gpu_data(), sum_multiplier_.gpu_data(), 1., + bottom_diff); + + caffe_gpu_axpby(temp_.count(), Dtype(1), top_diff, Dtype(-1. / dim), + bottom_diff); + + // put the squares of bottom into temp_ + caffe_gpu_powx(temp_.count(), bottom_data, Dtype(2), + temp_.mutable_gpu_data()); + + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, 1., + variance_.gpu_data(), sum_multiplier_.gpu_data(), 0., + temp_.mutable_gpu_data()); + + caffe_gpu_div(temp_.count(), bottom_diff, temp_.gpu_data(), bottom_diff); + } else { + caffe_gpu_gemv(CblasNoTrans, num, dim, 1. / dim, top_diff, + sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + mean_.gpu_data(), sum_multiplier_.gpu_data(), 0., + temp_.mutable_gpu_data()); + caffe_gpu_add(temp_.count(), top_diff, temp_.gpu_data(), bottom_diff); + } +} + + +INSTANTIATE_LAYER_GPU_FUNCS(MVNLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/neuron_layer.cpp b/3rdparty/caffe/src/caffe/layers/neuron_layer.cpp new file mode 100644 index 00000000..d7b5f389 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/neuron_layer.cpp @@ -0,0 +1,15 @@ +#include + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +template +void NeuronLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + top[0]->ReshapeLike(*bottom[0]); +} + +INSTANTIATE_CLASS(NeuronLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/parameter_layer.cpp b/3rdparty/caffe/src/caffe/layers/parameter_layer.cpp new file mode 100644 index 00000000..fbd326f8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/parameter_layer.cpp @@ -0,0 +1,8 @@ +#include "caffe/layers/parameter_layer.hpp" + +namespace caffe { + +INSTANTIATE_CLASS(ParameterLayer); +REGISTER_LAYER_CLASS(Parameter); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/pooling_layer.cpp b/3rdparty/caffe/src/caffe/layers/pooling_layer.cpp new file mode 100644 index 00000000..90897db0 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/pooling_layer.cpp @@ -0,0 +1,316 @@ +#include +#include +#include + +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +using std::min; +using std::max; + +template +void PoolingLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + PoolingParameter pool_param = this->layer_param_.pooling_param(); + if (pool_param.global_pooling()) { + CHECK(!(pool_param.has_kernel_size() || + pool_param.has_kernel_h() || pool_param.has_kernel_w())) + << "With Global_pooling: true Filter size cannot specified"; + } else { + CHECK(!pool_param.has_kernel_size() != + !(pool_param.has_kernel_h() && pool_param.has_kernel_w())) + << "Filter size is kernel_size OR kernel_h and kernel_w; not both"; + CHECK(pool_param.has_kernel_size() || + (pool_param.has_kernel_h() && pool_param.has_kernel_w())) + << "For non-square filters both kernel_h and kernel_w are required."; + } + CHECK((!pool_param.has_pad() && pool_param.has_pad_h() + && pool_param.has_pad_w()) + || (!pool_param.has_pad_h() && !pool_param.has_pad_w())) + << "pad is pad OR pad_h and pad_w are required."; + CHECK((!pool_param.has_stride() && pool_param.has_stride_h() + && pool_param.has_stride_w()) + || (!pool_param.has_stride_h() && !pool_param.has_stride_w())) + << "Stride is stride OR stride_h and stride_w are required."; + global_pooling_ = pool_param.global_pooling(); + if (global_pooling_) { + kernel_h_ = bottom[0]->height(); + kernel_w_ = bottom[0]->width(); + } else { + if (pool_param.has_kernel_size()) { + kernel_h_ = kernel_w_ = pool_param.kernel_size(); + } else { + kernel_h_ = pool_param.kernel_h(); + kernel_w_ = pool_param.kernel_w(); + } + } + CHECK_GT(kernel_h_, 0) << "Filter dimensions cannot be zero."; + CHECK_GT(kernel_w_, 0) << "Filter dimensions cannot be zero."; + if (!pool_param.has_pad_h()) { + pad_h_ = pad_w_ = pool_param.pad(); + } else { + pad_h_ = pool_param.pad_h(); + pad_w_ = pool_param.pad_w(); + } + if (!pool_param.has_stride_h()) { + stride_h_ = stride_w_ = pool_param.stride(); + } else { + stride_h_ = pool_param.stride_h(); + stride_w_ = pool_param.stride_w(); + } + if (global_pooling_) { + CHECK(pad_h_ == 0 && pad_w_ == 0 && stride_h_ == 1 && stride_w_ == 1) + << "With Global_pooling: true; only pad = 0 and stride = 1"; + } + if (pad_h_ != 0 || pad_w_ != 0) { + CHECK(this->layer_param_.pooling_param().pool() + == PoolingParameter_PoolMethod_AVE + || this->layer_param_.pooling_param().pool() + == PoolingParameter_PoolMethod_MAX) + << "Padding implemented only for average and max pooling."; + CHECK_LT(pad_h_, kernel_h_); + CHECK_LT(pad_w_, kernel_w_); + } +} + +template +void PoolingLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_EQ(4, bottom[0]->num_axes()) << "Input must have 4 axes, " + << "corresponding to (num, channels, height, width)"; + channels_ = bottom[0]->channels(); + height_ = bottom[0]->height(); + width_ = bottom[0]->width(); + if (global_pooling_) { + kernel_h_ = bottom[0]->height(); + kernel_w_ = bottom[0]->width(); + } + pooled_height_ = static_cast(ceil(static_cast( + height_ + 2 * pad_h_ - kernel_h_) / stride_h_)) + 1; + pooled_width_ = static_cast(ceil(static_cast( + width_ + 2 * pad_w_ - kernel_w_) / stride_w_)) + 1; + if (pad_h_ || pad_w_) { + // If we have padding, ensure that the last pooling starts strictly + // inside the image (instead of at the padding); otherwise clip the last. + if ((pooled_height_ - 1) * stride_h_ >= height_ + pad_h_) { + --pooled_height_; + } + if ((pooled_width_ - 1) * stride_w_ >= width_ + pad_w_) { + --pooled_width_; + } + CHECK_LT((pooled_height_ - 1) * stride_h_, height_ + pad_h_); + CHECK_LT((pooled_width_ - 1) * stride_w_, width_ + pad_w_); + } + top[0]->Reshape(bottom[0]->num(), channels_, pooled_height_, + pooled_width_); + if (top.size() > 1) { + top[1]->ReshapeLike(*top[0]); + } + // If max pooling, we will initialize the vector index part. + if (this->layer_param_.pooling_param().pool() == + PoolingParameter_PoolMethod_MAX && top.size() == 1) { + max_idx_.Reshape(bottom[0]->num(), channels_, pooled_height_, + pooled_width_); + } + // If stochastic pooling, we will initialize the random index part. + if (this->layer_param_.pooling_param().pool() == + PoolingParameter_PoolMethod_STOCHASTIC) { + rand_idx_.Reshape(bottom[0]->num(), channels_, pooled_height_, + pooled_width_); + } +} + +// TODO(Yangqing): Is there a faster way to do pooling in the channel-first +// case? +template +void PoolingLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int top_count = top[0]->count(); + // We'll output the mask to top[1] if it's of size >1. + const bool use_top_mask = top.size() > 1; + int* mask = NULL; // suppress warnings about uninitalized variables + Dtype* top_mask = NULL; + // Different pooling methods. We explicitly do the switch outside the for + // loop to save time, although this results in more code. + switch (this->layer_param_.pooling_param().pool()) { + case PoolingParameter_PoolMethod_MAX: + // Initialize + if (use_top_mask) { + top_mask = top[1]->mutable_cpu_data(); + caffe_set(top_count, Dtype(-1), top_mask); + } else { + mask = max_idx_.mutable_cpu_data(); + caffe_set(top_count, -1, mask); + } + caffe_set(top_count, Dtype(-FLT_MAX), top_data); + // The main loop + for (int n = 0; n < bottom[0]->num(); ++n) { + for (int c = 0; c < channels_; ++c) { + for (int ph = 0; ph < pooled_height_; ++ph) { + for (int pw = 0; pw < pooled_width_; ++pw) { + int hstart = ph * stride_h_ - pad_h_; + int wstart = pw * stride_w_ - pad_w_; + int hend = min(hstart + kernel_h_, height_); + int wend = min(wstart + kernel_w_, width_); + hstart = max(hstart, 0); + wstart = max(wstart, 0); + const int pool_index = ph * pooled_width_ + pw; + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + const int index = h * width_ + w; + if (bottom_data[index] > top_data[pool_index]) { + top_data[pool_index] = bottom_data[index]; + if (use_top_mask) { + top_mask[pool_index] = static_cast(index); + } else { + mask[pool_index] = index; + } + } + } + } + } + } + // compute offset + bottom_data += bottom[0]->offset(0, 1); + top_data += top[0]->offset(0, 1); + if (use_top_mask) { + top_mask += top[0]->offset(0, 1); + } else { + mask += top[0]->offset(0, 1); + } + } + } + break; + case PoolingParameter_PoolMethod_AVE: + for (int i = 0; i < top_count; ++i) { + top_data[i] = 0; + } + // The main loop + for (int n = 0; n < bottom[0]->num(); ++n) { + for (int c = 0; c < channels_; ++c) { + for (int ph = 0; ph < pooled_height_; ++ph) { + for (int pw = 0; pw < pooled_width_; ++pw) { + int hstart = ph * stride_h_ - pad_h_; + int wstart = pw * stride_w_ - pad_w_; + int hend = min(hstart + kernel_h_, height_ + pad_h_); + int wend = min(wstart + kernel_w_, width_ + pad_w_); + int pool_size = (hend - hstart) * (wend - wstart); + hstart = max(hstart, 0); + wstart = max(wstart, 0); + hend = min(hend, height_); + wend = min(wend, width_); + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + top_data[ph * pooled_width_ + pw] += + bottom_data[h * width_ + w]; + } + } + top_data[ph * pooled_width_ + pw] /= pool_size; + } + } + // compute offset + bottom_data += bottom[0]->offset(0, 1); + top_data += top[0]->offset(0, 1); + } + } + break; + case PoolingParameter_PoolMethod_STOCHASTIC: + NOT_IMPLEMENTED; + break; + default: + LOG(FATAL) << "Unknown pooling method."; + } +} + +template +void PoolingLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { + return; + } + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + // Different pooling methods. We explicitly do the switch outside the for + // loop to save time, although this results in more codes. + caffe_set(bottom[0]->count(), Dtype(0), bottom_diff); + // We'll output the mask to top[1] if it's of size >1. + const bool use_top_mask = top.size() > 1; + const int* mask = NULL; // suppress warnings about uninitialized variables + const Dtype* top_mask = NULL; + switch (this->layer_param_.pooling_param().pool()) { + case PoolingParameter_PoolMethod_MAX: + // The main loop + if (use_top_mask) { + top_mask = top[1]->cpu_data(); + } else { + mask = max_idx_.cpu_data(); + } + for (int n = 0; n < top[0]->num(); ++n) { + for (int c = 0; c < channels_; ++c) { + for (int ph = 0; ph < pooled_height_; ++ph) { + for (int pw = 0; pw < pooled_width_; ++pw) { + const int index = ph * pooled_width_ + pw; + const int bottom_index = + use_top_mask ? top_mask[index] : mask[index]; + bottom_diff[bottom_index] += top_diff[index]; + } + } + bottom_diff += bottom[0]->offset(0, 1); + top_diff += top[0]->offset(0, 1); + if (use_top_mask) { + top_mask += top[0]->offset(0, 1); + } else { + mask += top[0]->offset(0, 1); + } + } + } + break; + case PoolingParameter_PoolMethod_AVE: + // The main loop + for (int n = 0; n < top[0]->num(); ++n) { + for (int c = 0; c < channels_; ++c) { + for (int ph = 0; ph < pooled_height_; ++ph) { + for (int pw = 0; pw < pooled_width_; ++pw) { + int hstart = ph * stride_h_ - pad_h_; + int wstart = pw * stride_w_ - pad_w_; + int hend = min(hstart + kernel_h_, height_ + pad_h_); + int wend = min(wstart + kernel_w_, width_ + pad_w_); + int pool_size = (hend - hstart) * (wend - wstart); + hstart = max(hstart, 0); + wstart = max(wstart, 0); + hend = min(hend, height_); + wend = min(wend, width_); + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + bottom_diff[h * width_ + w] += + top_diff[ph * pooled_width_ + pw] / pool_size; + } + } + } + } + // offset + bottom_diff += bottom[0]->offset(0, 1); + top_diff += top[0]->offset(0, 1); + } + } + break; + case PoolingParameter_PoolMethod_STOCHASTIC: + NOT_IMPLEMENTED; + break; + default: + LOG(FATAL) << "Unknown pooling method."; + } +} + + +#ifdef CPU_ONLY +STUB_GPU(PoolingLayer); +#endif + +INSTANTIATE_CLASS(PoolingLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/pooling_layer.cu b/3rdparty/caffe/src/caffe/layers/pooling_layer.cu new file mode 100644 index 00000000..46eddb94 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/pooling_layer.cu @@ -0,0 +1,386 @@ +#include +#include +#include + +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void MaxPoolForward(const int nthreads, + const Dtype* const bottom_data, const int num, const int channels, + const int height, const int width, const int pooled_height, + const int pooled_width, const int kernel_h, const int kernel_w, + const int stride_h, const int stride_w, const int pad_h, const int pad_w, + Dtype* const top_data, int* mask, Dtype* top_mask) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int pw = index % pooled_width; + const int ph = (index / pooled_width) % pooled_height; + const int c = (index / pooled_width / pooled_height) % channels; + const int n = index / pooled_width / pooled_height / channels; + int hstart = ph * stride_h - pad_h; + int wstart = pw * stride_w - pad_w; + const int hend = min(hstart + kernel_h, height); + const int wend = min(wstart + kernel_w, width); + hstart = max(hstart, 0); + wstart = max(wstart, 0); + Dtype maxval = -FLT_MAX; + int maxidx = -1; + const Dtype* const bottom_slice = + bottom_data + (n * channels + c) * height * width; + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + if (bottom_slice[h * width + w] > maxval) { + maxidx = h * width + w; + maxval = bottom_slice[maxidx]; + } + } + } + top_data[index] = maxval; + if (mask) { + mask[index] = maxidx; + } else { + top_mask[index] = maxidx; + } + } +} + +template +__global__ void AvePoolForward(const int nthreads, + const Dtype* const bottom_data, const int num, const int channels, + const int height, const int width, const int pooled_height, + const int pooled_width, const int kernel_h, const int kernel_w, + const int stride_h, const int stride_w, const int pad_h, const int pad_w, + Dtype* const top_data) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int pw = index % pooled_width; + const int ph = (index / pooled_width) % pooled_height; + const int c = (index / pooled_width / pooled_height) % channels; + const int n = index / pooled_width / pooled_height / channels; + int hstart = ph * stride_h - pad_h; + int wstart = pw * stride_w - pad_w; + int hend = min(hstart + kernel_h, height + pad_h); + int wend = min(wstart + kernel_w, width + pad_w); + const int pool_size = (hend - hstart) * (wend - wstart); + hstart = max(hstart, 0); + wstart = max(wstart, 0); + hend = min(hend, height); + wend = min(wend, width); + Dtype aveval = 0; + const Dtype* const bottom_slice = + bottom_data + (n * channels + c) * height * width; + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + aveval += bottom_slice[h * width + w]; + } + } + top_data[index] = aveval / pool_size; + } +} + +template +__global__ void StoPoolForwardTrain(const int nthreads, + const Dtype* const bottom_data, + const int num, const int channels, const int height, + const int width, const int pooled_height, const int pooled_width, + const int kernel_h, const int kernel_w, const int stride_h, + const int stride_w, Dtype* const rand_idx, Dtype* const top_data) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int pw = index % pooled_width; + const int ph = (index / pooled_width) % pooled_height; + const int c = (index / pooled_width / pooled_height) % channels; + const int n = index / pooled_width / pooled_height / channels; + const int hstart = ph * stride_h; + const int hend = min(hstart + kernel_h, height); + const int wstart = pw * stride_w; + const int wend = min(wstart + kernel_w, width); + Dtype cumsum = 0.; + const Dtype* const bottom_slice = + bottom_data + (n * channels + c) * height * width; + // First pass: get sum + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + cumsum += bottom_slice[h * width + w]; + } + } + const float thres = rand_idx[index] * cumsum; + // Second pass: get value, and set index. + cumsum = 0; + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + cumsum += bottom_slice[h * width + w]; + if (cumsum >= thres) { + rand_idx[index] = ((n * channels + c) * height + h) * width + w; + top_data[index] = bottom_slice[h * width + w]; + return; + } + } + } + } +} + + +template +__global__ void StoPoolForwardTest(const int nthreads, + const Dtype* const bottom_data, + const int num, const int channels, const int height, + const int width, const int pooled_height, const int pooled_width, + const int kernel_h, const int kernel_w, const int stride_h, + const int stride_w, Dtype* const top_data) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int pw = index % pooled_width; + const int ph = (index / pooled_width) % pooled_height; + const int c = (index / pooled_width / pooled_height) % channels; + const int n = index / pooled_width / pooled_height / channels; + const int hstart = ph * stride_h; + const int hend = min(hstart + kernel_h, height); + const int wstart = pw * stride_w; + const int wend = min(wstart + kernel_w, width); + // We set cumsum to be 0 to avoid divide-by-zero problems + Dtype cumsum = 0.; + Dtype cumvalues = 0.; + const Dtype* const bottom_slice = + bottom_data + (n * channels + c) * height * width; + // First pass: get sum + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + cumsum += bottom_slice[h * width + w]; + cumvalues += bottom_slice[h * width + w] * bottom_slice[h * width + w]; + } + } + top_data[index] = (cumsum > 0.) ? cumvalues / cumsum : 0.; + } +} + + +template +void PoolingLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + int count = top[0]->count(); + // We'll output the mask to top[1] if it's of size >1. + const bool use_top_mask = top.size() > 1; + int* mask = NULL; + Dtype* top_mask = NULL; + switch (this->layer_param_.pooling_param().pool()) { + case PoolingParameter_PoolMethod_MAX: + if (use_top_mask) { + top_mask = top[1]->mutable_gpu_data(); + } else { + mask = max_idx_.mutable_gpu_data(); + } + // NOLINT_NEXT_LINE(whitespace/operators) + MaxPoolForward<<>>( + count, bottom_data, bottom[0]->num(), channels_, + height_, width_, pooled_height_, pooled_width_, kernel_h_, + kernel_w_, stride_h_, stride_w_, pad_h_, pad_w_, top_data, + mask, top_mask); + break; + case PoolingParameter_PoolMethod_AVE: + // NOLINT_NEXT_LINE(whitespace/operators) + AvePoolForward<<>>( + count, bottom_data, bottom[0]->num(), channels_, + height_, width_, pooled_height_, pooled_width_, kernel_h_, + kernel_w_, stride_h_, stride_w_, pad_h_, pad_w_, top_data); + break; + case PoolingParameter_PoolMethod_STOCHASTIC: + if (this->phase_ == TRAIN) { + // We need to create the random index as well. + caffe_gpu_rng_uniform(count, Dtype(0), Dtype(1), + rand_idx_.mutable_gpu_data()); + // NOLINT_NEXT_LINE(whitespace/operators) + StoPoolForwardTrain<<>>( + count, bottom_data, bottom[0]->num(), channels_, + height_, width_, pooled_height_, pooled_width_, kernel_h_, + kernel_w_, stride_h_, stride_w_, + rand_idx_.mutable_gpu_data(), top_data); + } else { + // NOLINT_NEXT_LINE(whitespace/operators) + StoPoolForwardTest<<>>( + count, bottom_data, bottom[0]->num(), channels_, + height_, width_, pooled_height_, pooled_width_, kernel_h_, + kernel_w_, stride_h_, stride_w_, top_data); + } + break; + default: + LOG(FATAL) << "Unknown pooling method."; + } + CUDA_POST_KERNEL_CHECK; +} + + +template +__global__ void MaxPoolBackward(const int nthreads, const Dtype* const top_diff, + const int* const mask, const Dtype* const top_mask, const int num, + const int channels, const int height, const int width, + const int pooled_height, const int pooled_width, const int kernel_h, + const int kernel_w, const int stride_h, const int stride_w, const int pad_h, + const int pad_w, Dtype* const bottom_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + // find out the local index + // find out the local offset + const int w = index % width; + const int h = (index / width) % height; + const int c = (index / width / height) % channels; + const int n = index / width / height / channels; + const int phstart = + (h + pad_h < kernel_h) ? 0 : (h + pad_h - kernel_h) / stride_h + 1; + const int phend = min((h + pad_h) / stride_h + 1, pooled_height); + const int pwstart = + (w + pad_w < kernel_w) ? 0 : (w + pad_w - kernel_w) / stride_w + 1; + const int pwend = min((w + pad_w) / stride_w + 1, pooled_width); + Dtype gradient = 0; + const int offset = (n * channels + c) * pooled_height * pooled_width; + const Dtype* const top_diff_slice = top_diff + offset; + if (mask) { + const int* const mask_slice = mask + offset; + for (int ph = phstart; ph < phend; ++ph) { + for (int pw = pwstart; pw < pwend; ++pw) { + if (mask_slice[ph * pooled_width + pw] == h * width + w) { + gradient += top_diff_slice[ph * pooled_width + pw]; + } + } + } + } else { + const Dtype* const top_mask_slice = top_mask + offset; + for (int ph = phstart; ph < phend; ++ph) { + for (int pw = pwstart; pw < pwend; ++pw) { + if (top_mask_slice[ph * pooled_width + pw] == h * width + w) { + gradient += top_diff_slice[ph * pooled_width + pw]; + } + } + } + } + bottom_diff[index] = gradient; + } +} + +template +__global__ void AvePoolBackward(const int nthreads, const Dtype* const top_diff, + const int num, const int channels, const int height, + const int width, const int pooled_height, const int pooled_width, + const int kernel_h, const int kernel_w, const int stride_h, + const int stride_w, const int pad_h, const int pad_w, + Dtype* const bottom_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + // find out the local index + // find out the local offset + const int w = index % width + pad_w; + const int h = (index / width) % height + pad_h; + const int c = (index / width / height) % channels; + const int n = index / width / height / channels; + const int phstart = (h < kernel_h) ? 0 : (h - kernel_h) / stride_h + 1; + const int phend = min(h / stride_h + 1, pooled_height); + const int pwstart = (w < kernel_w) ? 0 : (w - kernel_w) / stride_w + 1; + const int pwend = min(w / stride_w + 1, pooled_width); + Dtype gradient = 0; + const Dtype* const top_diff_slice = + top_diff + (n * channels + c) * pooled_height * pooled_width; + for (int ph = phstart; ph < phend; ++ph) { + for (int pw = pwstart; pw < pwend; ++pw) { + // figure out the pooling size + int hstart = ph * stride_h - pad_h; + int wstart = pw * stride_w - pad_w; + int hend = min(hstart + kernel_h, height + pad_h); + int wend = min(wstart + kernel_w, width + pad_w); + int pool_size = (hend - hstart) * (wend - wstart); + gradient += top_diff_slice[ph * pooled_width + pw] / pool_size; + } + } + bottom_diff[index] = gradient; + } +} + + +template +__global__ void StoPoolBackward(const int nthreads, + const Dtype* const rand_idx, const Dtype* const top_diff, + const int num, const int channels, const int height, + const int width, const int pooled_height, const int pooled_width, + const int kernel_h, const int kernel_w, const int stride_h, + const int stride_w, Dtype* const bottom_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + // find out the local index + // find out the local offset + const int w = index % width; + const int h = (index / width) % height; + const int c = (index / width / height) % channels; + const int n = index / width / height / channels; + const int phstart = (h < kernel_h) ? 0 : (h - kernel_h) / stride_h + 1; + const int phend = min(h / stride_h + 1, pooled_height); + const int pwstart = (w < kernel_w) ? 0 : (w - kernel_w) / stride_w + 1; + const int pwend = min(w / stride_w + 1, pooled_width); + Dtype gradient = 0; + const Dtype* const rand_idx_slice = + rand_idx + (n * channels + c) * pooled_height * pooled_width; + const Dtype* const top_diff_slice = + top_diff + (n * channels + c) * pooled_height * pooled_width; + for (int ph = phstart; ph < phend; ++ph) { + for (int pw = pwstart; pw < pwend; ++pw) { + gradient += top_diff_slice[ph * pooled_width + pw] * + (index == static_cast(rand_idx_slice[ph * pooled_width + pw])); + } + } + bottom_diff[index] = gradient; + } +} + + +template +void PoolingLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { + return; + } + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + caffe_gpu_set(count, Dtype(0.), bottom_diff); + // We'll output the mask to top[1] if it's of size >1. + const bool use_top_mask = top.size() > 1; + const int* mask = NULL; + const Dtype* top_mask = NULL; + switch (this->layer_param_.pooling_param().pool()) { + case PoolingParameter_PoolMethod_MAX: + if (use_top_mask) { + top_mask = top[1]->gpu_data(); + } else { + mask = max_idx_.gpu_data(); + } + // NOLINT_NEXT_LINE(whitespace/operators) + MaxPoolBackward<<>>( + count, top_diff, mask, top_mask, top[0]->num(), channels_, + height_, width_, pooled_height_, pooled_width_, + kernel_h_, kernel_w_, stride_h_, stride_w_, pad_h_, pad_w_, + bottom_diff); + break; + case PoolingParameter_PoolMethod_AVE: + // NOLINT_NEXT_LINE(whitespace/operators) + AvePoolBackward<<>>( + count, top_diff, top[0]->num(), channels_, + height_, width_, pooled_height_, pooled_width_, kernel_h_, + kernel_w_, stride_h_, stride_w_, pad_h_, pad_w_, bottom_diff); + break; + case PoolingParameter_PoolMethod_STOCHASTIC: + // NOLINT_NEXT_LINE(whitespace/operators) + StoPoolBackward<<>>( + count, rand_idx_.gpu_data(), top_diff, + top[0]->num(), channels_, height_, width_, pooled_height_, + pooled_width_, kernel_h_, kernel_w_, stride_h_, stride_w_, + bottom_diff); + break; + default: + LOG(FATAL) << "Unknown pooling method."; + } + CUDA_POST_KERNEL_CHECK; +} + + +INSTANTIATE_LAYER_GPU_FUNCS(PoolingLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/power_layer.cpp b/3rdparty/caffe/src/caffe/layers/power_layer.cpp new file mode 100644 index 00000000..d99b77ca --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/power_layer.cpp @@ -0,0 +1,102 @@ +#include + +#include "caffe/layers/power_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void PowerLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + NeuronLayer::LayerSetUp(bottom, top); + power_ = this->layer_param_.power_param().power(); + scale_ = this->layer_param_.power_param().scale(); + shift_ = this->layer_param_.power_param().shift(); + diff_scale_ = power_ * scale_; +} + +// Compute y = (shift + scale * x)^power +template +void PowerLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + // Special case where we can ignore the input: scale or power is 0. + if (diff_scale_ == Dtype(0)) { + Dtype value = (power_ == 0) ? Dtype(1) : pow(shift_, power_); + caffe_set(count, value, top_data); + return; + } + const Dtype* bottom_data = bottom[0]->cpu_data(); + caffe_copy(count, bottom_data, top_data); + if (scale_ != Dtype(1)) { + caffe_scal(count, scale_, top_data); + } + if (shift_ != Dtype(0)) { + caffe_add_scalar(count, shift_, top_data); + } + if (power_ != Dtype(1)) { + caffe_powx(count, top_data, power_, top_data); + } +} + +template +void PowerLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int count = bottom[0]->count(); + const Dtype* top_diff = top[0]->cpu_diff(); + if (diff_scale_ == Dtype(0) || power_ == Dtype(1)) { + caffe_set(count, diff_scale_, bottom_diff); + } else { + const Dtype* bottom_data = bottom[0]->cpu_data(); + // Compute dy/dx = scale * power * (shift + scale * x)^(power - 1) + // = diff_scale * y / (shift + scale * x) + if (power_ == Dtype(2)) { + // Special case for y = (shift + scale * x)^2 + // -> dy/dx = 2 * scale * (shift + scale * x) + // = diff_scale * shift + diff_scale * scale * x + caffe_cpu_axpby(count, diff_scale_ * scale_, bottom_data, + Dtype(0), bottom_diff); + if (shift_ != Dtype(0)) { + caffe_add_scalar(count, diff_scale_ * shift_, bottom_diff); + } + } else if (shift_ == Dtype(0)) { + // Special case for y = (scale * x)^power + // -> dy/dx = scale * power * (scale * x)^(power - 1) + // = scale * power * (scale * x)^power * (scale * x)^(-1) + // = power * y / x + const Dtype* top_data = top[0]->cpu_data(); + caffe_div(count, top_data, bottom_data, bottom_diff); + caffe_scal(count, power_, bottom_diff); + } else { + caffe_copy(count, bottom_data, bottom_diff); + if (scale_ != Dtype(1)) { + caffe_scal(count, scale_, bottom_diff); + } + if (shift_ != Dtype(0)) { + caffe_add_scalar(count, shift_, bottom_diff); + } + const Dtype* top_data = top[0]->cpu_data(); + caffe_div(count, top_data, bottom_diff, bottom_diff); + if (diff_scale_ != Dtype(1)) { + caffe_scal(count, diff_scale_, bottom_diff); + } + } + } + if (diff_scale_ != Dtype(0)) { + caffe_mul(count, top_diff, bottom_diff, bottom_diff); + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(PowerLayer); +#endif + +INSTANTIATE_CLASS(PowerLayer); +REGISTER_LAYER_CLASS(Power); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/power_layer.cu b/3rdparty/caffe/src/caffe/layers/power_layer.cu new file mode 100644 index 00000000..07711c42 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/power_layer.cu @@ -0,0 +1,85 @@ +#include + +#include "caffe/layers/power_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void PowerLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + // Special case where we can ignore the input: scale or power is 0. + if (diff_scale_ == Dtype(0)) { + Dtype value = (power_ == 0) ? Dtype(1) : pow(shift_, power_); + caffe_gpu_set(count, value, top_data); + return; + } + const Dtype* bottom_data = bottom[0]->gpu_data(); + caffe_copy(count, bottom_data, top_data); + if (scale_ != Dtype(1)) { + caffe_gpu_scal(count, scale_, top_data); + } + if (shift_ != Dtype(0)) { + caffe_gpu_add_scalar(count, shift_, top_data); + } + if (power_ != Dtype(1)) { + caffe_gpu_powx(count, top_data, power_, top_data); + } +} + +template +void PowerLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + const Dtype* top_diff = top[0]->gpu_diff(); + if (diff_scale_ == Dtype(0) || power_ == Dtype(1)) { + caffe_gpu_set(count, diff_scale_, bottom_diff); + } else { + const Dtype* bottom_data = bottom[0]->gpu_data(); + // Compute dy/dx = scale * power * (shift + scale * x)^(power - 1) + // = diff_scale * y / (shift + scale * x) + if (power_ == Dtype(2)) { + // Special case for y = (shift + scale * x)^2 + // -> dy/dx = 2 * scale * (shift + scale * x) + // = diff_scale * shift + diff_scale * scale * x + caffe_gpu_axpby(count, diff_scale_ * scale_, bottom_data, + Dtype(0), bottom_diff); + if (shift_ != Dtype(0)) { + caffe_gpu_add_scalar(count, diff_scale_ * shift_, bottom_diff); + } + } else if (shift_ == Dtype(0)) { + // Special case for y = (scale * x)^power + // -> dy/dx = scale * power * (scale * x)^(power - 1) + // = scale * power * (scale * x)^power * (scale * x)^(-1) + // = power * y / x + const Dtype* top_data = top[0]->gpu_data(); + caffe_gpu_div(count, top_data, bottom_data, bottom_diff); + caffe_gpu_scal(count, power_, bottom_diff); + } else { + caffe_copy(count, bottom_data, bottom_diff); + if (scale_ != Dtype(1)) { + caffe_gpu_scal(count, scale_, bottom_diff); + } + if (shift_ != Dtype(0)) { + caffe_gpu_add_scalar(count, shift_, bottom_diff); + } + const Dtype* top_data = top[0]->gpu_data(); + caffe_gpu_div(count, top_data, bottom_diff, bottom_diff); + if (diff_scale_ != Dtype(1)) { + caffe_gpu_scal(count, diff_scale_, bottom_diff); + } + } + } + caffe_gpu_mul(count, top_diff, bottom_diff, bottom_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(PowerLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/prelu_layer.cpp b/3rdparty/caffe/src/caffe/layers/prelu_layer.cpp new file mode 100644 index 00000000..853181bd --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/prelu_layer.cpp @@ -0,0 +1,141 @@ +#include +#include + +#include "caffe/filler.hpp" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/prelu_layer.hpp" + +namespace caffe { + +template +void PReLULayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "Number of axes of bottom blob must be >=2."; + PReLUParameter prelu_param = this->layer_param().prelu_param(); + int channels = bottom[0]->channels(); + channel_shared_ = prelu_param.channel_shared(); + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + this->blobs_.resize(1); + if (channel_shared_) { + this->blobs_[0].reset(new Blob(vector(0))); + } else { + this->blobs_[0].reset(new Blob(vector(1, channels))); + } + shared_ptr > filler; + if (prelu_param.has_filler()) { + filler.reset(GetFiller(prelu_param.filler())); + } else { + FillerParameter filler_param; + filler_param.set_type("constant"); + filler_param.set_value(0.25); + filler.reset(GetFiller(filler_param)); + } + filler->Fill(this->blobs_[0].get()); + } + if (channel_shared_) { + CHECK_EQ(this->blobs_[0]->count(), 1) + << "Negative slope size is inconsistent with prototxt config"; + } else { + CHECK_EQ(this->blobs_[0]->count(), channels) + << "Negative slope size is inconsistent with prototxt config"; + } + + // Propagate gradients to the parameters (as directed by backward pass). + this->param_propagate_down_.resize(this->blobs_.size(), true); + multiplier_.Reshape(vector(1, bottom[0]->count(1))); + backward_buff_.Reshape(vector(1, bottom[0]->count(1))); + caffe_set(multiplier_.count(), Dtype(1), multiplier_.mutable_cpu_data()); +} + +template +void PReLULayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "Number of axes of bottom blob must be >=2."; + top[0]->ReshapeLike(*bottom[0]); + if (bottom[0] == top[0]) { + // For in-place computation + bottom_memory_.ReshapeLike(*bottom[0]); + } +} + +template +void PReLULayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->channels(); + const Dtype* slope_data = this->blobs_[0]->cpu_data(); + + // For in-place computation + if (bottom[0] == top[0]) { + caffe_copy(count, bottom_data, bottom_memory_.mutable_cpu_data()); + } + + // if channel_shared, channel index in the following computation becomes + // always zero. + const int div_factor = channel_shared_ ? channels : 1; + for (int i = 0; i < count; ++i) { + int c = (i / dim) % channels / div_factor; + top_data[i] = std::max(bottom_data[i], Dtype(0)) + + slope_data[c] * std::min(bottom_data[i], Dtype(0)); + } +} + +template +void PReLULayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* slope_data = this->blobs_[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + const int count = bottom[0]->count(); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->channels(); + + // For in-place computation + if (top[0] == bottom[0]) { + bottom_data = bottom_memory_.cpu_data(); + } + + // if channel_shared, channel index in the following computation becomes + // always zero. + const int div_factor = channel_shared_ ? channels : 1; + + // Propagte to param + // Since to write bottom diff will affect top diff if top and bottom blobs + // are identical (in-place computaion), we first compute param backward to + // keep top_diff unchanged. + if (this->param_propagate_down_[0]) { + Dtype* slope_diff = this->blobs_[0]->mutable_cpu_diff(); + for (int i = 0; i < count; ++i) { + int c = (i / dim) % channels / div_factor; + slope_diff[c] += top_diff[i] * bottom_data[i] * (bottom_data[i] <= 0); + } + } + // Propagate to bottom + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + for (int i = 0; i < count; ++i) { + int c = (i / dim) % channels / div_factor; + bottom_diff[i] = top_diff[i] * ((bottom_data[i] > 0) + + slope_data[c] * (bottom_data[i] <= 0)); + } + } +} + + +#ifdef CPU_ONLY +STUB_GPU(PReLULayer); +#endif + +INSTANTIATE_CLASS(PReLULayer); +REGISTER_LAYER_CLASS(PReLU); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/prelu_layer.cu b/3rdparty/caffe/src/caffe/layers/prelu_layer.cu new file mode 100644 index 00000000..aeb80eac --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/prelu_layer.cu @@ -0,0 +1,128 @@ +#include +#include + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/prelu_layer.hpp" + +namespace caffe { + +// CUDA kernele for forward +template +__global__ void PReLUForward(const int n, const int channels, const int dim, + const Dtype* in, Dtype* out, const Dtype* slope_data, + const int div_factor) { + CUDA_KERNEL_LOOP(index, n) { + int c = (index / dim) % channels / div_factor; + out[index] = in[index] > 0 ? in[index] : in[index] * slope_data[c]; + } +} + +// CUDA kernel for bottom backward +template +__global__ void PReLUBackward(const int n, const int channels, const int dim, + const Dtype* in_diff, const Dtype* in_data, Dtype* out_diff, + const Dtype* slope_data, const int div_factor) { + CUDA_KERNEL_LOOP(index, n) { + int c = (index / dim) % channels / div_factor; + out_diff[index] = in_diff[index] * ((in_data[index] > 0) + + (in_data[index] <= 0) * slope_data[c]); + } +} + +// CUDA kernel for element-wise parameter backward +template +__global__ void PReLUParamBackward(const int n, + const int rows, const int rowPitch, const Dtype* in_diff, + const Dtype* in_data, Dtype* out_diff) { + CUDA_KERNEL_LOOP(index, n) { + out_diff[index] = in_diff[index] * in_data[index] * (in_data[index] <= 0); + for ( int k = 1; k < rows; k++ ) { + out_diff[index] += in_diff[index + k*rowPitch] + * in_data[index + k*rowPitch] * (in_data[index + k*rowPitch] <= 0); + } + } +} + +template +void PReLULayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->channels(); + const Dtype* slope_data = this->blobs_[0]->gpu_data(); + const int div_factor = channel_shared_ ? channels : 1; + + // For in-place computation + if (top[0] == bottom[0]) { + caffe_copy(count, bottom_data, bottom_memory_.mutable_gpu_data()); + } + + // NOLINT_NEXT_LINE(whitespace/operators) + PReLUForward<<>>( + count, channels, dim, bottom_data, top_data, slope_data, div_factor); + CUDA_POST_KERNEL_CHECK; +} + +template +void PReLULayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const int count = bottom[0]->count(); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->channels(); + + // For in-place computation + if (top[0] == bottom[0]) { + bottom_data = bottom_memory_.gpu_data(); + } + + // Propagate to param + // Since to write bottom diff will affect top diff if top and bottom blobs + // are identical (in-place computaion), we first compute param backward to + // keep top_diff unchanged. + if (this->param_propagate_down_[0]) { + Dtype* slope_diff = this->blobs_[0]->mutable_gpu_diff(); + int cdim = channels * dim; + + // compute element-wise diff + // NOLINT_NEXT_LINE(whitespace/operators) + PReLUParamBackward<<>>( + cdim, bottom[0]->num(), top[0]->offset(1), top_diff , + bottom_data , + backward_buff_.mutable_gpu_diff()); + CUDA_POST_KERNEL_CHECK; + if (channel_shared_) { + Dtype dsum; + caffe_gpu_dot(channels * dim, backward_buff_.gpu_diff(), + multiplier_.gpu_data(), &dsum); + caffe_gpu_add_scalar(this->blobs_[0]->count(), Dtype(dsum), slope_diff); + } else { + caffe_gpu_gemv(CblasNoTrans, channels, dim, 1., + backward_buff_.gpu_diff(), multiplier_.gpu_data(), 1., + slope_diff); + } + } + // Propagate to bottom + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const Dtype* slope_data = this->blobs_[0]->gpu_data(); + int div_factor = channel_shared_ ? channels : 1; + // NOLINT_NEXT_LINE(whitespace/operators) + PReLUBackward<<>>( + count, channels, dim, top_diff, bottom_data, bottom_diff, slope_data, + div_factor); + CUDA_POST_KERNEL_CHECK; + } +} + + +INSTANTIATE_LAYER_GPU_FUNCS(PReLULayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/recurrent_layer.cpp b/3rdparty/caffe/src/caffe/layers/recurrent_layer.cpp new file mode 100644 index 00000000..e0c82773 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/recurrent_layer.cpp @@ -0,0 +1,295 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void RecurrentLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "bottom[0] must have at least 2 axes -- (#timesteps, #streams, ...)"; + T_ = bottom[0]->shape(0); + N_ = bottom[0]->shape(1); + LOG(INFO) << "Initializing recurrent layer: assuming input batch contains " + << T_ << " timesteps of " << N_ << " independent streams."; + + CHECK_EQ(bottom[1]->num_axes(), 2) + << "bottom[1] must have exactly 2 axes -- (#timesteps, #streams)"; + CHECK_EQ(T_, bottom[1]->shape(0)); + CHECK_EQ(N_, bottom[1]->shape(1)); + + // If expose_hidden is set, we take as input and produce as output + // the hidden state blobs at the first and last timesteps. + expose_hidden_ = this->layer_param_.recurrent_param().expose_hidden(); + + // Get (recurrent) input/output names. + vector output_names; + OutputBlobNames(&output_names); + vector recur_input_names; + RecurrentInputBlobNames(&recur_input_names); + vector recur_output_names; + RecurrentOutputBlobNames(&recur_output_names); + const int num_recur_blobs = recur_input_names.size(); + CHECK_EQ(num_recur_blobs, recur_output_names.size()); + + // If provided, bottom[2] is a static input to the recurrent net. + const int num_hidden_exposed = expose_hidden_ * num_recur_blobs; + static_input_ = (bottom.size() > 2 + num_hidden_exposed); + if (static_input_) { + CHECK_GE(bottom[2]->num_axes(), 1); + CHECK_EQ(N_, bottom[2]->shape(0)); + } + + // Create a NetParameter; setup the inputs that aren't unique to particular + // recurrent architectures. + NetParameter net_param; + + LayerParameter* input_layer_param = net_param.add_layer(); + input_layer_param->set_type("Input"); + InputParameter* input_param = input_layer_param->mutable_input_param(); + input_layer_param->add_top("x"); + BlobShape input_shape; + for (int i = 0; i < bottom[0]->num_axes(); ++i) { + input_shape.add_dim(bottom[0]->shape(i)); + } + input_param->add_shape()->CopyFrom(input_shape); + + input_shape.Clear(); + for (int i = 0; i < bottom[1]->num_axes(); ++i) { + input_shape.add_dim(bottom[1]->shape(i)); + } + input_layer_param->add_top("cont"); + input_param->add_shape()->CopyFrom(input_shape); + + if (static_input_) { + input_shape.Clear(); + for (int i = 0; i < bottom[2]->num_axes(); ++i) { + input_shape.add_dim(bottom[2]->shape(i)); + } + input_layer_param->add_top("x_static"); + input_param->add_shape()->CopyFrom(input_shape); + } + + // Call the child's FillUnrolledNet implementation to specify the unrolled + // recurrent architecture. + this->FillUnrolledNet(&net_param); + + // Prepend this layer's name to the names of each layer in the unrolled net. + const string& layer_name = this->layer_param_.name(); + if (layer_name.size()) { + for (int i = 0; i < net_param.layer_size(); ++i) { + LayerParameter* layer = net_param.mutable_layer(i); + layer->set_name(layer_name + "_" + layer->name()); + } + } + + // Add "pseudo-losses" to all outputs to force backpropagation. + // (Setting force_backward is too aggressive as we may not need to backprop to + // all inputs, e.g., the sequence continuation indicators.) + vector pseudo_losses(output_names.size()); + for (int i = 0; i < output_names.size(); ++i) { + LayerParameter* layer = net_param.add_layer(); + pseudo_losses[i] = output_names[i] + "_pseudoloss"; + layer->set_name(pseudo_losses[i]); + layer->set_type("Reduction"); + layer->add_bottom(output_names[i]); + layer->add_top(pseudo_losses[i]); + layer->add_loss_weight(1); + } + + // Create the unrolled net. + unrolled_net_.reset(new Net(net_param)); + unrolled_net_->set_debug_info( + this->layer_param_.recurrent_param().debug_info()); + + // Setup pointers to the inputs. + x_input_blob_ = CHECK_NOTNULL(unrolled_net_->blob_by_name("x").get()); + cont_input_blob_ = CHECK_NOTNULL(unrolled_net_->blob_by_name("cont").get()); + if (static_input_) { + x_static_input_blob_ = + CHECK_NOTNULL(unrolled_net_->blob_by_name("x_static").get()); + } + + // Setup pointers to paired recurrent inputs/outputs. + recur_input_blobs_.resize(num_recur_blobs); + recur_output_blobs_.resize(num_recur_blobs); + for (int i = 0; i < recur_input_names.size(); ++i) { + recur_input_blobs_[i] = + CHECK_NOTNULL(unrolled_net_->blob_by_name(recur_input_names[i]).get()); + recur_output_blobs_[i] = + CHECK_NOTNULL(unrolled_net_->blob_by_name(recur_output_names[i]).get()); + } + + // Setup pointers to outputs. + CHECK_EQ(top.size() - num_hidden_exposed, output_names.size()) + << "OutputBlobNames must provide an output blob name for each top."; + output_blobs_.resize(output_names.size()); + for (int i = 0; i < output_names.size(); ++i) { + output_blobs_[i] = + CHECK_NOTNULL(unrolled_net_->blob_by_name(output_names[i]).get()); + } + + // We should have 2 inputs (x and cont), plus a number of recurrent inputs, + // plus maybe a static input. + CHECK_EQ(2 + num_recur_blobs + static_input_, + unrolled_net_->input_blobs().size()); + + // This layer's parameters are any parameters in the layers of the unrolled + // net. We only want one copy of each parameter, so check that the parameter + // is "owned" by the layer, rather than shared with another. + this->blobs_.clear(); + for (int i = 0; i < unrolled_net_->params().size(); ++i) { + if (unrolled_net_->param_owners()[i] == -1) { + LOG(INFO) << "Adding parameter " << i << ": " + << unrolled_net_->param_display_names()[i]; + this->blobs_.push_back(unrolled_net_->params()[i]); + } + } + // Check that param_propagate_down is set for all of the parameters in the + // unrolled net; set param_propagate_down to true in this layer. + for (int i = 0; i < unrolled_net_->layers().size(); ++i) { + for (int j = 0; j < unrolled_net_->layers()[i]->blobs().size(); ++j) { + CHECK(unrolled_net_->layers()[i]->param_propagate_down(j)) + << "param_propagate_down not set for layer " << i << ", param " << j; + } + } + this->param_propagate_down_.clear(); + this->param_propagate_down_.resize(this->blobs_.size(), true); + + // Set the diffs of recurrent outputs to 0 -- we can't backpropagate across + // batches. + for (int i = 0; i < recur_output_blobs_.size(); ++i) { + caffe_set(recur_output_blobs_[i]->count(), Dtype(0), + recur_output_blobs_[i]->mutable_cpu_diff()); + } + + // Check that the last output_names.size() layers are the pseudo-losses; + // set last_layer_index so that we don't actually run these layers. + const vector& layer_names = unrolled_net_->layer_names(); + last_layer_index_ = layer_names.size() - 1 - pseudo_losses.size(); + for (int i = last_layer_index_ + 1, j = 0; i < layer_names.size(); ++i, ++j) { + CHECK_EQ(layer_names[i], pseudo_losses[j]); + } +} + +template +void RecurrentLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "bottom[0] must have at least 2 axes -- (#timesteps, #streams, ...)"; + CHECK_EQ(T_, bottom[0]->shape(0)) << "input number of timesteps changed"; + N_ = bottom[0]->shape(1); + CHECK_EQ(bottom[1]->num_axes(), 2) + << "bottom[1] must have exactly 2 axes -- (#timesteps, #streams)"; + CHECK_EQ(T_, bottom[1]->shape(0)); + CHECK_EQ(N_, bottom[1]->shape(1)); + x_input_blob_->ReshapeLike(*bottom[0]); + vector cont_shape = bottom[1]->shape(); + cont_input_blob_->Reshape(cont_shape); + if (static_input_) { + x_static_input_blob_->ReshapeLike(*bottom[2]); + } + vector recur_input_shapes; + RecurrentInputShapes(&recur_input_shapes); + CHECK_EQ(recur_input_shapes.size(), recur_input_blobs_.size()); + for (int i = 0; i < recur_input_shapes.size(); ++i) { + recur_input_blobs_[i]->Reshape(recur_input_shapes[i]); + } + unrolled_net_->Reshape(); + x_input_blob_->ShareData(*bottom[0]); + x_input_blob_->ShareDiff(*bottom[0]); + cont_input_blob_->ShareData(*bottom[1]); + if (static_input_) { + x_static_input_blob_->ShareData(*bottom[2]); + x_static_input_blob_->ShareDiff(*bottom[2]); + } + if (expose_hidden_) { + const int bottom_offset = 2 + static_input_; + for (int i = bottom_offset, j = 0; i < bottom.size(); ++i, ++j) { + CHECK(recur_input_blobs_[j]->shape() == bottom[i]->shape()) + << "bottom[" << i << "] shape must match hidden state input shape: " + << recur_input_blobs_[j]->shape_string(); + recur_input_blobs_[j]->ShareData(*bottom[i]); + } + } + for (int i = 0; i < output_blobs_.size(); ++i) { + top[i]->ReshapeLike(*output_blobs_[i]); + top[i]->ShareData(*output_blobs_[i]); + top[i]->ShareDiff(*output_blobs_[i]); + } + if (expose_hidden_) { + const int top_offset = output_blobs_.size(); + for (int i = top_offset, j = 0; i < top.size(); ++i, ++j) { + top[i]->ReshapeLike(*recur_output_blobs_[j]); + } + } +} + +template +void RecurrentLayer::Reset() { + // "Reset" the hidden state of the net by zeroing out all recurrent outputs. + for (int i = 0; i < recur_output_blobs_.size(); ++i) { + caffe_set(recur_output_blobs_[i]->count(), Dtype(0), + recur_output_blobs_[i]->mutable_cpu_data()); + } +} + +template +void RecurrentLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + // Hacky fix for test time: reshare all the internal shared blobs, which may + // currently point to a stale owner blob that was dropped when Solver::Test + // called test_net->ShareTrainedLayersWith(net_.get()). + // TODO: somehow make this work non-hackily. + if (this->phase_ == TEST) { + unrolled_net_->ShareWeights(); + } + + DCHECK_EQ(recur_input_blobs_.size(), recur_output_blobs_.size()); + if (!expose_hidden_) { + for (int i = 0; i < recur_input_blobs_.size(); ++i) { + const int count = recur_input_blobs_[i]->count(); + DCHECK_EQ(count, recur_output_blobs_[i]->count()); + const Dtype* timestep_T_data = recur_output_blobs_[i]->cpu_data(); + Dtype* timestep_0_data = recur_input_blobs_[i]->mutable_cpu_data(); + caffe_copy(count, timestep_T_data, timestep_0_data); + } + } + + unrolled_net_->ForwardTo(last_layer_index_); + + if (expose_hidden_) { + const int top_offset = output_blobs_.size(); + for (int i = top_offset, j = 0; i < top.size(); ++i, ++j) { + top[i]->ShareData(*recur_output_blobs_[j]); + } + } +} + +template +void RecurrentLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + CHECK(!propagate_down[1]) << "Cannot backpropagate to sequence indicators."; + + // TODO: skip backpropagation to inputs and parameters inside the unrolled + // net according to propagate_down[0] and propagate_down[2]. For now just + // backprop to inputs and parameters unconditionally, as either the inputs or + // the parameters do need backward (or Net would have set + // layer_needs_backward_[i] == false for this layer). + unrolled_net_->BackwardFrom(last_layer_index_); +} + +#ifdef CPU_ONLY +STUB_GPU_FORWARD(RecurrentLayer, Forward); +#endif + +INSTANTIATE_CLASS(RecurrentLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/recurrent_layer.cu b/3rdparty/caffe/src/caffe/layers/recurrent_layer.cu new file mode 100644 index 00000000..4dd2b0e2 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/recurrent_layer.cu @@ -0,0 +1,44 @@ +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void RecurrentLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + // Hacky fix for test time... reshare all the shared blobs. + // TODO: somehow make this work non-hackily. + if (this->phase_ == TEST) { + unrolled_net_->ShareWeights(); + } + + DCHECK_EQ(recur_input_blobs_.size(), recur_output_blobs_.size()); + if (!expose_hidden_) { + for (int i = 0; i < recur_input_blobs_.size(); ++i) { + const int count = recur_input_blobs_[i]->count(); + DCHECK_EQ(count, recur_output_blobs_[i]->count()); + const Dtype* timestep_T_data = recur_output_blobs_[i]->gpu_data(); + Dtype* timestep_0_data = recur_input_blobs_[i]->mutable_gpu_data(); + caffe_copy(count, timestep_T_data, timestep_0_data); + } + } + + unrolled_net_->ForwardTo(last_layer_index_); + + if (expose_hidden_) { + const int top_offset = output_blobs_.size(); + for (int i = top_offset, j = 0; i < top.size(); ++i, ++j) { + top[i]->ShareData(*recur_output_blobs_[j]); + } + } +} + +INSTANTIATE_LAYER_GPU_FORWARD(RecurrentLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/reduction_layer.cpp b/3rdparty/caffe/src/caffe/layers/reduction_layer.cpp new file mode 100644 index 00000000..fa46487e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/reduction_layer.cpp @@ -0,0 +1,129 @@ +#include + +#include "caffe/layers/reduction_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ReductionLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + op_ = this->layer_param_.reduction_param().operation(); +} + +template +void ReductionLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + axis_ = bottom[0]->CanonicalAxisIndex( + this->layer_param_.reduction_param().axis()); + // In the output, we'll keep all axes up to the reduction axis, but + // throw away any after that. + // Note: currently reducing along non-tail axes is not supported; otherwise, + // we'd need to also copy any axes following an "end_axis". + vector top_shape(bottom[0]->shape().begin(), + bottom[0]->shape().begin() + axis_); + top[0]->Reshape(top_shape); + num_ = bottom[0]->count(0, axis_); + dim_ = bottom[0]->count(axis_); + CHECK_EQ(num_, top[0]->count()); + if (op_ == ReductionParameter_ReductionOp_SUM || + op_ == ReductionParameter_ReductionOp_MEAN) { + vector sum_mult_shape(1, dim_); + sum_multiplier_.Reshape(sum_mult_shape); + caffe_set(dim_, Dtype(1), sum_multiplier_.mutable_cpu_data()); + } + coeff_ = this->layer_param().reduction_param().coeff(); + if (op_ == ReductionParameter_ReductionOp_MEAN) { + coeff_ /= dim_; + } +} + +template +void ReductionLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* mult_data = NULL; + if (sum_multiplier_.count() > 0) { + mult_data = sum_multiplier_.cpu_data(); + } + Dtype* top_data = top[0]->mutable_cpu_data(); + for (int i = 0; i < num_; ++i) { + switch (op_) { + case ReductionParameter_ReductionOp_SUM: + case ReductionParameter_ReductionOp_MEAN: + *top_data = caffe_cpu_dot(dim_, mult_data, bottom_data); + break; + case ReductionParameter_ReductionOp_ASUM: + *top_data = caffe_cpu_asum(dim_, bottom_data); + break; + case ReductionParameter_ReductionOp_SUMSQ: + *top_data = caffe_cpu_dot(dim_, bottom_data, bottom_data); + break; + default: + LOG(FATAL) << "Unknown reduction op: " + << ReductionParameter_ReductionOp_Name(op_); + } + bottom_data += dim_; + ++top_data; + } + if (coeff_ != Dtype(1)) { + // Reset the top_data pointer. + top_data = top[0]->mutable_cpu_data(); + caffe_scal(num_, coeff_, top_data); + } +} + +template +void ReductionLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + // Get bottom_data, if needed. + const Dtype* bottom_data = NULL; + switch (op_) { + // Operations that don't need bottom_data + case ReductionParameter_ReductionOp_SUM: + case ReductionParameter_ReductionOp_MEAN: + break; + // Operations that need bottom_data + case ReductionParameter_ReductionOp_ASUM: + case ReductionParameter_ReductionOp_SUMSQ: + bottom_data = bottom[0]->cpu_data(); + break; + default: + LOG(FATAL) << "Unknown reduction op: " + << ReductionParameter_ReductionOp_Name(op_); + } + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + for (int i = 0; i < num_; ++i) { + const Dtype bottom_coeff = (*top_diff) * coeff_; + switch (op_) { + case ReductionParameter_ReductionOp_SUM: + case ReductionParameter_ReductionOp_MEAN: + caffe_set(dim_, bottom_coeff, bottom_diff); + break; + case ReductionParameter_ReductionOp_ASUM: + caffe_cpu_sign(dim_, bottom_data, bottom_diff); + caffe_scal(dim_, bottom_coeff, bottom_diff); + break; + case ReductionParameter_ReductionOp_SUMSQ: + caffe_cpu_scale(dim_, 2 * bottom_coeff, bottom_data, bottom_diff); + break; + default: + LOG(FATAL) << "Unknown reduction op: " + << ReductionParameter_ReductionOp_Name(op_); + } + bottom_data += dim_; + bottom_diff += dim_; + ++top_diff; + } +} + +#ifdef CPU_ONLY +STUB_GPU(ReductionLayer); +#endif + +INSTANTIATE_CLASS(ReductionLayer); +REGISTER_LAYER_CLASS(Reduction); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/reduction_layer.cu b/3rdparty/caffe/src/caffe/layers/reduction_layer.cu new file mode 100644 index 00000000..4a6b2b73 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/reduction_layer.cu @@ -0,0 +1,91 @@ +#include + +#include "caffe/layers/reduction_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ReductionLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* mult_data = NULL; + if (sum_multiplier_.count() > 0) { + mult_data = sum_multiplier_.gpu_data(); + } + Dtype* top_data = top[0]->mutable_cpu_data(); + for (int i = 0; i < num_; ++i) { + switch (op_) { + case ReductionParameter_ReductionOp_SUM: + case ReductionParameter_ReductionOp_MEAN: + caffe_gpu_dot(dim_, mult_data, bottom_data, top_data); + break; + case ReductionParameter_ReductionOp_ASUM: + caffe_gpu_asum(dim_, bottom_data, top_data); + break; + case ReductionParameter_ReductionOp_SUMSQ: + caffe_gpu_dot(dim_, bottom_data, bottom_data, top_data); + break; + default: + LOG(FATAL) << "Unknown reduction op: " + << ReductionParameter_ReductionOp_Name(op_); + } + bottom_data += dim_; + ++top_data; + } + if (coeff_ != Dtype(1)) { + // Reset the top_data pointer. + top_data = top[0]->mutable_gpu_data(); + caffe_gpu_scal(num_, coeff_, top_data); + } +} + +template +void ReductionLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + // Get bottom_data, if needed. + const Dtype* bottom_data = NULL; + switch (op_) { + // Operations that don't need bottom_data + case ReductionParameter_ReductionOp_SUM: + case ReductionParameter_ReductionOp_MEAN: + break; + // Operations that need bottom_data + case ReductionParameter_ReductionOp_ASUM: + case ReductionParameter_ReductionOp_SUMSQ: + bottom_data = bottom[0]->gpu_data(); + break; + default: + LOG(FATAL) << "Unknown reduction op: " + << ReductionParameter_ReductionOp_Name(op_); + } + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + for (int i = 0; i < num_; ++i) { + const Dtype bottom_coeff = (*top_diff) * coeff_; + switch (op_) { + case ReductionParameter_ReductionOp_SUM: + case ReductionParameter_ReductionOp_MEAN: + caffe_gpu_set(dim_, bottom_coeff, bottom_diff); + break; + case ReductionParameter_ReductionOp_ASUM: + caffe_gpu_sign(dim_, bottom_data, bottom_diff); + caffe_gpu_scal(dim_, bottom_coeff, bottom_diff); + break; + case ReductionParameter_ReductionOp_SUMSQ: + caffe_gpu_scale(dim_, 2 * bottom_coeff, bottom_data, bottom_diff); + break; + default: + LOG(FATAL) << "Unknown reduction op: " + << ReductionParameter_ReductionOp_Name(op_); + } + bottom_data += dim_; + bottom_diff += dim_; + ++top_diff; + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ReductionLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/relu_layer.cpp b/3rdparty/caffe/src/caffe/layers/relu_layer.cpp new file mode 100644 index 00000000..92a729c8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/relu_layer.cpp @@ -0,0 +1,45 @@ +#include +#include + +#include "caffe/layers/relu_layer.hpp" + +namespace caffe { + +template +void ReLULayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + Dtype negative_slope = this->layer_param_.relu_param().negative_slope(); + for (int i = 0; i < count; ++i) { + top_data[i] = std::max(bottom_data[i], Dtype(0)) + + negative_slope * std::min(bottom_data[i], Dtype(0)); + } +} + +template +void ReLULayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int count = bottom[0]->count(); + Dtype negative_slope = this->layer_param_.relu_param().negative_slope(); + for (int i = 0; i < count; ++i) { + bottom_diff[i] = top_diff[i] * ((bottom_data[i] > 0) + + negative_slope * (bottom_data[i] <= 0)); + } + } +} + + +#ifdef CPU_ONLY +STUB_GPU(ReLULayer); +#endif + +INSTANTIATE_CLASS(ReLULayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/relu_layer.cu b/3rdparty/caffe/src/caffe/layers/relu_layer.cu new file mode 100644 index 00000000..4bf15b3a --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/relu_layer.cu @@ -0,0 +1,64 @@ +#include +#include + +#include "caffe/layers/relu_layer.hpp" + +namespace caffe { + +template +__global__ void ReLUForward(const int n, const Dtype* in, Dtype* out, + Dtype negative_slope) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = in[index] > 0 ? in[index] : in[index] * negative_slope; + } +} + +template +void ReLULayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + Dtype negative_slope = this->layer_param_.relu_param().negative_slope(); + // NOLINT_NEXT_LINE(whitespace/operators) + ReLUForward<<>>( + count, bottom_data, top_data, negative_slope); + CUDA_POST_KERNEL_CHECK; + // << " count: " << count << " bottom_data: " + // << (unsigned long)bottom_data + // << " top_data: " << (unsigned long)top_data + // << " blocks: " << CAFFE_GET_BLOCKS(count) + // << " threads: " << CAFFE_CUDA_NUM_THREADS; +} + +template +__global__ void ReLUBackward(const int n, const Dtype* in_diff, + const Dtype* in_data, Dtype* out_diff, Dtype negative_slope) { + CUDA_KERNEL_LOOP(index, n) { + out_diff[index] = in_diff[index] * ((in_data[index] > 0) + + (in_data[index] <= 0) * negative_slope); + } +} + +template +void ReLULayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + Dtype negative_slope = this->layer_param_.relu_param().negative_slope(); + // NOLINT_NEXT_LINE(whitespace/operators) + ReLUBackward<<>>( + count, top_diff, bottom_data, bottom_diff, negative_slope); + CUDA_POST_KERNEL_CHECK; + } +} + + +INSTANTIATE_LAYER_GPU_FUNCS(ReLULayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/reshape_layer.cpp b/3rdparty/caffe/src/caffe/layers/reshape_layer.cpp new file mode 100644 index 00000000..45dd0902 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/reshape_layer.cpp @@ -0,0 +1,96 @@ +#include + +#include "caffe/layers/reshape_layer.hpp" + +namespace caffe { + +template +void ReshapeLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not " + "allow in-place computation."; + inferred_axis_ = -1; + copy_axes_.clear(); + const BlobShape& top_blob_shape = this->layer_param_.reshape_param().shape(); + const int top_num_axes = top_blob_shape.dim_size(); + constant_count_ = 1; + for (int i = 0; i < top_num_axes; ++i) { + const int top_dim = top_blob_shape.dim(i); + if (top_dim == 0) { + copy_axes_.push_back(i); + } else if (top_dim == -1) { + CHECK_EQ(inferred_axis_, -1) << "new shape contains multiple " + << "-1 dims; at most a single (1) value of -1 may be specified"; + inferred_axis_ = i; + } else { + constant_count_ *= top_dim; + } + } +} + +template +void ReshapeLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const int input_start_axis = this->layer_param_.reshape_param().axis(); + const int start_axis = (input_start_axis >= 0) ? input_start_axis : + bottom[0]->num_axes() + input_start_axis + 1; + CHECK_GE(start_axis, 0) << "axis " << input_start_axis << " out of range"; + CHECK_LE(start_axis, bottom[0]->num_axes()) << "axis " << input_start_axis + << " out of range for " << bottom[0]->num_axes() << "-D input blob"; + const int num_axes = this->layer_param_.reshape_param().num_axes(); + CHECK_GE(num_axes, -1) << "num_axes must be >= 0, or -1 for all"; + const int end_axis = + (num_axes == -1) ? bottom[0]->num_axes() : (start_axis + num_axes); + CHECK_LE(end_axis, bottom[0]->num_axes()) + << "end_axis = axis + num_axes is out of range"; + const int num_axes_replaced = end_axis - start_axis; + const int num_axes_retained = bottom[0]->num_axes() - num_axes_replaced; + const BlobShape& top_blob_shape = this->layer_param_.reshape_param().shape(); + const int num_new_axes = top_blob_shape.dim_size(); + vector top_shape(num_axes_retained + num_new_axes); + int top_shape_index = 0; + for (int i = 0; i < start_axis; ++i) { + top_shape[top_shape_index++] = bottom[0]->shape(i); + } + for (int i = 0; i < num_new_axes; ++i) { + top_shape[top_shape_index++] = top_blob_shape.dim(i); + } + for (int i = end_axis; i < bottom[0]->num_axes(); ++i) { + top_shape[top_shape_index++] = bottom[0]->shape(i); + } + CHECK_EQ(top_shape_index, top_shape.size()); + for (int i = 0; i < copy_axes_.size(); ++i) { + const int copy_axis_index = copy_axes_[i]; + CHECK_GT(bottom[0]->num_axes(), start_axis + copy_axis_index) + << "new shape contains a 0, but there was no corresponding bottom axis " + << "to copy"; + top_shape[start_axis + copy_axis_index] = + bottom[0]->shape(start_axis + copy_axis_index); + } + if (inferred_axis_ >= 0) { + // A -1 dim was specified; infer the correct dimension by computing the + // product of the other dimensions. + int explicit_count = constant_count_; + explicit_count *= bottom[0]->count(0, start_axis); + explicit_count *= bottom[0]->count(end_axis); + for (int i = 0; i < copy_axes_.size(); ++i) { + const int copy_axis_index = copy_axes_[i]; + explicit_count *= top_shape[start_axis + copy_axis_index]; + } + CHECK_EQ(0, bottom[0]->count() % explicit_count) << "bottom count (" + << bottom[0]->count() << ") must be divisible by the product of " + << "the specified dimensions (" << explicit_count << ")"; + const int inferred_dim = bottom[0]->count() / explicit_count; + top_shape[start_axis + inferred_axis_] = inferred_dim; + } + top[0]->Reshape(top_shape); + CHECK_EQ(top[0]->count(), bottom[0]->count()) + << "output count must match input count"; + top[0]->ShareData(*bottom[0]); + top[0]->ShareDiff(*bottom[0]); +} + +INSTANTIATE_CLASS(ReshapeLayer); +REGISTER_LAYER_CLASS(Reshape); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/rnn_layer.cpp b/3rdparty/caffe/src/caffe/layers/rnn_layer.cpp new file mode 100644 index 00000000..8c2fa22e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/rnn_layer.cpp @@ -0,0 +1,236 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/rnn_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void RNNLayer::RecurrentInputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "h_0"; +} + +template +void RNNLayer::RecurrentOutputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "h_" + format_int(this->T_); +} + +template +void RNNLayer::RecurrentInputShapes(vector* shapes) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + shapes->resize(1); + (*shapes)[0].Clear(); + (*shapes)[0].add_dim(1); // a single timestep + (*shapes)[0].add_dim(this->N_); + (*shapes)[0].add_dim(num_output); +} + +template +void RNNLayer::OutputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "o"; +} + +template +void RNNLayer::FillUnrolledNet(NetParameter* net_param) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + CHECK_GT(num_output, 0) << "num_output must be positive"; + const FillerParameter& weight_filler = + this->layer_param_.recurrent_param().weight_filler(); + const FillerParameter& bias_filler = + this->layer_param_.recurrent_param().bias_filler(); + + // Add generic LayerParameter's (without bottoms/tops) of layer types we'll + // use to save redundant code. + LayerParameter hidden_param; + hidden_param.set_type("InnerProduct"); + hidden_param.mutable_inner_product_param()->set_num_output(num_output); + hidden_param.mutable_inner_product_param()->set_bias_term(false); + hidden_param.mutable_inner_product_param()->set_axis(2); + hidden_param.mutable_inner_product_param()-> + mutable_weight_filler()->CopyFrom(weight_filler); + + LayerParameter biased_hidden_param(hidden_param); + biased_hidden_param.mutable_inner_product_param()->set_bias_term(true); + biased_hidden_param.mutable_inner_product_param()-> + mutable_bias_filler()->CopyFrom(bias_filler); + + LayerParameter sum_param; + sum_param.set_type("Eltwise"); + sum_param.mutable_eltwise_param()->set_operation( + EltwiseParameter_EltwiseOp_SUM); + + LayerParameter tanh_param; + tanh_param.set_type("TanH"); + + LayerParameter scale_param; + scale_param.set_type("Scale"); + scale_param.mutable_scale_param()->set_axis(0); + + LayerParameter slice_param; + slice_param.set_type("Slice"); + slice_param.mutable_slice_param()->set_axis(0); + + vector input_shapes; + RecurrentInputShapes(&input_shapes); + CHECK_EQ(1, input_shapes.size()); + + LayerParameter* input_layer_param = net_param->add_layer(); + input_layer_param->set_type("Input"); + InputParameter* input_param = input_layer_param->mutable_input_param(); + input_layer_param->add_top("h_0"); + input_param->add_shape()->CopyFrom(input_shapes[0]); + + LayerParameter* cont_slice_param = net_param->add_layer(); + cont_slice_param->CopyFrom(slice_param); + cont_slice_param->set_name("cont_slice"); + cont_slice_param->add_bottom("cont"); + cont_slice_param->mutable_slice_param()->set_axis(0); + + // Add layer to transform all timesteps of x to the hidden state dimension. + // W_xh_x = W_xh * x + b_h + { + LayerParameter* x_transform_param = net_param->add_layer(); + x_transform_param->CopyFrom(biased_hidden_param); + x_transform_param->set_name("x_transform"); + x_transform_param->add_param()->set_name("W_xh"); + x_transform_param->add_param()->set_name("b_h"); + x_transform_param->add_bottom("x"); + x_transform_param->add_top("W_xh_x"); + x_transform_param->add_propagate_down(true); + } + + if (this->static_input_) { + // Add layer to transform x_static to the hidden state dimension. + // W_xh_x_static = W_xh_static * x_static + LayerParameter* x_static_transform_param = net_param->add_layer(); + x_static_transform_param->CopyFrom(hidden_param); + x_static_transform_param->mutable_inner_product_param()->set_axis(1); + x_static_transform_param->set_name("W_xh_x_static"); + x_static_transform_param->add_param()->set_name("W_xh_static"); + x_static_transform_param->add_bottom("x_static"); + x_static_transform_param->add_top("W_xh_x_static_preshape"); + x_static_transform_param->add_propagate_down(true); + + LayerParameter* reshape_param = net_param->add_layer(); + reshape_param->set_type("Reshape"); + BlobShape* new_shape = + reshape_param->mutable_reshape_param()->mutable_shape(); + new_shape->add_dim(1); // One timestep. + // Should infer this->N as the dimension so we can reshape on batch size. + new_shape->add_dim(-1); + new_shape->add_dim( + x_static_transform_param->inner_product_param().num_output()); + reshape_param->set_name("W_xh_x_static_reshape"); + reshape_param->add_bottom("W_xh_x_static_preshape"); + reshape_param->add_top("W_xh_x_static"); + } + + LayerParameter* x_slice_param = net_param->add_layer(); + x_slice_param->CopyFrom(slice_param); + x_slice_param->set_name("W_xh_x_slice"); + x_slice_param->add_bottom("W_xh_x"); + + LayerParameter output_concat_layer; + output_concat_layer.set_name("o_concat"); + output_concat_layer.set_type("Concat"); + output_concat_layer.add_top("o"); + output_concat_layer.mutable_concat_param()->set_axis(0); + + for (int t = 1; t <= this->T_; ++t) { + string tm1s = format_int(t - 1); + string ts = format_int(t); + + cont_slice_param->add_top("cont_" + ts); + x_slice_param->add_top("W_xh_x_" + ts); + + // Add layer to flush the hidden state when beginning a new sequence, + // as indicated by cont_t. + // h_conted_{t-1} := cont_t * h_{t-1} + // + // Normally, cont_t is binary (i.e., 0 or 1), so: + // h_conted_{t-1} := h_{t-1} if cont_t == 1 + // 0 otherwise + { + LayerParameter* cont_h_param = net_param->add_layer(); + cont_h_param->CopyFrom(scale_param); + cont_h_param->set_name("h_conted_" + tm1s); + cont_h_param->add_bottom("h_" + tm1s); + cont_h_param->add_bottom("cont_" + ts); + cont_h_param->add_top("h_conted_" + tm1s); + } + + // Add layer to compute + // W_hh_h_{t-1} := W_hh * h_conted_{t-1} + { + LayerParameter* w_param = net_param->add_layer(); + w_param->CopyFrom(hidden_param); + w_param->set_name("W_hh_h_" + tm1s); + w_param->add_param()->set_name("W_hh"); + w_param->add_bottom("h_conted_" + tm1s); + w_param->add_top("W_hh_h_" + tm1s); + w_param->mutable_inner_product_param()->set_axis(2); + } + + // Add layers to compute + // h_t := \tanh( W_hh * h_conted_{t-1} + W_xh * x_t + b_h ) + // = \tanh( W_hh_h_{t-1} + W_xh_t ) + { + LayerParameter* h_input_sum_param = net_param->add_layer(); + h_input_sum_param->CopyFrom(sum_param); + h_input_sum_param->set_name("h_input_sum_" + ts); + h_input_sum_param->add_bottom("W_hh_h_" + tm1s); + h_input_sum_param->add_bottom("W_xh_x_" + ts); + if (this->static_input_) { + h_input_sum_param->add_bottom("W_xh_x_static"); + } + h_input_sum_param->add_top("h_neuron_input_" + ts); + } + { + LayerParameter* h_neuron_param = net_param->add_layer(); + h_neuron_param->CopyFrom(tanh_param); + h_neuron_param->set_name("h_neuron_" + ts); + h_neuron_param->add_bottom("h_neuron_input_" + ts); + h_neuron_param->add_top("h_" + ts); + } + + // Add layer to compute + // W_ho_h_t := W_ho * h_t + b_o + { + LayerParameter* w_param = net_param->add_layer(); + w_param->CopyFrom(biased_hidden_param); + w_param->set_name("W_ho_h_" + ts); + w_param->add_param()->set_name("W_ho"); + w_param->add_param()->set_name("b_o"); + w_param->add_bottom("h_" + ts); + w_param->add_top("W_ho_h_" + ts); + w_param->mutable_inner_product_param()->set_axis(2); + } + + // Add layers to compute + // o_t := \tanh( W_ho * h_t + b_o) + // = \tanh( W_ho_h_t ) + { + LayerParameter* o_neuron_param = net_param->add_layer(); + o_neuron_param->CopyFrom(tanh_param); + o_neuron_param->set_name("o_neuron_" + ts); + o_neuron_param->add_bottom("W_ho_h_" + ts); + o_neuron_param->add_top("o_" + ts); + } + output_concat_layer.add_bottom("o_" + ts); + } // for (int t = 1; t <= this->T_; ++t) + + net_param->add_layer()->CopyFrom(output_concat_layer); +} + +INSTANTIATE_CLASS(RNNLayer); +REGISTER_LAYER_CLASS(RNN); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/scale_layer.cpp b/3rdparty/caffe/src/caffe/layers/scale_layer.cpp new file mode 100644 index 00000000..e652dad6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/scale_layer.cpp @@ -0,0 +1,227 @@ +#include +#include + +#include "caffe/filler.hpp" +#include "caffe/layer_factory.hpp" +#include "caffe/layers/scale_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ScaleLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const ScaleParameter& param = this->layer_param_.scale_param(); + if (bottom.size() == 1 && this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else if (bottom.size() == 1) { + // scale is a learned parameter; initialize it + axis_ = bottom[0]->CanonicalAxisIndex(param.axis()); + const int num_axes = param.num_axes(); + CHECK_GE(num_axes, -1) << "num_axes must be non-negative, " + << "or -1 to extend to the end of bottom[0]"; + if (num_axes >= 0) { + CHECK_GE(bottom[0]->num_axes(), axis_ + num_axes) + << "scale blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis_; + } + this->blobs_.resize(1); + const vector::const_iterator& shape_start = + bottom[0]->shape().begin() + axis_; + const vector::const_iterator& shape_end = + (num_axes == -1) ? bottom[0]->shape().end() : (shape_start + num_axes); + vector scale_shape(shape_start, shape_end); + this->blobs_[0].reset(new Blob(scale_shape)); + FillerParameter filler_param(param.filler()); + if (!param.has_filler()) { + // Default to unit (1) filler for identity operation. + filler_param.set_type("constant"); + filler_param.set_value(1); + } + shared_ptr > filler(GetFiller(filler_param)); + filler->Fill(this->blobs_[0].get()); + } + if (param.bias_term()) { + LayerParameter layer_param(this->layer_param_); + layer_param.set_type("Bias"); + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(param.axis()); + if (bottom.size() > 1) { + bias_param->set_num_axes(bottom[1]->num_axes()); + } else { + bias_param->set_num_axes(param.num_axes()); + } + bias_param->mutable_filler()->CopyFrom(param.bias_filler()); + bias_layer_ = LayerRegistry::CreateLayer(layer_param); + bias_bottom_vec_.resize(1); + bias_bottom_vec_[0] = bottom[0]; + bias_layer_->SetUp(bias_bottom_vec_, top); + if (this->blobs_.size() + bottom.size() < 3) { + // case: blobs.size == 1 && bottom.size == 1 + // or blobs.size == 0 && bottom.size == 2 + bias_param_id_ = this->blobs_.size(); + this->blobs_.resize(bias_param_id_ + 1); + this->blobs_[bias_param_id_] = bias_layer_->blobs()[0]; + } else { + // bias param already initialized + bias_param_id_ = this->blobs_.size() - 1; + bias_layer_->blobs()[0] = this->blobs_[bias_param_id_]; + } + bias_propagate_down_.resize(1, false); + } + this->param_propagate_down_.resize(this->blobs_.size(), true); +} + +template +void ScaleLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const ScaleParameter& param = this->layer_param_.scale_param(); + Blob* scale = (bottom.size() > 1) ? bottom[1] : this->blobs_[0].get(); + // Always set axis_ == 0 in special case where scale is a scalar + // (num_axes == 0). Mathematically equivalent for any choice of axis_, so the + // actual setting can be safely ignored; and computation is most efficient + // with axis_ == 0 and (therefore) outer_dim_ == 1. (Setting axis_ to + // bottom[0]->num_axes() - 1, giving inner_dim_ == 1, would be equally + // performant.) + axis_ = (scale->num_axes() == 0) ? + 0 : bottom[0]->CanonicalAxisIndex(param.axis()); + CHECK_GE(bottom[0]->num_axes(), axis_ + scale->num_axes()) + << "scale blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis_; + for (int i = 0; i < scale->num_axes(); ++i) { + CHECK_EQ(bottom[0]->shape(axis_ + i), scale->shape(i)) + << "dimension mismatch between bottom[0]->shape(" << axis_ + i + << ") and scale->shape(" << i << ")"; + } + outer_dim_ = bottom[0]->count(0, axis_); + scale_dim_ = scale->count(); + inner_dim_ = bottom[0]->count(axis_ + scale->num_axes()); + if (bottom[0] == top[0]) { // in-place computation + temp_.ReshapeLike(*bottom[0]); + } else { + top[0]->ReshapeLike(*bottom[0]); + } + sum_result_.Reshape(vector(1, outer_dim_ * scale_dim_)); + const int sum_mult_size = std::max(outer_dim_, inner_dim_); + sum_multiplier_.Reshape(vector(1, sum_mult_size)); + if (sum_multiplier_.cpu_data()[sum_mult_size - 1] != Dtype(1)) { + caffe_set(sum_mult_size, Dtype(1), sum_multiplier_.mutable_cpu_data()); + } + if (bias_layer_) { + bias_bottom_vec_[0] = top[0]; + bias_layer_->Reshape(bias_bottom_vec_, top); + } +} + +template +void ScaleLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + if (bottom[0] == top[0]) { + // In-place computation; need to store bottom data before overwriting it. + // Note that this is only necessary for Backward; we could skip this if not + // doing Backward, but Caffe currently provides no way of knowing whether + // we'll need to do Backward at the time of the Forward call. + caffe_copy(bottom[0]->count(), bottom[0]->cpu_data(), + temp_.mutable_cpu_data()); + } + const Dtype* scale_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + for (int n = 0; n < outer_dim_; ++n) { + for (int d = 0; d < scale_dim_; ++d) { + const Dtype factor = scale_data[d]; + caffe_cpu_scale(inner_dim_, factor, bottom_data, top_data); + bottom_data += inner_dim_; + top_data += inner_dim_; + } + } + if (bias_layer_) { + bias_layer_->Forward(bias_bottom_vec_, top); + } +} + +template +void ScaleLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (bias_layer_ && + this->param_propagate_down_[this->param_propagate_down_.size() - 1]) { + bias_layer_->Backward(top, bias_propagate_down_, bias_bottom_vec_); + } + const bool scale_param = (bottom.size() == 1); + Blob* scale = scale_param ? this->blobs_[0].get() : bottom[1]; + if ((!scale_param && propagate_down[1]) || + (scale_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->cpu_diff(); + const bool in_place = (bottom[0] == top[0]); + const Dtype* bottom_data = (in_place ? &temp_ : bottom[0])->cpu_data(); + // Hack: store big eltwise product in bottom[0] diff, except in the special + // case where this layer itself does the eltwise product, in which case we + // can store it directly in the scale diff, and we're done. + // If we're computing in-place (and not doing eltwise computation), this + // hack doesn't work and we store the product in temp_. + const bool is_eltwise = (bottom[0]->count() == scale->count()); + Dtype* product = (is_eltwise ? scale->mutable_cpu_diff() : + (in_place ? temp_.mutable_cpu_data() : bottom[0]->mutable_cpu_diff())); + caffe_mul(top[0]->count(), top_diff, bottom_data, product); + if (!is_eltwise) { + Dtype* sum_result = NULL; + if (inner_dim_ == 1) { + sum_result = product; + } else if (sum_result_.count() == 1) { + const Dtype* sum_mult = sum_multiplier_.cpu_data(); + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_param) { + Dtype result = caffe_cpu_dot(inner_dim_, product, sum_mult); + *scale_diff += result; + } else { + *scale_diff = caffe_cpu_dot(inner_dim_, product, sum_mult); + } + } else { + const Dtype* sum_mult = sum_multiplier_.cpu_data(); + sum_result = (outer_dim_ == 1) ? + scale->mutable_cpu_diff() : sum_result_.mutable_cpu_data(); + caffe_cpu_gemv(CblasNoTrans, sum_result_.count(), inner_dim_, + Dtype(1), product, sum_mult, Dtype(0), sum_result); + } + if (outer_dim_ != 1) { + const Dtype* sum_mult = sum_multiplier_.cpu_data(); + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_dim_ == 1) { + if (scale_param) { + Dtype result = caffe_cpu_dot(outer_dim_, sum_mult, sum_result); + *scale_diff += result; + } else { + *scale_diff = caffe_cpu_dot(outer_dim_, sum_mult, sum_result); + } + } else { + caffe_cpu_gemv(CblasTrans, outer_dim_, scale_dim_, + Dtype(1), sum_result, sum_mult, Dtype(scale_param), + scale_diff); + } + } + } + } + if (propagate_down[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* scale_data = scale->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + for (int n = 0; n < outer_dim_; ++n) { + for (int d = 0; d < scale_dim_; ++d) { + const Dtype factor = scale_data[d]; + caffe_cpu_scale(inner_dim_, factor, top_diff, bottom_diff); + bottom_diff += inner_dim_; + top_diff += inner_dim_; + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(ScaleLayer); +#endif + +INSTANTIATE_CLASS(ScaleLayer); +REGISTER_LAYER_CLASS(Scale); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/scale_layer.cu b/3rdparty/caffe/src/caffe/layers/scale_layer.cu new file mode 100644 index 00000000..fc9a8064 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/scale_layer.cu @@ -0,0 +1,135 @@ +#include +#include + +#include "caffe/layers/scale_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void ScaleForward(const int n, const Dtype* in, + const Dtype* scale, const int scale_dim, const int inner_dim, + Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + const int scale_index = (index / inner_dim) % scale_dim; + out[index] = in[index] * scale[scale_index]; + } +} + +template +__global__ void ScaleBiasForward(const int n, const Dtype* in, + const Dtype* scale, const Dtype* bias, + const int scale_dim, const int inner_dim, Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + const int scale_index = (index / inner_dim) % scale_dim; + out[index] = in[index] * scale[scale_index] + bias[scale_index]; + } +} + +template +void ScaleLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + const int count = top[0]->count(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + if (bottom[0] == top[0]) { + // in-place computation; need to store bottom data before overwriting it. + // Note that this is only necessary for Backward; we could skip this if not + // doing Backward, but Caffe currently provides no way of knowing whether + // we'll need to do Backward at the time of the Forward call. + caffe_copy(bottom[0]->count(), bottom[0]->gpu_data(), + temp_.mutable_gpu_data()); + } + const Dtype* scale_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + if (bias_layer_) { + const Dtype* bias_data = this->blobs_[bias_param_id_]->gpu_data(); + ScaleBiasForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, bottom_data, scale_data, bias_data, scale_dim_, inner_dim_, + top_data); + } else { + ScaleForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, bottom_data, scale_data, scale_dim_, inner_dim_, top_data); + } +} + +template +void ScaleLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (bias_layer_ && + this->param_propagate_down_[this->param_propagate_down_.size() - 1]) { + bias_layer_->Backward(top, bias_propagate_down_, bias_bottom_vec_); + } + const bool scale_param = (bottom.size() == 1); + Blob* scale = scale_param ? this->blobs_[0].get() : bottom[1]; + if ((!scale_param && propagate_down[1]) || + (scale_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->gpu_diff(); + const bool in_place = (bottom[0] == top[0]); + const Dtype* bottom_data = (in_place ? &temp_ : bottom[0])->gpu_data(); + // Hack: store big eltwise product in bottom[0] diff, except in the special + // case where this layer itself does the eltwise product, in which case we + // can store it directly in the scale diff, and we're done. + // If we're computing in-place (and not doing eltwise computation), this + // hack doesn't work and we store the product in temp_. + const bool is_eltwise = (bottom[0]->count() == scale->count()); + Dtype* product = (is_eltwise ? scale->mutable_gpu_diff() : + (in_place ? temp_.mutable_gpu_data() : bottom[0]->mutable_gpu_diff())); + caffe_gpu_mul(top[0]->count(), top_diff, bottom_data, product); + if (!is_eltwise) { + Dtype* sum_result = NULL; + if (inner_dim_ == 1) { + sum_result = product; + } else if (sum_result_.count() == 1) { + const Dtype* sum_mult = sum_multiplier_.gpu_data(); + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_param) { + Dtype result; + caffe_gpu_dot(inner_dim_, product, sum_mult, &result); + *scale_diff += result; + } else { + caffe_gpu_dot(inner_dim_, product, sum_mult, scale_diff); + } + } else { + const Dtype* sum_mult = sum_multiplier_.gpu_data(); + sum_result = (outer_dim_ == 1) ? + scale->mutable_gpu_diff() : sum_result_.mutable_gpu_data(); + caffe_gpu_gemv(CblasNoTrans, sum_result_.count(), inner_dim_, + Dtype(1), product, sum_mult, Dtype(0), sum_result); + } + if (outer_dim_ != 1) { + const Dtype* sum_mult = sum_multiplier_.gpu_data(); + if (scale_dim_ == 1) { + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_param) { + Dtype result; + caffe_gpu_dot(outer_dim_, sum_mult, sum_result, &result); + *scale_diff += result; + } else { + caffe_gpu_dot(outer_dim_, sum_mult, sum_result, scale_diff); + } + } else { + Dtype* scale_diff = scale->mutable_gpu_diff(); + caffe_gpu_gemv(CblasTrans, outer_dim_, scale_dim_, + Dtype(1), sum_result, sum_mult, Dtype(scale_param), + scale_diff); + } + } + } + } + if (propagate_down[0]) { + const int count = top[0]->count(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* scale_data = scale->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + ScaleForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, top_diff, scale_data, scale_dim_, inner_dim_, bottom_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ScaleLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp new file mode 100644 index 00000000..99fa3eb6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp @@ -0,0 +1,140 @@ +#include +#include + +#include "caffe/layers/sigmoid_cross_entropy_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SigmoidCrossEntropyLossLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + LossLayer::LayerSetUp(bottom, top); + sigmoid_bottom_vec_.clear(); + sigmoid_bottom_vec_.push_back(bottom[0]); + sigmoid_top_vec_.clear(); + sigmoid_top_vec_.push_back(sigmoid_output_.get()); + sigmoid_layer_->SetUp(sigmoid_bottom_vec_, sigmoid_top_vec_); + + has_ignore_label_ = + this->layer_param_.loss_param().has_ignore_label(); + if (has_ignore_label_) { + ignore_label_ = this->layer_param_.loss_param().ignore_label(); + } + if (this->layer_param_.loss_param().has_normalization()) { + normalization_ = this->layer_param_.loss_param().normalization(); + } else if (this->layer_param_.loss_param().has_normalize()) { + normalization_ = this->layer_param_.loss_param().normalize() ? + LossParameter_NormalizationMode_VALID : + LossParameter_NormalizationMode_BATCH_SIZE; + } else { + normalization_ = LossParameter_NormalizationMode_BATCH_SIZE; + } +} + +template +void SigmoidCrossEntropyLossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + LossLayer::Reshape(bottom, top); + outer_num_ = bottom[0]->shape(0); // batch size + inner_num_ = bottom[0]->count(1); // instance size: |output| == |target| + CHECK_EQ(bottom[0]->count(), bottom[1]->count()) << + "SIGMOID_CROSS_ENTROPY_LOSS layer inputs must have the same count."; + sigmoid_layer_->Reshape(sigmoid_bottom_vec_, sigmoid_top_vec_); +} + +// TODO(shelhamer) loss normalization should be pulled up into LossLayer, +// instead of duplicated here and in SoftMaxWithLossLayer +template +Dtype SigmoidCrossEntropyLossLayer::get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count) { + Dtype normalizer; + switch (normalization_mode) { + case LossParameter_NormalizationMode_FULL: + normalizer = Dtype(outer_num_ * inner_num_); + break; + case LossParameter_NormalizationMode_VALID: + if (valid_count == -1) { + normalizer = Dtype(outer_num_ * inner_num_); + } else { + normalizer = Dtype(valid_count); + } + break; + case LossParameter_NormalizationMode_BATCH_SIZE: + normalizer = Dtype(outer_num_); + break; + case LossParameter_NormalizationMode_NONE: + normalizer = Dtype(1); + break; + default: + LOG(FATAL) << "Unknown normalization mode: " + << LossParameter_NormalizationMode_Name(normalization_mode); + } + // Some users will have no labels for some examples in order to 'turn off' a + // particular loss in a multi-task setup. The max prevents NaNs in that case. + return std::max(Dtype(1.0), normalizer); +} + +template +void SigmoidCrossEntropyLossLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + // The forward pass computes the sigmoid outputs. + sigmoid_bottom_vec_[0] = bottom[0]; + sigmoid_layer_->Forward(sigmoid_bottom_vec_, sigmoid_top_vec_); + // Compute the loss (negative log likelihood) + // Stable version of loss computation from input data + const Dtype* input_data = bottom[0]->cpu_data(); + const Dtype* target = bottom[1]->cpu_data(); + int valid_count = 0; + Dtype loss = 0; + for (int i = 0; i < bottom[0]->count(); ++i) { + const int target_value = static_cast(target[i]); + if (has_ignore_label_ && target_value == ignore_label_) { + continue; + } + loss -= input_data[i] * (target[i] - (input_data[i] >= 0)) - + log(1 + exp(input_data[i] - 2 * input_data[i] * (input_data[i] >= 0))); + ++valid_count; + } + normalizer_ = get_normalizer(normalization_, valid_count); + top[0]->mutable_cpu_data()[0] = loss / normalizer_; +} + +template +void SigmoidCrossEntropyLossLayer::Backward_cpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + // First, compute the diff + const int count = bottom[0]->count(); + const Dtype* sigmoid_output_data = sigmoid_output_->cpu_data(); + const Dtype* target = bottom[1]->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_sub(count, sigmoid_output_data, target, bottom_diff); + // Zero out gradient of ignored targets. + if (has_ignore_label_) { + for (int i = 0; i < count; ++i) { + const int target_value = static_cast(target[i]); + if (target_value == ignore_label_) { + bottom_diff[i] = 0; + } + } + } + // Scale down gradient + Dtype loss_weight = top[0]->cpu_diff()[0] / normalizer_; + caffe_scal(count, loss_weight, bottom_diff); + } +} + +#ifdef CPU_ONLY +STUB_GPU(SigmoidCrossEntropyLossLayer); +#endif + +INSTANTIATE_CLASS(SigmoidCrossEntropyLossLayer); +REGISTER_LAYER_CLASS(SigmoidCrossEntropyLoss); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu b/3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu new file mode 100644 index 00000000..b9877e6a --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu @@ -0,0 +1,104 @@ +#include + +#include "caffe/layers/sigmoid_cross_entropy_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + + +template +__global__ void SigmoidCrossEntropyLossForwardGPU(const int nthreads, + const Dtype* input_data, const Dtype* target, Dtype* loss, + const bool has_ignore_label_, const int ignore_label_, + Dtype* counts) { + CUDA_KERNEL_LOOP(i, nthreads) { + const int target_value = static_cast(target[i]); + if (has_ignore_label_ && target_value == ignore_label_) { + loss[i] = 0; + counts[i] = 0; + } else { + loss[i] = input_data[i] * (target[i] - (input_data[i] >= 0)) - + log(1 + exp(input_data[i] - 2 * input_data[i] * + (input_data[i] >= 0))); + counts[i] = 1; + } + } +} + +template +__global__ void SigmoidCrossEntropyLossIgnoreDiffGPU(const int count, + const int ignore_label, const Dtype* target, Dtype* diff) { + CUDA_KERNEL_LOOP(i, count) { + const int target_value = static_cast(target[i]); + if (target_value == ignore_label) { + diff[i] = 0; + } + } +} + + +template +void SigmoidCrossEntropyLossLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + // The forward pass computes the sigmoid outputs. + sigmoid_bottom_vec_[0] = bottom[0]; + sigmoid_layer_->Forward(sigmoid_bottom_vec_, sigmoid_top_vec_); + // Compute the loss (negative log likelihood) + const int count = bottom[0]->count(); + // Stable version of loss computation from input data + const Dtype* input_data = bottom[0]->gpu_data(); + const Dtype* target = bottom[1]->gpu_data(); + // Since this memory is not used for anything until it is overwritten + // on the backward pass, we use it here to avoid having to allocate new GPU + // memory to accumulate intermediate results in the kernel. + Dtype* loss_data = bottom[0]->mutable_gpu_diff(); + Dtype* count_data = bottom[1]->mutable_gpu_diff(); + Dtype valid_count; + // NOLINT_NEXT_LINE(whitespace/operators) + SigmoidCrossEntropyLossForwardGPU<<>>(count, input_data, target, loss_data, + has_ignore_label_, ignore_label_, count_data); + // Only launch another CUDA kernel if we actually need the valid count. + if (normalization_ == LossParameter_NormalizationMode_VALID && + has_ignore_label_) { + caffe_gpu_asum(count, count_data, &valid_count); + } else { + valid_count = count; + } + Dtype loss; + caffe_gpu_asum(count, loss_data, &loss); + normalizer_ = get_normalizer(normalization_, valid_count); + top[0]->mutable_cpu_data()[0] = loss / normalizer_; +} + +template +void SigmoidCrossEntropyLossLayer::Backward_gpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + // First, compute the diff + const int count = bottom[0]->count(); + const Dtype* sigmoid_output_data = sigmoid_output_->gpu_data(); + const Dtype* target = bottom[1]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + caffe_copy(count, sigmoid_output_data, bottom_diff); + caffe_gpu_axpy(count, Dtype(-1), target, bottom_diff); + // Zero out gradient of ignored targets. + if (has_ignore_label_) { + // NOLINT_NEXT_LINE(whitespace/operators) + SigmoidCrossEntropyLossIgnoreDiffGPU<<>>(count, ignore_label_, target, bottom_diff); + } + // Scale down gradient + Dtype loss_weight = top[0]->cpu_diff()[0] / normalizer_; + caffe_gpu_scal(count, loss_weight, bottom_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(SigmoidCrossEntropyLossLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/sigmoid_layer.cpp b/3rdparty/caffe/src/caffe/layers/sigmoid_layer.cpp new file mode 100644 index 00000000..f8aa769a --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/sigmoid_layer.cpp @@ -0,0 +1,47 @@ +#include +#include + +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +template +inline Dtype sigmoid(Dtype x) { + return 0.5 * tanh(0.5 * x) + 0.5; +} + +template +void SigmoidLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + top_data[i] = sigmoid(bottom_data[i]); + } +} + +template +void SigmoidLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + const Dtype sigmoid_x = top_data[i]; + bottom_diff[i] = top_diff[i] * sigmoid_x * (1. - sigmoid_x); + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(SigmoidLayer); +#endif + +INSTANTIATE_CLASS(SigmoidLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/sigmoid_layer.cu b/3rdparty/caffe/src/caffe/layers/sigmoid_layer.cu new file mode 100644 index 00000000..8a4ea661 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/sigmoid_layer.cu @@ -0,0 +1,60 @@ +#include +#include + +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +template +__global__ void SigmoidForward(const int n, const Dtype* in, Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = 0.5 * tanh(0.5 * in[index]) + 0.5; + } +} + +template +void SigmoidLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + SigmoidForward<<>>( + count, bottom_data, top_data); + CUDA_POST_KERNEL_CHECK; + // << " count: " << count << " bottom_data: " + // << (unsigned long)bottom_data + // << " top_data: " << (unsigned long)top_data + // << " blocks: " << CAFFE_GET_BLOCKS(count) + // << " threads: " << CAFFE_CUDA_NUM_THREADS; +} + +template +__global__ void SigmoidBackward(const int n, const Dtype* in_diff, + const Dtype* out_data, Dtype* out_diff) { + CUDA_KERNEL_LOOP(index, n) { + const Dtype sigmoid_x = out_data[index]; + out_diff[index] = in_diff[index] * sigmoid_x * (1 - sigmoid_x); + } +} + +template +void SigmoidLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + SigmoidBackward<<>>( + count, top_diff, top_data, bottom_diff); + CUDA_POST_KERNEL_CHECK; + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(SigmoidLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/silence_layer.cpp b/3rdparty/caffe/src/caffe/layers/silence_layer.cpp new file mode 100644 index 00000000..b2f85c52 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/silence_layer.cpp @@ -0,0 +1,26 @@ +#include + +#include "caffe/layers/silence_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SilenceLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + for (int i = 0; i < bottom.size(); ++i) { + if (propagate_down[i]) { + caffe_set(bottom[i]->count(), Dtype(0), + bottom[i]->mutable_cpu_diff()); + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(SilenceLayer); +#endif + +INSTANTIATE_CLASS(SilenceLayer); +REGISTER_LAYER_CLASS(Silence); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/silence_layer.cu b/3rdparty/caffe/src/caffe/layers/silence_layer.cu new file mode 100644 index 00000000..3494f6f6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/silence_layer.cu @@ -0,0 +1,27 @@ +#include + +#include "caffe/layers/silence_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SilenceLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + // Do nothing. +} + +template +void SilenceLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + for (int i = 0; i < bottom.size(); ++i) { + if (propagate_down[i]) { + caffe_gpu_set(bottom[i]->count(), Dtype(0), + bottom[i]->mutable_gpu_diff()); + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(SilenceLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/slice_layer.cpp b/3rdparty/caffe/src/caffe/layers/slice_layer.cpp new file mode 100644 index 00000000..759beafe --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/slice_layer.cpp @@ -0,0 +1,124 @@ +#include +#include + +#include "caffe/layers/slice_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SliceLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const SliceParameter& slice_param = this->layer_param_.slice_param(); + CHECK(!(slice_param.has_axis() && slice_param.has_slice_dim())) + << "Either axis or slice_dim should be specified; not both."; + slice_point_.clear(); + std::copy(slice_param.slice_point().begin(), + slice_param.slice_point().end(), + std::back_inserter(slice_point_)); +} + +template +void SliceLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const int num_axes = bottom[0]->num_axes(); + const SliceParameter& slice_param = this->layer_param_.slice_param(); + if (slice_param.has_slice_dim()) { + slice_axis_ = static_cast(slice_param.slice_dim()); + // Don't allow negative indexing for slice_dim, a uint32 -- almost + // certainly unintended. + CHECK_GE(slice_axis_, 0) << "casting slice_dim from uint32 to int32 " + << "produced negative result; slice_dim must satisfy " + << "0 <= slice_dim < " << kMaxBlobAxes; + CHECK_LT(slice_axis_, num_axes) << "slice_dim out of range."; + } else { + slice_axis_ = bottom[0]->CanonicalAxisIndex(slice_param.axis()); + } + vector top_shape = bottom[0]->shape(); + const int bottom_slice_axis = bottom[0]->shape(slice_axis_); + num_slices_ = bottom[0]->count(0, slice_axis_); + slice_size_ = bottom[0]->count(slice_axis_ + 1); + int count = 0; + if (slice_point_.size() != 0) { + CHECK_EQ(slice_point_.size(), top.size() - 1); + CHECK_LE(top.size(), bottom_slice_axis); + int prev = 0; + vector slices; + for (int i = 0; i < slice_point_.size(); ++i) { + CHECK_GT(slice_point_[i], prev); + slices.push_back(slice_point_[i] - prev); + prev = slice_point_[i]; + } + slices.push_back(bottom_slice_axis - prev); + for (int i = 0; i < top.size(); ++i) { + top_shape[slice_axis_] = slices[i]; + top[i]->Reshape(top_shape); + count += top[i]->count(); + } + } else { + CHECK_EQ(bottom_slice_axis % top.size(), 0) + << "Number of top blobs (" << top.size() << ") should evenly " + << "divide input slice axis (" << bottom_slice_axis << ")"; + top_shape[slice_axis_] = bottom_slice_axis / top.size(); + for (int i = 0; i < top.size(); ++i) { + top[i]->Reshape(top_shape); + count += top[i]->count(); + } + } + CHECK_EQ(count, bottom[0]->count()); + if (top.size() == 1) { + top[0]->ShareData(*bottom[0]); + top[0]->ShareDiff(*bottom[0]); + } +} + +template +void SliceLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + if (top.size() == 1) { return; } + int offset_slice_axis = 0; + const Dtype* bottom_data = bottom[0]->cpu_data(); + const int bottom_slice_axis = bottom[0]->shape(slice_axis_); + for (int i = 0; i < top.size(); ++i) { + Dtype* top_data = top[i]->mutable_cpu_data(); + const int top_slice_axis = top[i]->shape(slice_axis_); + for (int n = 0; n < num_slices_; ++n) { + const int top_offset = n * top_slice_axis * slice_size_; + const int bottom_offset = + (n * bottom_slice_axis + offset_slice_axis) * slice_size_; + caffe_copy(top_slice_axis * slice_size_, + bottom_data + bottom_offset, top_data + top_offset); + } + offset_slice_axis += top_slice_axis; + } +} + +template +void SliceLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0] || top.size() == 1) { return; } + int offset_slice_axis = 0; + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int bottom_slice_axis = bottom[0]->shape(slice_axis_); + for (int i = 0; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->cpu_diff(); + const int top_slice_axis = top[i]->shape(slice_axis_); + for (int n = 0; n < num_slices_; ++n) { + const int top_offset = n * top_slice_axis * slice_size_; + const int bottom_offset = + (n * bottom_slice_axis + offset_slice_axis) * slice_size_; + caffe_copy(top_slice_axis * slice_size_, + top_diff + top_offset, bottom_diff + bottom_offset); + } + offset_slice_axis += top_slice_axis; + } +} + +#ifdef CPU_ONLY +STUB_GPU(SliceLayer); +#endif + +INSTANTIATE_CLASS(SliceLayer); +REGISTER_LAYER_CLASS(Slice); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/slice_layer.cu b/3rdparty/caffe/src/caffe/layers/slice_layer.cu new file mode 100644 index 00000000..1be3a797 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/slice_layer.cu @@ -0,0 +1,71 @@ +#include + +#include "caffe/layers/slice_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void Slice(const int nthreads, const Dtype* in_data, + const bool forward, const int num_slices, const int slice_size, + const int bottom_slice_axis, const int top_slice_axis, + const int offset_slice_axis, Dtype* out_data) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int total_slice_size = slice_size * top_slice_axis; + const int slice_num = index / total_slice_size; + const int slice_index = index % total_slice_size; + const int bottom_index = slice_index + + (slice_num * bottom_slice_axis + offset_slice_axis) * slice_size; + if (forward) { + out_data[index] = in_data[bottom_index]; + } else { + out_data[bottom_index] = in_data[index]; + } + } +} + +template +void SliceLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + if (top.size() == 1) { return; } + int offset_slice_axis = 0; + const Dtype* bottom_data = bottom[0]->gpu_data(); + const int bottom_slice_axis = bottom[0]->shape(slice_axis_); + const bool kForward = true; + for (int i = 0; i < top.size(); ++i) { + Dtype* top_data = top[i]->mutable_gpu_data(); + const int top_slice_axis = top[i]->shape(slice_axis_); + const int top_slice_size = top_slice_axis * slice_size_; + const int nthreads = top_slice_size * num_slices_; + Slice // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + nthreads, bottom_data, kForward, num_slices_, slice_size_, + bottom_slice_axis, top_slice_axis, offset_slice_axis, top_data); + offset_slice_axis += top_slice_axis; + } +} + +template +void SliceLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0] || top.size() == 1) { return; } + int offset_slice_axis = 0; + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int bottom_slice_axis = bottom[0]->shape(slice_axis_); + const bool kForward = false; + for (int i = 0; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->gpu_diff(); + const int top_slice_axis = top[i]->shape(slice_axis_); + const int top_slice_size = top_slice_axis * slice_size_; + const int nthreads = top_slice_size * num_slices_; + Slice // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + nthreads, top_diff, kForward, num_slices_, slice_size_, + bottom_slice_axis, top_slice_axis, offset_slice_axis, bottom_diff); + offset_slice_axis += top_slice_axis; + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(SliceLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/softmax_layer.cpp b/3rdparty/caffe/src/caffe/layers/softmax_layer.cpp new file mode 100644 index 00000000..f60e9b03 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/softmax_layer.cpp @@ -0,0 +1,95 @@ +#include +#include + +#include "caffe/layers/softmax_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SoftmaxLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + softmax_axis_ = + bottom[0]->CanonicalAxisIndex(this->layer_param_.softmax_param().axis()); + top[0]->ReshapeLike(*bottom[0]); + vector mult_dims(1, bottom[0]->shape(softmax_axis_)); + sum_multiplier_.Reshape(mult_dims); + Dtype* multiplier_data = sum_multiplier_.mutable_cpu_data(); + caffe_set(sum_multiplier_.count(), Dtype(1), multiplier_data); + outer_num_ = bottom[0]->count(0, softmax_axis_); + inner_num_ = bottom[0]->count(softmax_axis_ + 1); + vector scale_dims = bottom[0]->shape(); + scale_dims[softmax_axis_] = 1; + scale_.Reshape(scale_dims); +} + +template +void SoftmaxLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + Dtype* scale_data = scale_.mutable_cpu_data(); + int channels = bottom[0]->shape(softmax_axis_); + int dim = bottom[0]->count() / outer_num_; + caffe_copy(bottom[0]->count(), bottom_data, top_data); + // We need to subtract the max to avoid numerical issues, compute the exp, + // and then normalize. + for (int i = 0; i < outer_num_; ++i) { + // initialize scale_data to the first plane + caffe_copy(inner_num_, bottom_data + i * dim, scale_data); + for (int j = 0; j < channels; j++) { + for (int k = 0; k < inner_num_; k++) { + scale_data[k] = std::max(scale_data[k], + bottom_data[i * dim + j * inner_num_ + k]); + } + } + // subtraction + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels, inner_num_, + 1, -1., sum_multiplier_.cpu_data(), scale_data, 1., top_data); + // exponentiation + caffe_exp(dim, top_data, top_data); + // sum after exp + caffe_cpu_gemv(CblasTrans, channels, inner_num_, 1., + top_data, sum_multiplier_.cpu_data(), 0., scale_data); + // division + for (int j = 0; j < channels; j++) { + caffe_div(inner_num_, top_data, scale_data, top_data); + top_data += inner_num_; + } + } +} + +template +void SoftmaxLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* top_data = top[0]->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + Dtype* scale_data = scale_.mutable_cpu_data(); + int channels = top[0]->shape(softmax_axis_); + int dim = top[0]->count() / outer_num_; + caffe_copy(top[0]->count(), top_diff, bottom_diff); + for (int i = 0; i < outer_num_; ++i) { + // compute dot(top_diff, top_data) and subtract them from the bottom diff + for (int k = 0; k < inner_num_; ++k) { + scale_data[k] = caffe_cpu_strided_dot(channels, + bottom_diff + i * dim + k, inner_num_, + top_data + i * dim + k, inner_num_); + } + // subtraction + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels, inner_num_, 1, + -1., sum_multiplier_.cpu_data(), scale_data, 1., bottom_diff + i * dim); + } + // elementwise multiplication + caffe_mul(top[0]->count(), bottom_diff, top_data, bottom_diff); +} + + +#ifdef CPU_ONLY +STUB_GPU(SoftmaxLayer); +#endif + +INSTANTIATE_CLASS(SoftmaxLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/softmax_layer.cu b/3rdparty/caffe/src/caffe/layers/softmax_layer.cu new file mode 100644 index 00000000..7a9e6833 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/softmax_layer.cu @@ -0,0 +1,148 @@ +#include +#include +#include + +#include "thrust/device_vector.h" + +#include "caffe/layers/softmax_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void kernel_channel_max(const int num, const int channels, + const int spatial_dim, const Dtype* data, Dtype* out) { + CUDA_KERNEL_LOOP(index, num * spatial_dim) { + int n = index / spatial_dim; + int s = index % spatial_dim; + Dtype maxval = -FLT_MAX; + for (int c = 0; c < channels; ++c) { + maxval = max(data[(n * channels + c) * spatial_dim + s], maxval); + } + out[index] = maxval; + } +} + +template +__global__ void kernel_channel_subtract(const int count, + const int num, const int channels, + const int spatial_dim, const Dtype* channel_max, Dtype* data) { + CUDA_KERNEL_LOOP(index, count) { + int n = index / channels / spatial_dim; + int s = index % spatial_dim; + data[index] -= channel_max[n * spatial_dim + s]; + } +} + +template +__global__ void kernel_exp(const int count, const Dtype* data, Dtype* out) { + CUDA_KERNEL_LOOP(index, count) { + out[index] = exp(data[index]); + } +} + +template +__global__ void kernel_channel_sum(const int num, const int channels, + const int spatial_dim, const Dtype* data, Dtype* channel_sum) { + CUDA_KERNEL_LOOP(index, num * spatial_dim) { + int n = index / spatial_dim; + int s = index % spatial_dim; + Dtype sum = 0; + for (int c = 0; c < channels; ++c) { + sum += data[(n * channels + c) * spatial_dim + s]; + } + channel_sum[index] = sum; + } +} + +template +__global__ void kernel_channel_div(const int count, + const int num, const int channels, + const int spatial_dim, const Dtype* channel_sum, Dtype* data) { + CUDA_KERNEL_LOOP(index, count) { + int n = index / channels / spatial_dim; + int s = index % spatial_dim; + data[index] /= channel_sum[n * spatial_dim + s]; + } +} + +template +__global__ void kernel_channel_dot(const int num, const int channels, + const int spatial_dim, const Dtype* data_1, const Dtype* data_2, + Dtype* channel_dot) { + CUDA_KERNEL_LOOP(index, num * spatial_dim) { + int n = index / spatial_dim; + int s = index % spatial_dim; + Dtype dot = 0; + for (int c = 0; c < channels; ++c) { + dot += (data_1[(n * channels + c) * spatial_dim + s] + * data_2[(n * channels + c) * spatial_dim + s]); + } + channel_dot[index] = dot; + } +} + +template +void SoftmaxLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + Dtype* scale_data = scale_.mutable_gpu_data(); + int count = bottom[0]->count(); + int channels = top[0]->shape(softmax_axis_); + caffe_copy(count, bottom_data, top_data); + // We need to subtract the max to avoid numerical issues, compute the exp, + // and then normalize. + // compute max + // NOLINT_NEXT_LINE(whitespace/operators) + kernel_channel_max<<>>(outer_num_, channels, inner_num_, top_data, + scale_data); + // subtract + // NOLINT_NEXT_LINE(whitespace/operators) + kernel_channel_subtract<<>>(count, outer_num_, channels, inner_num_, + scale_data, top_data); + // exponentiate + // NOLINT_NEXT_LINE(whitespace/operators) + kernel_exp<<>>( + count, top_data, top_data); + // sum after exp + // NOLINT_NEXT_LINE(whitespace/operators) + kernel_channel_sum<<>>(outer_num_, channels, inner_num_, top_data, + scale_data); + // divide + // NOLINT_NEXT_LINE(whitespace/operators) + kernel_channel_div<<>>(count, outer_num_, channels, inner_num_, + scale_data, top_data); +} + +template +void SoftmaxLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + Dtype* scale_data = scale_.mutable_gpu_data(); + int count = top[0]->count(); + int channels = top[0]->shape(softmax_axis_); + caffe_copy(count, top_diff, bottom_diff); + // Compute inner1d(top_diff, top_data) and subtract them from the bottom diff. + // NOLINT_NEXT_LINE(whitespace/operators) + kernel_channel_dot<<>>(outer_num_, channels, inner_num_, + top_diff, top_data, scale_data); + // NOLINT_NEXT_LINE(whitespace/operators) + kernel_channel_subtract<<>>(count, outer_num_, channels, inner_num_, + scale_data, bottom_diff); + // elementwise multiplication + caffe_gpu_mul(top[0]->count(), bottom_diff, top_data, bottom_diff); +} + +INSTANTIATE_LAYER_GPU_FUNCS(SoftmaxLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cpp b/3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cpp new file mode 100644 index 00000000..dddb7606 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cpp @@ -0,0 +1,158 @@ +#include +#include +#include + +#include "caffe/layers/softmax_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SoftmaxWithLossLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + LossLayer::LayerSetUp(bottom, top); + LayerParameter softmax_param(this->layer_param_); + softmax_param.set_type("Softmax"); + softmax_layer_ = LayerRegistry::CreateLayer(softmax_param); + softmax_bottom_vec_.clear(); + softmax_bottom_vec_.push_back(bottom[0]); + softmax_top_vec_.clear(); + softmax_top_vec_.push_back(&prob_); + softmax_layer_->SetUp(softmax_bottom_vec_, softmax_top_vec_); + + has_ignore_label_ = + this->layer_param_.loss_param().has_ignore_label(); + if (has_ignore_label_) { + ignore_label_ = this->layer_param_.loss_param().ignore_label(); + } + if (!this->layer_param_.loss_param().has_normalization() && + this->layer_param_.loss_param().has_normalize()) { + normalization_ = this->layer_param_.loss_param().normalize() ? + LossParameter_NormalizationMode_VALID : + LossParameter_NormalizationMode_BATCH_SIZE; + } else { + normalization_ = this->layer_param_.loss_param().normalization(); + } +} + +template +void SoftmaxWithLossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + LossLayer::Reshape(bottom, top); + softmax_layer_->Reshape(softmax_bottom_vec_, softmax_top_vec_); + softmax_axis_ = + bottom[0]->CanonicalAxisIndex(this->layer_param_.softmax_param().axis()); + outer_num_ = bottom[0]->count(0, softmax_axis_); + inner_num_ = bottom[0]->count(softmax_axis_ + 1); + CHECK_EQ(outer_num_ * inner_num_, bottom[1]->count()) + << "Number of labels must match number of predictions; " + << "e.g., if softmax axis == 1 and prediction shape is (N, C, H, W), " + << "label count (number of labels) must be N*H*W, " + << "with integer values in {0, 1, ..., C-1}."; + if (top.size() >= 2) { + // softmax output + top[1]->ReshapeLike(*bottom[0]); + } +} + +template +Dtype SoftmaxWithLossLayer::get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count) { + Dtype normalizer; + switch (normalization_mode) { + case LossParameter_NormalizationMode_FULL: + normalizer = Dtype(outer_num_ * inner_num_); + break; + case LossParameter_NormalizationMode_VALID: + if (valid_count == -1) { + normalizer = Dtype(outer_num_ * inner_num_); + } else { + normalizer = Dtype(valid_count); + } + break; + case LossParameter_NormalizationMode_BATCH_SIZE: + normalizer = Dtype(outer_num_); + break; + case LossParameter_NormalizationMode_NONE: + normalizer = Dtype(1); + break; + default: + LOG(FATAL) << "Unknown normalization mode: " + << LossParameter_NormalizationMode_Name(normalization_mode); + } + // Some users will have no labels for some examples in order to 'turn off' a + // particular loss in a multi-task setup. The max prevents NaNs in that case. + return std::max(Dtype(1.0), normalizer); +} + +template +void SoftmaxWithLossLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + // The forward pass computes the softmax prob values. + softmax_layer_->Forward(softmax_bottom_vec_, softmax_top_vec_); + const Dtype* prob_data = prob_.cpu_data(); + const Dtype* label = bottom[1]->cpu_data(); + int dim = prob_.count() / outer_num_; + int count = 0; + Dtype loss = 0; + for (int i = 0; i < outer_num_; ++i) { + for (int j = 0; j < inner_num_; j++) { + const int label_value = static_cast(label[i * inner_num_ + j]); + if (has_ignore_label_ && label_value == ignore_label_) { + continue; + } + DCHECK_GE(label_value, 0); + DCHECK_LT(label_value, prob_.shape(softmax_axis_)); + loss -= log(std::max(prob_data[i * dim + label_value * inner_num_ + j], + Dtype(FLT_MIN))); + ++count; + } + } + top[0]->mutable_cpu_data()[0] = loss / get_normalizer(normalization_, count); + if (top.size() == 2) { + top[1]->ShareData(prob_); + } +} + +template +void SoftmaxWithLossLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const Dtype* prob_data = prob_.cpu_data(); + caffe_copy(prob_.count(), prob_data, bottom_diff); + const Dtype* label = bottom[1]->cpu_data(); + int dim = prob_.count() / outer_num_; + int count = 0; + for (int i = 0; i < outer_num_; ++i) { + for (int j = 0; j < inner_num_; ++j) { + const int label_value = static_cast(label[i * inner_num_ + j]); + if (has_ignore_label_ && label_value == ignore_label_) { + for (int c = 0; c < bottom[0]->shape(softmax_axis_); ++c) { + bottom_diff[i * dim + c * inner_num_ + j] = 0; + } + } else { + bottom_diff[i * dim + label_value * inner_num_ + j] -= 1; + ++count; + } + } + } + // Scale gradient + Dtype loss_weight = top[0]->cpu_diff()[0] / + get_normalizer(normalization_, count); + caffe_scal(prob_.count(), loss_weight, bottom_diff); + } +} + +#ifdef CPU_ONLY +STUB_GPU(SoftmaxWithLossLayer); +#endif + +INSTANTIATE_CLASS(SoftmaxWithLossLayer); +REGISTER_LAYER_CLASS(SoftmaxWithLoss); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cu b/3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cu new file mode 100644 index 00000000..660e1b39 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/softmax_loss_layer.cu @@ -0,0 +1,128 @@ +#include +#include +#include + +#include "caffe/layers/softmax_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void SoftmaxLossForwardGPU(const int nthreads, + const Dtype* prob_data, const Dtype* label, Dtype* loss, + const int num, const int dim, const int spatial_dim, + const bool has_ignore_label_, const int ignore_label_, + Dtype* counts) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int n = index / spatial_dim; + const int s = index % spatial_dim; + const int label_value = static_cast(label[n * spatial_dim + s]); + if (has_ignore_label_ && label_value == ignore_label_) { + loss[index] = 0; + counts[index] = 0; + } else { + loss[index] = -log(max(prob_data[n * dim + label_value * spatial_dim + s], + Dtype(FLT_MIN))); + counts[index] = 1; + } + } +} + +template +void SoftmaxWithLossLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + softmax_layer_->Forward(softmax_bottom_vec_, softmax_top_vec_); + const Dtype* prob_data = prob_.gpu_data(); + const Dtype* label = bottom[1]->gpu_data(); + const int dim = prob_.count() / outer_num_; + const int nthreads = outer_num_ * inner_num_; + // Since this memory is not used for anything until it is overwritten + // on the backward pass, we use it here to avoid having to allocate new GPU + // memory to accumulate intermediate results in the kernel. + Dtype* loss_data = bottom[0]->mutable_gpu_diff(); + // Similarly, this memory is never used elsewhere, and thus we can use it + // to avoid having to allocate additional GPU memory. + Dtype* counts = prob_.mutable_gpu_diff(); + // NOLINT_NEXT_LINE(whitespace/operators) + SoftmaxLossForwardGPU<<>>(nthreads, prob_data, label, loss_data, + outer_num_, dim, inner_num_, has_ignore_label_, ignore_label_, counts); + Dtype loss; + caffe_gpu_asum(nthreads, loss_data, &loss); + Dtype valid_count = -1; + // Only launch another CUDA kernel if we actually need the count of valid + // outputs. + if (normalization_ == LossParameter_NormalizationMode_VALID && + has_ignore_label_) { + caffe_gpu_asum(nthreads, counts, &valid_count); + } + top[0]->mutable_cpu_data()[0] = loss / get_normalizer(normalization_, + valid_count); + if (top.size() == 2) { + top[1]->ShareData(prob_); + } +} + +template +__global__ void SoftmaxLossBackwardGPU(const int nthreads, const Dtype* top, + const Dtype* label, Dtype* bottom_diff, const int num, const int dim, + const int spatial_dim, const bool has_ignore_label_, + const int ignore_label_, Dtype* counts) { + const int channels = dim / spatial_dim; + + CUDA_KERNEL_LOOP(index, nthreads) { + const int n = index / spatial_dim; + const int s = index % spatial_dim; + const int label_value = static_cast(label[n * spatial_dim + s]); + + if (has_ignore_label_ && label_value == ignore_label_) { + for (int c = 0; c < channels; ++c) { + bottom_diff[n * dim + c * spatial_dim + s] = 0; + } + counts[index] = 0; + } else { + bottom_diff[n * dim + label_value * spatial_dim + s] -= 1; + counts[index] = 1; + } + } +} + +template +void SoftmaxWithLossLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const Dtype* prob_data = prob_.gpu_data(); + const Dtype* top_data = top[0]->gpu_data(); + caffe_gpu_memcpy(prob_.count() * sizeof(Dtype), prob_data, bottom_diff); + const Dtype* label = bottom[1]->gpu_data(); + const int dim = prob_.count() / outer_num_; + const int nthreads = outer_num_ * inner_num_; + // Since this memory is never used for anything else, + // we use to to avoid allocating new GPU memory. + Dtype* counts = prob_.mutable_gpu_diff(); + // NOLINT_NEXT_LINE(whitespace/operators) + SoftmaxLossBackwardGPU<<>>(nthreads, top_data, label, bottom_diff, + outer_num_, dim, inner_num_, has_ignore_label_, ignore_label_, counts); + + Dtype valid_count = -1; + // Only launch another CUDA kernel if we actually need the count of valid + // outputs. + if (normalization_ == LossParameter_NormalizationMode_VALID && + has_ignore_label_) { + caffe_gpu_asum(nthreads, counts, &valid_count); + } + const Dtype loss_weight = top[0]->cpu_diff()[0] / + get_normalizer(normalization_, valid_count); + caffe_gpu_scal(prob_.count(), loss_weight , bottom_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(SoftmaxWithLossLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/split_layer.cpp b/3rdparty/caffe/src/caffe/layers/split_layer.cpp new file mode 100644 index 00000000..1a27a9af --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/split_layer.cpp @@ -0,0 +1,59 @@ +#include + +#include "caffe/layers/split_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SplitLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + count_ = bottom[0]->count(); + for (int i = 0; i < top.size(); ++i) { + // Do not allow in-place computation in the SplitLayer. Instead, share data + // by reference in the forward pass, and keep separate diff allocations in + // the backward pass. (Technically, it should be possible to share the diff + // blob of the first split output with the input, but this seems to cause + // some strange effects in practice...) + CHECK_NE(top[i], bottom[0]) << this->type() << " Layer does not " + "allow in-place computation."; + top[i]->ReshapeLike(*bottom[0]); + CHECK_EQ(count_, top[i]->count()); + } +} + +template +void SplitLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + for (int i = 0; i < top.size(); ++i) { + top[i]->ShareData(*bottom[0]); + } +} + +template +void SplitLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + if (top.size() == 1) { + caffe_copy(count_, top[0]->cpu_diff(), bottom[0]->mutable_cpu_diff()); + return; + } + caffe_add(count_, top[0]->cpu_diff(), top[1]->cpu_diff(), + bottom[0]->mutable_cpu_diff()); + // Add remaining top blob diffs. + for (int i = 2; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_axpy(count_, Dtype(1.), top_diff, bottom_diff); + } +} + + +#ifdef CPU_ONLY +STUB_GPU(SplitLayer); +#endif + +INSTANTIATE_CLASS(SplitLayer); +REGISTER_LAYER_CLASS(Split); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/split_layer.cu b/3rdparty/caffe/src/caffe/layers/split_layer.cu new file mode 100644 index 00000000..bec9987c --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/split_layer.cu @@ -0,0 +1,37 @@ +#include + +#include "caffe/layers/split_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SplitLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + for (int i = 0; i < top.size(); ++i) { + top[i]->ShareData(*bottom[0]); + } +} + +template +void SplitLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + if (top.size() == 1) { + caffe_copy(count_, top[0]->gpu_diff(), bottom[0]->mutable_gpu_diff()); + return; + } + caffe_gpu_add(count_, top[0]->gpu_diff(), top[1]->gpu_diff(), + bottom[0]->mutable_gpu_diff()); + // Add remaining top blob diffs. + for (int i = 2; i < top.size(); ++i) { + const Dtype* top_diff = top[i]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + caffe_gpu_axpy(count_, Dtype(1.), top_diff, bottom_diff); + } +} + + +INSTANTIATE_LAYER_GPU_FUNCS(SplitLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/spp_layer.cpp b/3rdparty/caffe/src/caffe/layers/spp_layer.cpp new file mode 100644 index 00000000..b9af8e8a --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/spp_layer.cpp @@ -0,0 +1,228 @@ +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/layers/concat_layer.hpp" +#include "caffe/layers/flatten_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/split_layer.hpp" +#include "caffe/layers/spp_layer.hpp" + +namespace caffe { + +using std::min; +using std::max; + +template +LayerParameter SPPLayer::GetPoolingParam(const int pyramid_level, + const int bottom_h, const int bottom_w, const SPPParameter spp_param) { + LayerParameter pooling_param; + int num_bins = pow(2, pyramid_level); + + // find padding and kernel size so that the pooling is + // performed across the entire image + int kernel_h = ceil(bottom_h / static_cast(num_bins)); + // remainder_h is the min number of pixels that need to be padded before + // entire image height is pooled over with the chosen kernel dimension + int remainder_h = kernel_h * num_bins - bottom_h; + // pooling layer pads (2 * pad_h) pixels on the top and bottom of the + // image. + int pad_h = (remainder_h + 1) / 2; + + // similar logic for width + int kernel_w = ceil(bottom_w / static_cast(num_bins)); + int remainder_w = kernel_w * num_bins - bottom_w; + int pad_w = (remainder_w + 1) / 2; + + pooling_param.mutable_pooling_param()->set_pad_h(pad_h); + pooling_param.mutable_pooling_param()->set_pad_w(pad_w); + pooling_param.mutable_pooling_param()->set_kernel_h(kernel_h); + pooling_param.mutable_pooling_param()->set_kernel_w(kernel_w); + pooling_param.mutable_pooling_param()->set_stride_h(kernel_h); + pooling_param.mutable_pooling_param()->set_stride_w(kernel_w); + + switch (spp_param.pool()) { + case SPPParameter_PoolMethod_MAX: + pooling_param.mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_MAX); + break; + case SPPParameter_PoolMethod_AVE: + pooling_param.mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_AVE); + break; + case SPPParameter_PoolMethod_STOCHASTIC: + pooling_param.mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_STOCHASTIC); + break; + default: + LOG(FATAL) << "Unknown pooling method."; + } + + return pooling_param; +} + +template +void SPPLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + SPPParameter spp_param = this->layer_param_.spp_param(); + + num_ = bottom[0]->num(); + channels_ = bottom[0]->channels(); + bottom_h_ = bottom[0]->height(); + bottom_w_ = bottom[0]->width(); + reshaped_first_time_ = false; + CHECK_GT(bottom_h_, 0) << "Input dimensions cannot be zero."; + CHECK_GT(bottom_w_, 0) << "Input dimensions cannot be zero."; + + pyramid_height_ = spp_param.pyramid_height(); + split_top_vec_.clear(); + pooling_bottom_vecs_.clear(); + pooling_layers_.clear(); + pooling_top_vecs_.clear(); + pooling_outputs_.clear(); + flatten_layers_.clear(); + flatten_top_vecs_.clear(); + flatten_outputs_.clear(); + concat_bottom_vec_.clear(); + + if (pyramid_height_ == 1) { + // pooling layer setup + LayerParameter pooling_param = GetPoolingParam(0, bottom_h_, bottom_w_, + spp_param); + pooling_layers_.push_back(shared_ptr > ( + new PoolingLayer(pooling_param))); + pooling_layers_[0]->SetUp(bottom, top); + return; + } + // split layer output holders setup + for (int i = 0; i < pyramid_height_; i++) { + split_top_vec_.push_back(new Blob()); + } + + // split layer setup + LayerParameter split_param; + split_layer_.reset(new SplitLayer(split_param)); + split_layer_->SetUp(bottom, split_top_vec_); + + for (int i = 0; i < pyramid_height_; i++) { + // pooling layer input holders setup + pooling_bottom_vecs_.push_back(new vector*>); + pooling_bottom_vecs_[i]->push_back(split_top_vec_[i]); + + // pooling layer output holders setup + pooling_outputs_.push_back(new Blob()); + pooling_top_vecs_.push_back(new vector*>); + pooling_top_vecs_[i]->push_back(pooling_outputs_[i]); + + // pooling layer setup + LayerParameter pooling_param = GetPoolingParam( + i, bottom_h_, bottom_w_, spp_param); + + pooling_layers_.push_back(shared_ptr > ( + new PoolingLayer(pooling_param))); + pooling_layers_[i]->SetUp(*pooling_bottom_vecs_[i], *pooling_top_vecs_[i]); + + // flatten layer output holders setup + flatten_outputs_.push_back(new Blob()); + flatten_top_vecs_.push_back(new vector*>); + flatten_top_vecs_[i]->push_back(flatten_outputs_[i]); + + // flatten layer setup + LayerParameter flatten_param; + flatten_layers_.push_back(new FlattenLayer(flatten_param)); + flatten_layers_[i]->SetUp(*pooling_top_vecs_[i], *flatten_top_vecs_[i]); + + // concat layer input holders setup + concat_bottom_vec_.push_back(flatten_outputs_[i]); + } + + // concat layer setup + LayerParameter concat_param; + concat_layer_.reset(new ConcatLayer(concat_param)); + concat_layer_->SetUp(concat_bottom_vec_, top); +} + +template +void SPPLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_EQ(4, bottom[0]->num_axes()) << "Input must have 4 axes, " + << "corresponding to (num, channels, height, width)"; + // Do nothing if bottom shape is unchanged since last Reshape + if (num_ == bottom[0]->num() && channels_ == bottom[0]->channels() && + bottom_h_ == bottom[0]->height() && bottom_w_ == bottom[0]->width() && + reshaped_first_time_) { + return; + } + num_ = bottom[0]->num(); + channels_ = bottom[0]->channels(); + bottom_h_ = bottom[0]->height(); + bottom_w_ = bottom[0]->width(); + reshaped_first_time_ = true; + SPPParameter spp_param = this->layer_param_.spp_param(); + if (pyramid_height_ == 1) { + LayerParameter pooling_param = GetPoolingParam(0, bottom_h_, bottom_w_, + spp_param); + pooling_layers_[0].reset(new PoolingLayer(pooling_param)); + pooling_layers_[0]->SetUp(bottom, top); + pooling_layers_[0]->Reshape(bottom, top); + return; + } + split_layer_->Reshape(bottom, split_top_vec_); + for (int i = 0; i < pyramid_height_; i++) { + LayerParameter pooling_param = GetPoolingParam( + i, bottom_h_, bottom_w_, spp_param); + + pooling_layers_[i].reset( + new PoolingLayer(pooling_param)); + pooling_layers_[i]->SetUp( + *pooling_bottom_vecs_[i], *pooling_top_vecs_[i]); + pooling_layers_[i]->Reshape( + *pooling_bottom_vecs_[i], *pooling_top_vecs_[i]); + flatten_layers_[i]->Reshape( + *pooling_top_vecs_[i], *flatten_top_vecs_[i]); + } + concat_layer_->Reshape(concat_bottom_vec_, top); +} + +template +void SPPLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + if (pyramid_height_ == 1) { + pooling_layers_[0]->Forward(bottom, top); + return; + } + split_layer_->Forward(bottom, split_top_vec_); + for (int i = 0; i < pyramid_height_; i++) { + pooling_layers_[i]->Forward( + *pooling_bottom_vecs_[i], *pooling_top_vecs_[i]); + flatten_layers_[i]->Forward( + *pooling_top_vecs_[i], *flatten_top_vecs_[i]); + } + concat_layer_->Forward(concat_bottom_vec_, top); +} + +template +void SPPLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { + return; + } + if (pyramid_height_ == 1) { + pooling_layers_[0]->Backward(top, propagate_down, bottom); + return; + } + vector concat_propagate_down(pyramid_height_, true); + concat_layer_->Backward(top, concat_propagate_down, concat_bottom_vec_); + for (int i = 0; i < pyramid_height_; i++) { + flatten_layers_[i]->Backward( + *flatten_top_vecs_[i], propagate_down, *pooling_top_vecs_[i]); + pooling_layers_[i]->Backward( + *pooling_top_vecs_[i], propagate_down, *pooling_bottom_vecs_[i]); + } + split_layer_->Backward(split_top_vec_, propagate_down, bottom); +} + +INSTANTIATE_CLASS(SPPLayer); +REGISTER_LAYER_CLASS(SPP); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/tanh_layer.cpp b/3rdparty/caffe/src/caffe/layers/tanh_layer.cpp new file mode 100644 index 00000000..184e926d --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/tanh_layer.cpp @@ -0,0 +1,44 @@ +// TanH neuron activation function layer. +// Adapted from ReLU layer code written by Yangqing Jia + +#include + +#include "caffe/layers/tanh_layer.hpp" + +namespace caffe { + +template +void TanHLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + top_data[i] = tanh(bottom_data[i]); + } +} + +template +void TanHLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int count = bottom[0]->count(); + Dtype tanhx; + for (int i = 0; i < count; ++i) { + tanhx = top_data[i]; + bottom_diff[i] = top_diff[i] * (1 - tanhx * tanhx); + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(TanHLayer); +#endif + +INSTANTIATE_CLASS(TanHLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/tanh_layer.cu b/3rdparty/caffe/src/caffe/layers/tanh_layer.cu new file mode 100644 index 00000000..cbfc178e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/tanh_layer.cu @@ -0,0 +1,57 @@ +// TanH neuron activation function layer. +// Adapted from ReLU layer code written by Yangqing Jia + +#include + +#include "caffe/layers/tanh_layer.hpp" + +namespace caffe { + +template +__global__ void TanHForward(const int n, const Dtype* in, Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = tanh(in[index]); + } +} + +template +void TanHLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + TanHForward<<>>( + count, bottom_data, top_data); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void TanHBackward(const int n, const Dtype* in_diff, + const Dtype* out_data, Dtype* out_diff) { + CUDA_KERNEL_LOOP(index, n) { + Dtype tanhx = out_data[index]; + out_diff[index] = in_diff[index] * (1 - tanhx * tanhx); + } +} + +template +void TanHLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + TanHBackward<<>>( + count, top_diff, top_data, bottom_diff); + CUDA_POST_KERNEL_CHECK; + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(TanHLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/threshold_layer.cpp b/3rdparty/caffe/src/caffe/layers/threshold_layer.cpp new file mode 100644 index 00000000..63822ee5 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/threshold_layer.cpp @@ -0,0 +1,32 @@ +#include + +#include "caffe/layers/threshold_layer.hpp" + +namespace caffe { + +template +void ThresholdLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + NeuronLayer::LayerSetUp(bottom, top); + threshold_ = this->layer_param_.threshold_param().threshold(); +} + +template +void ThresholdLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + top_data[i] = (bottom_data[i] > threshold_) ? Dtype(1) : Dtype(0); + } +} + +#ifdef CPU_ONLY +STUB_GPU_FORWARD(ThresholdLayer, Forward); +#endif + +INSTANTIATE_CLASS(ThresholdLayer); +REGISTER_LAYER_CLASS(Threshold); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/threshold_layer.cu b/3rdparty/caffe/src/caffe/layers/threshold_layer.cu new file mode 100644 index 00000000..b0b06655 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/threshold_layer.cu @@ -0,0 +1,31 @@ +#include + +#include "caffe/layers/threshold_layer.hpp" + +namespace caffe { + +template +__global__ void ThresholdForward(const int n, const Dtype threshold, + const Dtype* in, Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = in[index] > threshold ? 1 : 0; + } +} + +template +void ThresholdLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + ThresholdForward<<>>( + count, threshold_, bottom_data, top_data); + CUDA_POST_KERNEL_CHECK; +} + + +INSTANTIATE_LAYER_GPU_FORWARD(ThresholdLayer); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/tile_layer.cpp b/3rdparty/caffe/src/caffe/layers/tile_layer.cpp new file mode 100644 index 00000000..cf0c1870 --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/tile_layer.cpp @@ -0,0 +1,61 @@ +#include + +#include "caffe/layers/tile_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void TileLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + const TileParameter& tile_param = this->layer_param_.tile_param(); + axis_ = bottom[0]->CanonicalAxisIndex(tile_param.axis()); + CHECK(tile_param.has_tiles()) << "Number of tiles must be specified"; + tiles_ = tile_param.tiles(); + CHECK_GT(tiles_, 0) << "Number of tiles must be positive."; + vector top_shape = bottom[0]->shape(); + top_shape[axis_] = bottom[0]->shape(axis_) * tiles_; + top[0]->Reshape(top_shape); + outer_dim_ = bottom[0]->count(0, axis_); + inner_dim_ = bottom[0]->count(axis_); +} + +template +void TileLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + for (int i = 0; i < outer_dim_; ++i) { + for (int t = 0; t < tiles_; ++t) { + caffe_copy(inner_dim_, bottom_data, top_data); + top_data += inner_dim_; + } + bottom_data += inner_dim_; + } +} + +template +void TileLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + for (int i = 0; i < outer_dim_; ++i) { + caffe_copy(inner_dim_, top_diff, bottom_diff); + top_diff += inner_dim_; + for (int t = 1; t < tiles_; ++t) { + caffe_axpy(inner_dim_, Dtype(1), top_diff, bottom_diff); + top_diff += inner_dim_; + } + bottom_diff += inner_dim_; + } +} + +#ifdef CPU_ONLY +STUB_GPU(TileLayer); +#endif + +INSTANTIATE_CLASS(TileLayer); +REGISTER_LAYER_CLASS(Tile); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/tile_layer.cu b/3rdparty/caffe/src/caffe/layers/tile_layer.cu new file mode 100644 index 00000000..282049eb --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/tile_layer.cu @@ -0,0 +1,66 @@ +#include + +#include "caffe/layers/tile_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void Tile(const int nthreads, const Dtype* bottom_data, + const int tile_size, const int num_tiles, const int bottom_tile_axis, + Dtype* top_data) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int d = index % tile_size; + const int b = (index / tile_size / num_tiles) % bottom_tile_axis; + const int n = index / tile_size / num_tiles / bottom_tile_axis; + const int bottom_index = (n * bottom_tile_axis + b) * tile_size + d; + top_data[index] = bottom_data[bottom_index]; + } +} + +template +void TileLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int bottom_tile_axis = bottom[0]->shape(axis_); + const int nthreads = top[0]->count(); + Tile // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + nthreads, bottom_data, inner_dim_, tiles_, bottom_tile_axis, top_data); +} + +template +__global__ void TileBackward(const int nthreads, const Dtype* top_diff, + const int tile_size, const int num_tiles, const int bottom_tile_axis, + Dtype* bottom_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int d = index % tile_size; + const int b = (index / tile_size) % bottom_tile_axis; + const int n = index / tile_size / bottom_tile_axis; + bottom_diff[index] = 0; + int top_index = (n * num_tiles * bottom_tile_axis + b) * tile_size + d; + for (int t = 0; t < num_tiles; ++t) { + bottom_diff[index] += top_diff[top_index]; + top_index += bottom_tile_axis * tile_size; + } + } +} + +template +void TileLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (!propagate_down[0]) { return; } + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int bottom_tile_axis = bottom[0]->shape(axis_); + const int tile_size = inner_dim_ / bottom_tile_axis; + const int nthreads = bottom[0]->count(); + TileBackward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + nthreads, top_diff, tile_size, tiles_, bottom_tile_axis, bottom_diff); +} + +INSTANTIATE_LAYER_GPU_FUNCS(TileLayer); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/layers/window_data_layer.cpp b/3rdparty/caffe/src/caffe/layers/window_data_layer.cpp new file mode 100644 index 00000000..1bf3760e --- /dev/null +++ b/3rdparty/caffe/src/caffe/layers/window_data_layer.cpp @@ -0,0 +1,476 @@ +#ifdef USE_OPENCV +#include +#include + +#include +#include +#include +#include +#include + +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/imgproc/imgproc.hpp" + +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/layers/window_data_layer.hpp" +#include "caffe/util/benchmark.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/util/rng.hpp" + +// caffe.proto > LayerParameter > WindowDataParameter +// 'source' field specifies the window_file +// 'crop_size' indicates the desired warped size + +namespace caffe { + +template +WindowDataLayer::~WindowDataLayer() { + this->StopInternalThread(); +} + +template +void WindowDataLayer::DataLayerSetUp(const vector*>& bottom, + const vector*>& top) { + // LayerSetUp runs through the window_file and creates two structures + // that hold windows: one for foreground (object) windows and one + // for background (non-object) windows. We use an overlap threshold + // to decide which is which. + + // window_file format + // repeated: + // # image_index + // img_path (abs path) + // channels + // height + // width + // num_windows + // class_index overlap x1 y1 x2 y2 + + LOG(INFO) << "Window data layer:" << std::endl + << " foreground (object) overlap threshold: " + << this->layer_param_.window_data_param().fg_threshold() << std::endl + << " background (non-object) overlap threshold: " + << this->layer_param_.window_data_param().bg_threshold() << std::endl + << " foreground sampling fraction: " + << this->layer_param_.window_data_param().fg_fraction() << std::endl + << " cache_images: " + << this->layer_param_.window_data_param().cache_images() << std::endl + << " root_folder: " + << this->layer_param_.window_data_param().root_folder(); + + cache_images_ = this->layer_param_.window_data_param().cache_images(); + string root_folder = this->layer_param_.window_data_param().root_folder(); + + const bool prefetch_needs_rand = + this->transform_param_.mirror() || + this->transform_param_.crop_size(); + if (prefetch_needs_rand) { + const unsigned int prefetch_rng_seed = caffe_rng_rand(); + prefetch_rng_.reset(new Caffe::RNG(prefetch_rng_seed)); + } else { + prefetch_rng_.reset(); + } + + std::ifstream infile(this->layer_param_.window_data_param().source().c_str()); + CHECK(infile.good()) << "Failed to open window file " + << this->layer_param_.window_data_param().source() << std::endl; + + map label_hist; + label_hist.insert(std::make_pair(0, 0)); + + string hashtag; + int image_index, channels; + if (!(infile >> hashtag >> image_index)) { + LOG(FATAL) << "Window file is empty"; + } + do { + CHECK_EQ(hashtag, "#"); + // read image path + string image_path; + infile >> image_path; + image_path = root_folder + image_path; + // read image dimensions + vector image_size(3); + infile >> image_size[0] >> image_size[1] >> image_size[2]; + channels = image_size[0]; + image_database_.push_back(std::make_pair(image_path, image_size)); + + if (cache_images_) { + Datum datum; + if (!ReadFileToDatum(image_path, &datum)) { + LOG(ERROR) << "Could not open or find file " << image_path; + return; + } + image_database_cache_.push_back(std::make_pair(image_path, datum)); + } + // read each box + int num_windows; + infile >> num_windows; + const float fg_threshold = + this->layer_param_.window_data_param().fg_threshold(); + const float bg_threshold = + this->layer_param_.window_data_param().bg_threshold(); + for (int i = 0; i < num_windows; ++i) { + int label, x1, y1, x2, y2; + float overlap; + infile >> label >> overlap >> x1 >> y1 >> x2 >> y2; + + vector window(WindowDataLayer::NUM); + window[WindowDataLayer::IMAGE_INDEX] = image_index; + window[WindowDataLayer::LABEL] = label; + window[WindowDataLayer::OVERLAP] = overlap; + window[WindowDataLayer::X1] = x1; + window[WindowDataLayer::Y1] = y1; + window[WindowDataLayer::X2] = x2; + window[WindowDataLayer::Y2] = y2; + + // add window to foreground list or background list + if (overlap >= fg_threshold) { + int label = window[WindowDataLayer::LABEL]; + CHECK_GT(label, 0); + fg_windows_.push_back(window); + label_hist.insert(std::make_pair(label, 0)); + label_hist[label]++; + } else if (overlap < bg_threshold) { + // background window, force label and overlap to 0 + window[WindowDataLayer::LABEL] = 0; + window[WindowDataLayer::OVERLAP] = 0; + bg_windows_.push_back(window); + label_hist[0]++; + } + } + + if (image_index % 100 == 0) { + LOG(INFO) << "num: " << image_index << " " + << image_path << " " + << image_size[0] << " " + << image_size[1] << " " + << image_size[2] << " " + << "windows to process: " << num_windows; + } + } while (infile >> hashtag >> image_index); + + LOG(INFO) << "Number of images: " << image_index+1; + + for (map::iterator it = label_hist.begin(); + it != label_hist.end(); ++it) { + LOG(INFO) << "class " << it->first << " has " << label_hist[it->first] + << " samples"; + } + + LOG(INFO) << "Amount of context padding: " + << this->layer_param_.window_data_param().context_pad(); + + LOG(INFO) << "Crop mode: " + << this->layer_param_.window_data_param().crop_mode(); + + // image + const int crop_size = this->transform_param_.crop_size(); + CHECK_GT(crop_size, 0); + const int batch_size = this->layer_param_.window_data_param().batch_size(); + top[0]->Reshape(batch_size, channels, crop_size, crop_size); + for (int i = 0; i < this->prefetch_.size(); ++i) + this->prefetch_[i]->data_.Reshape( + batch_size, channels, crop_size, crop_size); + + LOG(INFO) << "output data size: " << top[0]->num() << "," + << top[0]->channels() << "," << top[0]->height() << "," + << top[0]->width(); + // label + vector label_shape(1, batch_size); + top[1]->Reshape(label_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->label_.Reshape(label_shape); + } + + // data mean + has_mean_file_ = this->transform_param_.has_mean_file(); + has_mean_values_ = this->transform_param_.mean_value_size() > 0; + if (has_mean_file_) { + const string& mean_file = + this->transform_param_.mean_file(); + LOG(INFO) << "Loading mean file from: " << mean_file; + BlobProto blob_proto; + ReadProtoFromBinaryFileOrDie(mean_file.c_str(), &blob_proto); + data_mean_.FromProto(blob_proto); + } + if (has_mean_values_) { + CHECK(has_mean_file_ == false) << + "Cannot specify mean_file and mean_value at the same time"; + for (int c = 0; c < this->transform_param_.mean_value_size(); ++c) { + mean_values_.push_back(this->transform_param_.mean_value(c)); + } + CHECK(mean_values_.size() == 1 || mean_values_.size() == channels) << + "Specify either 1 mean_value or as many as channels: " << channels; + if (channels > 1 && mean_values_.size() == 1) { + // Replicate the mean_value for simplicity + for (int c = 1; c < channels; ++c) { + mean_values_.push_back(mean_values_[0]); + } + } + } +} + +template +unsigned int WindowDataLayer::PrefetchRand() { + CHECK(prefetch_rng_); + caffe::rng_t* prefetch_rng = + static_cast(prefetch_rng_->generator()); + return (*prefetch_rng)(); +} + +// This function is called on prefetch thread +template +void WindowDataLayer::load_batch(Batch* batch) { + // At each iteration, sample N windows where N*p are foreground (object) + // windows and N*(1-p) are background (non-object) windows + CPUTimer batch_timer; + batch_timer.Start(); + double read_time = 0; + double trans_time = 0; + CPUTimer timer; + Dtype* top_data = batch->data_.mutable_cpu_data(); + Dtype* top_label = batch->label_.mutable_cpu_data(); + const Dtype scale = this->layer_param_.window_data_param().scale(); + const int batch_size = this->layer_param_.window_data_param().batch_size(); + const int context_pad = this->layer_param_.window_data_param().context_pad(); + const int crop_size = this->transform_param_.crop_size(); + const bool mirror = this->transform_param_.mirror(); + const float fg_fraction = + this->layer_param_.window_data_param().fg_fraction(); + Dtype* mean = NULL; + int mean_off = 0; + int mean_width = 0; + int mean_height = 0; + if (this->has_mean_file_) { + mean = this->data_mean_.mutable_cpu_data(); + mean_off = (this->data_mean_.width() - crop_size) / 2; + mean_width = this->data_mean_.width(); + mean_height = this->data_mean_.height(); + } + cv::Size cv_crop_size(crop_size, crop_size); + const string& crop_mode = this->layer_param_.window_data_param().crop_mode(); + + bool use_square = (crop_mode == "square") ? true : false; + + // zero out batch + caffe_set(batch->data_.count(), Dtype(0), top_data); + + const int num_fg = static_cast(static_cast(batch_size) + * fg_fraction); + const int num_samples[2] = { batch_size - num_fg, num_fg }; + + int item_id = 0; + CHECK_GT(fg_windows_.size(), 0); + CHECK_GT(bg_windows_.size(), 0); + + // sample from bg set then fg set + for (int is_fg = 0; is_fg < 2; ++is_fg) { + for (int dummy = 0; dummy < num_samples[is_fg]; ++dummy) { + // sample a window + timer.Start(); + const unsigned int rand_index = PrefetchRand(); + vector window = (is_fg) ? + fg_windows_[rand_index % fg_windows_.size()] : + bg_windows_[rand_index % bg_windows_.size()]; + + bool do_mirror = mirror && PrefetchRand() % 2; + + // load the image containing the window + pair > image = + image_database_[window[WindowDataLayer::IMAGE_INDEX]]; + + cv::Mat cv_img; + if (this->cache_images_) { + pair image_cached = + image_database_cache_[window[WindowDataLayer::IMAGE_INDEX]]; + cv_img = DecodeDatumToCVMat(image_cached.second, true); + } else { + cv_img = cv::imread(image.first, CV_LOAD_IMAGE_COLOR); + if (!cv_img.data) { + LOG(ERROR) << "Could not open or find file " << image.first; + return; + } + } + read_time += timer.MicroSeconds(); + timer.Start(); + const int channels = cv_img.channels(); + + // crop window out of image and warp it + int x1 = window[WindowDataLayer::X1]; + int y1 = window[WindowDataLayer::Y1]; + int x2 = window[WindowDataLayer::X2]; + int y2 = window[WindowDataLayer::Y2]; + + int pad_w = 0; + int pad_h = 0; + if (context_pad > 0 || use_square) { + // scale factor by which to expand the original region + // such that after warping the expanded region to crop_size x crop_size + // there's exactly context_pad amount of padding on each side + Dtype context_scale = static_cast(crop_size) / + static_cast(crop_size - 2*context_pad); + + // compute the expanded region + Dtype half_height = static_cast(y2-y1+1)/2.0; + Dtype half_width = static_cast(x2-x1+1)/2.0; + Dtype center_x = static_cast(x1) + half_width; + Dtype center_y = static_cast(y1) + half_height; + if (use_square) { + if (half_height > half_width) { + half_width = half_height; + } else { + half_height = half_width; + } + } + x1 = static_cast(round(center_x - half_width*context_scale)); + x2 = static_cast(round(center_x + half_width*context_scale)); + y1 = static_cast(round(center_y - half_height*context_scale)); + y2 = static_cast(round(center_y + half_height*context_scale)); + + // the expanded region may go outside of the image + // so we compute the clipped (expanded) region and keep track of + // the extent beyond the image + int unclipped_height = y2-y1+1; + int unclipped_width = x2-x1+1; + int pad_x1 = std::max(0, -x1); + int pad_y1 = std::max(0, -y1); + int pad_x2 = std::max(0, x2 - cv_img.cols + 1); + int pad_y2 = std::max(0, y2 - cv_img.rows + 1); + // clip bounds + x1 = x1 + pad_x1; + x2 = x2 - pad_x2; + y1 = y1 + pad_y1; + y2 = y2 - pad_y2; + CHECK_GT(x1, -1); + CHECK_GT(y1, -1); + CHECK_LT(x2, cv_img.cols); + CHECK_LT(y2, cv_img.rows); + + int clipped_height = y2-y1+1; + int clipped_width = x2-x1+1; + + // scale factors that would be used to warp the unclipped + // expanded region + Dtype scale_x = + static_cast(crop_size)/static_cast(unclipped_width); + Dtype scale_y = + static_cast(crop_size)/static_cast(unclipped_height); + + // size to warp the clipped expanded region to + cv_crop_size.width = + static_cast(round(static_cast(clipped_width)*scale_x)); + cv_crop_size.height = + static_cast(round(static_cast(clipped_height)*scale_y)); + pad_x1 = static_cast(round(static_cast(pad_x1)*scale_x)); + pad_x2 = static_cast(round(static_cast(pad_x2)*scale_x)); + pad_y1 = static_cast(round(static_cast(pad_y1)*scale_y)); + pad_y2 = static_cast(round(static_cast(pad_y2)*scale_y)); + + pad_h = pad_y1; + // if we're mirroring, we mirror the padding too (to be pedantic) + if (do_mirror) { + pad_w = pad_x2; + } else { + pad_w = pad_x1; + } + + // ensure that the warped, clipped region plus the padding fits in the + // crop_size x crop_size image (it might not due to rounding) + if (pad_h + cv_crop_size.height > crop_size) { + cv_crop_size.height = crop_size - pad_h; + } + if (pad_w + cv_crop_size.width > crop_size) { + cv_crop_size.width = crop_size - pad_w; + } + } + + cv::Rect roi(x1, y1, x2-x1+1, y2-y1+1); + cv::Mat cv_cropped_img = cv_img(roi); + cv::resize(cv_cropped_img, cv_cropped_img, + cv_crop_size, 0, 0, cv::INTER_LINEAR); + + // horizontal flip at random + if (do_mirror) { + cv::flip(cv_cropped_img, cv_cropped_img, 1); + } + + // copy the warped window into top_data + for (int h = 0; h < cv_cropped_img.rows; ++h) { + const uchar* ptr = cv_cropped_img.ptr(h); + int img_index = 0; + for (int w = 0; w < cv_cropped_img.cols; ++w) { + for (int c = 0; c < channels; ++c) { + int top_index = ((item_id * channels + c) * crop_size + h + pad_h) + * crop_size + w + pad_w; + // int top_index = (c * height + h) * width + w; + Dtype pixel = static_cast(ptr[img_index++]); + if (this->has_mean_file_) { + int mean_index = (c * mean_height + h + mean_off + pad_h) + * mean_width + w + mean_off + pad_w; + top_data[top_index] = (pixel - mean[mean_index]) * scale; + } else { + if (this->has_mean_values_) { + top_data[top_index] = (pixel - this->mean_values_[c]) * scale; + } else { + top_data[top_index] = pixel * scale; + } + } + } + } + } + trans_time += timer.MicroSeconds(); + // get window label + top_label[item_id] = window[WindowDataLayer::LABEL]; + + #if 0 + // useful debugging code for dumping transformed windows to disk + string file_id; + std::stringstream ss; + ss << PrefetchRand(); + ss >> file_id; + std::ofstream inf((string("dump/") + file_id + + string("_info.txt")).c_str(), std::ofstream::out); + inf << image.first << std::endl + << window[WindowDataLayer::X1]+1 << std::endl + << window[WindowDataLayer::Y1]+1 << std::endl + << window[WindowDataLayer::X2]+1 << std::endl + << window[WindowDataLayer::Y2]+1 << std::endl + << do_mirror << std::endl + << top_label[item_id] << std::endl + << is_fg << std::endl; + inf.close(); + std::ofstream top_data_file((string("dump/") + file_id + + string("_data.txt")).c_str(), + std::ofstream::out | std::ofstream::binary); + for (int c = 0; c < channels; ++c) { + for (int h = 0; h < crop_size; ++h) { + for (int w = 0; w < crop_size; ++w) { + top_data_file.write(reinterpret_cast( + &top_data[((item_id * channels + c) * crop_size + h) + * crop_size + w]), + sizeof(Dtype)); + } + } + } + top_data_file.close(); + #endif + + item_id++; + } + } + batch_timer.Stop(); + DLOG(INFO) << "Prefetch batch: " << batch_timer.MilliSeconds() << " ms."; + DLOG(INFO) << " Read time: " << read_time / 1000 << " ms."; + DLOG(INFO) << "Transform time: " << trans_time / 1000 << " ms."; +} + +INSTANTIATE_CLASS(WindowDataLayer); +REGISTER_LAYER_CLASS(WindowData); + +} // namespace caffe +#endif // USE_OPENCV diff --git a/3rdparty/caffe/src/caffe/net.cpp b/3rdparty/caffe/src/caffe/net.cpp new file mode 100644 index 00000000..353c2f95 --- /dev/null +++ b/3rdparty/caffe/src/caffe/net.cpp @@ -0,0 +1,981 @@ +#include +#include +#include +#include +#include +#include + +#include "hdf5.h" + +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/net.hpp" +#include "caffe/parallel.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/hdf5.hpp" +#include "caffe/util/insert_splits.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/util/upgrade_proto.hpp" + +namespace caffe { + +template +Net::Net(const NetParameter& param) { + Init(param); +} + +template +Net::Net(const string& param_file, Phase phase, + const int level, const vector* stages) { + NetParameter param; + ReadNetParamsFromTextFileOrDie(param_file, ¶m); + // Set phase, stages and level + param.mutable_state()->set_phase(phase); + if (stages != NULL) { + for (int i = 0; i < stages->size(); i++) { + param.mutable_state()->add_stage((*stages)[i]); + } + } + param.mutable_state()->set_level(level); + Init(param); +} + +template +void Net::Init(const NetParameter& in_param) { + // Set phase from the state. + phase_ = in_param.state().phase(); + // Filter layers based on their include/exclude rules and + // the current NetState. + NetParameter filtered_param; + FilterNet(in_param, &filtered_param); + LOG_IF(INFO, Caffe::root_solver()) + << "Initializing net from parameters: " << std::endl + << filtered_param.DebugString(); + // Create a copy of filtered_param with splits added where necessary. + NetParameter param; + InsertSplits(filtered_param, ¶m); + // Basically, build all the layers and set up their connections. + name_ = param.name(); + map blob_name_to_idx; + set available_blobs; + memory_used_ = 0; + // For each layer, set up its input and output + bottom_vecs_.resize(param.layer_size()); + top_vecs_.resize(param.layer_size()); + bottom_id_vecs_.resize(param.layer_size()); + param_id_vecs_.resize(param.layer_size()); + top_id_vecs_.resize(param.layer_size()); + bottom_need_backward_.resize(param.layer_size()); + for (int layer_id = 0; layer_id < param.layer_size(); ++layer_id) { + // Inherit phase from net if unset. + if (!param.layer(layer_id).has_phase()) { + param.mutable_layer(layer_id)->set_phase(phase_); + } + // Setup layer. + const LayerParameter& layer_param = param.layer(layer_id); + if (layer_param.propagate_down_size() > 0) { + CHECK_EQ(layer_param.propagate_down_size(), + layer_param.bottom_size()) + << "propagate_down param must be specified " + << "either 0 or bottom_size times "; + } + layers_.push_back(LayerRegistry::CreateLayer(layer_param)); + layer_names_.push_back(layer_param.name()); + LOG_IF(INFO, Caffe::root_solver()) + << "Creating Layer " << layer_param.name(); + bool need_backward = false; + + // Figure out this layer's input and output + for (int bottom_id = 0; bottom_id < layer_param.bottom_size(); + ++bottom_id) { + const int blob_id = AppendBottom(param, layer_id, bottom_id, + &available_blobs, &blob_name_to_idx); + // If a blob needs backward, this layer should provide it. + need_backward |= blob_need_backward_[blob_id]; + } + int num_top = layer_param.top_size(); + for (int top_id = 0; top_id < num_top; ++top_id) { + AppendTop(param, layer_id, top_id, &available_blobs, &blob_name_to_idx); + // Collect Input layer tops as Net inputs. + if (layer_param.type() == "Input") { + const int blob_id = blobs_.size() - 1; + net_input_blob_indices_.push_back(blob_id); + net_input_blobs_.push_back(blobs_[blob_id].get()); + } + } + // If the layer specifies that AutoTopBlobs() -> true and the LayerParameter + // specified fewer than the required number (as specified by + // ExactNumTopBlobs() or MinTopBlobs()), allocate them here. + Layer* layer = layers_[layer_id].get(); + if (layer->AutoTopBlobs()) { + const int needed_num_top = + std::max(layer->MinTopBlobs(), layer->ExactNumTopBlobs()); + for (; num_top < needed_num_top; ++num_top) { + // Add "anonymous" top blobs -- do not modify available_blobs or + // blob_name_to_idx as we don't want these blobs to be usable as input + // to other layers. + AppendTop(param, layer_id, num_top, NULL, NULL); + } + } + // After this layer is connected, set it up. + layers_[layer_id]->SetUp(bottom_vecs_[layer_id], top_vecs_[layer_id]); + LOG_IF(INFO, Caffe::root_solver()) + << "Setting up " << layer_names_[layer_id]; + for (int top_id = 0; top_id < top_vecs_[layer_id].size(); ++top_id) { + if (blob_loss_weights_.size() <= top_id_vecs_[layer_id][top_id]) { + blob_loss_weights_.resize(top_id_vecs_[layer_id][top_id] + 1, Dtype(0)); + } + blob_loss_weights_[top_id_vecs_[layer_id][top_id]] = layer->loss(top_id); + LOG_IF(INFO, Caffe::root_solver()) + << "Top shape: " << top_vecs_[layer_id][top_id]->shape_string(); + if (layer->loss(top_id)) { + LOG_IF(INFO, Caffe::root_solver()) + << " with loss weight " << layer->loss(top_id); + } + memory_used_ += top_vecs_[layer_id][top_id]->count(); + } + LOG_IF(INFO, Caffe::root_solver()) + << "Memory required for data: " << memory_used_ * sizeof(Dtype); + const int param_size = layer_param.param_size(); + const int num_param_blobs = layers_[layer_id]->blobs().size(); + CHECK_LE(param_size, num_param_blobs) + << "Too many params specified for layer " << layer_param.name(); + ParamSpec default_param_spec; + for (int param_id = 0; param_id < num_param_blobs; ++param_id) { + const ParamSpec* param_spec = (param_id < param_size) ? + &layer_param.param(param_id) : &default_param_spec; + const bool param_need_backward = param_spec->lr_mult() != 0; + need_backward |= param_need_backward; + layers_[layer_id]->set_param_propagate_down(param_id, + param_need_backward); + } + for (int param_id = 0; param_id < num_param_blobs; ++param_id) { + AppendParam(param, layer_id, param_id); + } + // Finally, set the backward flag + layer_need_backward_.push_back(need_backward); + if (need_backward) { + for (int top_id = 0; top_id < top_id_vecs_[layer_id].size(); ++top_id) { + blob_need_backward_[top_id_vecs_[layer_id][top_id]] = true; + } + } + } + // Go through the net backwards to determine which blobs contribute to the + // loss. We can skip backward computation for blobs that don't contribute + // to the loss. + // Also checks if all bottom blobs don't need backward computation (possible + // because the skip_propagate_down param) and so we can skip bacward + // computation for the entire layer + set blobs_under_loss; + set blobs_skip_backp; + for (int layer_id = layers_.size() - 1; layer_id >= 0; --layer_id) { + bool layer_contributes_loss = false; + bool layer_skip_propagate_down = true; + for (int top_id = 0; top_id < top_vecs_[layer_id].size(); ++top_id) { + const string& blob_name = blob_names_[top_id_vecs_[layer_id][top_id]]; + if (layers_[layer_id]->loss(top_id) || + (blobs_under_loss.find(blob_name) != blobs_under_loss.end())) { + layer_contributes_loss = true; + } + if (blobs_skip_backp.find(blob_name) == blobs_skip_backp.end()) { + layer_skip_propagate_down = false; + } + if (layer_contributes_loss && !layer_skip_propagate_down) + break; + } + // If this layer can skip backward computation, also all his bottom blobs + // don't need backpropagation + if (layer_need_backward_[layer_id] && layer_skip_propagate_down) { + layer_need_backward_[layer_id] = false; + for (int bottom_id = 0; bottom_id < bottom_vecs_[layer_id].size(); + ++bottom_id) { + bottom_need_backward_[layer_id][bottom_id] = false; + } + } + if (!layer_contributes_loss) { layer_need_backward_[layer_id] = false; } + if (Caffe::root_solver()) { + if (layer_need_backward_[layer_id]) { + LOG(INFO) << layer_names_[layer_id] << " needs backward computation."; + } else { + LOG(INFO) << layer_names_[layer_id] + << " does not need backward computation."; + } + } + for (int bottom_id = 0; bottom_id < bottom_vecs_[layer_id].size(); + ++bottom_id) { + if (layer_contributes_loss) { + const string& blob_name = + blob_names_[bottom_id_vecs_[layer_id][bottom_id]]; + blobs_under_loss.insert(blob_name); + } else { + bottom_need_backward_[layer_id][bottom_id] = false; + } + if (!bottom_need_backward_[layer_id][bottom_id]) { + const string& blob_name = + blob_names_[bottom_id_vecs_[layer_id][bottom_id]]; + blobs_skip_backp.insert(blob_name); + } + } + } + // Handle force_backward if needed. + if (param.force_backward()) { + for (int layer_id = 0; layer_id < layers_.size(); ++layer_id) { + layer_need_backward_[layer_id] = true; + for (int bottom_id = 0; + bottom_id < bottom_need_backward_[layer_id].size(); ++bottom_id) { + bottom_need_backward_[layer_id][bottom_id] = + bottom_need_backward_[layer_id][bottom_id] || + layers_[layer_id]->AllowForceBackward(bottom_id); + blob_need_backward_[bottom_id_vecs_[layer_id][bottom_id]] = + blob_need_backward_[bottom_id_vecs_[layer_id][bottom_id]] || + bottom_need_backward_[layer_id][bottom_id]; + } + for (int param_id = 0; param_id < layers_[layer_id]->blobs().size(); + ++param_id) { + layers_[layer_id]->set_param_propagate_down(param_id, true); + } + } + } + // In the end, all remaining blobs are considered output blobs. + for (set::iterator it = available_blobs.begin(); + it != available_blobs.end(); ++it) { + LOG_IF(INFO, Caffe::root_solver()) + << "This network produces output " << *it; + net_output_blobs_.push_back(blobs_[blob_name_to_idx[*it]].get()); + net_output_blob_indices_.push_back(blob_name_to_idx[*it]); + } + for (size_t blob_id = 0; blob_id < blob_names_.size(); ++blob_id) { + blob_names_index_[blob_names_[blob_id]] = blob_id; + } + for (size_t layer_id = 0; layer_id < layer_names_.size(); ++layer_id) { + layer_names_index_[layer_names_[layer_id]] = layer_id; + } + ShareWeights(); + debug_info_ = param.debug_info(); + LOG_IF(INFO, Caffe::root_solver()) << "Network initialization done."; +} + +template +void Net::FilterNet(const NetParameter& param, + NetParameter* param_filtered) { + NetState net_state(param.state()); + param_filtered->CopyFrom(param); + param_filtered->clear_layer(); + for (int i = 0; i < param.layer_size(); ++i) { + const LayerParameter& layer_param = param.layer(i); + const string& layer_name = layer_param.name(); + CHECK(layer_param.include_size() == 0 || layer_param.exclude_size() == 0) + << "Specify either include rules or exclude rules; not both."; + // If no include rules are specified, the layer is included by default and + // only excluded if it meets one of the exclude rules. + bool layer_included = (layer_param.include_size() == 0); + for (int j = 0; layer_included && j < layer_param.exclude_size(); ++j) { + if (StateMeetsRule(net_state, layer_param.exclude(j), layer_name)) { + layer_included = false; + } + } + for (int j = 0; !layer_included && j < layer_param.include_size(); ++j) { + if (StateMeetsRule(net_state, layer_param.include(j), layer_name)) { + layer_included = true; + } + } + if (layer_included) { + param_filtered->add_layer()->CopyFrom(layer_param); + } + } +} + +template +bool Net::StateMeetsRule(const NetState& state, + const NetStateRule& rule, const string& layer_name) { + // Check whether the rule is broken due to phase. + if (rule.has_phase()) { + if (rule.phase() != state.phase()) { + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState phase (" << state.phase() + << ") differed from the phase (" << rule.phase() + << ") specified by a rule in layer " << layer_name; + return false; + } + } + // Check whether the rule is broken due to min level. + if (rule.has_min_level()) { + if (state.level() < rule.min_level()) { + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState level (" << state.level() + << ") is above the min_level (" << rule.min_level() + << ") specified by a rule in layer " << layer_name; + return false; + } + } + // Check whether the rule is broken due to max level. + if (rule.has_max_level()) { + if (state.level() > rule.max_level()) { + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState level (" << state.level() + << ") is above the max_level (" << rule.max_level() + << ") specified by a rule in layer " << layer_name; + return false; + } + } + // Check whether the rule is broken due to stage. The NetState must + // contain ALL of the rule's stages to meet it. + for (int i = 0; i < rule.stage_size(); ++i) { + // Check that the NetState contains the rule's ith stage. + bool has_stage = false; + for (int j = 0; !has_stage && j < state.stage_size(); ++j) { + if (rule.stage(i) == state.stage(j)) { has_stage = true; } + } + if (!has_stage) { + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState did not contain stage '" << rule.stage(i) + << "' specified by a rule in layer " << layer_name; + return false; + } + } + // Check whether the rule is broken due to not_stage. The NetState must + // contain NONE of the rule's not_stages to meet it. + for (int i = 0; i < rule.not_stage_size(); ++i) { + // Check that the NetState contains the rule's ith not_stage. + bool has_stage = false; + for (int j = 0; !has_stage && j < state.stage_size(); ++j) { + if (rule.not_stage(i) == state.stage(j)) { has_stage = true; } + } + if (has_stage) { + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState contained a not_stage '" << rule.not_stage(i) + << "' specified by a rule in layer " << layer_name; + return false; + } + } + return true; +} + +// Helper for Net::Init: add a new top blob to the net. +template +void Net::AppendTop(const NetParameter& param, const int layer_id, + const int top_id, set* available_blobs, + map* blob_name_to_idx) { + shared_ptr layer_param( + new LayerParameter(param.layer(layer_id))); + const string& blob_name = (layer_param->top_size() > top_id) ? + layer_param->top(top_id) : "(automatic)"; + // Check if we are doing in-place computation + if (blob_name_to_idx && layer_param->bottom_size() > top_id && + blob_name == layer_param->bottom(top_id)) { + // In-place computation + LOG_IF(INFO, Caffe::root_solver()) + << layer_param->name() << " -> " << blob_name << " (in-place)"; + top_vecs_[layer_id].push_back(blobs_[(*blob_name_to_idx)[blob_name]].get()); + top_id_vecs_[layer_id].push_back((*blob_name_to_idx)[blob_name]); + } else if (blob_name_to_idx && + blob_name_to_idx->find(blob_name) != blob_name_to_idx->end()) { + // If we are not doing in-place computation but have duplicated blobs, + // raise an error. + LOG(FATAL) << "Top blob '" << blob_name + << "' produced by multiple sources."; + } else { + // Normal output. + if (Caffe::root_solver()) { + LOG(INFO) << layer_param->name() << " -> " << blob_name; + } + shared_ptr > blob_pointer(new Blob()); + const int blob_id = blobs_.size(); + blobs_.push_back(blob_pointer); + blob_names_.push_back(blob_name); + blob_need_backward_.push_back(false); + if (blob_name_to_idx) { (*blob_name_to_idx)[blob_name] = blob_id; } + top_id_vecs_[layer_id].push_back(blob_id); + top_vecs_[layer_id].push_back(blob_pointer.get()); + } + if (available_blobs) { available_blobs->insert(blob_name); } +} + +// Helper for Net::Init: add a new bottom blob to the net. +template +int Net::AppendBottom(const NetParameter& param, const int layer_id, + const int bottom_id, set* available_blobs, + map* blob_name_to_idx) { + const LayerParameter& layer_param = param.layer(layer_id); + const string& blob_name = layer_param.bottom(bottom_id); + if (available_blobs->find(blob_name) == available_blobs->end()) { + LOG(FATAL) << "Unknown bottom blob '" << blob_name << "' (layer '" + << layer_param.name() << "', bottom index " << bottom_id << ")"; + } + const int blob_id = (*blob_name_to_idx)[blob_name]; + LOG_IF(INFO, Caffe::root_solver()) + << layer_names_[layer_id] << " <- " << blob_name; + bottom_vecs_[layer_id].push_back(blobs_[blob_id].get()); + bottom_id_vecs_[layer_id].push_back(blob_id); + available_blobs->erase(blob_name); + bool need_backward = blob_need_backward_[blob_id]; + // Check if the backpropagation on bottom_id should be skipped + if (layer_param.propagate_down_size() > 0) { + need_backward = layer_param.propagate_down(bottom_id); + } + bottom_need_backward_[layer_id].push_back(need_backward); + return blob_id; +} + +template +void Net::AppendParam(const NetParameter& param, const int layer_id, + const int param_id) { + const LayerParameter& layer_param = layers_[layer_id]->layer_param(); + const int param_size = layer_param.param_size(); + string param_name = + (param_size > param_id) ? layer_param.param(param_id).name() : ""; + if (param_name.size()) { + param_display_names_.push_back(param_name); + } else { + ostringstream param_display_name; + param_display_name << param_id; + param_display_names_.push_back(param_display_name.str()); + } + const int net_param_id = params_.size(); + params_.push_back(layers_[layer_id]->blobs()[param_id]); + param_id_vecs_[layer_id].push_back(net_param_id); + param_layer_indices_.push_back(make_pair(layer_id, param_id)); + ParamSpec default_param_spec; + const ParamSpec* param_spec = (layer_param.param_size() > param_id) ? + &layer_param.param(param_id) : &default_param_spec; + if (!param_size || !param_name.size() || (param_name.size() && + param_names_index_.find(param_name) == param_names_index_.end())) { + // This layer "owns" this parameter blob -- it is either anonymous + // (i.e., not given a param_name) or explicitly given a name that we + // haven't already seen. + param_owners_.push_back(-1); + if (param_name.size()) { + param_names_index_[param_name] = net_param_id; + } + const int learnable_param_id = learnable_params_.size(); + learnable_params_.push_back(params_[net_param_id].get()); + learnable_param_ids_.push_back(learnable_param_id); + has_params_lr_.push_back(param_spec->has_lr_mult()); + has_params_decay_.push_back(param_spec->has_decay_mult()); + params_lr_.push_back(param_spec->lr_mult()); + params_weight_decay_.push_back(param_spec->decay_mult()); + } else { + // Named param blob with name we've seen before: share params + const int owner_net_param_id = param_names_index_[param_name]; + param_owners_.push_back(owner_net_param_id); + const pair& owner_index = + param_layer_indices_[owner_net_param_id]; + const int owner_layer_id = owner_index.first; + const int owner_param_id = owner_index.second; + LOG_IF(INFO, Caffe::root_solver()) << "Sharing parameters '" << param_name + << "' owned by " + << "layer '" << layer_names_[owner_layer_id] << "', param " + << "index " << owner_param_id; + Blob* this_blob = layers_[layer_id]->blobs()[param_id].get(); + Blob* owner_blob = + layers_[owner_layer_id]->blobs()[owner_param_id].get(); + const int param_size = layer_param.param_size(); + if (param_size > param_id && (layer_param.param(param_id).share_mode() == + ParamSpec_DimCheckMode_PERMISSIVE)) { + // Permissive dimension checking -- only check counts are the same. + CHECK_EQ(this_blob->count(), owner_blob->count()) + << "Cannot share param '" << param_name << "' owned by layer '" + << layer_names_[owner_layer_id] << "' with layer '" + << layer_names_[layer_id] << "'; count mismatch. Owner layer param " + << "shape is " << owner_blob->shape_string() << "; sharing layer " + << "shape is " << this_blob->shape_string(); + } else { + // Strict dimension checking -- all dims must be the same. + CHECK(this_blob->shape() == owner_blob->shape()) + << "Cannot share param '" << param_name << "' owned by layer '" + << layer_names_[owner_layer_id] << "' with layer '" + << layer_names_[layer_id] << "'; shape mismatch. Owner layer param " + << "shape is " << owner_blob->shape_string() << "; sharing layer " + << "expects shape " << this_blob->shape_string(); + } + const int learnable_param_id = learnable_param_ids_[owner_net_param_id]; + learnable_param_ids_.push_back(learnable_param_id); + if (param_spec->has_lr_mult()) { + if (has_params_lr_[learnable_param_id]) { + CHECK_EQ(param_spec->lr_mult(), params_lr_[learnable_param_id]) + << "Shared param '" << param_name << "' has mismatched lr_mult."; + } else { + has_params_lr_[learnable_param_id] = true; + params_lr_[learnable_param_id] = param_spec->lr_mult(); + } + } + if (param_spec->has_decay_mult()) { + if (has_params_decay_[learnable_param_id]) { + CHECK_EQ(param_spec->decay_mult(), + params_weight_decay_[learnable_param_id]) + << "Shared param '" << param_name << "' has mismatched decay_mult."; + } else { + has_params_decay_[learnable_param_id] = true; + params_weight_decay_[learnable_param_id] = param_spec->decay_mult(); + } + } + } +} + +template +Dtype Net::ForwardFromTo(int start, int end) { + CHECK_GE(start, 0); + CHECK_LT(end, layers_.size()); + Dtype loss = 0; + for (int i = start; i <= end; ++i) { + for (int c = 0; c < before_forward_.size(); ++c) { + before_forward_[c]->run(i); + } + Dtype layer_loss = layers_[i]->Forward(bottom_vecs_[i], top_vecs_[i]); + loss += layer_loss; + if (debug_info_) { ForwardDebugInfo(i); } + for (int c = 0; c < after_forward_.size(); ++c) { + after_forward_[c]->run(i); + } + } + return loss; +} + +template +Dtype Net::ForwardFrom(int start) { + return ForwardFromTo(start, layers_.size() - 1); +} + +template +Dtype Net::ForwardTo(int end) { + return ForwardFromTo(0, end); +} + +template +const vector*>& Net::Forward(Dtype* loss) { + if (loss != NULL) { + *loss = ForwardFromTo(0, layers_.size() - 1); + } else { + ForwardFromTo(0, layers_.size() - 1); + } + return net_output_blobs_; +} + +template +const vector*>& Net::Forward( + const vector*> & bottom, Dtype* loss) { + LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: Forward(bottom, loss) " + << "will be removed in a future version. Use Forward(loss)."; + // Copy bottom to net bottoms + for (int i = 0; i < bottom.size(); ++i) { + net_input_blobs_[i]->CopyFrom(*bottom[i]); + } + return Forward(loss); +} + +template +void Net::BackwardFromTo(int start, int end) { + CHECK_GE(end, 0); + CHECK_LT(start, layers_.size()); + for (int i = start; i >= end; --i) { + for (int c = 0; c < before_backward_.size(); ++c) { + before_backward_[c]->run(i); + } + if (layer_need_backward_[i]) { + layers_[i]->Backward( + top_vecs_[i], bottom_need_backward_[i], bottom_vecs_[i]); + if (debug_info_) { BackwardDebugInfo(i); } + } + for (int c = 0; c < after_backward_.size(); ++c) { + after_backward_[c]->run(i); + } + } +} + +template +void Net::ForwardDebugInfo(const int layer_id) { + for (int top_id = 0; top_id < top_vecs_[layer_id].size(); ++top_id) { + const Blob& blob = *top_vecs_[layer_id][top_id]; + const string& blob_name = blob_names_[top_id_vecs_[layer_id][top_id]]; + const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); + LOG_IF(INFO, Caffe::root_solver()) + << " [Forward] " + << "Layer " << layer_names_[layer_id] + << ", top blob " << blob_name + << " data: " << data_abs_val_mean; + } + for (int param_id = 0; param_id < layers_[layer_id]->blobs().size(); + ++param_id) { + const Blob& blob = *layers_[layer_id]->blobs()[param_id]; + const int net_param_id = param_id_vecs_[layer_id][param_id]; + const string& blob_name = param_display_names_[net_param_id]; + const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); + LOG_IF(INFO, Caffe::root_solver()) + << " [Forward] " + << "Layer " << layer_names_[layer_id] + << ", param blob " << blob_name + << " data: " << data_abs_val_mean; + } +} + +template +void Net::BackwardDebugInfo(const int layer_id) { + const vector*>& bottom_vec = bottom_vecs_[layer_id]; + for (int bottom_id = 0; bottom_id < bottom_vec.size(); ++bottom_id) { + if (!bottom_need_backward_[layer_id][bottom_id]) { continue; } + const Blob& blob = *bottom_vec[bottom_id]; + const string& blob_name = blob_names_[bottom_id_vecs_[layer_id][bottom_id]]; + const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); + LOG_IF(INFO, Caffe::root_solver()) + << " [Backward] " + << "Layer " << layer_names_[layer_id] + << ", bottom blob " << blob_name + << " diff: " << diff_abs_val_mean; + } + for (int param_id = 0; param_id < layers_[layer_id]->blobs().size(); + ++param_id) { + if (!layers_[layer_id]->param_propagate_down(param_id)) { continue; } + const Blob& blob = *layers_[layer_id]->blobs()[param_id]; + const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); + LOG_IF(INFO, Caffe::root_solver()) + << " [Backward] " + << "Layer " << layer_names_[layer_id] + << ", param blob " << param_id + << " diff: " << diff_abs_val_mean; + } +} + +template +void Net::UpdateDebugInfo(const int param_id) { + const Blob& blob = *params_[param_id]; + const int param_owner = param_owners_[param_id]; + const string& layer_name = layer_names_[param_layer_indices_[param_id].first]; + const string& param_display_name = param_display_names_[param_id]; + const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); + if (param_owner < 0) { + const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); + LOG_IF(INFO, Caffe::root_solver()) + << " [Update] Layer " << layer_name + << ", param " << param_display_name + << " data: " << data_abs_val_mean + << "; diff: " << diff_abs_val_mean; + } else { + const string& owner_layer_name = + layer_names_[param_layer_indices_[param_owner].first]; + LOG_IF(INFO, Caffe::root_solver()) + << " [Update] Layer " << layer_name + << ", param blob " << param_display_name + << " (owned by layer " << owner_layer_name << ", " << "param " + << param_display_names_[param_owners_[param_id]] << ")" + << " diff: " << diff_abs_val_mean; + } +} + +template +void Net::ShareTrainedLayersWith(const Net* other) { + int num_source_layers = other->layers().size(); + for (int i = 0; i < num_source_layers; ++i) { + Layer* source_layer = other->layers()[i].get(); + const string& source_layer_name = other->layer_names()[i]; + int target_layer_id = 0; + while (target_layer_id != layer_names_.size() && + layer_names_[target_layer_id] != source_layer_name) { + ++target_layer_id; + } + if (target_layer_id == layer_names_.size()) { + LOG(INFO) << "Ignoring source layer " << source_layer_name; + continue; + } + DLOG(INFO) << "Copying source layer " << source_layer_name; + vector > >& target_blobs = + layers_[target_layer_id]->blobs(); + CHECK_EQ(target_blobs.size(), source_layer->blobs().size()) + << "Incompatible number of blobs for layer " << source_layer_name; + for (int j = 0; j < target_blobs.size(); ++j) { + Blob* source_blob = source_layer->blobs()[j].get(); + CHECK(target_blobs[j]->shape() == source_blob->shape()) + << "Cannot share param " << j << " weights from layer '" + << source_layer_name << "'; shape mismatch. Source param shape is " + << source_blob->shape_string() << "; target param shape is " + << target_blobs[j]->shape_string(); + target_blobs[j]->ShareData(*source_blob); + } + } +} + +template +void Net::BackwardFrom(int start) { + BackwardFromTo(start, 0); +} + +template +void Net::BackwardTo(int end) { + BackwardFromTo(layers_.size() - 1, end); +} + +template +void Net::Backward() { + BackwardFromTo(layers_.size() - 1, 0); + if (debug_info_) { + Dtype asum_data = 0, asum_diff = 0, sumsq_data = 0, sumsq_diff = 0; + for (int i = 0; i < learnable_params_.size(); ++i) { + asum_data += learnable_params_[i]->asum_data(); + asum_diff += learnable_params_[i]->asum_diff(); + sumsq_data += learnable_params_[i]->sumsq_data(); + sumsq_diff += learnable_params_[i]->sumsq_diff(); + } + const Dtype l2norm_data = std::sqrt(sumsq_data); + const Dtype l2norm_diff = std::sqrt(sumsq_diff); + LOG(ERROR) << " [Backward] All net params (data, diff): " + << "L1 norm = (" << asum_data << ", " << asum_diff << "); " + << "L2 norm = (" << l2norm_data << ", " << l2norm_diff << ")"; + } +} + +template +void Net::Reshape() { + for (int i = 0; i < layers_.size(); ++i) { + layers_[i]->Reshape(bottom_vecs_[i], top_vecs_[i]); + } +} + +template +void Net::CopyTrainedLayersFrom(const NetParameter& param) { + int num_source_layers = param.layer_size(); + for (int i = 0; i < num_source_layers; ++i) { + const LayerParameter& source_layer = param.layer(i); + const string& source_layer_name = source_layer.name(); + int target_layer_id = 0; + while (target_layer_id != layer_names_.size() && + layer_names_[target_layer_id] != source_layer_name) { + ++target_layer_id; + } + if (target_layer_id == layer_names_.size()) { + LOG(INFO) << "Ignoring source layer " << source_layer_name; + continue; + } + DLOG(INFO) << "Copying source layer " << source_layer_name; + vector > >& target_blobs = + layers_[target_layer_id]->blobs(); + CHECK_EQ(target_blobs.size(), source_layer.blobs_size()) + << "Incompatible number of blobs for layer " << source_layer_name; + for (int j = 0; j < target_blobs.size(); ++j) { + if (!target_blobs[j]->ShapeEquals(source_layer.blobs(j))) { + Blob source_blob; + const bool kReshape = true; + source_blob.FromProto(source_layer.blobs(j), kReshape); + LOG(FATAL) << "Cannot copy param " << j << " weights from layer '" + << source_layer_name << "'; shape mismatch. Source param shape is " + << source_blob.shape_string() << "; target param shape is " + << target_blobs[j]->shape_string() << ". " + << "To learn this layer's parameters from scratch rather than " + << "copying from a saved net, rename the layer."; + } + const bool kReshape = false; + target_blobs[j]->FromProto(source_layer.blobs(j), kReshape); + } + } +} + +template +void Net::CopyTrainedLayersFrom(const string trained_filename) { + if (H5Fis_hdf5(trained_filename.c_str())) { + CopyTrainedLayersFromHDF5(trained_filename); + } else { + CopyTrainedLayersFromBinaryProto(trained_filename); + } +} + +template +void Net::CopyTrainedLayersFromBinaryProto( + const string trained_filename) { + NetParameter param; + ReadNetParamsFromBinaryFileOrDie(trained_filename, ¶m); + CopyTrainedLayersFrom(param); +} + +template +void Net::CopyTrainedLayersFromHDF5(const string trained_filename) { + hid_t file_hid = H5Fopen(trained_filename.c_str(), H5F_ACC_RDONLY, + H5P_DEFAULT); + CHECK_GE(file_hid, 0) << "Couldn't open " << trained_filename; + hid_t data_hid = H5Gopen2(file_hid, "data", H5P_DEFAULT); + CHECK_GE(data_hid, 0) << "Error reading weights from " << trained_filename; + int num_layers = hdf5_get_num_links(data_hid); + for (int i = 0; i < num_layers; ++i) { + string source_layer_name = hdf5_get_name_by_idx(data_hid, i); + if (!layer_names_index_.count(source_layer_name)) { + LOG(INFO) << "Ignoring source layer " << source_layer_name; + continue; + } + int target_layer_id = layer_names_index_[source_layer_name]; + DLOG(INFO) << "Copying source layer " << source_layer_name; + vector > >& target_blobs = + layers_[target_layer_id]->blobs(); + hid_t layer_hid = H5Gopen2(data_hid, source_layer_name.c_str(), + H5P_DEFAULT); + CHECK_GE(layer_hid, 0) + << "Error reading weights from " << trained_filename; + // Check that source layer doesn't have more params than target layer + int num_source_params = hdf5_get_num_links(layer_hid); + CHECK_LE(num_source_params, target_blobs.size()) + << "Incompatible number of blobs for layer " << source_layer_name; + for (int j = 0; j < target_blobs.size(); ++j) { + ostringstream oss; + oss << j; + string dataset_name = oss.str(); + int target_net_param_id = param_id_vecs_[target_layer_id][j]; + if (!H5Lexists(layer_hid, dataset_name.c_str(), H5P_DEFAULT)) { + // Target param doesn't exist in source weights... + if (param_owners_[target_net_param_id] != -1) { + // ...but it's weight-shared in target, so that's fine. + continue; + } else { + LOG(FATAL) << "Incompatible number of blobs for layer " + << source_layer_name; + } + } + hdf5_load_nd_dataset(layer_hid, dataset_name.c_str(), 0, kMaxBlobAxes, + target_blobs[j].get()); + } + H5Gclose(layer_hid); + } + H5Gclose(data_hid); + H5Fclose(file_hid); +} + +template +void Net::ToProto(NetParameter* param, bool write_diff) const { + param->Clear(); + param->set_name(name_); + // Add bottom and top + DLOG(INFO) << "Serializing " << layers_.size() << " layers"; + for (int i = 0; i < layers_.size(); ++i) { + LayerParameter* layer_param = param->add_layer(); + layers_[i]->ToProto(layer_param, write_diff); + } +} + +template +void Net::ToHDF5(const string& filename, bool write_diff) const { + hid_t file_hid = H5Fcreate(filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, + H5P_DEFAULT); + CHECK_GE(file_hid, 0) + << "Couldn't open " << filename << " to save weights."; + hid_t data_hid = H5Gcreate2(file_hid, "data", H5P_DEFAULT, H5P_DEFAULT, + H5P_DEFAULT); + CHECK_GE(data_hid, 0) << "Error saving weights to " << filename << "."; + hid_t diff_hid = -1; + if (write_diff) { + diff_hid = H5Gcreate2(file_hid, "diff", H5P_DEFAULT, H5P_DEFAULT, + H5P_DEFAULT); + CHECK_GE(diff_hid, 0) << "Error saving weights to " << filename << "."; + } + for (int layer_id = 0; layer_id < layers_.size(); ++layer_id) { + const LayerParameter& layer_param = layers_[layer_id]->layer_param(); + string layer_name = layer_param.name(); + hid_t layer_data_hid = H5Gcreate2(data_hid, layer_name.c_str(), + H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + CHECK_GE(layer_data_hid, 0) + << "Error saving weights to " << filename << "."; + hid_t layer_diff_hid = -1; + if (write_diff) { + layer_diff_hid = H5Gcreate2(diff_hid, layer_name.c_str(), + H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + CHECK_GE(layer_diff_hid, 0) + << "Error saving weights to " << filename << "."; + } + int num_params = layers_[layer_id]->blobs().size(); + for (int param_id = 0; param_id < num_params; ++param_id) { + ostringstream dataset_name; + dataset_name << param_id; + const int net_param_id = param_id_vecs_[layer_id][param_id]; + if (param_owners_[net_param_id] == -1) { + // Only save params that own themselves + hdf5_save_nd_dataset(layer_data_hid, dataset_name.str(), + *params_[net_param_id]); + } + if (write_diff) { + // Write diffs regardless of weight-sharing + hdf5_save_nd_dataset(layer_diff_hid, dataset_name.str(), + *params_[net_param_id], true); + } + } + H5Gclose(layer_data_hid); + if (write_diff) { + H5Gclose(layer_diff_hid); + } + } + H5Gclose(data_hid); + if (write_diff) { + H5Gclose(diff_hid); + } + H5Fclose(file_hid); +} + +template +void Net::Update() { + for (int i = 0; i < learnable_params_.size(); ++i) { + learnable_params_[i]->Update(); + } +} + +template +void Net::ClearParamDiffs() { + for (int i = 0; i < learnable_params_.size(); ++i) { + Blob* blob = learnable_params_[i]; + switch (Caffe::mode()) { + case Caffe::CPU: + caffe_set(blob->count(), static_cast(0), + blob->mutable_cpu_diff()); + break; + case Caffe::GPU: +#ifndef CPU_ONLY + caffe_gpu_set(blob->count(), static_cast(0), + blob->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + } +} + +template +void Net::ShareWeights() { + for (int i = 0; i < params_.size(); ++i) { + if (param_owners_[i] < 0) { continue; } + params_[i]->ShareData(*params_[param_owners_[i]]); + params_[i]->ShareDiff(*params_[param_owners_[i]]); + } +} + +template +bool Net::has_blob(const string& blob_name) const { + return blob_names_index_.find(blob_name) != blob_names_index_.end(); +} + +template +const shared_ptr > Net::blob_by_name( + const string& blob_name) const { + shared_ptr > blob_ptr; + if (has_blob(blob_name)) { + blob_ptr = blobs_[blob_names_index_.find(blob_name)->second]; + } else { + blob_ptr.reset((Blob*)(NULL)); + LOG(WARNING) << "Unknown blob name " << blob_name; + } + return blob_ptr; +} + +template +bool Net::has_layer(const string& layer_name) const { + return layer_names_index_.find(layer_name) != layer_names_index_.end(); +} + +template +const shared_ptr > Net::layer_by_name( + const string& layer_name) const { + shared_ptr > layer_ptr; + if (has_layer(layer_name)) { + layer_ptr = layers_[layer_names_index_.find(layer_name)->second]; + } else { + layer_ptr.reset((Layer*)(NULL)); + LOG(WARNING) << "Unknown layer name " << layer_name; + } + return layer_ptr; +} + +INSTANTIATE_CLASS(Net); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/parallel.cpp b/3rdparty/caffe/src/caffe/parallel.cpp new file mode 100644 index 00000000..d9433917 --- /dev/null +++ b/3rdparty/caffe/src/caffe/parallel.cpp @@ -0,0 +1,371 @@ +#ifdef USE_NCCL + +#include +#include +#include +#include +#include +#include + +#include "caffe/caffe.hpp" +#include "caffe/parallel.hpp" +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +enum Op { + copy, + replace_cpu, + replace_gpu, + replace_cpu_diff, + replace_gpu_diff +}; + +template +static void apply_buffers(const vector*>& blobs, + Dtype* buffer, size_t total_size, Op op) { + Dtype* ptr = buffer; + for (int i = 0; i < blobs.size(); ++i) { + int size = blobs[i]->count(); + switch (op) { + case copy: { + // Init buffer to current values of blobs + caffe_copy(size, + reinterpret_cast(blobs[i]->data()->cpu_data()), + ptr); + break; + } + case replace_cpu: + blobs[i]->data()->set_cpu_data(ptr); + break; + case replace_gpu: + blobs[i]->data()->set_gpu_data(ptr); + break; + case replace_cpu_diff: + blobs[i]->diff()->set_cpu_data(ptr); + break; + case replace_gpu_diff: + blobs[i]->diff()->set_gpu_data(ptr); + break; + } + ptr += size; + } + // total_size is at least one byte + CHECK_EQ(total_size, (ptr == buffer ? 1 : ptr - buffer)); +} + +// Buffer size necessary to store given blobs +template +static size_t total_size(const vector*>& params) { + size_t size = 0; + for (int i = 0; i < params.size(); ++i) + size += params[i]->count(); + // Size have at least one byte, otherwise cudaMalloc fails if net has no + // learnable parameters. + return (size > 0) ? size : 1; +} + +template +Params::Params(shared_ptr > root_solver) + : size_(total_size(root_solver->net()->learnable_params())), + data_(), + diff_() { +} + +template +GPUParams::GPUParams(shared_ptr > root_solver, int device) + : Params(root_solver) { + int initial_device; + CUDA_CHECK(cudaGetDevice(&initial_device)); + + // Allocate device buffers + CUDA_CHECK(cudaSetDevice(device)); + CUDA_CHECK(cudaMalloc(&data_, size_ * sizeof(Dtype))); + + // Copy blob values + const vector*>& net = + root_solver->net()->learnable_params(); + apply_buffers(net, data_, size_, copy); + + CUDA_CHECK(cudaMalloc(&diff_, size_ * sizeof(Dtype))); + caffe_gpu_set(size_, Dtype(0), diff_); + + CUDA_CHECK(cudaSetDevice(initial_device)); +} + +template +GPUParams::~GPUParams() { + CUDA_CHECK(cudaFree(data_)); + CUDA_CHECK(cudaFree(diff_)); +} + +template +void GPUParams::Configure(Solver* solver) const { + const vector*>& net = + solver->net()->learnable_params(); + apply_buffers(net, data_, size_, replace_gpu); + apply_buffers(net, diff_, size_, replace_gpu_diff); +} + +static int getDevice() { + int device = 0; + CUDA_CHECK(cudaGetDevice(&device)); + return device; +} + +template +NCCL::NCCL(shared_ptr > solver) + : GPUParams(solver, getDevice()), + comm_(), solver_(solver), barrier_() { + this->Configure(solver.get()); + Init(); +} + +template +NCCL::NCCL(shared_ptr > solver, const string& uid) + : GPUParams(solver, getDevice()), + solver_(solver), barrier_() { + this->Configure(solver.get()); + Caffe::set_multiprocess(true); + ncclUniqueId nccl_uid; + memcpy(&nccl_uid, &uid[0], NCCL_UNIQUE_ID_BYTES); // NOLINT(caffe/alt_fn) + NCCL_CHECK(ncclCommInitRank(&comm_, + Caffe::solver_count(), + nccl_uid, + Caffe::solver_rank())); + Init(); +} + +template +void NCCL::Init() { + if (solver_->param().layer_wise_reduce()) { + CUDA_CHECK(cudaStreamCreateWithFlags(&stream_, cudaStreamNonBlocking)); + } +} + +template +NCCL::~NCCL() { + if (solver_->param().layer_wise_reduce()) { + CUDA_CHECK(cudaStreamDestroy(stream_)); + } + if (comm_) { + ncclCommDestroy(comm_); + } +} + +template +boost::barrier* NCCL::barrier() { + return barrier_; +} +template +void NCCL::set_barrier(boost::barrier* value) { + barrier_ = value; +} + +template +void NCCL::InitSingleProcess(vector*>* nccls) { + ncclComm_t* comms = new ncclComm_t[nccls->size()]; + int* gpu_list = new int[nccls->size()]; + for (int i = 0; i < nccls->size(); ++i) { + gpu_list[i] = (*nccls)[i]->solver_->param().device_id(); + } + NCCL_CHECK(ncclCommInitAll(comms, static_cast(nccls->size()), gpu_list)); + for (int i = 0; i < nccls->size(); ++i) { + (*nccls)[i]->comm_ = comms[i]; + } +} + +template +string NCCL::new_uid() { + string uid; + uid.resize(NCCL_UNIQUE_ID_BYTES); + ncclUniqueId nccl_uid; + NCCL_CHECK(ncclGetUniqueId(&nccl_uid)); + memcpy(&uid[0], &nccl_uid, NCCL_UNIQUE_ID_BYTES); // NOLINT(caffe/alt_fn) + return uid; +} + +template +void NCCL::Broadcast() { + if (barrier_) { // NULL in multi process case + barrier_->wait(); + } + NCCL_CHECK(ncclBcast(data_, static_cast(size_), + nccl::dataType::type, 0, + comm_, cudaStreamDefault)); + if (barrier_) { + barrier_->wait(); + } +} + +template +void NCCL::run(int layer) { + CHECK(solver_->param().layer_wise_reduce()); + vector > >& blobs = + solver_->net()->layers()[layer]->blobs(); +#ifdef DEBUG + // Assert blobs are contiguous to reduce in one step (e.g. bias often small) + for (int i = 1; i < blobs.size(); ++i) { + CHECK_EQ(blobs[i - 1]->gpu_diff() + blobs[i - 1]->count(), + blobs[i + 0]->gpu_diff()); + } +#endif + if (blobs.size() > 0) { + // Make sure default stream is done computing gradients. Could be + // replaced by cudaEventRecord+cudaStreamWaitEvent to avoid + // blocking the default stream, but it's actually slower. + CUDA_CHECK(cudaStreamSynchronize(cudaStreamDefault)); + + // Reduce asynchronously + int size = 0; + for (int i = 0; i < blobs.size(); ++i) { + size += blobs[i]->count(); + } + if (barrier_) { // NULL in multi process case + barrier_->wait(); + } + NCCL_CHECK(ncclAllReduce(blobs[0]->mutable_gpu_diff(), + blobs[0]->mutable_gpu_diff(), + size, + nccl::dataType::type, + ncclSum, comm_, stream_)); + caffe_gpu_scal(size, (Dtype) 1.0 / Caffe::solver_count(), + blobs[0]->mutable_gpu_diff(), stream_); + } +} + +template +void NCCL::on_gradients_ready() { + if (solver_->param().layer_wise_reduce()) { + CHECK_EQ(solver_->net()->params().size(), + solver_->net()->learnable_params().size()) + << "Layer-wise reduce is not supported for nets with shared weights."; + + // Make sure reduction is done before applying gradients + CUDA_CHECK(cudaStreamSynchronize(stream_)); + } else { + if (barrier_) { // NULL in multi process case + barrier_->wait(); + } + NCCL_CHECK(ncclAllReduce(diff_, diff_, static_cast(size_), + nccl::dataType::type, ncclSum, comm_, + cudaStreamDefault)); + caffe_gpu_scal(static_cast(size_), + (Dtype) 1.0 / Caffe::solver_count(), diff_); + } +} + +template +class Worker : public InternalThread { + public: + explicit Worker(shared_ptr > rank0, int device, + boost::barrier* barrier, vector*>* nccls, + const char* restore) + : rank0_(rank0), device_(device), barrier_(barrier), + nccls_(nccls), restore_(restore) { + } + virtual ~Worker() {} + + protected: + void InternalThreadEntry() { + // Create solver and install callbacks + SolverParameter param(rank0_->param()); + param.set_device_id(device_); +#ifdef DEBUG + int device; + CUDA_CHECK(cudaGetDevice(&device)); + CHECK_EQ(device, device_); +#endif + param.set_type(rank0_->type()); + shared_ptr > s(SolverRegistry::CreateSolver(param)); + CHECK_EQ(s->type(), rank0_->type()); + if (restore_) { + // Could not make NCCL broadcast solver state, it seems to crash + // if called in a tight loop, regardless of barriers etc. so + // restore all solvers from file. + s->Restore(restore_); + } + NCCL nccl(s); + nccl.set_barrier(barrier_); + s->add_callback(&nccl); + if (s->param().layer_wise_reduce()) { + s->net()->add_after_backward(&nccl); + } + (*nccls_)[Caffe::solver_rank()] = &nccl; + // Wait for other threads + barrier_->wait(); + // Wait for NCCL init + barrier_->wait(); + // Broadcast rank 0 state + nccl.Broadcast(); + // Solve + s->Step(param.max_iter() - s->iter()); + barrier_->wait(); +#ifdef DEBUG + // Check all solvers have same state + SGDSolver* sa = static_cast*>(rank0_.get()); + SGDSolver* sb = static_cast*>(s.get()); + for (int h = 0; h < sa->history().size(); ++h) { + CUDA_CHECK(cudaSetDevice(sa->param().device_id())); + const Dtype* a = sa->history()[h]->cpu_data(); + CUDA_CHECK(cudaSetDevice(sb->param().device_id())); + const Dtype* b = sb->history()[h]->cpu_data(); + for (int v = 0; v < sa->history()[h]->count(); ++v) { + CHECK_DOUBLE_EQ(a[v], b[v]); + } + } +#endif + } + + shared_ptr > rank0_; + int device_; + boost::barrier* barrier_; + vector*>* nccls_; + const char* restore_; +}; + +template +void NCCL::Run(const vector& gpus, const char* restore) { + boost::barrier barrier(static_cast(gpus.size())); + vector*> nccls(gpus.size()); + // Create workers + vector > > workers(gpus.size()); + for (int i = 1; i < gpus.size(); ++i) { + CUDA_CHECK(cudaSetDevice(gpus[i])); + Caffe::set_solver_rank(i); + Worker* w = new Worker(solver_, gpus[i], &barrier, + &nccls, restore); + w->StartInternalThread(); + workers[i].reset(w); + } + CUDA_CHECK(cudaSetDevice(gpus[0])); + Caffe::set_solver_rank(0); + barrier_ = &barrier; + solver_->add_callback(this); + if (solver_->param().layer_wise_reduce()) { + solver_->net()->add_after_backward(this); + } + nccls[0] = this; + // Wait for workers + barrier.wait(); + // Init NCCL + InitSingleProcess(&nccls); + barrier.wait(); + // Run first solver on current thread + Broadcast(); + solver_->Solve(); + barrier.wait(); // Hangs without it when running tests + // Wait for shutdown + for (int i = 1; i < gpus.size(); ++i) { + workers[i]->StopInternalThread(); + } +} + +INSTANTIATE_CLASS(Params); +INSTANTIATE_CLASS(GPUParams); +INSTANTIATE_CLASS(Worker); +INSTANTIATE_CLASS(NCCL); + +} // namespace caffe + +#endif // USE_NCCL diff --git a/3rdparty/caffe/src/caffe/proto/caffe.proto b/3rdparty/caffe/src/caffe/proto/caffe.proto new file mode 100644 index 00000000..c96966b5 --- /dev/null +++ b/3rdparty/caffe/src/caffe/proto/caffe.proto @@ -0,0 +1,1412 @@ +syntax = "proto2"; + +package caffe; + +// Specifies the shape (dimensions) of a Blob. +message BlobShape { + repeated int64 dim = 1 [packed = true]; +} + +message BlobProto { + optional BlobShape shape = 7; + repeated float data = 5 [packed = true]; + repeated float diff = 6 [packed = true]; + repeated double double_data = 8 [packed = true]; + repeated double double_diff = 9 [packed = true]; + + // 4D dimensions -- deprecated. Use "shape" instead. + optional int32 num = 1 [default = 0]; + optional int32 channels = 2 [default = 0]; + optional int32 height = 3 [default = 0]; + optional int32 width = 4 [default = 0]; +} + +// The BlobProtoVector is simply a way to pass multiple blobproto instances +// around. +message BlobProtoVector { + repeated BlobProto blobs = 1; +} + +message Datum { + optional int32 channels = 1; + optional int32 height = 2; + optional int32 width = 3; + // the actual image data, in bytes + optional bytes data = 4; + optional int32 label = 5; + // Optionally, the datum could also hold float data. + repeated float float_data = 6; + // If true data contains an encoded image that need to be decoded + optional bool encoded = 7 [default = false]; +} + +message FillerParameter { + // The filler type. + optional string type = 1 [default = 'constant']; + optional float value = 2 [default = 0]; // the value in constant filler + optional float min = 3 [default = 0]; // the min value in uniform filler + optional float max = 4 [default = 1]; // the max value in uniform filler + optional float mean = 5 [default = 0]; // the mean value in Gaussian filler + optional float std = 6 [default = 1]; // the std value in Gaussian filler + // The expected number of non-zero output weights for a given input in + // Gaussian filler -- the default -1 means don't perform sparsification. + optional int32 sparse = 7 [default = -1]; + // Normalize the filler variance by fan_in, fan_out, or their average. + // Applies to 'xavier' and 'msra' fillers. + enum VarianceNorm { + FAN_IN = 0; + FAN_OUT = 1; + AVERAGE = 2; + } + optional VarianceNorm variance_norm = 8 [default = FAN_IN]; +} + +message NetParameter { + optional string name = 1; // consider giving the network a name + // DEPRECATED. See InputParameter. The input blobs to the network. + repeated string input = 3; + // DEPRECATED. See InputParameter. The shape of the input blobs. + repeated BlobShape input_shape = 8; + + // 4D input dimensions -- deprecated. Use "input_shape" instead. + // If specified, for each input blob there should be four + // values specifying the num, channels, height and width of the input blob. + // Thus, there should be a total of (4 * #input) numbers. + repeated int32 input_dim = 4; + + // Whether the network will force every layer to carry out backward operation. + // If set False, then whether to carry out backward is determined + // automatically according to the net structure and learning rates. + optional bool force_backward = 5 [default = false]; + // The current "state" of the network, including the phase, level, and stage. + // Some layers may be included/excluded depending on this state and the states + // specified in the layers' include and exclude fields. + optional NetState state = 6; + + // Print debugging information about results while running Net::Forward, + // Net::Backward, and Net::Update. + optional bool debug_info = 7 [default = false]; + + // The layers that make up the net. Each of their configurations, including + // connectivity and behavior, is specified as a LayerParameter. + repeated LayerParameter layer = 100; // ID 100 so layers are printed last. + + // DEPRECATED: use 'layer' instead. + repeated V1LayerParameter layers = 2; +} + +// NOTE +// Update the next available ID when you add a new SolverParameter field. +// +// SolverParameter next available ID: 42 (last added: layer_wise_reduce) +message SolverParameter { + ////////////////////////////////////////////////////////////////////////////// + // Specifying the train and test networks + // + // Exactly one train net must be specified using one of the following fields: + // train_net_param, train_net, net_param, net + // One or more test nets may be specified using any of the following fields: + // test_net_param, test_net, net_param, net + // If more than one test net field is specified (e.g., both net and + // test_net are specified), they will be evaluated in the field order given + // above: (1) test_net_param, (2) test_net, (3) net_param/net. + // A test_iter must be specified for each test_net. + // A test_level and/or a test_stage may also be specified for each test_net. + ////////////////////////////////////////////////////////////////////////////// + + // Proto filename for the train net, possibly combined with one or more + // test nets. + optional string net = 24; + // Inline train net param, possibly combined with one or more test nets. + optional NetParameter net_param = 25; + + optional string train_net = 1; // Proto filename for the train net. + repeated string test_net = 2; // Proto filenames for the test nets. + optional NetParameter train_net_param = 21; // Inline train net params. + repeated NetParameter test_net_param = 22; // Inline test net params. + + // The states for the train/test nets. Must be unspecified or + // specified once per net. + // + // By default, train_state will have phase = TRAIN, + // and all test_state's will have phase = TEST. + // Other defaults are set according to the NetState defaults. + optional NetState train_state = 26; + repeated NetState test_state = 27; + + // The number of iterations for each test net. + repeated int32 test_iter = 3; + + // The number of iterations between two testing phases. + optional int32 test_interval = 4 [default = 0]; + optional bool test_compute_loss = 19 [default = false]; + // If true, run an initial test pass before the first iteration, + // ensuring memory availability and printing the starting value of the loss. + optional bool test_initialization = 32 [default = true]; + optional float base_lr = 5; // The base learning rate + // the number of iterations between displaying info. If display = 0, no info + // will be displayed. + optional int32 display = 6; + // Display the loss averaged over the last average_loss iterations + optional int32 average_loss = 33 [default = 1]; + optional int32 max_iter = 7; // the maximum number of iterations + // accumulate gradients over `iter_size` x `batch_size` instances + optional int32 iter_size = 36 [default = 1]; + + // The learning rate decay policy. The currently implemented learning rate + // policies are as follows: + // - fixed: always return base_lr. + // - step: return base_lr * gamma ^ (floor(iter / step)) + // - exp: return base_lr * gamma ^ iter + // - inv: return base_lr * (1 + gamma * iter) ^ (- power) + // - multistep: similar to step but it allows non uniform steps defined by + // stepvalue + // - poly: the effective learning rate follows a polynomial decay, to be + // zero by the max_iter. return base_lr (1 - iter/max_iter) ^ (power) + // - sigmoid: the effective learning rate follows a sigmod decay + // return base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))) + // + // where base_lr, max_iter, gamma, step, stepvalue and power are defined + // in the solver parameter protocol buffer, and iter is the current iteration. + optional string lr_policy = 8; + optional float gamma = 9; // The parameter to compute the learning rate. + optional float power = 10; // The parameter to compute the learning rate. + optional float momentum = 11; // The momentum value. + optional float weight_decay = 12; // The weight decay. + // regularization types supported: L1 and L2 + // controlled by weight_decay + optional string regularization_type = 29 [default = "L2"]; + // the stepsize for learning rate policy "step" + optional int32 stepsize = 13; + // the stepsize for learning rate policy "multistep" + repeated int32 stepvalue = 34; + + // Set clip_gradients to >= 0 to clip parameter gradients to that L2 norm, + // whenever their actual L2 norm is larger. + optional float clip_gradients = 35 [default = -1]; + + optional int32 snapshot = 14 [default = 0]; // The snapshot interval + optional string snapshot_prefix = 15; // The prefix for the snapshot. + // whether to snapshot diff in the results or not. Snapshotting diff will help + // debugging but the final protocol buffer size will be much larger. + optional bool snapshot_diff = 16 [default = false]; + enum SnapshotFormat { + HDF5 = 0; + BINARYPROTO = 1; + } + optional SnapshotFormat snapshot_format = 37 [default = BINARYPROTO]; + // the mode solver will use: 0 for CPU and 1 for GPU. Use GPU in default. + enum SolverMode { + CPU = 0; + GPU = 1; + } + optional SolverMode solver_mode = 17 [default = GPU]; + // the device_id will that be used in GPU mode. Use device_id = 0 in default. + optional int32 device_id = 18 [default = 0]; + // If non-negative, the seed with which the Solver will initialize the Caffe + // random number generator -- useful for reproducible results. Otherwise, + // (and by default) initialize using a seed derived from the system clock. + optional int64 random_seed = 20 [default = -1]; + + // type of the solver + optional string type = 40 [default = "SGD"]; + + // numerical stability for RMSProp, AdaGrad and AdaDelta and Adam + optional float delta = 31 [default = 1e-8]; + // parameters for the Adam solver + optional float momentum2 = 39 [default = 0.999]; + + // RMSProp decay value + // MeanSquare(t) = rms_decay*MeanSquare(t-1) + (1-rms_decay)*SquareGradient(t) + optional float rms_decay = 38 [default = 0.99]; + + // If true, print information about the state of the net that may help with + // debugging learning problems. + optional bool debug_info = 23 [default = false]; + + // If false, don't save a snapshot after training finishes. + optional bool snapshot_after_train = 28 [default = true]; + + // DEPRECATED: old solver enum types, use string instead + enum SolverType { + SGD = 0; + NESTEROV = 1; + ADAGRAD = 2; + RMSPROP = 3; + ADADELTA = 4; + ADAM = 5; + } + // DEPRECATED: use type instead of solver_type + optional SolverType solver_type = 30 [default = SGD]; + + // Overlap compute and communication for data parallel training + optional bool layer_wise_reduce = 41 [default = true]; +} + +// A message that stores the solver snapshots +message SolverState { + optional int32 iter = 1; // The current iteration + optional string learned_net = 2; // The file that stores the learned net. + repeated BlobProto history = 3; // The history for sgd solvers + optional int32 current_step = 4 [default = 0]; // The current step for learning rate +} + +enum Phase { + TRAIN = 0; + TEST = 1; +} + +message NetState { + optional Phase phase = 1 [default = TEST]; + optional int32 level = 2 [default = 0]; + repeated string stage = 3; +} + +message NetStateRule { + // Set phase to require the NetState have a particular phase (TRAIN or TEST) + // to meet this rule. + optional Phase phase = 1; + + // Set the minimum and/or maximum levels in which the layer should be used. + // Leave undefined to meet the rule regardless of level. + optional int32 min_level = 2; + optional int32 max_level = 3; + + // Customizable sets of stages to include or exclude. + // The net must have ALL of the specified stages and NONE of the specified + // "not_stage"s to meet the rule. + // (Use multiple NetStateRules to specify conjunctions of stages.) + repeated string stage = 4; + repeated string not_stage = 5; +} + +// Specifies training parameters (multipliers on global learning constants, +// and the name and other settings used for weight sharing). +message ParamSpec { + // The names of the parameter blobs -- useful for sharing parameters among + // layers, but never required otherwise. To share a parameter between two + // layers, give it a (non-empty) name. + optional string name = 1; + + // Whether to require shared weights to have the same shape, or just the same + // count -- defaults to STRICT if unspecified. + optional DimCheckMode share_mode = 2; + enum DimCheckMode { + // STRICT (default) requires that num, channels, height, width each match. + STRICT = 0; + // PERMISSIVE requires only the count (num*channels*height*width) to match. + PERMISSIVE = 1; + } + + // The multiplier on the global learning rate for this parameter. + optional float lr_mult = 3 [default = 1.0]; + + // The multiplier on the global weight decay for this parameter. + optional float decay_mult = 4 [default = 1.0]; +} + +// NOTE +// Update the next available ID when you add a new LayerParameter field. +// +// LayerParameter next available layer-specific ID: 147 (last added: recurrent_param) +message LayerParameter { + optional string name = 1; // the layer name + optional string type = 2; // the layer type + repeated string bottom = 3; // the name of each bottom blob + repeated string top = 4; // the name of each top blob + + // The train / test phase for computation. + optional Phase phase = 10; + + // The amount of weight to assign each top blob in the objective. + // Each layer assigns a default value, usually of either 0 or 1, + // to each top blob. + repeated float loss_weight = 5; + + // Specifies training parameters (multipliers on global learning constants, + // and the name and other settings used for weight sharing). + repeated ParamSpec param = 6; + + // The blobs containing the numeric parameters of the layer. + repeated BlobProto blobs = 7; + + // Specifies whether to backpropagate to each bottom. If unspecified, + // Caffe will automatically infer whether each input needs backpropagation + // to compute parameter gradients. If set to true for some inputs, + // backpropagation to those inputs is forced; if set false for some inputs, + // backpropagation to those inputs is skipped. + // + // The size must be either 0 or equal to the number of bottoms. + repeated bool propagate_down = 11; + + // Rules controlling whether and when a layer is included in the network, + // based on the current NetState. You may specify a non-zero number of rules + // to include OR exclude, but not both. If no include or exclude rules are + // specified, the layer is always included. If the current NetState meets + // ANY (i.e., one or more) of the specified rules, the layer is + // included/excluded. + repeated NetStateRule include = 8; + repeated NetStateRule exclude = 9; + + // Parameters for data pre-processing. + optional TransformationParameter transform_param = 100; + + // Parameters shared by loss layers. + optional LossParameter loss_param = 101; + + // Layer type-specific parameters. + // + // Note: certain layers may have more than one computational engine + // for their implementation. These layers include an Engine type and + // engine parameter for selecting the implementation. + // The default for the engine is set by the ENGINE switch at compile-time. + optional AccuracyParameter accuracy_param = 102; + optional ArgMaxParameter argmax_param = 103; + optional BatchNormParameter batch_norm_param = 139; + optional BiasParameter bias_param = 141; + optional ConcatParameter concat_param = 104; + optional ContrastiveLossParameter contrastive_loss_param = 105; + optional ConvolutionParameter convolution_param = 106; + optional CropParameter crop_param = 144; + optional DataParameter data_param = 107; + optional DropoutParameter dropout_param = 108; + optional DummyDataParameter dummy_data_param = 109; + optional EltwiseParameter eltwise_param = 110; + optional ELUParameter elu_param = 140; + optional EmbedParameter embed_param = 137; + optional ExpParameter exp_param = 111; + optional FlattenParameter flatten_param = 135; + optional HDF5DataParameter hdf5_data_param = 112; + optional HDF5OutputParameter hdf5_output_param = 113; + optional HingeLossParameter hinge_loss_param = 114; + optional ImageDataParameter image_data_param = 115; + optional InfogainLossParameter infogain_loss_param = 116; + optional InnerProductParameter inner_product_param = 117; + optional InputParameter input_param = 143; + optional LogParameter log_param = 134; + optional LRNParameter lrn_param = 118; + optional MemoryDataParameter memory_data_param = 119; + optional MVNParameter mvn_param = 120; + optional ParameterParameter parameter_param = 145; + optional PoolingParameter pooling_param = 121; + optional PowerParameter power_param = 122; + optional PReLUParameter prelu_param = 131; + optional PythonParameter python_param = 130; + optional RecurrentParameter recurrent_param = 146; + optional ReductionParameter reduction_param = 136; + optional ReLUParameter relu_param = 123; + optional ReshapeParameter reshape_param = 133; + optional ScaleParameter scale_param = 142; + optional SigmoidParameter sigmoid_param = 124; + optional SoftmaxParameter softmax_param = 125; + optional SPPParameter spp_param = 132; + optional SliceParameter slice_param = 126; + optional TanHParameter tanh_param = 127; + optional ThresholdParameter threshold_param = 128; + optional TileParameter tile_param = 138; + optional WindowDataParameter window_data_param = 129; +} + +// Message that stores parameters used to apply transformation +// to the data layer's data +message TransformationParameter { + // For data pre-processing, we can do simple scaling and subtracting the + // data mean, if provided. Note that the mean subtraction is always carried + // out before scaling. + optional float scale = 1 [default = 1]; + // Specify if we want to randomly mirror data. + optional bool mirror = 2 [default = false]; + // Specify if we would like to randomly crop an image. + optional uint32 crop_size = 3 [default = 0]; + // mean_file and mean_value cannot be specified at the same time + optional string mean_file = 4; + // if specified can be repeated once (would subtract it from all the channels) + // or can be repeated the same number of times as channels + // (would subtract them from the corresponding channel) + repeated float mean_value = 5; + // Force the decoded image to have 3 color channels. + optional bool force_color = 6 [default = false]; + // Force the decoded image to have 1 color channels. + optional bool force_gray = 7 [default = false]; +} + +// Message that stores parameters shared by loss layers +message LossParameter { + // If specified, ignore instances with the given label. + optional int32 ignore_label = 1; + // How to normalize the loss for loss layers that aggregate across batches, + // spatial dimensions, or other dimensions. Currently only implemented in + // SoftmaxWithLoss and SigmoidCrossEntropyLoss layers. + enum NormalizationMode { + // Divide by the number of examples in the batch times spatial dimensions. + // Outputs that receive the ignore label will NOT be ignored in computing + // the normalization factor. + FULL = 0; + // Divide by the total number of output locations that do not take the + // ignore_label. If ignore_label is not set, this behaves like FULL. + VALID = 1; + // Divide by the batch size. + BATCH_SIZE = 2; + // Do not normalize the loss. + NONE = 3; + } + // For historical reasons, the default normalization for + // SigmoidCrossEntropyLoss is BATCH_SIZE and *not* VALID. + optional NormalizationMode normalization = 3 [default = VALID]; + // Deprecated. Ignored if normalization is specified. If normalization + // is not specified, then setting this to false will be equivalent to + // normalization = BATCH_SIZE to be consistent with previous behavior. + optional bool normalize = 2; +} + +// Messages that store parameters used by individual layer types follow, in +// alphabetical order. + +message AccuracyParameter { + // When computing accuracy, count as correct by comparing the true label to + // the top k scoring classes. By default, only compare to the top scoring + // class (i.e. argmax). + optional uint32 top_k = 1 [default = 1]; + + // The "label" axis of the prediction blob, whose argmax corresponds to the + // predicted label -- may be negative to index from the end (e.g., -1 for the + // last axis). For example, if axis == 1 and the predictions are + // (N x C x H x W), the label blob is expected to contain N*H*W ground truth + // labels with integer values in {0, 1, ..., C-1}. + optional int32 axis = 2 [default = 1]; + + // If specified, ignore instances with the given label. + optional int32 ignore_label = 3; +} + +message ArgMaxParameter { + // If true produce pairs (argmax, maxval) + optional bool out_max_val = 1 [default = false]; + optional uint32 top_k = 2 [default = 1]; + // The axis along which to maximise -- may be negative to index from the + // end (e.g., -1 for the last axis). + // By default ArgMaxLayer maximizes over the flattened trailing dimensions + // for each index of the first / num dimension. + optional int32 axis = 3; +} + +message ConcatParameter { + // The axis along which to concatenate -- may be negative to index from the + // end (e.g., -1 for the last axis). Other axes must have the + // same dimension for all the bottom blobs. + // By default, ConcatLayer concatenates blobs along the "channels" axis (1). + optional int32 axis = 2 [default = 1]; + + // DEPRECATED: alias for "axis" -- does not support negative indexing. + optional uint32 concat_dim = 1 [default = 1]; +} + +message BatchNormParameter { + // If false, normalization is performed over the current mini-batch + // and global statistics are accumulated (but not yet used) by a moving + // average. + // If true, those accumulated mean and variance values are used for the + // normalization. + // By default, it is set to false when the network is in the training + // phase and true when the network is in the testing phase. + optional bool use_global_stats = 1; + // What fraction of the moving average remains each iteration? + // Smaller values make the moving average decay faster, giving more + // weight to the recent values. + // Each iteration updates the moving average @f$S_{t-1}@f$ with the + // current mean @f$ Y_t @f$ by + // @f$ S_t = (1-\beta)Y_t + \beta \cdot S_{t-1} @f$, where @f$ \beta @f$ + // is the moving_average_fraction parameter. + optional float moving_average_fraction = 2 [default = .999]; + // Small value to add to the variance estimate so that we don't divide by + // zero. + optional float eps = 3 [default = 1e-5]; +} + +message BiasParameter { + // The first axis of bottom[0] (the first input Blob) along which to apply + // bottom[1] (the second input Blob). May be negative to index from the end + // (e.g., -1 for the last axis). + // + // For example, if bottom[0] is 4D with shape 100x3x40x60, the output + // top[0] will have the same shape, and bottom[1] may have any of the + // following shapes (for the given value of axis): + // (axis == 0 == -4) 100; 100x3; 100x3x40; 100x3x40x60 + // (axis == 1 == -3) 3; 3x40; 3x40x60 + // (axis == 2 == -2) 40; 40x60 + // (axis == 3 == -1) 60 + // Furthermore, bottom[1] may have the empty shape (regardless of the value of + // "axis") -- a scalar bias. + optional int32 axis = 1 [default = 1]; + + // (num_axes is ignored unless just one bottom is given and the bias is + // a learned parameter of the layer. Otherwise, num_axes is determined by the + // number of axes by the second bottom.) + // The number of axes of the input (bottom[0]) covered by the bias + // parameter, or -1 to cover all axes of bottom[0] starting from `axis`. + // Set num_axes := 0, to add a zero-axis Blob: a scalar. + optional int32 num_axes = 2 [default = 1]; + + // (filler is ignored unless just one bottom is given and the bias is + // a learned parameter of the layer.) + // The initialization for the learned bias parameter. + // Default is the zero (0) initialization, resulting in the BiasLayer + // initially performing the identity operation. + optional FillerParameter filler = 3; +} + +message ContrastiveLossParameter { + // margin for dissimilar pair + optional float margin = 1 [default = 1.0]; + // The first implementation of this cost did not exactly match the cost of + // Hadsell et al 2006 -- using (margin - d^2) instead of (margin - d)^2. + // legacy_version = false (the default) uses (margin - d)^2 as proposed in the + // Hadsell paper. New models should probably use this version. + // legacy_version = true uses (margin - d^2). This is kept to support / + // reproduce existing models and results + optional bool legacy_version = 2 [default = false]; +} + +message ConvolutionParameter { + optional uint32 num_output = 1; // The number of outputs for the layer + optional bool bias_term = 2 [default = true]; // whether to have bias terms + + // Pad, kernel size, and stride are all given as a single value for equal + // dimensions in all spatial dimensions, or once per spatial dimension. + repeated uint32 pad = 3; // The padding size; defaults to 0 + repeated uint32 kernel_size = 4; // The kernel size + repeated uint32 stride = 6; // The stride; defaults to 1 + // Factor used to dilate the kernel, (implicitly) zero-filling the resulting + // holes. (Kernel dilation is sometimes referred to by its use in the + // algorithme à trous from Holschneider et al. 1987.) + repeated uint32 dilation = 18; // The dilation; defaults to 1 + + // For 2D convolution only, the *_h and *_w versions may also be used to + // specify both spatial dimensions. + optional uint32 pad_h = 9 [default = 0]; // The padding height (2D only) + optional uint32 pad_w = 10 [default = 0]; // The padding width (2D only) + optional uint32 kernel_h = 11; // The kernel height (2D only) + optional uint32 kernel_w = 12; // The kernel width (2D only) + optional uint32 stride_h = 13; // The stride height (2D only) + optional uint32 stride_w = 14; // The stride width (2D only) + + optional uint32 group = 5 [default = 1]; // The group size for group conv + + optional FillerParameter weight_filler = 7; // The filler for the weight + optional FillerParameter bias_filler = 8; // The filler for the bias + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 15 [default = DEFAULT]; + + // The axis to interpret as "channels" when performing convolution. + // Preceding dimensions are treated as independent inputs; + // succeeding dimensions are treated as "spatial". + // With (N, C, H, W) inputs, and axis == 1 (the default), we perform + // N independent 2D convolutions, sliding C-channel (or (C/g)-channels, for + // groups g>1) filters across the spatial axes (H, W) of the input. + // With (N, C, D, H, W) inputs, and axis == 1, we perform + // N independent 3D convolutions, sliding (C/g)-channels + // filters across the spatial axes (D, H, W) of the input. + optional int32 axis = 16 [default = 1]; + + // Whether to force use of the general ND convolution, even if a specific + // implementation for blobs of the appropriate number of spatial dimensions + // is available. (Currently, there is only a 2D-specific convolution + // implementation; for input blobs with num_axes != 2, this option is + // ignored and the ND implementation will be used.) + optional bool force_nd_im2col = 17 [default = false]; +} + +message CropParameter { + // To crop, elements of the first bottom are selected to fit the dimensions + // of the second, reference bottom. The crop is configured by + // - the crop `axis` to pick the dimensions for cropping + // - the crop `offset` to set the shift for all/each dimension + // to align the cropped bottom with the reference bottom. + // All dimensions up to but excluding `axis` are preserved, while + // the dimensions including and trailing `axis` are cropped. + // If only one `offset` is set, then all dimensions are offset by this amount. + // Otherwise, the number of offsets must equal the number of cropped axes to + // shift the crop in each dimension accordingly. + // Note: standard dimensions are N,C,H,W so the default is a spatial crop, + // and `axis` may be negative to index from the end (e.g., -1 for the last + // axis). + optional int32 axis = 1 [default = 2]; + repeated uint32 offset = 2; +} + +message DataParameter { + enum DB { + LEVELDB = 0; + LMDB = 1; + } + // Specify the data source. + optional string source = 1; + // Specify the batch size. + optional uint32 batch_size = 4; + // The rand_skip variable is for the data layer to skip a few data points + // to avoid all asynchronous sgd clients to start at the same point. The skip + // point would be set as rand_skip * rand(0,1). Note that rand_skip should not + // be larger than the number of keys in the database. + // DEPRECATED. Each solver accesses a different subset of the database. + optional uint32 rand_skip = 7 [default = 0]; + optional DB backend = 8 [default = LEVELDB]; + // DEPRECATED. See TransformationParameter. For data pre-processing, we can do + // simple scaling and subtracting the data mean, if provided. Note that the + // mean subtraction is always carried out before scaling. + optional float scale = 2 [default = 1]; + optional string mean_file = 3; + // DEPRECATED. See TransformationParameter. Specify if we would like to randomly + // crop an image. + optional uint32 crop_size = 5 [default = 0]; + // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror + // data. + optional bool mirror = 6 [default = false]; + // Force the encoded image to have 3 color channels + optional bool force_encoded_color = 9 [default = false]; + // Prefetch queue (Increase if data feeding bandwidth varies, within the + // limit of device memory for GPU training) + optional uint32 prefetch = 10 [default = 4]; +} + +message DropoutParameter { + optional float dropout_ratio = 1 [default = 0.5]; // dropout ratio +} + +// DummyDataLayer fills any number of arbitrarily shaped blobs with random +// (or constant) data generated by "Fillers" (see "message FillerParameter"). +message DummyDataParameter { + // This layer produces N >= 1 top blobs. DummyDataParameter must specify 1 or N + // shape fields, and 0, 1 or N data_fillers. + // + // If 0 data_fillers are specified, ConstantFiller with a value of 0 is used. + // If 1 data_filler is specified, it is applied to all top blobs. If N are + // specified, the ith is applied to the ith top blob. + repeated FillerParameter data_filler = 1; + repeated BlobShape shape = 6; + + // 4D dimensions -- deprecated. Use "shape" instead. + repeated uint32 num = 2; + repeated uint32 channels = 3; + repeated uint32 height = 4; + repeated uint32 width = 5; +} + +message EltwiseParameter { + enum EltwiseOp { + PROD = 0; + SUM = 1; + MAX = 2; + } + optional EltwiseOp operation = 1 [default = SUM]; // element-wise operation + repeated float coeff = 2; // blob-wise coefficient for SUM operation + + // Whether to use an asymptotically slower (for >2 inputs) but stabler method + // of computing the gradient for the PROD operation. (No effect for SUM op.) + optional bool stable_prod_grad = 3 [default = true]; +} + +// Message that stores parameters used by ELULayer +message ELUParameter { + // Described in: + // Clevert, D.-A., Unterthiner, T., & Hochreiter, S. (2015). Fast and Accurate + // Deep Network Learning by Exponential Linear Units (ELUs). arXiv + optional float alpha = 1 [default = 1]; +} + +// Message that stores parameters used by EmbedLayer +message EmbedParameter { + optional uint32 num_output = 1; // The number of outputs for the layer + // The input is given as integers to be interpreted as one-hot + // vector indices with dimension num_input. Hence num_input should be + // 1 greater than the maximum possible input value. + optional uint32 input_dim = 2; + + optional bool bias_term = 3 [default = true]; // Whether to use a bias term + optional FillerParameter weight_filler = 4; // The filler for the weight + optional FillerParameter bias_filler = 5; // The filler for the bias + +} + +// Message that stores parameters used by ExpLayer +message ExpParameter { + // ExpLayer computes outputs y = base ^ (shift + scale * x), for base > 0. + // Or if base is set to the default (-1), base is set to e, + // so y = exp(shift + scale * x). + optional float base = 1 [default = -1.0]; + optional float scale = 2 [default = 1.0]; + optional float shift = 3 [default = 0.0]; +} + +/// Message that stores parameters used by FlattenLayer +message FlattenParameter { + // The first axis to flatten: all preceding axes are retained in the output. + // May be negative to index from the end (e.g., -1 for the last axis). + optional int32 axis = 1 [default = 1]; + + // The last axis to flatten: all following axes are retained in the output. + // May be negative to index from the end (e.g., the default -1 for the last + // axis). + optional int32 end_axis = 2 [default = -1]; +} + +// Message that stores parameters used by HDF5DataLayer +message HDF5DataParameter { + // Specify the data source. + optional string source = 1; + // Specify the batch size. + optional uint32 batch_size = 2; + + // Specify whether to shuffle the data. + // If shuffle == true, the ordering of the HDF5 files is shuffled, + // and the ordering of data within any given HDF5 file is shuffled, + // but data between different files are not interleaved; all of a file's + // data are output (in a random order) before moving onto another file. + optional bool shuffle = 3 [default = false]; +} + +message HDF5OutputParameter { + optional string file_name = 1; +} + +message HingeLossParameter { + enum Norm { + L1 = 1; + L2 = 2; + } + // Specify the Norm to use L1 or L2 + optional Norm norm = 1 [default = L1]; +} + +message ImageDataParameter { + // Specify the data source. + optional string source = 1; + // Specify the batch size. + optional uint32 batch_size = 4 [default = 1]; + // The rand_skip variable is for the data layer to skip a few data points + // to avoid all asynchronous sgd clients to start at the same point. The skip + // point would be set as rand_skip * rand(0,1). Note that rand_skip should not + // be larger than the number of keys in the database. + optional uint32 rand_skip = 7 [default = 0]; + // Whether or not ImageLayer should shuffle the list of files at every epoch. + optional bool shuffle = 8 [default = false]; + // It will also resize images if new_height or new_width are not zero. + optional uint32 new_height = 9 [default = 0]; + optional uint32 new_width = 10 [default = 0]; + // Specify if the images are color or gray + optional bool is_color = 11 [default = true]; + // DEPRECATED. See TransformationParameter. For data pre-processing, we can do + // simple scaling and subtracting the data mean, if provided. Note that the + // mean subtraction is always carried out before scaling. + optional float scale = 2 [default = 1]; + optional string mean_file = 3; + // DEPRECATED. See TransformationParameter. Specify if we would like to randomly + // crop an image. + optional uint32 crop_size = 5 [default = 0]; + // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror + // data. + optional bool mirror = 6 [default = false]; + optional string root_folder = 12 [default = ""]; +} + +message InfogainLossParameter { + // Specify the infogain matrix source. + optional string source = 1; + optional int32 axis = 2 [default = 1]; // axis of prob +} + +message InnerProductParameter { + optional uint32 num_output = 1; // The number of outputs for the layer + optional bool bias_term = 2 [default = true]; // whether to have bias terms + optional FillerParameter weight_filler = 3; // The filler for the weight + optional FillerParameter bias_filler = 4; // The filler for the bias + + // The first axis to be lumped into a single inner product computation; + // all preceding axes are retained in the output. + // May be negative to index from the end (e.g., -1 for the last axis). + optional int32 axis = 5 [default = 1]; + // Specify whether to transpose the weight matrix or not. + // If transpose == true, any operations will be performed on the transpose + // of the weight matrix. The weight matrix itself is not going to be transposed + // but rather the transfer flag of operations will be toggled accordingly. + optional bool transpose = 6 [default = false]; +} + +message InputParameter { + // This layer produces N >= 1 top blob(s) to be assigned manually. + // Define N shapes to set a shape for each top. + // Define 1 shape to set the same shape for every top. + // Define no shape to defer to reshaping manually. + repeated BlobShape shape = 1; +} + +// Message that stores parameters used by LogLayer +message LogParameter { + // LogLayer computes outputs y = log_base(shift + scale * x), for base > 0. + // Or if base is set to the default (-1), base is set to e, + // so y = ln(shift + scale * x) = log_e(shift + scale * x) + optional float base = 1 [default = -1.0]; + optional float scale = 2 [default = 1.0]; + optional float shift = 3 [default = 0.0]; +} + +// Message that stores parameters used by LRNLayer +message LRNParameter { + optional uint32 local_size = 1 [default = 5]; + optional float alpha = 2 [default = 1.]; + optional float beta = 3 [default = 0.75]; + enum NormRegion { + ACROSS_CHANNELS = 0; + WITHIN_CHANNEL = 1; + } + optional NormRegion norm_region = 4 [default = ACROSS_CHANNELS]; + optional float k = 5 [default = 1.]; + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 6 [default = DEFAULT]; +} + +message MemoryDataParameter { + optional uint32 batch_size = 1; + optional uint32 channels = 2; + optional uint32 height = 3; + optional uint32 width = 4; +} + +message MVNParameter { + // This parameter can be set to false to normalize mean only + optional bool normalize_variance = 1 [default = true]; + + // This parameter can be set to true to perform DNN-like MVN + optional bool across_channels = 2 [default = false]; + + // Epsilon for not dividing by zero while normalizing variance + optional float eps = 3 [default = 1e-9]; +} + +message ParameterParameter { + optional BlobShape shape = 1; +} + +message PoolingParameter { + enum PoolMethod { + MAX = 0; + AVE = 1; + STOCHASTIC = 2; + } + optional PoolMethod pool = 1 [default = MAX]; // The pooling method + // Pad, kernel size, and stride are all given as a single value for equal + // dimensions in height and width or as Y, X pairs. + optional uint32 pad = 4 [default = 0]; // The padding size (equal in Y, X) + optional uint32 pad_h = 9 [default = 0]; // The padding height + optional uint32 pad_w = 10 [default = 0]; // The padding width + optional uint32 kernel_size = 2; // The kernel size (square) + optional uint32 kernel_h = 5; // The kernel height + optional uint32 kernel_w = 6; // The kernel width + optional uint32 stride = 3 [default = 1]; // The stride (equal in Y, X) + optional uint32 stride_h = 7; // The stride height + optional uint32 stride_w = 8; // The stride width + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 11 [default = DEFAULT]; + // If global_pooling then it will pool over the size of the bottom by doing + // kernel_h = bottom->height and kernel_w = bottom->width + optional bool global_pooling = 12 [default = false]; +} + +message PowerParameter { + // PowerLayer computes outputs y = (shift + scale * x) ^ power. + optional float power = 1 [default = 1.0]; + optional float scale = 2 [default = 1.0]; + optional float shift = 3 [default = 0.0]; +} + +message PythonParameter { + optional string module = 1; + optional string layer = 2; + // This value is set to the attribute `param_str` of the `PythonLayer` object + // in Python before calling the `setup()` method. This could be a number, + // string, dictionary in Python dict format, JSON, etc. You may parse this + // string in `setup` method and use it in `forward` and `backward`. + optional string param_str = 3 [default = '']; + // DEPRECATED + optional bool share_in_parallel = 4 [default = false]; +} + +// Message that stores parameters used by RecurrentLayer +message RecurrentParameter { + // The dimension of the output (and usually hidden state) representation -- + // must be explicitly set to non-zero. + optional uint32 num_output = 1 [default = 0]; + + optional FillerParameter weight_filler = 2; // The filler for the weight + optional FillerParameter bias_filler = 3; // The filler for the bias + + // Whether to enable displaying debug_info in the unrolled recurrent net. + optional bool debug_info = 4 [default = false]; + + // Whether to add as additional inputs (bottoms) the initial hidden state + // blobs, and add as additional outputs (tops) the final timestep hidden state + // blobs. The number of additional bottom/top blobs required depends on the + // recurrent architecture -- e.g., 1 for RNNs, 2 for LSTMs. + optional bool expose_hidden = 5 [default = false]; +} + +// Message that stores parameters used by ReductionLayer +message ReductionParameter { + enum ReductionOp { + SUM = 1; + ASUM = 2; + SUMSQ = 3; + MEAN = 4; + } + + optional ReductionOp operation = 1 [default = SUM]; // reduction operation + + // The first axis to reduce to a scalar -- may be negative to index from the + // end (e.g., -1 for the last axis). + // (Currently, only reduction along ALL "tail" axes is supported; reduction + // of axis M through N, where N < num_axes - 1, is unsupported.) + // Suppose we have an n-axis bottom Blob with shape: + // (d0, d1, d2, ..., d(m-1), dm, d(m+1), ..., d(n-1)). + // If axis == m, the output Blob will have shape + // (d0, d1, d2, ..., d(m-1)), + // and the ReductionOp operation is performed (d0 * d1 * d2 * ... * d(m-1)) + // times, each including (dm * d(m+1) * ... * d(n-1)) individual data. + // If axis == 0 (the default), the output Blob always has the empty shape + // (count 1), performing reduction across the entire input -- + // often useful for creating new loss functions. + optional int32 axis = 2 [default = 0]; + + optional float coeff = 3 [default = 1.0]; // coefficient for output +} + +// Message that stores parameters used by ReLULayer +message ReLUParameter { + // Allow non-zero slope for negative inputs to speed up optimization + // Described in: + // Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013). Rectifier nonlinearities + // improve neural network acoustic models. In ICML Workshop on Deep Learning + // for Audio, Speech, and Language Processing. + optional float negative_slope = 1 [default = 0]; + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 2 [default = DEFAULT]; +} + +message ReshapeParameter { + // Specify the output dimensions. If some of the dimensions are set to 0, + // the corresponding dimension from the bottom layer is used (unchanged). + // Exactly one dimension may be set to -1, in which case its value is + // inferred from the count of the bottom blob and the remaining dimensions. + // For example, suppose we want to reshape a 2D blob "input" with shape 2 x 8: + // + // layer { + // type: "Reshape" bottom: "input" top: "output" + // reshape_param { ... } + // } + // + // If "input" is 2D with shape 2 x 8, then the following reshape_param + // specifications are all equivalent, producing a 3D blob "output" with shape + // 2 x 2 x 4: + // + // reshape_param { shape { dim: 2 dim: 2 dim: 4 } } + // reshape_param { shape { dim: 0 dim: 2 dim: 4 } } + // reshape_param { shape { dim: 0 dim: 2 dim: -1 } } + // reshape_param { shape { dim: 0 dim:-1 dim: 4 } } + // + optional BlobShape shape = 1; + + // axis and num_axes control the portion of the bottom blob's shape that are + // replaced by (included in) the reshape. By default (axis == 0 and + // num_axes == -1), the entire bottom blob shape is included in the reshape, + // and hence the shape field must specify the entire output shape. + // + // axis may be non-zero to retain some portion of the beginning of the input + // shape (and may be negative to index from the end; e.g., -1 to begin the + // reshape after the last axis, including nothing in the reshape, + // -2 to include only the last axis, etc.). + // + // For example, suppose "input" is a 2D blob with shape 2 x 8. + // Then the following ReshapeLayer specifications are all equivalent, + // producing a blob "output" with shape 2 x 2 x 4: + // + // reshape_param { shape { dim: 2 dim: 2 dim: 4 } } + // reshape_param { shape { dim: 2 dim: 4 } axis: 1 } + // reshape_param { shape { dim: 2 dim: 4 } axis: -3 } + // + // num_axes specifies the extent of the reshape. + // If num_axes >= 0 (and axis >= 0), the reshape will be performed only on + // input axes in the range [axis, axis+num_axes]. + // num_axes may also be -1, the default, to include all remaining axes + // (starting from axis). + // + // For example, suppose "input" is a 2D blob with shape 2 x 8. + // Then the following ReshapeLayer specifications are equivalent, + // producing a blob "output" with shape 1 x 2 x 8. + // + // reshape_param { shape { dim: 1 dim: 2 dim: 8 } } + // reshape_param { shape { dim: 1 dim: 2 } num_axes: 1 } + // reshape_param { shape { dim: 1 } num_axes: 0 } + // + // On the other hand, these would produce output blob shape 2 x 1 x 8: + // + // reshape_param { shape { dim: 2 dim: 1 dim: 8 } } + // reshape_param { shape { dim: 1 } axis: 1 num_axes: 0 } + // + optional int32 axis = 2 [default = 0]; + optional int32 num_axes = 3 [default = -1]; +} + +message ScaleParameter { + // The first axis of bottom[0] (the first input Blob) along which to apply + // bottom[1] (the second input Blob). May be negative to index from the end + // (e.g., -1 for the last axis). + // + // For example, if bottom[0] is 4D with shape 100x3x40x60, the output + // top[0] will have the same shape, and bottom[1] may have any of the + // following shapes (for the given value of axis): + // (axis == 0 == -4) 100; 100x3; 100x3x40; 100x3x40x60 + // (axis == 1 == -3) 3; 3x40; 3x40x60 + // (axis == 2 == -2) 40; 40x60 + // (axis == 3 == -1) 60 + // Furthermore, bottom[1] may have the empty shape (regardless of the value of + // "axis") -- a scalar multiplier. + optional int32 axis = 1 [default = 1]; + + // (num_axes is ignored unless just one bottom is given and the scale is + // a learned parameter of the layer. Otherwise, num_axes is determined by the + // number of axes by the second bottom.) + // The number of axes of the input (bottom[0]) covered by the scale + // parameter, or -1 to cover all axes of bottom[0] starting from `axis`. + // Set num_axes := 0, to multiply with a zero-axis Blob: a scalar. + optional int32 num_axes = 2 [default = 1]; + + // (filler is ignored unless just one bottom is given and the scale is + // a learned parameter of the layer.) + // The initialization for the learned scale parameter. + // Default is the unit (1) initialization, resulting in the ScaleLayer + // initially performing the identity operation. + optional FillerParameter filler = 3; + + // Whether to also learn a bias (equivalent to a ScaleLayer+BiasLayer, but + // may be more efficient). Initialized with bias_filler (defaults to 0). + optional bool bias_term = 4 [default = false]; + optional FillerParameter bias_filler = 5; +} + +message SigmoidParameter { + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 1 [default = DEFAULT]; +} + +message SliceParameter { + // The axis along which to slice -- may be negative to index from the end + // (e.g., -1 for the last axis). + // By default, SliceLayer concatenates blobs along the "channels" axis (1). + optional int32 axis = 3 [default = 1]; + repeated uint32 slice_point = 2; + + // DEPRECATED: alias for "axis" -- does not support negative indexing. + optional uint32 slice_dim = 1 [default = 1]; +} + +// Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer +message SoftmaxParameter { + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 1 [default = DEFAULT]; + + // The axis along which to perform the softmax -- may be negative to index + // from the end (e.g., -1 for the last axis). + // Any other axes will be evaluated as independent softmaxes. + optional int32 axis = 2 [default = 1]; +} + +message TanHParameter { + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 1 [default = DEFAULT]; +} + +// Message that stores parameters used by TileLayer +message TileParameter { + // The index of the axis to tile. + optional int32 axis = 1 [default = 1]; + + // The number of copies (tiles) of the blob to output. + optional int32 tiles = 2; +} + +// Message that stores parameters used by ThresholdLayer +message ThresholdParameter { + optional float threshold = 1 [default = 0]; // Strictly positive values +} + +message WindowDataParameter { + // Specify the data source. + optional string source = 1; + // For data pre-processing, we can do simple scaling and subtracting the + // data mean, if provided. Note that the mean subtraction is always carried + // out before scaling. + optional float scale = 2 [default = 1]; + optional string mean_file = 3; + // Specify the batch size. + optional uint32 batch_size = 4; + // Specify if we would like to randomly crop an image. + optional uint32 crop_size = 5 [default = 0]; + // Specify if we want to randomly mirror data. + optional bool mirror = 6 [default = false]; + // Foreground (object) overlap threshold + optional float fg_threshold = 7 [default = 0.5]; + // Background (non-object) overlap threshold + optional float bg_threshold = 8 [default = 0.5]; + // Fraction of batch that should be foreground objects + optional float fg_fraction = 9 [default = 0.25]; + // Amount of contextual padding to add around a window + // (used only by the window_data_layer) + optional uint32 context_pad = 10 [default = 0]; + // Mode for cropping out a detection window + // warp: cropped window is warped to a fixed size and aspect ratio + // square: the tightest square around the window is cropped + optional string crop_mode = 11 [default = "warp"]; + // cache_images: will load all images in memory for faster access + optional bool cache_images = 12 [default = false]; + // append root_folder to locate images + optional string root_folder = 13 [default = ""]; +} + +message SPPParameter { + enum PoolMethod { + MAX = 0; + AVE = 1; + STOCHASTIC = 2; + } + optional uint32 pyramid_height = 1; + optional PoolMethod pool = 2 [default = MAX]; // The pooling method + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 6 [default = DEFAULT]; +} + +// DEPRECATED: use LayerParameter. +message V1LayerParameter { + repeated string bottom = 2; + repeated string top = 3; + optional string name = 4; + repeated NetStateRule include = 32; + repeated NetStateRule exclude = 33; + enum LayerType { + NONE = 0; + ABSVAL = 35; + ACCURACY = 1; + ARGMAX = 30; + BNLL = 2; + CONCAT = 3; + CONTRASTIVE_LOSS = 37; + CONVOLUTION = 4; + DATA = 5; + DECONVOLUTION = 39; + DROPOUT = 6; + DUMMY_DATA = 32; + EUCLIDEAN_LOSS = 7; + ELTWISE = 25; + EXP = 38; + FLATTEN = 8; + HDF5_DATA = 9; + HDF5_OUTPUT = 10; + HINGE_LOSS = 28; + IM2COL = 11; + IMAGE_DATA = 12; + INFOGAIN_LOSS = 13; + INNER_PRODUCT = 14; + LRN = 15; + MEMORY_DATA = 29; + MULTINOMIAL_LOGISTIC_LOSS = 16; + MVN = 34; + POOLING = 17; + POWER = 26; + RELU = 18; + SIGMOID = 19; + SIGMOID_CROSS_ENTROPY_LOSS = 27; + SILENCE = 36; + SOFTMAX = 20; + SOFTMAX_LOSS = 21; + SPLIT = 22; + SLICE = 33; + TANH = 23; + WINDOW_DATA = 24; + THRESHOLD = 31; + } + optional LayerType type = 5; + repeated BlobProto blobs = 6; + repeated string param = 1001; + repeated DimCheckMode blob_share_mode = 1002; + enum DimCheckMode { + STRICT = 0; + PERMISSIVE = 1; + } + repeated float blobs_lr = 7; + repeated float weight_decay = 8; + repeated float loss_weight = 35; + optional AccuracyParameter accuracy_param = 27; + optional ArgMaxParameter argmax_param = 23; + optional ConcatParameter concat_param = 9; + optional ContrastiveLossParameter contrastive_loss_param = 40; + optional ConvolutionParameter convolution_param = 10; + optional DataParameter data_param = 11; + optional DropoutParameter dropout_param = 12; + optional DummyDataParameter dummy_data_param = 26; + optional EltwiseParameter eltwise_param = 24; + optional ExpParameter exp_param = 41; + optional HDF5DataParameter hdf5_data_param = 13; + optional HDF5OutputParameter hdf5_output_param = 14; + optional HingeLossParameter hinge_loss_param = 29; + optional ImageDataParameter image_data_param = 15; + optional InfogainLossParameter infogain_loss_param = 16; + optional InnerProductParameter inner_product_param = 17; + optional LRNParameter lrn_param = 18; + optional MemoryDataParameter memory_data_param = 22; + optional MVNParameter mvn_param = 34; + optional PoolingParameter pooling_param = 19; + optional PowerParameter power_param = 21; + optional ReLUParameter relu_param = 30; + optional SigmoidParameter sigmoid_param = 38; + optional SoftmaxParameter softmax_param = 39; + optional SliceParameter slice_param = 31; + optional TanHParameter tanh_param = 37; + optional ThresholdParameter threshold_param = 25; + optional WindowDataParameter window_data_param = 20; + optional TransformationParameter transform_param = 36; + optional LossParameter loss_param = 42; + optional V0LayerParameter layer = 1; +} + +// DEPRECATED: V0LayerParameter is the old way of specifying layer parameters +// in Caffe. We keep this message type around for legacy support. +message V0LayerParameter { + optional string name = 1; // the layer name + optional string type = 2; // the string to specify the layer type + + // Parameters to specify layers with inner products. + optional uint32 num_output = 3; // The number of outputs for the layer + optional bool biasterm = 4 [default = true]; // whether to have bias terms + optional FillerParameter weight_filler = 5; // The filler for the weight + optional FillerParameter bias_filler = 6; // The filler for the bias + + optional uint32 pad = 7 [default = 0]; // The padding size + optional uint32 kernelsize = 8; // The kernel size + optional uint32 group = 9 [default = 1]; // The group size for group conv + optional uint32 stride = 10 [default = 1]; // The stride + enum PoolMethod { + MAX = 0; + AVE = 1; + STOCHASTIC = 2; + } + optional PoolMethod pool = 11 [default = MAX]; // The pooling method + optional float dropout_ratio = 12 [default = 0.5]; // dropout ratio + + optional uint32 local_size = 13 [default = 5]; // for local response norm + optional float alpha = 14 [default = 1.]; // for local response norm + optional float beta = 15 [default = 0.75]; // for local response norm + optional float k = 22 [default = 1.]; + + // For data layers, specify the data source + optional string source = 16; + // For data pre-processing, we can do simple scaling and subtracting the + // data mean, if provided. Note that the mean subtraction is always carried + // out before scaling. + optional float scale = 17 [default = 1]; + optional string meanfile = 18; + // For data layers, specify the batch size. + optional uint32 batchsize = 19; + // For data layers, specify if we would like to randomly crop an image. + optional uint32 cropsize = 20 [default = 0]; + // For data layers, specify if we want to randomly mirror data. + optional bool mirror = 21 [default = false]; + + // The blobs containing the numeric parameters of the layer + repeated BlobProto blobs = 50; + // The ratio that is multiplied on the global learning rate. If you want to + // set the learning ratio for one blob, you need to set it for all blobs. + repeated float blobs_lr = 51; + // The weight decay that is multiplied on the global weight decay. + repeated float weight_decay = 52; + + // The rand_skip variable is for the data layer to skip a few data points + // to avoid all asynchronous sgd clients to start at the same point. The skip + // point would be set as rand_skip * rand(0,1). Note that rand_skip should not + // be larger than the number of keys in the database. + optional uint32 rand_skip = 53 [default = 0]; + + // Fields related to detection (det_*) + // foreground (object) overlap threshold + optional float det_fg_threshold = 54 [default = 0.5]; + // background (non-object) overlap threshold + optional float det_bg_threshold = 55 [default = 0.5]; + // Fraction of batch that should be foreground objects + optional float det_fg_fraction = 56 [default = 0.25]; + + // optional bool OBSOLETE_can_clobber = 57 [default = true]; + + // Amount of contextual padding to add around a window + // (used only by the window_data_layer) + optional uint32 det_context_pad = 58 [default = 0]; + + // Mode for cropping out a detection window + // warp: cropped window is warped to a fixed size and aspect ratio + // square: the tightest square around the window is cropped + optional string det_crop_mode = 59 [default = "warp"]; + + // For ReshapeLayer, one needs to specify the new dimensions. + optional int32 new_num = 60 [default = 0]; + optional int32 new_channels = 61 [default = 0]; + optional int32 new_height = 62 [default = 0]; + optional int32 new_width = 63 [default = 0]; + + // Whether or not ImageLayer should shuffle the list of files at every epoch. + // It will also resize images if new_height or new_width are not zero. + optional bool shuffle_images = 64 [default = false]; + + // For ConcatLayer, one needs to specify the dimension for concatenation, and + // the other dimensions must be the same for all the bottom blobs. + // By default it will concatenate blobs along the channels dimension. + optional uint32 concat_dim = 65 [default = 1]; + + optional HDF5OutputParameter hdf5_output_param = 1001; +} + +message PReLUParameter { + // Parametric ReLU described in K. He et al, Delving Deep into Rectifiers: + // Surpassing Human-Level Performance on ImageNet Classification, 2015. + + // Initial value of a_i. Default is a_i=0.25 for all i. + optional FillerParameter filler = 1; + // Whether or not slope parameters are shared across channels. + optional bool channel_shared = 2 [default = false]; +} diff --git a/3rdparty/caffe/src/caffe/solver.cpp b/3rdparty/caffe/src/caffe/solver.cpp new file mode 100644 index 00000000..04426937 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solver.cpp @@ -0,0 +1,489 @@ +#include + +#include +#include + +#include "caffe/solver.hpp" +#include "caffe/util/format.hpp" +#include "caffe/util/hdf5.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +namespace caffe { + +template +void Solver::SetActionFunction(ActionCallback func) { + action_request_function_ = func; +} + +template +SolverAction::Enum Solver::GetRequestedAction() { + if (action_request_function_) { + // If the external request function has been set, call it. + return action_request_function_(); + } + return SolverAction::NONE; +} + +template +Solver::Solver(const SolverParameter& param) + : net_(), callbacks_(), requested_early_exit_(false) { + Init(param); +} + +template +Solver::Solver(const string& param_file) + : net_(), callbacks_(), requested_early_exit_(false) { + SolverParameter param; + ReadSolverParamsFromTextFileOrDie(param_file, ¶m); + Init(param); +} + +template +void Solver::Init(const SolverParameter& param) { + LOG_IF(INFO, Caffe::root_solver()) << "Initializing solver from parameters: " + << std::endl << param.DebugString(); + param_ = param; + CHECK_GE(param_.average_loss(), 1) << "average_loss should be non-negative."; + CheckSnapshotWritePermissions(); + if (param_.random_seed() >= 0) { + Caffe::set_random_seed(param_.random_seed() + Caffe::solver_rank()); + } + // Scaffolding code + InitTrainNet(); + InitTestNets(); + if (Caffe::root_solver()) { + LOG(INFO) << "Solver scaffolding done."; + } + iter_ = 0; + current_step_ = 0; +} + +template +void Solver::InitTrainNet() { + const int num_train_nets = param_.has_net() + param_.has_net_param() + + param_.has_train_net() + param_.has_train_net_param(); + const string& field_names = "net, net_param, train_net, train_net_param"; + CHECK_GE(num_train_nets, 1) << "SolverParameter must specify a train net " + << "using one of these fields: " << field_names; + CHECK_LE(num_train_nets, 1) << "SolverParameter must not contain more than " + << "one of these fields specifying a train_net: " << field_names; + NetParameter net_param; + if (param_.has_train_net_param()) { + LOG_IF(INFO, Caffe::root_solver()) + << "Creating training net specified in train_net_param."; + net_param.CopyFrom(param_.train_net_param()); + } else if (param_.has_train_net()) { + LOG_IF(INFO, Caffe::root_solver()) + << "Creating training net from train_net file: " << param_.train_net(); + ReadNetParamsFromTextFileOrDie(param_.train_net(), &net_param); + } + if (param_.has_net_param()) { + LOG_IF(INFO, Caffe::root_solver()) + << "Creating training net specified in net_param."; + net_param.CopyFrom(param_.net_param()); + } + if (param_.has_net()) { + LOG_IF(INFO, Caffe::root_solver()) + << "Creating training net from net file: " << param_.net(); + ReadNetParamsFromTextFileOrDie(param_.net(), &net_param); + } + // Set the correct NetState. We start with the solver defaults (lowest + // precedence); then, merge in any NetState specified by the net_param itself; + // finally, merge in any NetState specified by the train_state (highest + // precedence). + NetState net_state; + net_state.set_phase(TRAIN); + net_state.MergeFrom(net_param.state()); + net_state.MergeFrom(param_.train_state()); + net_param.mutable_state()->CopyFrom(net_state); + net_.reset(new Net(net_param)); +} + +template +void Solver::InitTestNets() { + const bool has_net_param = param_.has_net_param(); + const bool has_net_file = param_.has_net(); + const int num_generic_nets = has_net_param + has_net_file; + CHECK_LE(num_generic_nets, 1) + << "Both net_param and net_file may not be specified."; + const int num_test_net_params = param_.test_net_param_size(); + const int num_test_net_files = param_.test_net_size(); + const int num_test_nets = num_test_net_params + num_test_net_files; + if (num_generic_nets) { + CHECK_GE(param_.test_iter_size(), num_test_nets) + << "test_iter must be specified for each test network."; + } else { + CHECK_EQ(param_.test_iter_size(), num_test_nets) + << "test_iter must be specified for each test network."; + } + // If we have a generic net (specified by net or net_param, rather than + // test_net or test_net_param), we may have an unlimited number of actual + // test networks -- the actual number is given by the number of remaining + // test_iters after any test nets specified by test_net_param and/or test_net + // are evaluated. + const int num_generic_net_instances = param_.test_iter_size() - num_test_nets; + const int num_test_net_instances = num_test_nets + num_generic_net_instances; + if (param_.test_state_size()) { + CHECK_EQ(param_.test_state_size(), num_test_net_instances) + << "test_state must be unspecified or specified once per test net."; + } + if (num_test_net_instances) { + CHECK_GT(param_.test_interval(), 0); + } + int test_net_id = 0; + vector sources(num_test_net_instances); + vector net_params(num_test_net_instances); + for (int i = 0; i < num_test_net_params; ++i, ++test_net_id) { + sources[test_net_id] = "test_net_param"; + net_params[test_net_id].CopyFrom(param_.test_net_param(i)); + } + for (int i = 0; i < num_test_net_files; ++i, ++test_net_id) { + sources[test_net_id] = "test_net file: " + param_.test_net(i); + ReadNetParamsFromTextFileOrDie(param_.test_net(i), + &net_params[test_net_id]); + } + const int remaining_test_nets = param_.test_iter_size() - test_net_id; + if (has_net_param) { + for (int i = 0; i < remaining_test_nets; ++i, ++test_net_id) { + sources[test_net_id] = "net_param"; + net_params[test_net_id].CopyFrom(param_.net_param()); + } + } + if (has_net_file) { + for (int i = 0; i < remaining_test_nets; ++i, ++test_net_id) { + sources[test_net_id] = "net file: " + param_.net(); + ReadNetParamsFromTextFileOrDie(param_.net(), &net_params[test_net_id]); + } + } + test_nets_.resize(num_test_net_instances); + for (int i = 0; i < num_test_net_instances; ++i) { + // Set the correct NetState. We start with the solver defaults (lowest + // precedence); then, merge in any NetState specified by the net_param + // itself; finally, merge in any NetState specified by the test_state + // (highest precedence). + NetState net_state; + net_state.set_phase(TEST); + net_state.MergeFrom(net_params[i].state()); + if (param_.test_state_size()) { + net_state.MergeFrom(param_.test_state(i)); + } + net_params[i].mutable_state()->CopyFrom(net_state); + LOG(INFO) + << "Creating test net (#" << i << ") specified by " << sources[i]; + test_nets_[i].reset(new Net(net_params[i])); + test_nets_[i]->set_debug_info(param_.debug_info()); + } +} + +template +void Solver::Step(int iters) { + const int start_iter = iter_; + const int stop_iter = iter_ + iters; + int average_loss = this->param_.average_loss(); + losses_.clear(); + smoothed_loss_ = 0; + iteration_timer_.Start(); + + while (iter_ < stop_iter) { + // zero-init the params + net_->ClearParamDiffs(); + if (param_.test_interval() && iter_ % param_.test_interval() == 0 + && (iter_ > 0 || param_.test_initialization())) { + if (Caffe::root_solver()) { + TestAll(); + } + if (requested_early_exit_) { + // Break out of the while loop because stop was requested while testing. + break; + } + } + + for (int i = 0; i < callbacks_.size(); ++i) { + callbacks_[i]->on_start(); + } + const bool display = param_.display() && iter_ % param_.display() == 0; + net_->set_debug_info(display && param_.debug_info()); + // accumulate the loss and gradient + Dtype loss = 0; + for (int i = 0; i < param_.iter_size(); ++i) { + loss += net_->ForwardBackward(); + } + loss /= param_.iter_size(); + // average the loss across iterations for smoothed reporting + UpdateSmoothedLoss(loss, start_iter, average_loss); + if (display) { + float lapse = iteration_timer_.Seconds(); + float per_s = (iter_ - iterations_last_) / (lapse ? lapse : 1); + LOG_IF(INFO, Caffe::root_solver()) << "Iteration " << iter_ + << " (" << per_s << " iter/s, " << lapse << "s/" + << param_.display() << " iters), loss = " << smoothed_loss_; + iteration_timer_.Start(); + iterations_last_ = iter_; + const vector*>& result = net_->output_blobs(); + int score_index = 0; + for (int j = 0; j < result.size(); ++j) { + const Dtype* result_vec = result[j]->cpu_data(); + const string& output_name = + net_->blob_names()[net_->output_blob_indices()[j]]; + const Dtype loss_weight = + net_->blob_loss_weights()[net_->output_blob_indices()[j]]; + for (int k = 0; k < result[j]->count(); ++k) { + ostringstream loss_msg_stream; + if (loss_weight) { + loss_msg_stream << " (* " << loss_weight + << " = " << loss_weight * result_vec[k] << " loss)"; + } + LOG_IF(INFO, Caffe::root_solver()) << " Train net output #" + << score_index++ << ": " << output_name << " = " + << result_vec[k] << loss_msg_stream.str(); + } + } + } + for (int i = 0; i < callbacks_.size(); ++i) { + callbacks_[i]->on_gradients_ready(); + } + ApplyUpdate(); + + // Increment the internal iter_ counter -- its value should always indicate + // the number of times the weights have been updated. + ++iter_; + + SolverAction::Enum request = GetRequestedAction(); + + // Save a snapshot if needed. + if ((param_.snapshot() + && iter_ % param_.snapshot() == 0 + && Caffe::root_solver()) || + (request == SolverAction::SNAPSHOT)) { + Snapshot(); + } + if (SolverAction::STOP == request) { + requested_early_exit_ = true; + // Break out of training loop. + break; + } + } +} + +template +void Solver::Solve(const char* resume_file) { + CHECK(Caffe::root_solver()); + LOG(INFO) << "Solving " << net_->name(); + LOG(INFO) << "Learning Rate Policy: " << param_.lr_policy(); + + // Initialize to false every time we start solving. + requested_early_exit_ = false; + + if (resume_file) { + LOG(INFO) << "Restoring previous solver status from " << resume_file; + Restore(resume_file); + } + + // For a network that is trained by the solver, no bottom or top vecs + // should be given, and we will just provide dummy vecs. + int start_iter = iter_; + Step(param_.max_iter() - iter_); + // If we haven't already, save a snapshot after optimization, unless + // overridden by setting snapshot_after_train := false + if (param_.snapshot_after_train() + && (!param_.snapshot() || iter_ % param_.snapshot() != 0)) { + Snapshot(); + } + if (requested_early_exit_) { + LOG(INFO) << "Optimization stopped early."; + return; + } + // After the optimization is done, run an additional train and test pass to + // display the train and test loss/outputs if appropriate (based on the + // display and test_interval settings, respectively). Unlike in the rest of + // training, for the train net we only run a forward pass as we've already + // updated the parameters "max_iter" times -- this final pass is only done to + // display the loss, which is computed in the forward pass. + if (param_.display() && iter_ % param_.display() == 0) { + int average_loss = this->param_.average_loss(); + Dtype loss; + net_->Forward(&loss); + + UpdateSmoothedLoss(loss, start_iter, average_loss); + + LOG(INFO) << "Iteration " << iter_ << ", loss = " << smoothed_loss_; + } + if (param_.test_interval() && iter_ % param_.test_interval() == 0) { + TestAll(); + } + LOG(INFO) << "Optimization Done."; +} + +template +void Solver::TestAll() { + for (int test_net_id = 0; + test_net_id < test_nets_.size() && !requested_early_exit_; + ++test_net_id) { + Test(test_net_id); + } +} + +template +void Solver::Test(const int test_net_id) { + CHECK(Caffe::root_solver()); + LOG(INFO) << "Iteration " << iter_ + << ", Testing net (#" << test_net_id << ")"; + CHECK_NOTNULL(test_nets_[test_net_id].get())-> + ShareTrainedLayersWith(net_.get()); + vector test_score; + vector test_score_output_id; + const shared_ptr >& test_net = test_nets_[test_net_id]; + Dtype loss = 0; + for (int i = 0; i < param_.test_iter(test_net_id); ++i) { + SolverAction::Enum request = GetRequestedAction(); + // Check to see if stoppage of testing/training has been requested. + while (request != SolverAction::NONE) { + if (SolverAction::SNAPSHOT == request) { + Snapshot(); + } else if (SolverAction::STOP == request) { + requested_early_exit_ = true; + } + request = GetRequestedAction(); + } + if (requested_early_exit_) { + // break out of test loop. + break; + } + + Dtype iter_loss; + const vector*>& result = + test_net->Forward(&iter_loss); + if (param_.test_compute_loss()) { + loss += iter_loss; + } + if (i == 0) { + for (int j = 0; j < result.size(); ++j) { + const Dtype* result_vec = result[j]->cpu_data(); + for (int k = 0; k < result[j]->count(); ++k) { + test_score.push_back(result_vec[k]); + test_score_output_id.push_back(j); + } + } + } else { + int idx = 0; + for (int j = 0; j < result.size(); ++j) { + const Dtype* result_vec = result[j]->cpu_data(); + for (int k = 0; k < result[j]->count(); ++k) { + test_score[idx++] += result_vec[k]; + } + } + } + } + if (requested_early_exit_) { + LOG(INFO) << "Test interrupted."; + return; + } + if (param_.test_compute_loss()) { + loss /= param_.test_iter(test_net_id); + LOG(INFO) << "Test loss: " << loss; + } + for (int i = 0; i < test_score.size(); ++i) { + const int output_blob_index = + test_net->output_blob_indices()[test_score_output_id[i]]; + const string& output_name = test_net->blob_names()[output_blob_index]; + const Dtype loss_weight = test_net->blob_loss_weights()[output_blob_index]; + ostringstream loss_msg_stream; + const Dtype mean_score = test_score[i] / param_.test_iter(test_net_id); + if (loss_weight) { + loss_msg_stream << " (* " << loss_weight + << " = " << loss_weight * mean_score << " loss)"; + } + LOG(INFO) << " Test net output #" << i << ": " << output_name << " = " + << mean_score << loss_msg_stream.str(); + } +} + +template +void Solver::Snapshot() { + CHECK(Caffe::root_solver()); + string model_filename; + switch (param_.snapshot_format()) { + case caffe::SolverParameter_SnapshotFormat_BINARYPROTO: + model_filename = SnapshotToBinaryProto(); + break; + case caffe::SolverParameter_SnapshotFormat_HDF5: + model_filename = SnapshotToHDF5(); + break; + default: + LOG(FATAL) << "Unsupported snapshot format."; + } + + SnapshotSolverState(model_filename); +} + +template +void Solver::CheckSnapshotWritePermissions() { + if (Caffe::root_solver() && param_.snapshot()) { + CHECK(param_.has_snapshot_prefix()) + << "In solver params, snapshot is specified but snapshot_prefix is not"; + string probe_filename = SnapshotFilename(".tempfile"); + std::ofstream probe_ofs(probe_filename.c_str()); + if (probe_ofs.good()) { + probe_ofs.close(); + std::remove(probe_filename.c_str()); + } else { + LOG(FATAL) << "Cannot write to snapshot prefix '" + << param_.snapshot_prefix() << "'. Make sure " + << "that the directory exists and is writeable."; + } + } +} + +template +string Solver::SnapshotFilename(const string extension) { + return param_.snapshot_prefix() + "_iter_" + caffe::format_int(iter_) + + extension; +} + +template +string Solver::SnapshotToBinaryProto() { + string model_filename = SnapshotFilename(".caffemodel"); + LOG(INFO) << "Snapshotting to binary proto file " << model_filename; + NetParameter net_param; + net_->ToProto(&net_param, param_.snapshot_diff()); + WriteProtoToBinaryFile(net_param, model_filename); + return model_filename; +} + +template +string Solver::SnapshotToHDF5() { + string model_filename = SnapshotFilename(".caffemodel.h5"); + LOG(INFO) << "Snapshotting to HDF5 file " << model_filename; + net_->ToHDF5(model_filename, param_.snapshot_diff()); + return model_filename; +} + +template +void Solver::Restore(const char* state_file) { + string state_filename(state_file); + if (state_filename.size() >= 3 && + state_filename.compare(state_filename.size() - 3, 3, ".h5") == 0) { + RestoreSolverStateFromHDF5(state_filename); + } else { + RestoreSolverStateFromBinaryProto(state_filename); + } +} + +template +void Solver::UpdateSmoothedLoss(Dtype loss, int start_iter, + int average_loss) { + if (losses_.size() < average_loss) { + losses_.push_back(loss); + int size = losses_.size(); + smoothed_loss_ = (smoothed_loss_ * (size - 1) + loss) / size; + } else { + int idx = (iter_ - start_iter) % average_loss; + smoothed_loss_ += (loss - losses_[idx]) / average_loss; + losses_[idx] = loss; + } +} + +INSTANTIATE_CLASS(Solver); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/adadelta_solver.cpp b/3rdparty/caffe/src/caffe/solvers/adadelta_solver.cpp new file mode 100644 index 00000000..fd30f19a --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/adadelta_solver.cpp @@ -0,0 +1,112 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +void AdaDeltaSolver::AdaDeltaPreSolve() { + // Add the extra history entries for AdaDelta after those from + // SGDSolver::PreSolve + const vector*>& net_params = this->net_->learnable_params(); + for (int i = 0; i < net_params.size(); ++i) { + const vector& shape = net_params[i]->shape(); + this->history_.push_back( + shared_ptr >(new Blob(shape))); + } +} + +#ifndef CPU_ONLY +template +void adadelta_update_gpu(int N, Dtype* g, Dtype* h, Dtype* h2, Dtype momentum, + Dtype delta, Dtype local_rate); +#endif + +template +void AdaDeltaSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype delta = this->param_.delta(); + Dtype momentum = this->param_.momentum(); + Dtype local_rate = rate * net_params_lr[param_id]; + size_t update_history_offset = net_params.size(); + switch (Caffe::mode()) { + case Caffe::CPU: { + // compute square of gradient in update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history of gradients + caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, + this->update_[param_id]->cpu_data(), momentum, + this->history_[param_id]->mutable_cpu_data()); + + // add delta to history to guard against dividing by zero later + caffe_set(net_params[param_id]->count(), delta, + this->temp_[param_id]->mutable_cpu_data()); + + caffe_add(net_params[param_id]->count(), + this->temp_[param_id]->cpu_data(), + this->history_[update_history_offset + param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + caffe_add(net_params[param_id]->count(), + this->temp_[param_id]->cpu_data(), + this->history_[param_id]->cpu_data(), + this->temp_[param_id]->mutable_cpu_data()); + + // divide history of updates by history of gradients + caffe_div(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), + this->temp_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // jointly compute the RMS of both for update and gradient history + caffe_powx(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_cpu_data()); + + // compute the update + caffe_mul(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), + this->update_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + + // compute square of update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history of updates + caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, + this->update_[param_id]->cpu_data(), momentum, + this->history_[update_history_offset + param_id]->mutable_cpu_data()); + + // apply learning rate + caffe_cpu_scale(net_params[param_id]->count(), local_rate, + net_params[param_id]->cpu_diff(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + adadelta_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), + this->history_[update_history_offset + param_id]->mutable_gpu_data(), + momentum, delta, local_rate); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(AdaDeltaSolver); +REGISTER_SOLVER_CLASS(AdaDelta); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/adadelta_solver.cu b/3rdparty/caffe/src/caffe/solvers/adadelta_solver.cu new file mode 100644 index 00000000..6c94585b --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/adadelta_solver.cu @@ -0,0 +1,30 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void AdaDeltaUpdate(int N, Dtype* g, Dtype* h, Dtype* h2, + Dtype momentum, Dtype delta, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float hi = h[i] = momentum * h[i] + (1-momentum) * gi * gi; + gi = gi * sqrt((h2[i] + delta) / (hi + delta)); + h2[i] = momentum * h2[i] + (1-momentum) * gi * gi; + g[i] = local_rate * gi; + } +} +template +void adadelta_update_gpu(int N, Dtype* g, Dtype* h, Dtype* h2, Dtype momentum, + Dtype delta, Dtype local_rate) { + AdaDeltaUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, h2, momentum, delta, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void adadelta_update_gpu(int , float*, float*, float*, + float, float, float); +template void adadelta_update_gpu(int, double*, double*, double*, + double, double, double); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/adagrad_solver.cpp b/3rdparty/caffe/src/caffe/solvers/adagrad_solver.cpp new file mode 100644 index 00000000..d8107e1e --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/adagrad_solver.cpp @@ -0,0 +1,69 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +#ifndef CPU_ONLY +template +void adagrad_update_gpu(int N, Dtype* g, Dtype* h, Dtype delta, + Dtype local_rate); +#endif + +template +void AdaGradSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype delta = this->param_.delta(); + Dtype local_rate = rate * net_params_lr[param_id]; + switch (Caffe::mode()) { + case Caffe::CPU: { + // compute square of gradient in update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history + caffe_add(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), + this->history_[param_id]->cpu_data(), + this->history_[param_id]->mutable_cpu_data()); + + // prepare update + caffe_powx(net_params[param_id]->count(), + this->history_[param_id]->cpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_cpu_data()); + + caffe_add_scalar(net_params[param_id]->count(), + delta, this->update_[param_id]->mutable_cpu_data()); + + caffe_div(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), + this->update_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // scale and copy + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + this->update_[param_id]->cpu_data(), Dtype(0), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + adagrad_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), delta, local_rate); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(AdaGradSolver); +REGISTER_SOLVER_CLASS(AdaGrad); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/adagrad_solver.cu b/3rdparty/caffe/src/caffe/solvers/adagrad_solver.cu new file mode 100644 index 00000000..adefd554 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/adagrad_solver.cu @@ -0,0 +1,26 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void AdaGradUpdate(int N, Dtype* g, Dtype* h, Dtype delta, + Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float hi = h[i] = h[i] + gi*gi; + g[i] = local_rate * gi / (sqrt(hi) + delta); + } +} +template +void adagrad_update_gpu(int N, Dtype* g, Dtype* h, Dtype delta, + Dtype local_rate) { + AdaGradUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, delta, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void adagrad_update_gpu(int, float*, float*, float, float); +template void adagrad_update_gpu(int, double*, double*, double, double); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/adam_solver.cpp b/3rdparty/caffe/src/caffe/solvers/adam_solver.cpp new file mode 100644 index 00000000..4a91f00b --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/adam_solver.cpp @@ -0,0 +1,94 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +void AdamSolver::AdamPreSolve() { + // Add the extra history entries for Adam after those from + // SGDSolver::PreSolve + const vector*>& net_params = this->net_->learnable_params(); + for (int i = 0; i < net_params.size(); ++i) { + const vector& shape = net_params[i]->shape(); + this->history_.push_back( + shared_ptr >(new Blob(shape))); + } +} + +#ifndef CPU_ONLY +template +void adam_update_gpu(int N, Dtype* g, Dtype* m, Dtype* v, Dtype beta1, + Dtype beta2, Dtype eps_hat, Dtype corrected_local_rate); +#endif + +template +void AdamSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype local_rate = rate * net_params_lr[param_id]; + const Dtype beta1 = this->param_.momentum(); + const Dtype beta2 = this->param_.momentum2(); + + // we create aliases for convenience + size_t update_history_offset = net_params.size(); + Blob* val_m = this->history_[param_id].get(); + Blob* val_v = this->history_[param_id + update_history_offset].get(); + Blob* val_t = this->temp_[param_id].get(); + + const int t = this->iter_ + 1; + const Dtype correction = std::sqrt(Dtype(1) - pow(beta2, t)) / + (Dtype(1.) - pow(beta1, t)); + const int N = net_params[param_id]->count(); + const Dtype eps_hat = this->param_.delta(); + + switch (Caffe::mode()) { + case Caffe::CPU: { + // update m <- \beta_1 m_{t-1} + (1-\beta_1)g_t + caffe_cpu_axpby(N, Dtype(1)-beta1, + net_params[param_id]->cpu_diff(), beta1, + val_m->mutable_cpu_data()); + + // update v <- \beta_2 m_{t-1} + (1-\beta_2)g_t^2 + caffe_mul(N, + net_params[param_id]->cpu_diff(), + net_params[param_id]->cpu_diff(), + val_t->mutable_cpu_data()); + caffe_cpu_axpby(N, Dtype(1)-beta2, + val_t->cpu_data(), beta2, + val_v->mutable_cpu_data()); + + // set update + caffe_powx(N, + val_v->cpu_data(), Dtype(0.5), + val_t->mutable_cpu_data()); + caffe_add_scalar(N, eps_hat, val_t->mutable_cpu_data()); + caffe_div(N, + val_m->cpu_data(), + val_t->cpu_data(), + val_t->mutable_cpu_data()); + + caffe_cpu_scale(N, local_rate*correction, + val_t->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + adam_update_gpu(N, net_params[param_id]->mutable_gpu_diff(), + val_m->mutable_gpu_data(), val_v->mutable_gpu_data(), beta1, beta2, + eps_hat, local_rate*correction); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(AdamSolver); +REGISTER_SOLVER_CLASS(Adam); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/adam_solver.cu b/3rdparty/caffe/src/caffe/solvers/adam_solver.cu new file mode 100644 index 00000000..917ae100 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/adam_solver.cu @@ -0,0 +1,29 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void AdamUpdate(int N, Dtype* g, Dtype* m, Dtype* v, + Dtype beta1, Dtype beta2, Dtype eps_hat, Dtype corrected_local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float mi = m[i] = m[i]*beta1 + gi*(1-beta1); + float vi = v[i] = v[i]*beta2 + gi*gi*(1-beta2); + g[i] = corrected_local_rate * mi / (sqrt(vi) + eps_hat); + } +} +template +void adam_update_gpu(int N, Dtype* g, Dtype* m, Dtype* v, Dtype beta1, + Dtype beta2, Dtype eps_hat, Dtype corrected_local_rate) { + AdamUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, m, v, beta1, beta2, eps_hat, corrected_local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void adam_update_gpu(int, float*, float*, float*, + float, float, float, float); +template void adam_update_gpu(int, double*, double*, double*, + double, double, double, double); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/nesterov_solver.cpp b/3rdparty/caffe/src/caffe/solvers/nesterov_solver.cpp new file mode 100644 index 00000000..7c1fac1f --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/nesterov_solver.cpp @@ -0,0 +1,61 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +#ifndef CPU_ONLY +template +void nesterov_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate); +#endif + +template +void NesterovSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype momentum = this->param_.momentum(); + Dtype local_rate = rate * net_params_lr[param_id]; + switch (Caffe::mode()) { + case Caffe::CPU: { + // save history momentum for stepping back + caffe_copy(net_params[param_id]->count(), + this->history_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // update history + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + net_params[param_id]->cpu_diff(), momentum, + this->history_[param_id]->mutable_cpu_data()); + + // compute update: step back then over step + caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) + momentum, + this->history_[param_id]->cpu_data(), -momentum, + this->update_[param_id]->mutable_cpu_data()); + + // copy + caffe_copy(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + nesterov_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), + momentum, local_rate); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(NesterovSolver); +REGISTER_SOLVER_CLASS(Nesterov); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/nesterov_solver.cu b/3rdparty/caffe/src/caffe/solvers/nesterov_solver.cu new file mode 100644 index 00000000..57a456b8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/nesterov_solver.cu @@ -0,0 +1,27 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void NesterovUpdate(int N, Dtype* g, Dtype* h, + Dtype momentum, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float hi = h[i]; + float hi_new = h[i] = momentum * hi + local_rate * g[i]; + g[i] = (1+momentum) * hi_new - momentum * hi; + } +} +template +void nesterov_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate) { + NesterovUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, momentum, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void nesterov_update_gpu(int, float*, float*, float, float); +template void nesterov_update_gpu(int, double*, double*, double, + double); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cpp b/3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cpp new file mode 100644 index 00000000..3251ee42 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cpp @@ -0,0 +1,70 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +#ifndef CPU_ONLY +template +void rmsprop_update_gpu(int N, Dtype* g, Dtype* h, Dtype rms_decay, + Dtype delta, Dtype local_rate); +#endif + +template +void RMSPropSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + + // get the learning rate + Dtype delta = this->param_.delta(); + Dtype rms_decay = this->param_.rms_decay(); + Dtype local_rate = rate * net_params_lr[param_id]; + + switch (Caffe::mode()) { + case Caffe::CPU: + // compute square of gradient in update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history + caffe_cpu_axpby(net_params[param_id] -> count(), + Dtype(1-rms_decay), this->update_[param_id]->cpu_data(), + rms_decay, this->history_[param_id]-> mutable_cpu_data()); + + // prepare update + caffe_powx(net_params[param_id]->count(), + this->history_[param_id]->cpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_cpu_data()); + + caffe_add_scalar(net_params[param_id]->count(), + delta, this->update_[param_id]->mutable_cpu_data()); + + caffe_div(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), this->update_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // scale and copy + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + this->update_[param_id]->cpu_data(), Dtype(0), + net_params[param_id]->mutable_cpu_diff()); + break; + case Caffe::GPU: +#ifndef CPU_ONLY + rmsprop_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), + rms_decay, delta, local_rate); +#else + NO_GPU; +#endif + break; + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(RMSPropSolver); +REGISTER_SOLVER_CLASS(RMSProp); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cu b/3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cu new file mode 100644 index 00000000..c5ffd329 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/rmsprop_solver.cu @@ -0,0 +1,28 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void RMSPropUpdate(int N, Dtype* g, Dtype* h, + Dtype rms_decay, Dtype delta, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float hi = h[i] = rms_decay*h[i] + (1-rms_decay)*gi*gi; + g[i] = local_rate * g[i] / (sqrt(hi) + delta); + } +} +template +void rmsprop_update_gpu(int N, Dtype* g, Dtype* h, Dtype rms_decay, + Dtype delta, Dtype local_rate) { + RMSPropUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, rms_decay, delta, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void rmsprop_update_gpu(int, float*, float*, float, float, + float); +template void rmsprop_update_gpu(int, double*, double*, double, double, + double); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/sgd_solver.cpp b/3rdparty/caffe/src/caffe/solvers/sgd_solver.cpp new file mode 100644 index 00000000..ad6abe54 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/sgd_solver.cpp @@ -0,0 +1,352 @@ +#include +#include + +#include "caffe/sgd_solvers.hpp" +#include "caffe/util/hdf5.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +namespace caffe { + +// Return the current learning rate. The currently implemented learning rate +// policies are as follows: +// - fixed: always return base_lr. +// - step: return base_lr * gamma ^ (floor(iter / step)) +// - exp: return base_lr * gamma ^ iter +// - inv: return base_lr * (1 + gamma * iter) ^ (- power) +// - multistep: similar to step but it allows non uniform steps defined by +// stepvalue +// - poly: the effective learning rate follows a polynomial decay, to be +// zero by the max_iter. return base_lr (1 - iter/max_iter) ^ (power) +// - sigmoid: the effective learning rate follows a sigmod decay +// return base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))) +// +// where base_lr, max_iter, gamma, step, stepvalue and power are defined +// in the solver parameter protocol buffer, and iter is the current iteration. +template +Dtype SGDSolver::GetLearningRate() { + Dtype rate; + const string& lr_policy = this->param_.lr_policy(); + if (lr_policy == "fixed") { + rate = this->param_.base_lr(); + } else if (lr_policy == "step") { + this->current_step_ = this->iter_ / this->param_.stepsize(); + rate = this->param_.base_lr() * + pow(this->param_.gamma(), this->current_step_); + } else if (lr_policy == "exp") { + rate = this->param_.base_lr() * pow(this->param_.gamma(), this->iter_); + } else if (lr_policy == "inv") { + rate = this->param_.base_lr() * + pow(Dtype(1) + this->param_.gamma() * this->iter_, + - this->param_.power()); + } else if (lr_policy == "multistep") { + if (this->current_step_ < this->param_.stepvalue_size() && + this->iter_ >= this->param_.stepvalue(this->current_step_)) { + this->current_step_++; + LOG(INFO) << "MultiStep Status: Iteration " << + this->iter_ << ", step = " << this->current_step_; + } + rate = this->param_.base_lr() * + pow(this->param_.gamma(), this->current_step_); + } else if (lr_policy == "poly") { + rate = this->param_.base_lr() * pow(Dtype(1.) - + (Dtype(this->iter_) / Dtype(this->param_.max_iter())), + this->param_.power()); + } else if (lr_policy == "sigmoid") { + rate = this->param_.base_lr() * (Dtype(1.) / + (Dtype(1.) + exp(-this->param_.gamma() * (Dtype(this->iter_) - + Dtype(this->param_.stepsize()))))); + } else { + LOG(FATAL) << "Unknown learning rate policy: " << lr_policy; + } + return rate; +} + +template +void SGDSolver::PreSolve() { + // Initialize the history + const vector*>& net_params = this->net_->learnable_params(); + history_.clear(); + update_.clear(); + temp_.clear(); + for (int i = 0; i < net_params.size(); ++i) { + const vector& shape = net_params[i]->shape(); + history_.push_back(shared_ptr >(new Blob(shape))); + update_.push_back(shared_ptr >(new Blob(shape))); + temp_.push_back(shared_ptr >(new Blob(shape))); + } +} + +template +void SGDSolver::ClipGradients() { + const Dtype clip_gradients = this->param_.clip_gradients(); + if (clip_gradients < 0) { return; } + const vector*>& net_params = this->net_->learnable_params(); + Dtype sumsq_diff = 0; + for (int i = 0; i < net_params.size(); ++i) { + sumsq_diff += net_params[i]->sumsq_diff(); + } + const Dtype l2norm_diff = std::sqrt(sumsq_diff); + if (l2norm_diff > clip_gradients) { + Dtype scale_factor = clip_gradients / l2norm_diff; + LOG(INFO) << "Gradient clipping: scaling down gradients (L2 norm " + << l2norm_diff << " > " << clip_gradients << ") " + << "by scale factor " << scale_factor; + for (int i = 0; i < net_params.size(); ++i) { + net_params[i]->scale_diff(scale_factor); + } + } +} + +template +void SGDSolver::ApplyUpdate() { + Dtype rate = GetLearningRate(); + if (this->param_.display() && this->iter_ % this->param_.display() == 0) { + LOG_IF(INFO, Caffe::root_solver()) << "Iteration " << this->iter_ + << ", lr = " << rate; + } + ClipGradients(); + for (int param_id = 0; param_id < this->net_->learnable_params().size(); + ++param_id) { + Normalize(param_id); + Regularize(param_id); + ComputeUpdateValue(param_id, rate); + } + this->net_->Update(); +} + +template +void SGDSolver::Normalize(int param_id) { + if (this->param_.iter_size() == 1) { return; } + // Scale gradient to counterbalance accumulation. + const vector*>& net_params = this->net_->learnable_params(); + const Dtype accum_normalization = Dtype(1.) / this->param_.iter_size(); + switch (Caffe::mode()) { + case Caffe::CPU: { + caffe_scal(net_params[param_id]->count(), accum_normalization, + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + caffe_gpu_scal(net_params[param_id]->count(), accum_normalization, + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +template +void SGDSolver::Regularize(int param_id) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_weight_decay = + this->net_->params_weight_decay(); + Dtype weight_decay = this->param_.weight_decay(); + string regularization_type = this->param_.regularization_type(); + Dtype local_decay = weight_decay * net_params_weight_decay[param_id]; + switch (Caffe::mode()) { + case Caffe::CPU: { + if (local_decay) { + if (regularization_type == "L2") { + // add weight decay + caffe_axpy(net_params[param_id]->count(), + local_decay, + net_params[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + } else if (regularization_type == "L1") { + caffe_cpu_sign(net_params[param_id]->count(), + net_params[param_id]->cpu_data(), + temp_[param_id]->mutable_cpu_data()); + caffe_axpy(net_params[param_id]->count(), + local_decay, + temp_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + } else { + LOG(FATAL) << "Unknown regularization type: " << regularization_type; + } + } + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + if (local_decay) { + if (regularization_type == "L2") { + // add weight decay + caffe_gpu_axpy(net_params[param_id]->count(), + local_decay, + net_params[param_id]->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); + } else if (regularization_type == "L1") { + caffe_gpu_sign(net_params[param_id]->count(), + net_params[param_id]->gpu_data(), + temp_[param_id]->mutable_gpu_data()); + caffe_gpu_axpy(net_params[param_id]->count(), + local_decay, + temp_[param_id]->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); + } else { + LOG(FATAL) << "Unknown regularization type: " << regularization_type; + } + } +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +#ifndef CPU_ONLY +template +void sgd_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate); +#endif + +template +void SGDSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype momentum = this->param_.momentum(); + Dtype local_rate = rate * net_params_lr[param_id]; + // Compute the update to history, then copy it to the parameter diff. + switch (Caffe::mode()) { + case Caffe::CPU: { + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + net_params[param_id]->cpu_diff(), momentum, + history_[param_id]->mutable_cpu_data()); + caffe_copy(net_params[param_id]->count(), + history_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + sgd_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + history_[param_id]->mutable_gpu_data(), + momentum, local_rate); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +template +void SGDSolver::SnapshotSolverState(const string& model_filename) { + switch (this->param_.snapshot_format()) { + case caffe::SolverParameter_SnapshotFormat_BINARYPROTO: + SnapshotSolverStateToBinaryProto(model_filename); + break; + case caffe::SolverParameter_SnapshotFormat_HDF5: + SnapshotSolverStateToHDF5(model_filename); + break; + default: + LOG(FATAL) << "Unsupported snapshot format."; + } +} + +template +void SGDSolver::SnapshotSolverStateToBinaryProto( + const string& model_filename) { + SolverState state; + state.set_iter(this->iter_); + state.set_learned_net(model_filename); + state.set_current_step(this->current_step_); + state.clear_history(); + for (int i = 0; i < history_.size(); ++i) { + // Add history + BlobProto* history_blob = state.add_history(); + history_[i]->ToProto(history_blob); + } + string snapshot_filename = Solver::SnapshotFilename(".solverstate"); + LOG(INFO) + << "Snapshotting solver state to binary proto file " << snapshot_filename; + WriteProtoToBinaryFile(state, snapshot_filename.c_str()); +} + +template +void SGDSolver::SnapshotSolverStateToHDF5( + const string& model_filename) { + string snapshot_filename = + Solver::SnapshotFilename(".solverstate.h5"); + LOG(INFO) << "Snapshotting solver state to HDF5 file " << snapshot_filename; + hid_t file_hid = H5Fcreate(snapshot_filename.c_str(), H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT); + CHECK_GE(file_hid, 0) + << "Couldn't open " << snapshot_filename << " to save solver state."; + hdf5_save_int(file_hid, "iter", this->iter_); + hdf5_save_string(file_hid, "learned_net", model_filename); + hdf5_save_int(file_hid, "current_step", this->current_step_); + hid_t history_hid = H5Gcreate2(file_hid, "history", H5P_DEFAULT, H5P_DEFAULT, + H5P_DEFAULT); + CHECK_GE(history_hid, 0) + << "Error saving solver state to " << snapshot_filename << "."; + for (int i = 0; i < history_.size(); ++i) { + ostringstream oss; + oss << i; + hdf5_save_nd_dataset(history_hid, oss.str(), *history_[i]); + } + H5Gclose(history_hid); + H5Fclose(file_hid); +} + +template +void SGDSolver::RestoreSolverStateFromBinaryProto( + const string& state_file) { + SolverState state; + ReadProtoFromBinaryFile(state_file, &state); + this->iter_ = state.iter(); + if (state.has_learned_net()) { + NetParameter net_param; + ReadNetParamsFromBinaryFileOrDie(state.learned_net().c_str(), &net_param); + this->net_->CopyTrainedLayersFrom(net_param); + } + this->current_step_ = state.current_step(); + CHECK_EQ(state.history_size(), history_.size()) + << "Incorrect length of history blobs."; + LOG(INFO) << "SGDSolver: restoring history"; + for (int i = 0; i < history_.size(); ++i) { + history_[i]->FromProto(state.history(i)); + } +} + +template +void SGDSolver::RestoreSolverStateFromHDF5(const string& state_file) { + hid_t file_hid = H5Fopen(state_file.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT); + CHECK_GE(file_hid, 0) << "Couldn't open solver state file " << state_file; + this->iter_ = hdf5_load_int(file_hid, "iter"); + if (H5LTfind_dataset(file_hid, "learned_net")) { + string learned_net = hdf5_load_string(file_hid, "learned_net"); + this->net_->CopyTrainedLayersFrom(learned_net); + } + this->current_step_ = hdf5_load_int(file_hid, "current_step"); + hid_t history_hid = H5Gopen2(file_hid, "history", H5P_DEFAULT); + CHECK_GE(history_hid, 0) << "Error reading history from " << state_file; + int state_history_size = hdf5_get_num_links(history_hid); + CHECK_EQ(state_history_size, history_.size()) + << "Incorrect length of history blobs."; + for (int i = 0; i < history_.size(); ++i) { + ostringstream oss; + oss << i; + hdf5_load_nd_dataset(history_hid, oss.str().c_str(), 0, + kMaxBlobAxes, history_[i].get()); + } + H5Gclose(history_hid); + H5Fclose(file_hid); +} + +INSTANTIATE_CLASS(SGDSolver); +REGISTER_SOLVER_CLASS(SGD); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/solvers/sgd_solver.cu b/3rdparty/caffe/src/caffe/solvers/sgd_solver.cu new file mode 100644 index 00000000..e5410352 --- /dev/null +++ b/3rdparty/caffe/src/caffe/solvers/sgd_solver.cu @@ -0,0 +1,24 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void SGDUpdate(int N, Dtype* g, Dtype* h, + Dtype momentum, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + g[i] = h[i] = momentum*h[i] + local_rate*g[i]; + } +} +template +void sgd_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate) { + SGDUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, momentum, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void sgd_update_gpu(int, float*, float*, float, float); +template void sgd_update_gpu(int, double*, double*, double, double); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/syncedmem.cpp b/3rdparty/caffe/src/caffe/syncedmem.cpp new file mode 100644 index 00000000..88d9b785 --- /dev/null +++ b/3rdparty/caffe/src/caffe/syncedmem.cpp @@ -0,0 +1,186 @@ +#include "caffe/common.hpp" +#include "caffe/syncedmem.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { +SyncedMemory::SyncedMemory() + : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(0), head_(UNINITIALIZED), + own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false) { +#ifndef CPU_ONLY +#ifdef DEBUG + CUDA_CHECK(cudaGetDevice(&device_)); +#endif +#endif +} + +SyncedMemory::SyncedMemory(size_t size) + : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(size), head_(UNINITIALIZED), + own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false) { +#ifndef CPU_ONLY +#ifdef DEBUG + CUDA_CHECK(cudaGetDevice(&device_)); +#endif +#endif +} + +SyncedMemory::~SyncedMemory() { + check_device(); + if (cpu_ptr_ && own_cpu_data_) { + CaffeFreeHost(cpu_ptr_, cpu_malloc_use_cuda_); + } + +#ifndef CPU_ONLY + if (gpu_ptr_ && own_gpu_data_) { + CUDA_CHECK(cudaFree(gpu_ptr_)); + } +#endif // CPU_ONLY +} + +inline void SyncedMemory::to_cpu() { + check_device(); + switch (head_) { + case UNINITIALIZED: + CaffeMallocHost(&cpu_ptr_, size_, &cpu_malloc_use_cuda_); + caffe_memset(size_, 0, cpu_ptr_); + head_ = HEAD_AT_CPU; + own_cpu_data_ = true; + break; + case HEAD_AT_GPU: +#ifndef CPU_ONLY + if (cpu_ptr_ == NULL) { + CaffeMallocHost(&cpu_ptr_, size_, &cpu_malloc_use_cuda_); + own_cpu_data_ = true; + } + caffe_gpu_memcpy(size_, gpu_ptr_, cpu_ptr_); + head_ = SYNCED; +#else + NO_GPU; +#endif + break; + case HEAD_AT_CPU: + case SYNCED: + break; + } +} + +inline void SyncedMemory::to_gpu() { + check_device(); +#ifndef CPU_ONLY + switch (head_) { + case UNINITIALIZED: + CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_)); + caffe_gpu_memset(size_, 0, gpu_ptr_); + head_ = HEAD_AT_GPU; + own_gpu_data_ = true; + break; + case HEAD_AT_CPU: + if (gpu_ptr_ == NULL) { + CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_)); + own_gpu_data_ = true; + } + caffe_gpu_memcpy(size_, cpu_ptr_, gpu_ptr_); + head_ = SYNCED; + break; + case HEAD_AT_GPU: + case SYNCED: + break; + } +#else + NO_GPU; +#endif +} + +const void* SyncedMemory::cpu_data() { + check_device(); + to_cpu(); + return (const void*)cpu_ptr_; +} + +void SyncedMemory::set_cpu_data(void* data) { + check_device(); + CHECK(data); + if (own_cpu_data_) { + CaffeFreeHost(cpu_ptr_, cpu_malloc_use_cuda_); + } + cpu_ptr_ = data; + head_ = HEAD_AT_CPU; + own_cpu_data_ = false; +} + +const void* SyncedMemory::gpu_data() { + check_device(); +#ifndef CPU_ONLY + to_gpu(); + return (const void*)gpu_ptr_; +#else + NO_GPU; + return NULL; +#endif +} + +void SyncedMemory::set_gpu_data(void* data) { + check_device(); +#ifndef CPU_ONLY + CHECK(data); + if (own_gpu_data_) { + CUDA_CHECK(cudaFree(gpu_ptr_)); + } + gpu_ptr_ = data; + head_ = HEAD_AT_GPU; + own_gpu_data_ = false; +#else + NO_GPU; +#endif +} + +void* SyncedMemory::mutable_cpu_data() { + check_device(); + to_cpu(); + head_ = HEAD_AT_CPU; + return cpu_ptr_; +} + +void* SyncedMemory::mutable_gpu_data() { + check_device(); +#ifndef CPU_ONLY + to_gpu(); + head_ = HEAD_AT_GPU; + return gpu_ptr_; +#else + NO_GPU; + return NULL; +#endif +} + +#ifndef CPU_ONLY +void SyncedMemory::async_gpu_push(const cudaStream_t& stream) { + check_device(); + CHECK(head_ == HEAD_AT_CPU); + if (gpu_ptr_ == NULL) { + CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_)); + own_gpu_data_ = true; + } + const cudaMemcpyKind put = cudaMemcpyHostToDevice; + CUDA_CHECK(cudaMemcpyAsync(gpu_ptr_, cpu_ptr_, size_, put, stream)); + // Assume caller will synchronize on the stream before use + head_ = SYNCED; +} +#endif + +void SyncedMemory::check_device() { +#ifndef CPU_ONLY +#ifdef DEBUG + int device; + cudaGetDevice(&device); + CHECK(device == device_); + if (gpu_ptr_ && own_gpu_data_) { + cudaPointerAttributes attributes; + CUDA_CHECK(cudaPointerGetAttributes(&attributes, gpu_ptr_)); + CHECK(attributes.device == device_); + } +#endif +#endif +} + +} // namespace caffe + diff --git a/3rdparty/caffe/src/caffe/test/CMakeLists.txt b/3rdparty/caffe/src/caffe/test/CMakeLists.txt new file mode 100644 index 00000000..d8afc30b --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/CMakeLists.txt @@ -0,0 +1,36 @@ +# The option allows to include in build only selected test files and exclude all others +# Usage example: +# cmake -DBUILD_only_tests="common,net,blob,im2col_kernel" +set(BUILD_only_tests "" CACHE STRING "Blank or comma-separated list of test files to build without 'test_' prefix and extension") +caffe_leave_only_selected_tests(test_srcs ${BUILD_only_tests}) +caffe_leave_only_selected_tests(test_cuda ${BUILD_only_tests}) + +# For 'make runtest' target we don't need to embed test data paths to +# source files, because test target is executed in source directory +# That's why the lines below are commented. TODO: remove them + +# definition needed to include CMake generated files +#add_definitions(-DCMAKE_BUILD) + +# generates test_data/sample_data_list.txt.gen.cmake +#caffe_configure_testdatafile(test_data/sample_data_list.txt) + +set(the_target test.testbin) +set(test_args --gtest_shuffle) + +if(HAVE_CUDA) + caffe_cuda_compile(test_cuda_objs ${test_cuda}) + list(APPEND test_srcs ${test_cuda_objs} ${test_cuda}) +else() + list(APPEND test_args --gtest_filter="-*GPU*") +endif() + +# ---[ Adding test target +add_executable(${the_target} EXCLUDE_FROM_ALL ${test_srcs}) +target_link_libraries(${the_target} gtest ${Caffe_LINK}) +caffe_default_properties(${the_target}) +caffe_set_runtime_directory(${the_target} "${PROJECT_BINARY_DIR}/test") + +# ---[ Adding runtest +add_custom_target(runtest COMMAND ${the_target} ${test_args} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) diff --git a/3rdparty/caffe/src/caffe/test/test_accuracy_layer.cpp b/3rdparty/caffe/src/caffe/test/test_accuracy_layer.cpp new file mode 100644 index 00000000..6fe808bd --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_accuracy_layer.cpp @@ -0,0 +1,336 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/accuracy_layer.hpp" +#include "caffe/util/rng.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class AccuracyLayerTest : public CPUDeviceTest { + protected: + AccuracyLayerTest() + : blob_bottom_data_(new Blob()), + blob_bottom_label_(new Blob()), + blob_top_(new Blob()), + blob_top_per_class_(new Blob()), + top_k_(3) { + vector shape(2); + shape[0] = 100; + shape[1] = 10; + blob_bottom_data_->Reshape(shape); + shape.resize(1); + blob_bottom_label_->Reshape(shape); + FillBottoms(); + + blob_bottom_vec_.push_back(blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_label_); + blob_top_vec_.push_back(blob_top_); + blob_top_per_class_vec_.push_back(blob_top_); + blob_top_per_class_vec_.push_back(blob_top_per_class_); + } + + virtual void FillBottoms() { + // fill the probability values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_data_); + + const unsigned int prefetch_rng_seed = caffe_rng_rand(); + shared_ptr rng(new Caffe::RNG(prefetch_rng_seed)); + caffe::rng_t* prefetch_rng = + static_cast(rng->generator()); + Dtype* label_data = blob_bottom_label_->mutable_cpu_data(); + for (int i = 0; i < blob_bottom_label_->count(); ++i) { + label_data[i] = (*prefetch_rng)() % 10; + } + } + + virtual ~AccuracyLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_label_; + delete blob_top_; + delete blob_top_per_class_; + } + Blob* const blob_bottom_data_; + Blob* const blob_bottom_label_; + Blob* const blob_top_; + Blob* const blob_top_per_class_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + vector*> blob_top_per_class_vec_; + int top_k_; +}; + +TYPED_TEST_CASE(AccuracyLayerTest, TestDtypes); + +TYPED_TEST(AccuracyLayerTest, TestSetup) { + LayerParameter layer_param; + AccuracyLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 1); + EXPECT_EQ(this->blob_top_->channels(), 1); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); +} + +TYPED_TEST(AccuracyLayerTest, TestSetupTopK) { + LayerParameter layer_param; + AccuracyParameter* accuracy_param = + layer_param.mutable_accuracy_param(); + accuracy_param->set_top_k(5); + AccuracyLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 1); + EXPECT_EQ(this->blob_top_->channels(), 1); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); +} + +TYPED_TEST(AccuracyLayerTest, TestSetupOutputPerClass) { + LayerParameter layer_param; + AccuracyLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_per_class_vec_); + EXPECT_EQ(this->blob_top_->num(), 1); + EXPECT_EQ(this->blob_top_->channels(), 1); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); + EXPECT_EQ(this->blob_top_per_class_->num(), 10); + EXPECT_EQ(this->blob_top_per_class_->channels(), 1); + EXPECT_EQ(this->blob_top_per_class_->height(), 1); + EXPECT_EQ(this->blob_top_per_class_->width(), 1); +} + +TYPED_TEST(AccuracyLayerTest, TestForwardCPU) { + LayerParameter layer_param; + AccuracyLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + TypeParam max_value; + int max_id; + int num_correct_labels = 0; + for (int i = 0; i < 100; ++i) { + max_value = -FLT_MAX; + max_id = 0; + for (int j = 0; j < 10; ++j) { + if (this->blob_bottom_data_->data_at(i, j, 0, 0) > max_value) { + max_value = this->blob_bottom_data_->data_at(i, j, 0, 0); + max_id = j; + } + } + if (max_id == this->blob_bottom_label_->data_at(i, 0, 0, 0)) { + ++num_correct_labels; + } + } + EXPECT_NEAR(this->blob_top_->data_at(0, 0, 0, 0), + num_correct_labels / 100.0, 1e-4); +} + +TYPED_TEST(AccuracyLayerTest, TestForwardWithSpatialAxes) { + this->blob_bottom_data_->Reshape(2, 10, 4, 5); + vector label_shape(3); + label_shape[0] = 2; label_shape[1] = 4; label_shape[2] = 5; + this->blob_bottom_label_->Reshape(label_shape); + this->FillBottoms(); + LayerParameter layer_param; + layer_param.mutable_accuracy_param()->set_axis(1); + AccuracyLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + TypeParam max_value; + const int num_labels = this->blob_bottom_label_->count(); + int max_id; + int num_correct_labels = 0; + vector label_offset(3); + for (int n = 0; n < this->blob_bottom_data_->num(); ++n) { + for (int h = 0; h < this->blob_bottom_data_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_data_->width(); ++w) { + max_value = -FLT_MAX; + max_id = 0; + for (int c = 0; c < this->blob_bottom_data_->channels(); ++c) { + const TypeParam pred_value = + this->blob_bottom_data_->data_at(n, c, h, w); + if (pred_value > max_value) { + max_value = pred_value; + max_id = c; + } + } + label_offset[0] = n; label_offset[1] = h; label_offset[2] = w; + const int correct_label = + static_cast(this->blob_bottom_label_->data_at(label_offset)); + if (max_id == correct_label) { + ++num_correct_labels; + } + } + } + } + EXPECT_NEAR(this->blob_top_->data_at(0, 0, 0, 0), + num_correct_labels / TypeParam(num_labels), 1e-4); +} + +TYPED_TEST(AccuracyLayerTest, TestForwardIgnoreLabel) { + LayerParameter layer_param; + const TypeParam kIgnoreLabelValue = -1; + layer_param.mutable_accuracy_param()->set_ignore_label(kIgnoreLabelValue); + AccuracyLayer layer(layer_param); + // Manually set some labels to the ignore label value (-1). + this->blob_bottom_label_->mutable_cpu_data()[2] = kIgnoreLabelValue; + this->blob_bottom_label_->mutable_cpu_data()[5] = kIgnoreLabelValue; + this->blob_bottom_label_->mutable_cpu_data()[32] = kIgnoreLabelValue; + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + TypeParam max_value; + int max_id; + int num_correct_labels = 0; + int count = 0; + for (int i = 0; i < 100; ++i) { + if (kIgnoreLabelValue == this->blob_bottom_label_->data_at(i, 0, 0, 0)) { + continue; + } + ++count; + max_value = -FLT_MAX; + max_id = 0; + for (int j = 0; j < 10; ++j) { + if (this->blob_bottom_data_->data_at(i, j, 0, 0) > max_value) { + max_value = this->blob_bottom_data_->data_at(i, j, 0, 0); + max_id = j; + } + } + if (max_id == this->blob_bottom_label_->data_at(i, 0, 0, 0)) { + ++num_correct_labels; + } + } + EXPECT_EQ(count, 97); // We set 3 out of 100 labels to kIgnoreLabelValue. + EXPECT_NEAR(this->blob_top_->data_at(0, 0, 0, 0), + num_correct_labels / TypeParam(count), 1e-4); +} + +TYPED_TEST(AccuracyLayerTest, TestForwardCPUTopK) { + LayerParameter layer_param; + AccuracyParameter* accuracy_param = layer_param.mutable_accuracy_param(); + accuracy_param->set_top_k(this->top_k_); + AccuracyLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + TypeParam current_value; + int current_rank; + int num_correct_labels = 0; + for (int i = 0; i < 100; ++i) { + for (int j = 0; j < 10; ++j) { + current_value = this->blob_bottom_data_->data_at(i, j, 0, 0); + current_rank = 0; + for (int k = 0; k < 10; ++k) { + if (this->blob_bottom_data_->data_at(i, k, 0, 0) > current_value) { + ++current_rank; + } + } + if (current_rank < this->top_k_ && + j == this->blob_bottom_label_->data_at(i, 0, 0, 0)) { + ++num_correct_labels; + } + } + } + + EXPECT_NEAR(this->blob_top_->data_at(0, 0, 0, 0), + num_correct_labels / 100.0, 1e-4); +} + +TYPED_TEST(AccuracyLayerTest, TestForwardCPUPerClass) { + LayerParameter layer_param; + AccuracyLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_per_class_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_per_class_vec_); + + TypeParam max_value; + int max_id; + int num_correct_labels = 0; + const int num_class = this->blob_top_per_class_->num(); + vector correct_per_class(num_class, 0); + vector num_per_class(num_class, 0); + for (int i = 0; i < 100; ++i) { + max_value = -FLT_MAX; + max_id = 0; + for (int j = 0; j < 10; ++j) { + if (this->blob_bottom_data_->data_at(i, j, 0, 0) > max_value) { + max_value = this->blob_bottom_data_->data_at(i, j, 0, 0); + max_id = j; + } + } + ++num_per_class[this->blob_bottom_label_->data_at(i, 0, 0, 0)]; + if (max_id == this->blob_bottom_label_->data_at(i, 0, 0, 0)) { + ++num_correct_labels; + ++correct_per_class[max_id]; + } + } + EXPECT_NEAR(this->blob_top_->data_at(0, 0, 0, 0), + num_correct_labels / 100.0, 1e-4); + for (int i = 0; i < num_class; ++i) { + TypeParam accuracy_per_class = (num_per_class[i] > 0 ? + static_cast(correct_per_class[i]) / num_per_class[i] : 0); + EXPECT_NEAR(this->blob_top_per_class_->data_at(i, 0, 0, 0), + accuracy_per_class, 1e-4); + } +} + + +TYPED_TEST(AccuracyLayerTest, TestForwardCPUPerClassWithIgnoreLabel) { + LayerParameter layer_param; + const TypeParam kIgnoreLabelValue = -1; + layer_param.mutable_accuracy_param()->set_ignore_label(kIgnoreLabelValue); + AccuracyLayer layer(layer_param); + // Manually set some labels to the ignore label value (-1). + this->blob_bottom_label_->mutable_cpu_data()[2] = kIgnoreLabelValue; + this->blob_bottom_label_->mutable_cpu_data()[5] = kIgnoreLabelValue; + this->blob_bottom_label_->mutable_cpu_data()[32] = kIgnoreLabelValue; + layer.SetUp(this->blob_bottom_vec_, this->blob_top_per_class_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_per_class_vec_); + + TypeParam max_value; + int max_id; + int num_correct_labels = 0; + const int num_class = this->blob_top_per_class_->num(); + vector correct_per_class(num_class, 0); + vector num_per_class(num_class, 0); + int count = 0; + for (int i = 0; i < 100; ++i) { + if (kIgnoreLabelValue == this->blob_bottom_label_->data_at(i, 0, 0, 0)) { + continue; + } + ++count; + max_value = -FLT_MAX; + max_id = 0; + for (int j = 0; j < 10; ++j) { + if (this->blob_bottom_data_->data_at(i, j, 0, 0) > max_value) { + max_value = this->blob_bottom_data_->data_at(i, j, 0, 0); + max_id = j; + } + } + ++num_per_class[this->blob_bottom_label_->data_at(i, 0, 0, 0)]; + if (max_id == this->blob_bottom_label_->data_at(i, 0, 0, 0)) { + ++num_correct_labels; + ++correct_per_class[max_id]; + } + } + EXPECT_EQ(count, 97); + EXPECT_NEAR(this->blob_top_->data_at(0, 0, 0, 0), + num_correct_labels / TypeParam(count), 1e-4); + for (int i = 0; i < 10; ++i) { + TypeParam accuracy_per_class = (num_per_class[i] > 0 ? + static_cast(correct_per_class[i]) / num_per_class[i] : 0); + EXPECT_NEAR(this->blob_top_per_class_->data_at(i, 0, 0, 0), + accuracy_per_class, 1e-4); + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_argmax_layer.cpp b/3rdparty/caffe/src/caffe/test/test_argmax_layer.cpp new file mode 100644 index 00000000..472e6652 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_argmax_layer.cpp @@ -0,0 +1,295 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/argmax_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class ArgMaxLayerTest : public CPUDeviceTest { + protected: + ArgMaxLayerTest() + : blob_bottom_(new Blob(10, 10, 20, 20)), + blob_top_(new Blob()), + top_k_(5) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~ArgMaxLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + size_t top_k_; +}; + +TYPED_TEST_CASE(ArgMaxLayerTest, TestDtypes); + +TYPED_TEST(ArgMaxLayerTest, TestSetup) { + LayerParameter layer_param; + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), 1); +} + +TYPED_TEST(ArgMaxLayerTest, TestSetupMaxVal) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_out_max_val(true); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), 2); +} + +TYPED_TEST(ArgMaxLayerTest, TestSetupAxis) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(0); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->shape(0), argmax_param->top_k()); + EXPECT_EQ(this->blob_top_->shape(1), this->blob_bottom_->shape(0)); + EXPECT_EQ(this->blob_top_->shape(2), this->blob_bottom_->shape(2)); + EXPECT_EQ(this->blob_top_->shape(3), this->blob_bottom_->shape(3)); +} + +TYPED_TEST(ArgMaxLayerTest, TestSetupAxisNegativeIndexing) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(-2); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->shape(0), this->blob_bottom_->shape(0)); + EXPECT_EQ(this->blob_top_->shape(1), this->blob_bottom_->shape(1)); + EXPECT_EQ(this->blob_top_->shape(2), argmax_param->top_k()); + EXPECT_EQ(this->blob_top_->shape(3), this->blob_bottom_->shape(3)); +} + +TYPED_TEST(ArgMaxLayerTest, TestSetupAxisMaxVal) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(2); + argmax_param->set_out_max_val(true); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->shape(0), this->blob_bottom_->shape(0)); + EXPECT_EQ(this->blob_top_->shape(1), this->blob_bottom_->shape(1)); + EXPECT_EQ(this->blob_top_->shape(2), argmax_param->top_k()); + EXPECT_EQ(this->blob_top_->shape(3), this->blob_bottom_->shape(3)); +} + +TYPED_TEST(ArgMaxLayerTest, TestCPU) { + LayerParameter layer_param; + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + const TypeParam* top_data = this->blob_top_->cpu_data(); + int max_ind; + TypeParam max_val; + int num = this->blob_bottom_->num(); + int dim = this->blob_bottom_->count() / num; + for (int i = 0; i < num; ++i) { + EXPECT_GE(top_data[i], 0); + EXPECT_LE(top_data[i], dim); + max_ind = top_data[i]; + max_val = bottom_data[i * dim + max_ind]; + for (int j = 0; j < dim; ++j) { + EXPECT_LE(bottom_data[i * dim + j], max_val); + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUMaxVal) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_out_max_val(true); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + const TypeParam* top_data = this->blob_top_->cpu_data(); + int max_ind; + TypeParam max_val; + int num = this->blob_bottom_->num(); + int dim = this->blob_bottom_->count() / num; + for (int i = 0; i < num; ++i) { + EXPECT_GE(top_data[i], 0); + EXPECT_LE(top_data[i], dim); + max_ind = top_data[i * 2]; + max_val = top_data[i * 2 + 1]; + EXPECT_EQ(bottom_data[i * dim + max_ind], max_val); + for (int j = 0; j < dim; ++j) { + EXPECT_LE(bottom_data[i * dim + j], max_val); + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUTopK) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_top_k(this->top_k_); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + int max_ind; + TypeParam max_val; + int num = this->blob_bottom_->num(); + int dim = this->blob_bottom_->count() / num; + for (int i = 0; i < num; ++i) { + EXPECT_GE(this->blob_top_->data_at(i, 0, 0, 0), 0); + EXPECT_LE(this->blob_top_->data_at(i, 0, 0, 0), dim); + for (int j = 0; j < this->top_k_; ++j) { + max_ind = this->blob_top_->data_at(i, 0, j, 0); + max_val = bottom_data[i * dim + max_ind]; + int count = 0; + for (int k = 0; k < dim; ++k) { + if (bottom_data[i * dim + k] > max_val) { + ++count; + } + } + EXPECT_EQ(j, count); + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUMaxValTopK) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_out_max_val(true); + argmax_param->set_top_k(this->top_k_); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + int max_ind; + TypeParam max_val; + int num = this->blob_bottom_->num(); + int dim = this->blob_bottom_->count() / num; + for (int i = 0; i < num; ++i) { + EXPECT_GE(this->blob_top_->data_at(i, 0, 0, 0), 0); + EXPECT_LE(this->blob_top_->data_at(i, 0, 0, 0), dim); + for (int j = 0; j < this->top_k_; ++j) { + max_ind = this->blob_top_->data_at(i, 0, j, 0); + max_val = this->blob_top_->data_at(i, 1, j, 0); + EXPECT_EQ(bottom_data[i * dim + max_ind], max_val); + int count = 0; + for (int k = 0; k < dim; ++k) { + if (bottom_data[i * dim + k] > max_val) { + ++count; + } + } + EXPECT_EQ(j, count); + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUAxis) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(0); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + int max_ind; + TypeParam max_val; + std::vector shape = this->blob_bottom_->shape(); + for (int i = 0; i < shape[1]; ++i) { + for (int j = 0; j < shape[2]; ++j) { + for (int k = 0; k < shape[3]; ++k) { + max_ind = this->blob_top_->data_at(0, i, j, k); + max_val = this->blob_bottom_->data_at(max_ind, i, j, k); + EXPECT_GE(max_ind, 0); + EXPECT_LE(max_ind, shape[0]); + for (int l = 0; l < shape[0]; ++l) { + EXPECT_LE(this->blob_bottom_->data_at(l, i, j, k), max_val); + } + } + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUAxisTopK) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(2); + argmax_param->set_top_k(this->top_k_); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + int max_ind; + TypeParam max_val; + std::vector shape = this->blob_bottom_->shape(); + for (int i = 0; i < shape[0]; ++i) { + for (int j = 0; j < shape[1]; ++j) { + for (int k = 0; k < shape[3]; ++k) { + for (int m = 0; m < this->top_k_; ++m) { + max_ind = this->blob_top_->data_at(i, j, m, k); + max_val = this->blob_bottom_->data_at(i, j, max_ind, k); + EXPECT_GE(max_ind, 0); + EXPECT_LE(max_ind, shape[2]); + int count = 0; + for (int l = 0; l < shape[2]; ++l) { + if (this->blob_bottom_->data_at(i, j, l, k) > max_val) { + ++count; + } + } + EXPECT_EQ(m, count); + } + } + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUAxisMaxValTopK) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(-1); + argmax_param->set_top_k(this->top_k_); + argmax_param->set_out_max_val(true); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + TypeParam max_val; + std::vector shape = this->blob_bottom_->shape(); + for (int i = 0; i < shape[0]; ++i) { + for (int j = 0; j < shape[1]; ++j) { + for (int k = 0; k < shape[2]; ++k) { + for (int m = 0; m < this->top_k_; ++m) { + max_val = this->blob_top_->data_at(i, j, k, m); + int count = 0; + for (int l = 0; l < shape[3]; ++l) { + if (this->blob_bottom_->data_at(i, j, k, l) > max_val) { + ++count; + } + } + EXPECT_EQ(m, count); + } + } + } + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_batch_norm_layer.cpp b/3rdparty/caffe/src/caffe/test/test_batch_norm_layer.cpp new file mode 100644 index 00000000..936b93a1 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_batch_norm_layer.cpp @@ -0,0 +1,133 @@ +#include +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/batch_norm_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +#define BATCH_SIZE 2 +#define INPUT_DATA_SIZE 3 + +namespace caffe { + + template + class BatchNormLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + BatchNormLayerTest() + : blob_bottom_(new Blob(5, 2, 3, 4)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~BatchNormLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + }; + + TYPED_TEST_CASE(BatchNormLayerTest, TestDtypesAndDevices); + + TYPED_TEST(BatchNormLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + + BatchNormLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Test mean + int num = this->blob_bottom_->num(); + int channels = this->blob_bottom_->channels(); + int height = this->blob_bottom_->height(); + int width = this->blob_bottom_->width(); + + for (int j = 0; j < channels; ++j) { + Dtype sum = 0, var = 0; + for (int i = 0; i < num; ++i) { + for ( int k = 0; k < height; ++k ) { + for ( int l = 0; l < width; ++l ) { + Dtype data = this->blob_top_->data_at(i, j, k, l); + sum += data; + var += data * data; + } + } + } + sum /= height * width * num; + var /= height * width * num; + + const Dtype kErrorBound = 0.001; + // expect zero mean + EXPECT_NEAR(0, sum, kErrorBound); + // expect unit variance + EXPECT_NEAR(1, var, kErrorBound); + } + } + + TYPED_TEST(BatchNormLayerTest, TestForwardInplace) { + typedef typename TypeParam::Dtype Dtype; + Blob blob_inplace(5, 2, 3, 4); + vector*> blob_bottom_vec; + vector*> blob_top_vec; + LayerParameter layer_param; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(&blob_inplace); + blob_bottom_vec.push_back(&blob_inplace); + blob_top_vec.push_back(&blob_inplace); + + BatchNormLayer layer(layer_param); + layer.SetUp(blob_bottom_vec, blob_top_vec); + layer.Forward(blob_bottom_vec, blob_top_vec); + + // Test mean + int num = blob_inplace.num(); + int channels = blob_inplace.channels(); + int height = blob_inplace.height(); + int width = blob_inplace.width(); + + for (int j = 0; j < channels; ++j) { + Dtype sum = 0, var = 0; + for (int i = 0; i < num; ++i) { + for ( int k = 0; k < height; ++k ) { + for ( int l = 0; l < width; ++l ) { + Dtype data = blob_inplace.data_at(i, j, k, l); + sum += data; + var += data * data; + } + } + } + sum /= height * width * num; + var /= height * width * num; + + const Dtype kErrorBound = 0.001; + // expect zero mean + EXPECT_NEAR(0, sum, kErrorBound); + // expect unit variance + EXPECT_NEAR(1, var, kErrorBound); + } + } + + TYPED_TEST(BatchNormLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + + BatchNormLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-4); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_batch_reindex_layer.cpp b/3rdparty/caffe/src/caffe/test/test_batch_reindex_layer.cpp new file mode 100644 index 00000000..9ea1a2f6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_batch_reindex_layer.cpp @@ -0,0 +1,118 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/batch_reindex_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class BatchReindexLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + BatchReindexLayerTest() + : blob_bottom_(new Blob()), + blob_bottom_permute_(new Blob()), + blob_top_(new Blob()) { + } + virtual void SetUp() { + Caffe::set_random_seed(1701); + vector sz; + sz.push_back(5); + sz.push_back(4); + sz.push_back(3); + sz.push_back(2); + blob_bottom_->Reshape(sz); + vector permsz; + permsz.push_back(6); + blob_bottom_permute_->Reshape(permsz); + + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + int perm[] = { 4, 0, 4, 0, 1, 2 }; + for (int i = 0; i < blob_bottom_permute_->count(); ++i) { + blob_bottom_permute_->mutable_cpu_data()[i] = perm[i]; + } + + blob_bottom_vec_.push_back(blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_permute_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~BatchReindexLayerTest() { + delete blob_bottom_permute_; + delete blob_bottom_; + delete blob_top_; + } + Blob* const blob_bottom_; + Blob* const blob_bottom_permute_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + + void TestForward() { + LayerParameter layer_param; + + vector sz; + sz.push_back(5); + sz.push_back(4); + sz.push_back(3); + sz.push_back(2); + blob_bottom_->Reshape(sz); + for (int i = 0; i < blob_bottom_->count(); ++i) { + blob_bottom_->mutable_cpu_data()[i] = i; + } + + vector permsz; + permsz.push_back(6); + blob_bottom_permute_->Reshape(permsz); + int perm[] = { 4, 0, 4, 0, 1, 2 }; + for (int i = 0; i < blob_bottom_permute_->count(); ++i) { + blob_bottom_permute_->mutable_cpu_data()[i] = perm[i]; + } + BatchReindexLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), blob_bottom_permute_->num()); + EXPECT_EQ(blob_top_->channels(), blob_bottom_->channels()); + EXPECT_EQ(blob_top_->height(), blob_bottom_->height()); + EXPECT_EQ(blob_top_->width(), blob_bottom_->width()); + + layer.Forward(blob_bottom_vec_, blob_top_vec_); + int channels = blob_top_->channels(); + int height = blob_top_->height(); + int width = blob_top_->width(); + for (int i = 0; i < blob_top_->count(); ++i) { + int n = i / (channels * width * height); + int inner_idx = (i % (channels * width * height)); + EXPECT_EQ( + blob_top_->cpu_data()[i], + blob_bottom_->cpu_data()[perm[n] * channels * width * height + + inner_idx]); + } + } +}; + +TYPED_TEST_CASE(BatchReindexLayerTest, TestDtypesAndDevices); + +TYPED_TEST(BatchReindexLayerTest, TestForward) { + this->TestForward(); +} + +TYPED_TEST(BatchReindexLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BatchReindexLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + } + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_benchmark.cpp b/3rdparty/caffe/src/caffe/test/test_benchmark.cpp new file mode 100644 index 00000000..b03fdf69 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_benchmark.cpp @@ -0,0 +1,90 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/util/benchmark.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +const float kMillisecondsThreshold = 30; + +template +class BenchmarkTest : public MultiDeviceTest {}; + +TYPED_TEST_CASE(BenchmarkTest, TestDtypesAndDevices); + +TYPED_TEST(BenchmarkTest, TestTimerConstructor) { + Timer timer; + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); +} + +TYPED_TEST(BenchmarkTest, TestTimerStart) { + Timer timer; + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Stop(); + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TYPED_TEST(BenchmarkTest, TestTimerStop) { + Timer timer; + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TYPED_TEST(BenchmarkTest, TestTimerMilliSeconds) { + Timer timer; + EXPECT_EQ(timer.MilliSeconds(), 0); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + boost::this_thread::sleep(boost::posix_time::milliseconds(300)); + EXPECT_GE(timer.MilliSeconds(), 300 - kMillisecondsThreshold); + EXPECT_LE(timer.MilliSeconds(), 300 + kMillisecondsThreshold); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TYPED_TEST(BenchmarkTest, TestTimerSeconds) { + Timer timer; + EXPECT_EQ(timer.Seconds(), 0); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + boost::this_thread::sleep(boost::posix_time::milliseconds(300)); + EXPECT_GE(timer.Seconds(), 0.3 - kMillisecondsThreshold / 1000.); + EXPECT_LE(timer.Seconds(), 0.3 + kMillisecondsThreshold / 1000.); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_bias_layer.cpp b/3rdparty/caffe/src/caffe/test/test_bias_layer.cpp new file mode 100644 index 00000000..3862e763 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_bias_layer.cpp @@ -0,0 +1,467 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/bias_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class BiasLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + BiasLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_bottom_eltwise_(new Blob(2, 3, 4, 5)), + blob_bottom_broadcast_0_(new Blob()), + blob_bottom_broadcast_1_(new Blob()), + blob_bottom_broadcast_2_(new Blob()), + blob_bottom_bias_(new Blob(vector())), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + vector broadcast_shape(2); + broadcast_shape[0] = 2; broadcast_shape[1] = 3; + this->blob_bottom_broadcast_0_->Reshape(broadcast_shape); + broadcast_shape[0] = 3; broadcast_shape[1] = 4; + this->blob_bottom_broadcast_1_->Reshape(broadcast_shape); + broadcast_shape[0] = 4; broadcast_shape[1] = 5; + this->blob_bottom_broadcast_2_->Reshape(broadcast_shape); + FillerParameter filler_param; + filler_param.set_min(1); + filler_param.set_max(10); + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_eltwise_); + filler.Fill(this->blob_bottom_broadcast_0_); + filler.Fill(this->blob_bottom_broadcast_1_); + filler.Fill(this->blob_bottom_broadcast_2_); + filler.Fill(this->blob_bottom_bias_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~BiasLayerTest() { + delete blob_bottom_; + delete blob_bottom_eltwise_; + delete blob_bottom_broadcast_0_; + delete blob_bottom_broadcast_1_; + delete blob_bottom_broadcast_2_; + delete blob_bottom_bias_; + delete blob_top_; + } + Blob* const blob_bottom_; + Blob* const blob_bottom_eltwise_; + Blob* const blob_bottom_broadcast_0_; + Blob* const blob_bottom_broadcast_1_; + Blob* const blob_bottom_broadcast_2_; + Blob* const blob_bottom_bias_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(BiasLayerTest, TestDtypesAndDevices); + +TYPED_TEST(BiasLayerTest, TestForwardEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_bottom_->cpu_data(); + const int count = this->blob_bottom_->count(); + const Dtype* in_data_a = orig_bottom.cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestBackwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_bias_diff; + orig_bias_diff.CopyFrom(*this->blob_bottom_eltwise_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_eltwise_->count(); ++i) { + EXPECT_NEAR(orig_bias_diff.cpu_diff()[i], + this->blob_bottom_eltwise_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(0); + bias_param->set_num_axes(-1); + bias_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = layer->blobs()[0]->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + this->blob_bottom_broadcast_0_->data_at(n, c, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_bottom_->data_at(n, c, h, w), + orig_bottom.data_at(n, c, h, w) + + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestBackwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + shared_ptr > layer(new BiasLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_bias_diff; + orig_bias_diff.CopyFrom(*this->blob_bottom_broadcast_1_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_broadcast_1_->count(); ++i) { + EXPECT_NEAR(orig_bias_diff.cpu_diff()[i], + this->blob_bottom_broadcast_1_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(1); + bias_param->set_num_axes(2); + bias_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + layer->blobs()[0]->data_at(c, h, 0, 0), 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + this->blob_bottom_broadcast_2_->data_at(h, w, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBias) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype bias = *this->blob_bottom_bias_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] + bias, 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBiasAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype bias = *this->blob_bottom_bias_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] + bias, 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestGradientEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(0); + bias_param->set_num_axes(-1); + bias_param->mutable_filler()->set_type("gaussian"); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(1); + bias_param->set_num_axes(2); + bias_param->mutable_filler()->set_type("gaussian"); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBias) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBiasAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_blob.cpp b/3rdparty/caffe/src/caffe/test/test_blob.cpp new file mode 100644 index 00000000..b8856222 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_blob.cpp @@ -0,0 +1,301 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class BlobSimpleTest : public ::testing::Test { + protected: + BlobSimpleTest() + : blob_(new Blob()), + blob_preshaped_(new Blob(2, 3, 4, 5)) {} + virtual ~BlobSimpleTest() { delete blob_; delete blob_preshaped_; } + Blob* const blob_; + Blob* const blob_preshaped_; +}; + +TYPED_TEST_CASE(BlobSimpleTest, TestDtypes); + +TYPED_TEST(BlobSimpleTest, TestInitialization) { + EXPECT_TRUE(this->blob_); + EXPECT_TRUE(this->blob_preshaped_); + EXPECT_EQ(this->blob_preshaped_->num(), 2); + EXPECT_EQ(this->blob_preshaped_->channels(), 3); + EXPECT_EQ(this->blob_preshaped_->height(), 4); + EXPECT_EQ(this->blob_preshaped_->width(), 5); + EXPECT_EQ(this->blob_preshaped_->count(), 120); + EXPECT_EQ(this->blob_->num_axes(), 0); + EXPECT_EQ(this->blob_->count(), 0); +} + +TYPED_TEST(BlobSimpleTest, TestPointersCPUGPU) { + EXPECT_TRUE(this->blob_preshaped_->gpu_data()); + EXPECT_TRUE(this->blob_preshaped_->cpu_data()); + EXPECT_TRUE(this->blob_preshaped_->mutable_gpu_data()); + EXPECT_TRUE(this->blob_preshaped_->mutable_cpu_data()); +} + +TYPED_TEST(BlobSimpleTest, TestReshape) { + this->blob_->Reshape(2, 3, 4, 5); + EXPECT_EQ(this->blob_->num(), 2); + EXPECT_EQ(this->blob_->channels(), 3); + EXPECT_EQ(this->blob_->height(), 4); + EXPECT_EQ(this->blob_->width(), 5); + EXPECT_EQ(this->blob_->count(), 120); +} + +TYPED_TEST(BlobSimpleTest, TestReshapeZero) { + vector shape(2); + shape[0] = 0; + shape[1] = 5; + this->blob_->Reshape(shape); + EXPECT_EQ(this->blob_->count(), 0); +} + +TYPED_TEST(BlobSimpleTest, TestLegacyBlobProtoShapeEquals) { + BlobProto blob_proto; + + // Reshape to (3 x 2). + vector shape(2); + shape[0] = 3; + shape[1] = 2; + this->blob_->Reshape(shape); + + // (3 x 2) blob == (1 x 1 x 3 x 2) legacy blob + blob_proto.set_num(1); + blob_proto.set_channels(1); + blob_proto.set_height(3); + blob_proto.set_width(2); + EXPECT_TRUE(this->blob_->ShapeEquals(blob_proto)); + + // (3 x 2) blob != (0 x 1 x 3 x 2) legacy blob + blob_proto.set_num(0); + blob_proto.set_channels(1); + blob_proto.set_height(3); + blob_proto.set_width(2); + EXPECT_FALSE(this->blob_->ShapeEquals(blob_proto)); + + // (3 x 2) blob != (3 x 1 x 3 x 2) legacy blob + blob_proto.set_num(3); + blob_proto.set_channels(1); + blob_proto.set_height(3); + blob_proto.set_width(2); + EXPECT_FALSE(this->blob_->ShapeEquals(blob_proto)); + + // Reshape to (1 x 3 x 2). + shape.insert(shape.begin(), 1); + this->blob_->Reshape(shape); + + // (1 x 3 x 2) blob == (1 x 1 x 3 x 2) legacy blob + blob_proto.set_num(1); + blob_proto.set_channels(1); + blob_proto.set_height(3); + blob_proto.set_width(2); + EXPECT_TRUE(this->blob_->ShapeEquals(blob_proto)); + + // Reshape to (2 x 3 x 2). + shape[0] = 2; + this->blob_->Reshape(shape); + + // (2 x 3 x 2) blob != (1 x 1 x 3 x 2) legacy blob + blob_proto.set_num(1); + blob_proto.set_channels(1); + blob_proto.set_height(3); + blob_proto.set_width(2); + EXPECT_FALSE(this->blob_->ShapeEquals(blob_proto)); +} + +template +class BlobMathTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + BlobMathTest() + : blob_(new Blob(2, 3, 4, 5)), + epsilon_(1e-6) {} + + virtual ~BlobMathTest() { delete blob_; } + Blob* const blob_; + Dtype epsilon_; +}; + +TYPED_TEST_CASE(BlobMathTest, TestDtypesAndDevices); + +TYPED_TEST(BlobMathTest, TestSumOfSquares) { + typedef typename TypeParam::Dtype Dtype; + + // Uninitialized Blob should have sum of squares == 0. + EXPECT_EQ(0, this->blob_->sumsq_data()); + EXPECT_EQ(0, this->blob_->sumsq_diff()); + FillerParameter filler_param; + filler_param.set_min(-3); + filler_param.set_max(3); + UniformFiller filler(filler_param); + filler.Fill(this->blob_); + Dtype expected_sumsq = 0; + const Dtype* data = this->blob_->cpu_data(); + for (int i = 0; i < this->blob_->count(); ++i) { + expected_sumsq += data[i] * data[i]; + } + // Do a mutable access on the current device, + // so that the sumsq computation is done on that device. + // (Otherwise, this would only check the CPU sumsq implementation.) + switch (TypeParam::device) { + case Caffe::CPU: + this->blob_->mutable_cpu_data(); + break; + case Caffe::GPU: + this->blob_->mutable_gpu_data(); + break; + default: + LOG(FATAL) << "Unknown device: " << TypeParam::device; + } + EXPECT_NEAR(expected_sumsq, this->blob_->sumsq_data(), + this->epsilon_ * expected_sumsq); + EXPECT_EQ(0, this->blob_->sumsq_diff()); + + // Check sumsq_diff too. + const Dtype kDiffScaleFactor = 7; + caffe_cpu_scale(this->blob_->count(), kDiffScaleFactor, data, + this->blob_->mutable_cpu_diff()); + switch (TypeParam::device) { + case Caffe::CPU: + this->blob_->mutable_cpu_diff(); + break; + case Caffe::GPU: + this->blob_->mutable_gpu_diff(); + break; + default: + LOG(FATAL) << "Unknown device: " << TypeParam::device; + } + EXPECT_NEAR(expected_sumsq, this->blob_->sumsq_data(), + this->epsilon_ * expected_sumsq); + const Dtype expected_sumsq_diff = + expected_sumsq * kDiffScaleFactor * kDiffScaleFactor; + EXPECT_NEAR(expected_sumsq_diff, this->blob_->sumsq_diff(), + this->epsilon_ * expected_sumsq_diff); +} + +TYPED_TEST(BlobMathTest, TestAsum) { + typedef typename TypeParam::Dtype Dtype; + + // Uninitialized Blob should have asum == 0. + EXPECT_EQ(0, this->blob_->asum_data()); + EXPECT_EQ(0, this->blob_->asum_diff()); + FillerParameter filler_param; + filler_param.set_min(-3); + filler_param.set_max(3); + UniformFiller filler(filler_param); + filler.Fill(this->blob_); + Dtype expected_asum = 0; + const Dtype* data = this->blob_->cpu_data(); + for (int i = 0; i < this->blob_->count(); ++i) { + expected_asum += std::fabs(data[i]); + } + // Do a mutable access on the current device, + // so that the asum computation is done on that device. + // (Otherwise, this would only check the CPU asum implementation.) + switch (TypeParam::device) { + case Caffe::CPU: + this->blob_->mutable_cpu_data(); + break; + case Caffe::GPU: + this->blob_->mutable_gpu_data(); + break; + default: + LOG(FATAL) << "Unknown device: " << TypeParam::device; + } + EXPECT_NEAR(expected_asum, this->blob_->asum_data(), + this->epsilon_ * expected_asum); + EXPECT_EQ(0, this->blob_->asum_diff()); + + // Check asum_diff too. + const Dtype kDiffScaleFactor = 7; + caffe_cpu_scale(this->blob_->count(), kDiffScaleFactor, data, + this->blob_->mutable_cpu_diff()); + switch (TypeParam::device) { + case Caffe::CPU: + this->blob_->mutable_cpu_diff(); + break; + case Caffe::GPU: + this->blob_->mutable_gpu_diff(); + break; + default: + LOG(FATAL) << "Unknown device: " << TypeParam::device; + } + EXPECT_NEAR(expected_asum, this->blob_->asum_data(), + this->epsilon_ * expected_asum); + const Dtype expected_diff_asum = expected_asum * kDiffScaleFactor; + EXPECT_NEAR(expected_diff_asum, this->blob_->asum_diff(), + this->epsilon_ * expected_diff_asum); +} + +TYPED_TEST(BlobMathTest, TestScaleData) { + typedef typename TypeParam::Dtype Dtype; + + EXPECT_EQ(0, this->blob_->asum_data()); + EXPECT_EQ(0, this->blob_->asum_diff()); + FillerParameter filler_param; + filler_param.set_min(-3); + filler_param.set_max(3); + UniformFiller filler(filler_param); + filler.Fill(this->blob_); + const Dtype asum_before_scale = this->blob_->asum_data(); + // Do a mutable access on the current device, + // so that the asum computation is done on that device. + // (Otherwise, this would only check the CPU asum implementation.) + switch (TypeParam::device) { + case Caffe::CPU: + this->blob_->mutable_cpu_data(); + break; + case Caffe::GPU: + this->blob_->mutable_gpu_data(); + break; + default: + LOG(FATAL) << "Unknown device: " << TypeParam::device; + } + const Dtype kDataScaleFactor = 3; + this->blob_->scale_data(kDataScaleFactor); + EXPECT_NEAR(asum_before_scale * kDataScaleFactor, this->blob_->asum_data(), + this->epsilon_ * asum_before_scale * kDataScaleFactor); + EXPECT_EQ(0, this->blob_->asum_diff()); + + // Check scale_diff too. + const Dtype kDataToDiffScaleFactor = 7; + const Dtype* data = this->blob_->cpu_data(); + caffe_cpu_scale(this->blob_->count(), kDataToDiffScaleFactor, data, + this->blob_->mutable_cpu_diff()); + const Dtype expected_asum_before_scale = asum_before_scale * kDataScaleFactor; + EXPECT_NEAR(expected_asum_before_scale, this->blob_->asum_data(), + this->epsilon_ * expected_asum_before_scale); + const Dtype expected_diff_asum_before_scale = + asum_before_scale * kDataScaleFactor * kDataToDiffScaleFactor; + EXPECT_NEAR(expected_diff_asum_before_scale, this->blob_->asum_diff(), + this->epsilon_ * expected_diff_asum_before_scale); + switch (TypeParam::device) { + case Caffe::CPU: + this->blob_->mutable_cpu_diff(); + break; + case Caffe::GPU: + this->blob_->mutable_gpu_diff(); + break; + default: + LOG(FATAL) << "Unknown device: " << TypeParam::device; + } + const Dtype kDiffScaleFactor = 3; + this->blob_->scale_diff(kDiffScaleFactor); + EXPECT_NEAR(asum_before_scale * kDataScaleFactor, this->blob_->asum_data(), + this->epsilon_ * asum_before_scale * kDataScaleFactor); + const Dtype expected_diff_asum = + expected_diff_asum_before_scale * kDiffScaleFactor; + EXPECT_NEAR(expected_diff_asum, this->blob_->asum_diff(), + this->epsilon_ * expected_diff_asum); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_caffe_main.cpp b/3rdparty/caffe/src/caffe/test/test_caffe_main.cpp new file mode 100644 index 00000000..8f333bd7 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_caffe_main.cpp @@ -0,0 +1,38 @@ +#include "caffe/caffe.hpp" +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { +#ifndef CPU_ONLY + cudaDeviceProp CAFFE_TEST_CUDA_PROP; +#endif +} + +#ifndef CPU_ONLY +using caffe::CAFFE_TEST_CUDA_PROP; +#endif + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + caffe::GlobalInit(&argc, &argv); +#ifndef CPU_ONLY + // Before starting testing, let's first print out a few cuda device info. + int device; + cudaGetDeviceCount(&device); + cout << "Cuda number of devices: " << device << endl; + if (argc > 1) { + // Use the given device + device = atoi(argv[1]); + cudaSetDevice(device); + cout << "Setting to use device " << device << endl; + } else if (CUDA_TEST_DEVICE >= 0) { + // Use the device assigned in build configuration; but with a lower priority + device = CUDA_TEST_DEVICE; + } + cudaGetDevice(&device); + cout << "Current device id: " << device << endl; + cudaGetDeviceProperties(&CAFFE_TEST_CUDA_PROP, device); + cout << "Current device name: " << CAFFE_TEST_CUDA_PROP.name << endl; +#endif + // invoke the test. + return RUN_ALL_TESTS(); +} diff --git a/3rdparty/caffe/src/caffe/test/test_common.cpp b/3rdparty/caffe/src/caffe/test/test_common.cpp new file mode 100644 index 00000000..58ae5c60 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_common.cpp @@ -0,0 +1,64 @@ +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/syncedmem.hpp" +#include "caffe/util/math_functions.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +class CommonTest : public ::testing::Test {}; + +#ifndef CPU_ONLY // GPU Caffe singleton test. + +TEST_F(CommonTest, TestCublasHandlerGPU) { + int cuda_device_id; + CUDA_CHECK(cudaGetDevice(&cuda_device_id)); + EXPECT_TRUE(Caffe::cublas_handle()); +} + +#endif + +TEST_F(CommonTest, TestBrewMode) { + Caffe::set_mode(Caffe::CPU); + EXPECT_EQ(Caffe::mode(), Caffe::CPU); + Caffe::set_mode(Caffe::GPU); + EXPECT_EQ(Caffe::mode(), Caffe::GPU); +} + +TEST_F(CommonTest, TestRandSeedCPU) { + SyncedMemory data_a(10 * sizeof(int)); + SyncedMemory data_b(10 * sizeof(int)); + Caffe::set_random_seed(1701); + caffe_rng_bernoulli(10, 0.5, static_cast(data_a.mutable_cpu_data())); + + Caffe::set_random_seed(1701); + caffe_rng_bernoulli(10, 0.5, static_cast(data_b.mutable_cpu_data())); + + for (int i = 0; i < 10; ++i) { + EXPECT_EQ(static_cast(data_a.cpu_data())[i], + static_cast(data_b.cpu_data())[i]); + } +} + +#ifndef CPU_ONLY // GPU Caffe singleton test. + +TEST_F(CommonTest, TestRandSeedGPU) { + SyncedMemory data_a(10 * sizeof(unsigned int)); + SyncedMemory data_b(10 * sizeof(unsigned int)); + Caffe::set_random_seed(1701); + CURAND_CHECK(curandGenerate(Caffe::curand_generator(), + static_cast(data_a.mutable_gpu_data()), 10)); + Caffe::set_random_seed(1701); + CURAND_CHECK(curandGenerate(Caffe::curand_generator(), + static_cast(data_b.mutable_gpu_data()), 10)); + for (int i = 0; i < 10; ++i) { + EXPECT_EQ(((const unsigned int*)(data_a.cpu_data()))[i], + ((const unsigned int*)(data_b.cpu_data()))[i]); + } +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_concat_layer.cpp b/3rdparty/caffe/src/caffe/test/test_concat_layer.cpp new file mode 100644 index 00000000..23c1e8c1 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_concat_layer.cpp @@ -0,0 +1,207 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/concat_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class ConcatLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ConcatLayerTest() + : blob_bottom_0_(new Blob(2, 3, 6, 5)), + blob_bottom_1_(new Blob(2, 5, 6, 5)), + blob_bottom_2_(new Blob(5, 3, 6, 5)), + blob_top_(new Blob()) {} + virtual void SetUp() { + // fill the values + shared_ptr > filler; + FillerParameter filler_param; + filler_param.set_value(1.); + filler.reset(new ConstantFiller(filler_param)); + filler->Fill(this->blob_bottom_0_); + filler_param.set_value(2.); + filler.reset(new ConstantFiller(filler_param)); + filler->Fill(this->blob_bottom_1_); + filler_param.set_value(3.); + filler.reset(new ConstantFiller(filler_param)); + filler->Fill(this->blob_bottom_2_); + blob_bottom_vec_0_.push_back(blob_bottom_0_); + blob_bottom_vec_0_.push_back(blob_bottom_1_); + blob_bottom_vec_1_.push_back(blob_bottom_0_); + blob_bottom_vec_1_.push_back(blob_bottom_2_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~ConcatLayerTest() { + delete blob_bottom_0_; delete blob_bottom_1_; + delete blob_bottom_2_; delete blob_top_; + } + + Blob* const blob_bottom_0_; + Blob* const blob_bottom_1_; + Blob* const blob_bottom_2_; + Blob* const blob_top_; + vector*> blob_bottom_vec_0_, blob_bottom_vec_1_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ConcatLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ConcatLayerTest, TestSetupNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_concat_param()->set_axis(0); + ConcatLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_1_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), + this->blob_bottom_0_->num() + this->blob_bottom_2_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_0_->channels()); + EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_0_->height()); + EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_0_->width()); +} + +TYPED_TEST(ConcatLayerTest, TestSetupChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConcatLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_0_->num()); + EXPECT_EQ(this->blob_top_->channels(), + this->blob_bottom_0_->channels() + this->blob_bottom_1_->channels()); + EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_0_->height()); + EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_0_->width()); +} + +TYPED_TEST(ConcatLayerTest, TestSetupChannelsNegativeIndexing) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConcatLayer layer(layer_param); + // "channels" index is the third one from the end -- test negative indexing + // by setting axis to -3 and checking that we get the same results as above in + // TestSetupChannels. + layer_param.mutable_concat_param()->set_axis(-3); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_0_->num()); + EXPECT_EQ(this->blob_top_->channels(), + this->blob_bottom_0_->channels() + this->blob_bottom_1_->channels()); + EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_0_->height()); + EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_0_->width()); +} + +TYPED_TEST(ConcatLayerTest, TestForwardTrivial) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConcatLayer layer(layer_param); + this->blob_bottom_vec_0_.resize(1); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + for (int i = 0; i < this->blob_bottom_0_->count(); ++i) { + EXPECT_EQ(this->blob_bottom_0_->cpu_data()[i], + this->blob_top_->cpu_data()[i]); + } +} + +TYPED_TEST(ConcatLayerTest, TestForwardNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_concat_param()->set_axis(0); + ConcatLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_1_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_1_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_vec_1_[0]->num(); ++n) { + for (int c = 0; c < this->blob_top_->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_vec_1_[0]->data_at(n, c, h, w)); + } + } + } + } + for (int n = 0; n < this->blob_bottom_vec_1_[1]->num(); ++n) { + for (int c = 0; c < this->blob_top_->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + EXPECT_EQ(this->blob_top_->data_at(n + 2, c, h, w), + this->blob_bottom_vec_1_[1]->data_at(n, c, h, w)); + } + } + } + } +} + +TYPED_TEST(ConcatLayerTest, TestForwardChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConcatLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + for (int n = 0; n < this->blob_top_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_vec_0_[0]->data_at(n, c, h, w)); + } + } + } + for (int c = 0; c < this->blob_bottom_1_->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + EXPECT_EQ(this->blob_top_->data_at(n, c + 3, h, w), + this->blob_bottom_vec_0_[1]->data_at(n, c, h, w)); + } + } + } + } +} + +TYPED_TEST(ConcatLayerTest, TestGradientTrivial) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConcatLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + this->blob_bottom_vec_0_.resize(1); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_0_, + this->blob_top_vec_); +} + +TYPED_TEST(ConcatLayerTest, TestGradientNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_concat_param()->set_axis(0); + ConcatLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradient(&layer, this->blob_bottom_vec_1_, + this->blob_top_vec_); +} + +TYPED_TEST(ConcatLayerTest, TestGradientChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConcatLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradient(&layer, this->blob_bottom_vec_0_, + this->blob_top_vec_); +} + +TYPED_TEST(ConcatLayerTest, TestGradientChannelsBottomOneOnly) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConcatLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradient(&layer, this->blob_bottom_vec_0_, + this->blob_top_vec_, 1); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_contrastive_loss_layer.cpp b/3rdparty/caffe/src/caffe/test/test_contrastive_loss_layer.cpp new file mode 100644 index 00000000..2fa055ee --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_contrastive_loss_layer.cpp @@ -0,0 +1,144 @@ +#include +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/contrastive_loss_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class ContrastiveLossLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ContrastiveLossLayerTest() + : blob_bottom_data_i_(new Blob(512, 2, 1, 1)), + blob_bottom_data_j_(new Blob(512, 2, 1, 1)), + blob_bottom_y_(new Blob(512, 1, 1, 1)), + blob_top_loss_(new Blob()) { + // fill the values + FillerParameter filler_param; + filler_param.set_min(-1.0); + filler_param.set_max(1.0); // distances~=1.0 to test both sides of margin + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_data_i_); + blob_bottom_vec_.push_back(blob_bottom_data_i_); + filler.Fill(this->blob_bottom_data_j_); + blob_bottom_vec_.push_back(blob_bottom_data_j_); + for (int i = 0; i < blob_bottom_y_->count(); ++i) { + blob_bottom_y_->mutable_cpu_data()[i] = caffe_rng_rand() % 2; // 0 or 1 + } + blob_bottom_vec_.push_back(blob_bottom_y_); + blob_top_vec_.push_back(blob_top_loss_); + } + virtual ~ContrastiveLossLayerTest() { + delete blob_bottom_data_i_; + delete blob_bottom_data_j_; + delete blob_bottom_y_; + delete blob_top_loss_; + } + + Blob* const blob_bottom_data_i_; + Blob* const blob_bottom_data_j_; + Blob* const blob_bottom_y_; + Blob* const blob_top_loss_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ContrastiveLossLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ContrastiveLossLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ContrastiveLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // manually compute to compare + const Dtype margin = layer_param.contrastive_loss_param().margin(); + const int num = this->blob_bottom_data_i_->num(); + const int channels = this->blob_bottom_data_i_->channels(); + Dtype loss(0); + for (int i = 0; i < num; ++i) { + Dtype dist_sq(0); + for (int j = 0; j < channels; ++j) { + Dtype diff = this->blob_bottom_data_i_->cpu_data()[i*channels+j] - + this->blob_bottom_data_j_->cpu_data()[i*channels+j]; + dist_sq += diff*diff; + } + if (this->blob_bottom_y_->cpu_data()[i]) { // similar pairs + loss += dist_sq; + } else { + Dtype dist = std::max(margin - sqrt(dist_sq), 0.0); + loss += dist*dist; + } + } + loss /= static_cast(num) * Dtype(2); + EXPECT_NEAR(this->blob_top_loss_->cpu_data()[0], loss, 1e-6); +} + +TYPED_TEST(ContrastiveLossLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ContrastiveLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 1e-2, 1701); + // check the gradient for the first two bottom layers + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 1); +} + +TYPED_TEST(ContrastiveLossLayerTest, TestForwardLegacy) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_contrastive_loss_param()->set_legacy_version(true); + ContrastiveLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // manually compute to compare + const Dtype margin = layer_param.contrastive_loss_param().margin(); + const int num = this->blob_bottom_data_i_->num(); + const int channels = this->blob_bottom_data_i_->channels(); + Dtype loss(0); + for (int i = 0; i < num; ++i) { + Dtype dist_sq(0); + for (int j = 0; j < channels; ++j) { + Dtype diff = this->blob_bottom_data_i_->cpu_data()[i*channels+j] - + this->blob_bottom_data_j_->cpu_data()[i*channels+j]; + dist_sq += diff*diff; + } + if (this->blob_bottom_y_->cpu_data()[i]) { // similar pairs + loss += dist_sq; + } else { + loss += std::max(margin - dist_sq, Dtype(0.0)); + } + } + loss /= static_cast(num) * Dtype(2); + EXPECT_NEAR(this->blob_top_loss_->cpu_data()[0], loss, 1e-6); +} + +TYPED_TEST(ContrastiveLossLayerTest, TestGradientLegacy) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_contrastive_loss_param()->set_legacy_version(true); + ContrastiveLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 1e-2, 1701); + // check the gradient for the first two bottom layers + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 1); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_convolution_layer.cpp b/3rdparty/caffe/src/caffe/test/test_convolution_layer.cpp new file mode 100644 index 00000000..85c10a29 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_convolution_layer.cpp @@ -0,0 +1,1086 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/conv_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_conv_layer.hpp" +#endif + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +// Reference convolution for checking results: +// accumulate through explicit loops over input, output, and filters. +template +void caffe_conv(const Blob* in, ConvolutionParameter* conv_param, + const vector > >& weights, + Blob* out) { + const bool has_depth = (out->num_axes() == 5); + if (!has_depth) { CHECK_EQ(4, out->num_axes()); } + // Kernel size, stride, and pad + int kernel_h, kernel_w; + if (conv_param->has_kernel_h() || conv_param->has_kernel_w()) { + kernel_h = conv_param->kernel_h(); + kernel_w = conv_param->kernel_w(); + } else { + kernel_h = kernel_w = conv_param->kernel_size(0); + } + int pad_h, pad_w; + if (conv_param->has_pad_h() || conv_param->has_pad_w()) { + pad_h = conv_param->pad_h(); + pad_w = conv_param->pad_w(); + } else { + pad_h = pad_w = conv_param->pad_size() ? conv_param->pad(0) : 0; + } + int stride_h, stride_w; + if (conv_param->has_stride_h() || conv_param->has_stride_w()) { + stride_h = conv_param->stride_h(); + stride_w = conv_param->stride_w(); + } else { + stride_h = stride_w = conv_param->stride_size() ? conv_param->stride(0) : 1; + } + int dilation_h, dilation_w; + dilation_h = dilation_w = conv_param->dilation_size() ? + conv_param->dilation(0) : 1; + int kernel_d, pad_d, stride_d, dilation_d; + if (has_depth) { + kernel_d = kernel_h; + stride_d = stride_h; + pad_d = pad_h; + dilation_d = dilation_h; + } else { + kernel_d = stride_d = dilation_d = 1; + pad_d = 0; + } + // Groups + int groups = conv_param->group(); + int o_g = out->shape(1) / groups; + int k_g = in->shape(1) / groups; + int o_head, k_head; + // Convolution + vector weight_offset(4 + has_depth); + vector in_offset(4 + has_depth); + vector out_offset(4 + has_depth); + Dtype* out_data = out->mutable_cpu_data(); + for (int n = 0; n < out->shape(0); n++) { + for (int g = 0; g < groups; g++) { + o_head = o_g * g; + k_head = k_g * g; + for (int o = 0; o < o_g; o++) { + for (int k = 0; k < k_g; k++) { + for (int z = 0; z < (has_depth ? out->shape(2) : 1); z++) { + for (int y = 0; y < out->shape(2 + has_depth); y++) { + for (int x = 0; x < out->shape(3 + has_depth); x++) { + for (int r = 0; r < kernel_d; r++) { + for (int p = 0; p < kernel_h; p++) { + for (int q = 0; q < kernel_w; q++) { + int in_z = z * stride_d - pad_d + r * dilation_d; + int in_y = y * stride_h - pad_h + p * dilation_h; + int in_x = x * stride_w - pad_w + q * dilation_w; + if (in_z >= 0 && in_z < (has_depth ? in->shape(2) : 1) + && in_y >= 0 && in_y < in->shape(2 + has_depth) + && in_x >= 0 && in_x < in->shape(3 + has_depth)) { + weight_offset[0] = o + o_head; + weight_offset[1] = k; + if (has_depth) { weight_offset[2] = r; } + weight_offset[2 + has_depth] = p; + weight_offset[3 + has_depth] = q; + in_offset[0] = n; + in_offset[1] = k + k_head; + if (has_depth) { in_offset[2] = in_z; } + in_offset[2 + has_depth] = in_y; + in_offset[3 + has_depth] = in_x; + out_offset[0] = n; + out_offset[1] = o + o_head; + if (has_depth) { out_offset[2] = z; } + out_offset[2 + has_depth] = y; + out_offset[3 + has_depth] = x; + out_data[out->offset(out_offset)] += + in->data_at(in_offset) + * weights[0]->data_at(weight_offset); + } + } + } + } + } + } + } + } + } + } + } + // Bias + if (conv_param->bias_term()) { + const Dtype* bias_data = weights[1]->cpu_data(); + for (int n = 0; n < out->shape(0); n++) { + for (int o = 0; o < out->shape(1); o++) { + for (int z = 0; z < (has_depth ? out->shape(2) : 1); z++) { + for (int y = 0; y < out->shape(2 + has_depth); y++) { + for (int x = 0; x < out->shape(3 + has_depth); x++) { + out_offset[0] = n; + out_offset[1] = o; + if (has_depth) { out_offset[2] = z; } + out_offset[2 + has_depth] = y; + out_offset[3 + has_depth] = x; + out_data[out->offset(out_offset)] += bias_data[o]; + } + } + } + } + } + } +} + +template void caffe_conv(const Blob* in, + ConvolutionParameter* conv_param, + const vector > >& weights, + Blob* out); +template void caffe_conv(const Blob* in, + ConvolutionParameter* conv_param, + const vector > >& weights, + Blob* out); + +template +class ConvolutionLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ConvolutionLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 4)), + blob_bottom_2_(new Blob(2, 3, 6, 4)), + blob_top_(new Blob()), + blob_top_2_(new Blob()) {} + virtual void SetUp() { + // fill the values + FillerParameter filler_param; + filler_param.set_value(1.); + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_2_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~ConvolutionLayerTest() { + delete blob_bottom_; + delete blob_bottom_2_; + delete blob_top_; + delete blob_top_2_; + } + + virtual Blob* MakeReferenceTop(Blob* top) { + this->ref_blob_top_.reset(new Blob()); + this->ref_blob_top_->ReshapeLike(*top); + return this->ref_blob_top_.get(); + } + + Blob* const blob_bottom_; + Blob* const blob_bottom_2_; + Blob* const blob_top_; + Blob* const blob_top_2_; + shared_ptr > ref_blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ConvolutionLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ConvolutionLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 4); + EXPECT_EQ(this->blob_top_->height(), 2); + EXPECT_EQ(this->blob_top_->width(), 1); + EXPECT_EQ(this->blob_top_2_->num(), 2); + EXPECT_EQ(this->blob_top_2_->channels(), 4); + EXPECT_EQ(this->blob_top_2_->height(), 2); + EXPECT_EQ(this->blob_top_2_->width(), 1); + // setting group should not change the shape + convolution_param->set_num_output(3); + convolution_param->set_group(3); + layer.reset(new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 2); + EXPECT_EQ(this->blob_top_->width(), 1); + EXPECT_EQ(this->blob_top_2_->num(), 2); + EXPECT_EQ(this->blob_top_2_->channels(), 3); + EXPECT_EQ(this->blob_top_2_->height(), 2); + EXPECT_EQ(this->blob_top_2_->width(), 1); +} + +TYPED_TEST(ConvolutionLayerTest, TestSimpleConvolution) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(ConvolutionLayerTest, TestDilatedConvolution) { + typedef typename TypeParam::Dtype Dtype; + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(8); + bottom_shape.push_back(7); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_dilation(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(ConvolutionLayerTest, Test0DConvolution) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + const int kNumOutput = 3; + convolution_param->set_num_output(kNumOutput); + convolution_param->set_axis(3); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + vector top_shape = this->blob_bottom_->shape(); + top_shape[3] = kNumOutput; + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(top_shape, this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + vector weight_offset(2); + const Blob* weight = layer->blobs()[0].get(); + const Blob* bias = layer->blobs()[1].get(); + const int num = this->blob_top_->count(3); + const int dim = this->blob_top_->shape(3); + const int bottom_dim = this->blob_bottom_->shape(3); + for (int n = 0; n < num; ++n) { + for (int d = 0; d < dim; ++d) { + weight_offset[0] = d; + Dtype value = bias->cpu_data()[d]; + for (int bottom_d = 0; bottom_d < bottom_dim; ++bottom_d) { + weight_offset[1] = bottom_d; + value += weight->data_at(weight_offset) * + this->blob_bottom_->cpu_data()[n * bottom_dim + bottom_d]; + } + EXPECT_NEAR(value, this->blob_top_->cpu_data()[n * dim + d], 1e-4); + } + } +} + +TYPED_TEST(ConvolutionLayerTest, TestSimple3DConvolution) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 5; + bottom_shape[3] = this->blob_bottom_vec_[0]->shape(2); + bottom_shape[4] = this->blob_bottom_vec_[0]->shape(3); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(ConvolutionLayerTest, TestDilated3DConvolution) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 6; + bottom_shape[3] = 7; + bottom_shape[4] = 8; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_dilation(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(ConvolutionLayerTest, Test1x1Convolution) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(1); + convolution_param->add_stride(1); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(ConvolutionLayerTest, TestSimpleConvolutionGroup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(3); + convolution_param->set_group(3); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(ConvolutionLayerTest, TestSobelConvolution) { + // Test separable convolution by computing the Sobel operator + // as a single filter then comparing the result + // as the convolution of two rectangular filters. + typedef typename TypeParam::Dtype Dtype; + // Fill bottoms with identical Gaussian noise. + shared_ptr > filler; + FillerParameter filler_param; + filler_param.set_value(1.); + filler.reset(new GaussianFiller(filler_param)); + filler->Fill(this->blob_bottom_); + this->blob_bottom_2_->CopyFrom(*this->blob_bottom_); + // Compute Sobel G_x operator as 3 x 3 convolution. + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(1); + convolution_param->set_bias_term(false); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->blobs().resize(1); + layer->blobs()[0].reset(new Blob(1, 3, 3, 3)); + Dtype* weights = layer->blobs()[0]->mutable_cpu_data(); + for (int c = 0; c < 3; ++c) { + int i = c * 9; // 3 x 3 filter + weights[i + 0] = -1; + weights[i + 1] = 0; + weights[i + 2] = 1; + weights[i + 3] = -2; + weights[i + 4] = 0; + weights[i + 5] = 2; + weights[i + 6] = -1; + weights[i + 7] = 0; + weights[i + 8] = 1; + } + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Compute Sobel G_x operator as separable 3 x 1 and 1 x 3 convolutions. + // (1) the [1 2 1] column filter + vector*> sep_blob_bottom_vec; + vector*> sep_blob_top_vec; + shared_ptr > blob_sep(new Blob()); + sep_blob_bottom_vec.push_back(this->blob_bottom_2_); + sep_blob_top_vec.push_back(this->blob_top_2_); + convolution_param->clear_kernel_size(); + convolution_param->clear_stride(); + convolution_param->set_kernel_h(3); + convolution_param->set_kernel_w(1); + convolution_param->set_stride_h(2); + convolution_param->set_stride_w(1); + convolution_param->set_num_output(1); + convolution_param->set_bias_term(false); + layer.reset(new ConvolutionLayer(layer_param)); + layer->blobs().resize(1); + layer->blobs()[0].reset(new Blob(1, 3, 3, 1)); + Dtype* weights_1 = layer->blobs()[0]->mutable_cpu_data(); + for (int c = 0; c < 3; ++c) { + int i = c * 3; // 3 x 1 filter + weights_1[i + 0] = 1; + weights_1[i + 1] = 2; + weights_1[i + 2] = 1; + } + layer->SetUp(sep_blob_bottom_vec, sep_blob_top_vec); + layer->Forward(sep_blob_bottom_vec, sep_blob_top_vec); + // (2) the [-1 0 1] row filter + blob_sep->CopyFrom(*this->blob_top_2_, false, true); + sep_blob_bottom_vec.clear(); + sep_blob_bottom_vec.push_back(blob_sep.get()); + convolution_param->set_kernel_h(1); + convolution_param->set_kernel_w(3); + convolution_param->set_stride_h(1); + convolution_param->set_stride_w(2); + convolution_param->set_num_output(1); + convolution_param->set_bias_term(false); + layer.reset(new ConvolutionLayer(layer_param)); + layer->blobs().resize(1); + layer->blobs()[0].reset(new Blob(1, 1, 1, 3)); + Dtype* weights_2 = layer->blobs()[0]->mutable_cpu_data(); + weights_2[0] = -1; + weights_2[1] = 0; + weights_2[2] = 1; + layer->SetUp(sep_blob_bottom_vec, sep_blob_top_vec); + layer->Forward(sep_blob_bottom_vec, sep_blob_top_vec); + // Test equivalence of full and separable filters. + const Dtype* top_data = this->blob_top_->cpu_data(); + const Dtype* sep_top_data = this->blob_top_2_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], sep_top_data[i], 1e-4); + } +} + +TYPED_TEST(ConvolutionLayerTest, TestNDAgainst2D) { + typedef typename TypeParam::Dtype Dtype; + const int kernel_h = 11; + const int kernel_w = 13; + vector bottom_shape(4); + bottom_shape[0] = 15; + bottom_shape[1] = 18; + bottom_shape[2] = kernel_h * 2; + bottom_shape[3] = kernel_w * 2; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_num_output(12); + convolution_param->set_bias_term(false); + convolution_param->set_group(6); + convolution_param->set_kernel_h(kernel_h); + convolution_param->set_kernel_w(kernel_w); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + Blob weights; + Blob top_diff; + // Shape and fill weights and top_diff. + bool copy_diff; + bool reshape; + { + ConvolutionLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + top_diff.ReshapeLike(*this->blob_top_); + filler.Fill(&top_diff); + ASSERT_EQ(1, layer.blobs().size()); + copy_diff = false; reshape = true; + weights.CopyFrom(*layer.blobs()[0], copy_diff, reshape); + } + vector propagate_down(1, true); + Blob result_2d; + Blob backward_result_2d; + Blob backward_weight_result_2d; + // Test with 2D im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_2d. + convolution_param->set_force_nd_im2col(false); + ConvolutionLayer layer_2d(layer_param); + layer_2d.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_2d.blobs().size()); + copy_diff = false; reshape = false; + layer_2d.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_2d.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_2d.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_2d. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_2d.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_2d.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_2d.CopyFrom(weights, copy_diff, reshape); + } + Blob result_nd; + Blob backward_result_nd; + Blob backward_weight_result_nd; + // Test with ND im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_nd. + convolution_param->set_force_nd_im2col(true); + ConvolutionLayer layer_nd(layer_param); + layer_nd.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_nd.blobs().size()); + copy_diff = false; reshape = false; + layer_nd.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_nd.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_nd.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_nd. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_nd.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_nd.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_nd.CopyFrom(weights, copy_diff, reshape); + } + ASSERT_EQ(result_nd.count(), result_2d.count()); + for (int i = 0; i < result_2d.count(); ++i) { + EXPECT_EQ(result_2d.cpu_data()[i], result_nd.cpu_data()[i]); + } + ASSERT_EQ(backward_result_nd.count(), backward_result_2d.count()); + for (int i = 0; i < backward_result_2d.count(); ++i) { + EXPECT_FLOAT_EQ(backward_result_2d.cpu_diff()[i], + backward_result_nd.cpu_diff()[i]); + } + ASSERT_EQ(backward_weight_result_nd.count(), + backward_weight_result_2d.count()); + for (int i = 0; i < backward_weight_result_2d.count(); ++i) { + EXPECT_EQ(backward_weight_result_2d.cpu_diff()[i], + backward_weight_result_nd.cpu_diff()[i]); + } +} + +TYPED_TEST(ConvolutionLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + ConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ConvolutionLayerTest, TestDilatedGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(5); + bottom_shape.push_back(6); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + } + convolution_param->add_kernel_size(3); + convolution_param->add_dilation(2); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + ConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ConvolutionLayerTest, TestGradient3D) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 5; + bottom_shape[3] = this->blob_bottom_vec_[0]->shape(2); + bottom_shape[4] = this->blob_bottom_vec_[0]->shape(3); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + ConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ConvolutionLayerTest, Test1x1Gradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + convolution_param->add_kernel_size(1); + convolution_param->add_stride(1); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + ConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ConvolutionLayerTest, TestGradientGroup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(3); + convolution_param->set_group(3); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + ConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#ifdef USE_CUDNN + +template +class CuDNNConvolutionLayerTest : public GPUDeviceTest { + protected: + CuDNNConvolutionLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 4)), + blob_bottom_2_(new Blob(2, 3, 6, 4)), + blob_top_(new Blob()), + blob_top_2_(new Blob()) {} + virtual void SetUp() { + // fill the values + FillerParameter filler_param; + filler_param.set_value(1.); + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_2_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~CuDNNConvolutionLayerTest() { + delete blob_bottom_; + delete blob_bottom_2_; + delete blob_top_; + delete blob_top_2_; + } + + virtual Blob* MakeReferenceTop(Blob* top) { + this->ref_blob_top_.reset(new Blob()); + this->ref_blob_top_->ReshapeLike(*top); + return this->ref_blob_top_.get(); + } + + Blob* const blob_bottom_; + Blob* const blob_bottom_2_; + Blob* const blob_top_; + Blob* const blob_top_2_; + shared_ptr > ref_blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(CuDNNConvolutionLayerTest, TestDtypes); + +TYPED_TEST(CuDNNConvolutionLayerTest, TestSetupCuDNN) { + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + shared_ptr > layer( + new CuDNNConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 4); + EXPECT_EQ(this->blob_top_->height(), 2); + EXPECT_EQ(this->blob_top_->width(), 1); + EXPECT_EQ(this->blob_top_2_->num(), 2); + EXPECT_EQ(this->blob_top_2_->channels(), 4); + EXPECT_EQ(this->blob_top_2_->height(), 2); + EXPECT_EQ(this->blob_top_2_->width(), 1); + // setting group should not change the shape + convolution_param->set_num_output(3); + convolution_param->set_group(3); + layer.reset(new CuDNNConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 2); + EXPECT_EQ(this->blob_top_->width(), 1); + EXPECT_EQ(this->blob_top_2_->num(), 2); + EXPECT_EQ(this->blob_top_2_->channels(), 3); + EXPECT_EQ(this->blob_top_2_->height(), 2); + EXPECT_EQ(this->blob_top_2_->width(), 1); +} + +TYPED_TEST(CuDNNConvolutionLayerTest, TestSimpleConvolutionCuDNN) { + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new CuDNNConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const TypeParam* top_data; + const TypeParam* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(CuDNNConvolutionLayerTest, TestSimpleConvolutionGroupCuDNN) { + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(3); + convolution_param->set_group(3); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new CuDNNConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const TypeParam* top_data; + const TypeParam* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + +TYPED_TEST(CuDNNConvolutionLayerTest, TestSobelConvolutionCuDNN) { + // Test separable convolution by computing the Sobel operator + // as a single filter then comparing the result + // as the convolution of two rectangular filters. + + // Fill bottoms with identical Gaussian noise. + shared_ptr > filler; + FillerParameter filler_param; + filler_param.set_value(1.); + filler.reset(new GaussianFiller(filler_param)); + filler->Fill(this->blob_bottom_); + this->blob_bottom_2_->CopyFrom(*this->blob_bottom_); + // Compute Sobel G_x operator as 3 x 3 convolution. + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(1); + convolution_param->set_bias_term(false); + shared_ptr > layer( + new CuDNNConvolutionLayer(layer_param)); + layer->blobs().resize(1); + layer->blobs()[0].reset(new Blob(1, 3, 3, 3)); + TypeParam* weights = layer->blobs()[0]->mutable_cpu_data(); + for (int c = 0; c < 3; ++c) { + int i = c * 9; // 3 x 3 filter + weights[i + 0] = -1; + weights[i + 1] = 0; + weights[i + 2] = 1; + weights[i + 3] = -2; + weights[i + 4] = 0; + weights[i + 5] = 2; + weights[i + 6] = -1; + weights[i + 7] = 0; + weights[i + 8] = 1; + } + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Compute Sobel G_x operator as separable 3 x 1 and 1 x 3 convolutions. + // (1) the [1 2 1] column filter + vector*> sep_blob_bottom_vec; + vector*> sep_blob_top_vec; + shared_ptr > blob_sep(new Blob()); + sep_blob_bottom_vec.push_back(this->blob_bottom_2_); + sep_blob_top_vec.push_back(this->blob_top_2_); + convolution_param->clear_kernel_size(); + convolution_param->clear_stride(); + convolution_param->set_kernel_h(3); + convolution_param->set_kernel_w(1); + convolution_param->set_stride_h(2); + convolution_param->set_stride_w(1); + convolution_param->set_num_output(1); + convolution_param->set_bias_term(false); + layer.reset(new CuDNNConvolutionLayer(layer_param)); + layer->blobs().resize(1); + layer->blobs()[0].reset(new Blob(1, 3, 3, 1)); + TypeParam* weights_1 = layer->blobs()[0]->mutable_cpu_data(); + for (int c = 0; c < 3; ++c) { + int i = c * 3; // 3 x 1 filter + weights_1[i + 0] = 1; + weights_1[i + 1] = 2; + weights_1[i + 2] = 1; + } + layer->SetUp(sep_blob_bottom_vec, sep_blob_top_vec); + layer->Forward(sep_blob_bottom_vec, sep_blob_top_vec); + // (2) the [-1 0 1] row filter + blob_sep->CopyFrom(*this->blob_top_2_, false, true); + sep_blob_bottom_vec.clear(); + sep_blob_bottom_vec.push_back(blob_sep.get()); + convolution_param->set_kernel_h(1); + convolution_param->set_kernel_w(3); + convolution_param->set_stride_h(1); + convolution_param->set_stride_w(2); + convolution_param->set_num_output(1); + convolution_param->set_bias_term(false); + layer.reset(new CuDNNConvolutionLayer(layer_param)); + layer->blobs().resize(1); + layer->blobs()[0].reset(new Blob(1, 1, 1, 3)); + TypeParam* weights_2 = layer->blobs()[0]->mutable_cpu_data(); + weights_2[0] = -1; + weights_2[1] = 0; + weights_2[2] = 1; + layer->SetUp(sep_blob_bottom_vec, sep_blob_top_vec); + layer->Forward(sep_blob_bottom_vec, sep_blob_top_vec); + // Test equivalence of full and separable filters. + const TypeParam* top_data = this->blob_top_->cpu_data(); + const TypeParam* sep_top_data = this->blob_top_2_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], sep_top_data[i], 1e-4); + } +} + +TYPED_TEST(CuDNNConvolutionLayerTest, TestGradientCuDNN) { + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + CuDNNConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNConvolutionLayerTest, TestGradientGroupCuDNN) { + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(3); + convolution_param->set_group(3); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + CuDNNConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_crop_layer.cpp b/3rdparty/caffe/src/caffe/test/test_crop_layer.cpp new file mode 100644 index 00000000..ce2c736f --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_crop_layer.cpp @@ -0,0 +1,283 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/crop_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class CropLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + CropLayerTest() + : blob_bottom_0_(new Blob(2, 4, 5, 4)), + blob_bottom_1_(new Blob(2, 3, 4, 2)), + blob_top_(new Blob()) {} + virtual void SetUp() { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_0_); + filler.Fill(this->blob_bottom_1_); + + blob_bottom_vec_.push_back(blob_bottom_0_); + blob_bottom_vec_.push_back(blob_bottom_1_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~CropLayerTest() { + delete blob_bottom_0_; delete blob_bottom_1_; + delete blob_top_; + } + + Blob* const blob_bottom_0_; + Blob* const blob_bottom_1_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + + +TYPED_TEST_CASE(CropLayerTest, TestDtypesAndDevices); + +TYPED_TEST(CropLayerTest, TestSetupShapeAll) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Crop all dimensions + layer_param.mutable_crop_param()->set_axis(0); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } +} + +TYPED_TEST(CropLayerTest, TestSetupShapeDefault) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Crop last two dimensions, axis is 2 by default + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + if (i < 2) { + EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); + } else { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } + } +} + +TYPED_TEST(CropLayerTest, TestSetupShapeNegativeIndexing) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Crop last dimension by negative indexing + layer_param.mutable_crop_param()->set_axis(-1); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + if (i < 3) { + EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); + } else { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } + } +} + +TYPED_TEST(CropLayerTest, TestDimensionsCheck) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Reshape size blob to have incompatible sizes for uncropped dimensions: + // the size blob has more channels than the data blob, but this is fine + // since the channels dimension is not cropped in this configuration. + this->blob_bottom_1_->Reshape(2, 5, 4, 2); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + if (i < 2) { + EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); + } else { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } + } +} + +TYPED_TEST(CropLayerTest, TestCropAll) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(0); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { + if ( n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + h < this->blob_top_->shape(2) && + w < this->blob_top_->shape(3) ) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_0_->data_at(n, c, h, w)); + } + } + } + } + } +} + +TYPED_TEST(CropLayerTest, TestCropAllOffset) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(0); + layer_param.mutable_crop_param()->add_offset(0); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { + if ( n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + h < this->blob_top_->shape(2) && + w < this->blob_top_->shape(3) ) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_0_->data_at(n, c+1, h+1, w+2)); + } + } + } + } + } +} + +TYPED_TEST(CropLayerTest, TestCropHW) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(2); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { + if (n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + h < this->blob_top_->shape(2) && + w < this->blob_top_->shape(3)) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_0_->data_at(n, c, h+1, w+2)); + } + } + } + } + } +} + +TYPED_TEST(CropLayerTest, TestCrop5D) { + typedef typename TypeParam::Dtype Dtype; + // Add dimension to each bottom for >4D check + vector bottom_0_shape = this->blob_bottom_0_->shape(); + vector bottom_1_shape = this->blob_bottom_1_->shape(); + bottom_0_shape.push_back(2); + bottom_1_shape.push_back(1); + this->blob_bottom_0_->Reshape(bottom_0_shape); + this->blob_bottom_1_->Reshape(bottom_1_shape); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_0_); + filler.Fill(this->blob_bottom_1_); + // Make layer + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(2); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + layer_param.mutable_crop_param()->add_offset(0); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + vector bottom_idx = vector(5, 0); + vector top_idx = vector(5, 0); + for (int n = 0; n < this->blob_bottom_0_->shape(0); ++n) { + for (int c = 0; c < this->blob_bottom_0_->shape(1); ++c) { + for (int z = 0; z < this->blob_bottom_0_->shape(2); ++z) { + for (int h = 0; h < this->blob_bottom_0_->shape(3); ++h) { + for (int w = 0; w < this->blob_bottom_0_->shape(4); ++w) { + if (n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + z < this->blob_top_->shape(2) && + h < this->blob_top_->shape(3) && + w < this->blob_top_->shape(4)) { + bottom_idx[0] = top_idx[0] = n; + bottom_idx[1] = top_idx[1] = c; + bottom_idx[2] = z; + bottom_idx[3] = h; + bottom_idx[4] = top_idx[4] = w; + top_idx[2] = z+1; + top_idx[3] = h+2; + EXPECT_EQ(this->blob_top_->data_at(bottom_idx), + this->blob_bottom_0_->data_at(top_idx)); + } + } + } + } + } + } +} + +TYPED_TEST(CropLayerTest, TestCropAllGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(0); + CropLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CropLayerTest, TestCropHWGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(2); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + CropLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CropLayerTest, TestCrop5DGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(2); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + layer_param.mutable_crop_param()->add_offset(0); + CropLayer layer(layer_param); + // Add dimension to each bottom for >4D check + vector bottom_0_shape = this->blob_bottom_0_->shape(); + vector bottom_1_shape = this->blob_bottom_1_->shape(); + bottom_0_shape.push_back(2); + bottom_1_shape.push_back(1); + this->blob_bottom_0_->Reshape(bottom_0_shape); + this->blob_bottom_1_->Reshape(bottom_1_shape); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_data/generate_sample_data.py b/3rdparty/caffe/src/caffe/test/test_data/generate_sample_data.py new file mode 100644 index 00000000..26450735 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_data/generate_sample_data.py @@ -0,0 +1,81 @@ +""" +Generate data used in the HDF5DataLayer and GradientBasedSolver tests. +""" +import os +import numpy as np +import h5py + +script_dir = os.path.dirname(os.path.abspath(__file__)) + +# Generate HDF5DataLayer sample_data.h5 + +num_cols = 8 +num_rows = 10 +height = 6 +width = 5 +total_size = num_cols * num_rows * height * width + +data = np.arange(total_size) +data = data.reshape(num_rows, num_cols, height, width) +data = data.astype('float32') + +# We had a bug where data was copied into label, but the tests weren't +# catching it, so let's make label 1-indexed. +label = 1 + np.arange(num_rows)[:, np.newaxis] +label = label.astype('float32') + +# We add an extra label2 dataset to test HDF5 layer's ability +# to handle arbitrary number of output ("top") Blobs. +label2 = label + 1 + +print data +print label + +with h5py.File(script_dir + '/sample_data.h5', 'w') as f: + f['data'] = data + f['label'] = label + f['label2'] = label2 + +with h5py.File(script_dir + '/sample_data_2_gzip.h5', 'w') as f: + f.create_dataset( + 'data', data=data + total_size, + compression='gzip', compression_opts=1 + ) + f.create_dataset( + 'label', data=label, + compression='gzip', compression_opts=1, + dtype='uint8', + ) + f.create_dataset( + 'label2', data=label2, + compression='gzip', compression_opts=1, + dtype='uint8', + ) + +with open(script_dir + '/sample_data_list.txt', 'w') as f: + f.write('src/caffe/test/test_data/sample_data.h5\n') + f.write('src/caffe/test/test_data/sample_data_2_gzip.h5\n') + +# Generate GradientBasedSolver solver_data.h5 + +num_cols = 3 +num_rows = 8 +height = 10 +width = 10 + +data = np.random.randn(num_rows, num_cols, height, width) +data = data.reshape(num_rows, num_cols, height, width) +data = data.astype('float32') + +targets = np.random.randn(num_rows, 1) +targets = targets.astype('float32') + +print data +print targets + +with h5py.File(script_dir + '/solver_data.h5', 'w') as f: + f['data'] = data + f['targets'] = targets + +with open(script_dir + '/solver_data_list.txt', 'w') as f: + f.write('src/caffe/test/test_data/solver_data.h5\n') diff --git a/3rdparty/caffe/src/caffe/test/test_data/sample_data.h5 b/3rdparty/caffe/src/caffe/test/test_data/sample_data.h5 new file mode 100644 index 0000000000000000000000000000000000000000..236e66b0d122523107aac97430a3dfb5bf30ec7c GIT binary patch literal 11824 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 j6MZE0)SshC$T=D_S>!rL|L=0E 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 literal 0 HcmV?d00001 diff --git a/3rdparty/caffe/src/caffe/test/test_data/solver_data_list.txt b/3rdparty/caffe/src/caffe/test/test_data/solver_data_list.txt new file mode 100644 index 00000000..a6552f50 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_data/solver_data_list.txt @@ -0,0 +1 @@ +src/caffe/test/test_data/solver_data.h5 diff --git a/3rdparty/caffe/src/caffe/test/test_data_layer.cpp b/3rdparty/caffe/src/caffe/test/test_data_layer.cpp new file mode 100644 index 00000000..3835af1f --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_data_layer.cpp @@ -0,0 +1,469 @@ +#ifdef USE_OPENCV +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +using boost::scoped_ptr; + +template +class DataLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + DataLayerTest() + : backend_(DataParameter_DB_LEVELDB), + blob_top_data_(new Blob()), + blob_top_label_(new Blob()), + seed_(1701) {} + virtual void SetUp() { + filename_.reset(new string()); + MakeTempDir(filename_.get()); + *filename_ += "/db"; + blob_top_vec_.push_back(blob_top_data_); + blob_top_vec_.push_back(blob_top_label_); + } + + // Fill the DB with data: if unique_pixels, each pixel is unique but + // all images are the same; else each image is unique but all pixels within + // an image are the same. + void Fill(const bool unique_pixels, DataParameter_DB backend) { + backend_ = backend; + LOG(INFO) << "Using temporary dataset " << *filename_; + scoped_ptr db(db::GetDB(backend)); + db->Open(*filename_, db::NEW); + scoped_ptr txn(db->NewTransaction()); + for (int i = 0; i < 5; ++i) { + Datum datum; + datum.set_label(i); + datum.set_channels(2); + datum.set_height(3); + datum.set_width(4); + std::string* data = datum.mutable_data(); + for (int j = 0; j < 24; ++j) { + int datum = unique_pixels ? j : i; + data->push_back(static_cast(datum)); + } + stringstream ss; + ss << i; + string out; + CHECK(datum.SerializeToString(&out)); + txn->Put(ss.str(), out); + } + txn->Commit(); + db->Close(); + } + + void TestRead() { + const Dtype scale = 3; + LayerParameter param; + param.set_phase(TRAIN); + DataParameter* data_param = param.mutable_data_param(); + data_param->set_batch_size(5); + data_param->set_source(filename_->c_str()); + data_param->set_backend(backend_); + + TransformationParameter* transform_param = + param.mutable_transform_param(); + transform_param->set_scale(scale); + + DataLayer layer(param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_data_->num(), 5); + EXPECT_EQ(blob_top_data_->channels(), 2); + EXPECT_EQ(blob_top_data_->height(), 3); + EXPECT_EQ(blob_top_data_->width(), 4); + EXPECT_EQ(blob_top_label_->num(), 5); + EXPECT_EQ(blob_top_label_->channels(), 1); + EXPECT_EQ(blob_top_label_->height(), 1); + EXPECT_EQ(blob_top_label_->width(), 1); + + for (int iter = 0; iter < 100; ++iter) { + layer.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, blob_top_label_->cpu_data()[i]); + } + for (int i = 0; i < 5; ++i) { + for (int j = 0; j < 24; ++j) { + EXPECT_EQ(scale * i, blob_top_data_->cpu_data()[i * 24 + j]) + << "debug: iter " << iter << " i " << i << " j " << j; + } + } + } + } + + void TestSkip() { + LayerParameter param; + param.set_phase(TRAIN); + DataParameter* data_param = param.mutable_data_param(); + int batch_size = 5; + data_param->set_batch_size(batch_size); + data_param->set_source(filename_->c_str()); + data_param->set_backend(backend_); + Caffe::set_solver_count(8); + for (int dev = 0; dev < Caffe::solver_count(); ++dev) { + Caffe::set_solver_rank(dev); + DataLayer layer(param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + int label = dev; + for (int iter = 0; iter < 10; ++iter) { + layer.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < batch_size; ++i) { + EXPECT_EQ(label % batch_size, blob_top_label_->cpu_data()[i]); + label += Caffe::solver_count(); + } + } + } + Caffe::set_solver_count(1); + Caffe::set_solver_rank(0); + } + + void TestReshape(DataParameter_DB backend) { + const int num_inputs = 5; + // Save data of varying shapes. + LOG(INFO) << "Using temporary dataset " << *filename_; + scoped_ptr db(db::GetDB(backend)); + db->Open(*filename_, db::NEW); + scoped_ptr txn(db->NewTransaction()); + for (int i = 0; i < num_inputs; ++i) { + Datum datum; + datum.set_label(i); + datum.set_channels(2); + datum.set_height(i % 2 + 1); + datum.set_width(i % 4 + 1); + std::string* data = datum.mutable_data(); + const int data_size = datum.channels() * datum.height() * datum.width(); + for (int j = 0; j < data_size; ++j) { + data->push_back(static_cast(j)); + } + stringstream ss; + ss << i; + string out; + CHECK(datum.SerializeToString(&out)); + txn->Put(ss.str(), out); + } + txn->Commit(); + db->Close(); + + // Load and check data of various shapes. + LayerParameter param; + param.set_phase(TEST); + DataParameter* data_param = param.mutable_data_param(); + data_param->set_batch_size(1); + data_param->set_source(filename_->c_str()); + data_param->set_backend(backend); + + DataLayer layer(param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_data_->num(), 1); + EXPECT_EQ(blob_top_data_->channels(), 2); + EXPECT_EQ(blob_top_label_->num(), 1); + EXPECT_EQ(blob_top_label_->channels(), 1); + EXPECT_EQ(blob_top_label_->height(), 1); + EXPECT_EQ(blob_top_label_->width(), 1); + + for (int iter = 0; iter < num_inputs; ++iter) { + layer.Forward(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_data_->height(), iter % 2 + 1); + EXPECT_EQ(blob_top_data_->width(), iter % 4 + 1); + EXPECT_EQ(iter, blob_top_label_->cpu_data()[0]); + const int channels = blob_top_data_->channels(); + const int height = blob_top_data_->height(); + const int width = blob_top_data_->width(); + for (int c = 0; c < channels; ++c) { + for (int h = 0; h < height; ++h) { + for (int w = 0; w < width; ++w) { + const int idx = (c * height + h) * width + w; + EXPECT_EQ(idx, static_cast(blob_top_data_->cpu_data()[idx])) + << "debug: iter " << iter << " c " << c + << " h " << h << " w " << w; + } + } + } + } + } + + void TestReadCrop(Phase phase) { + const Dtype scale = 3; + LayerParameter param; + param.set_phase(phase); + Caffe::set_random_seed(1701); + + DataParameter* data_param = param.mutable_data_param(); + data_param->set_batch_size(5); + data_param->set_source(filename_->c_str()); + data_param->set_backend(backend_); + + TransformationParameter* transform_param = + param.mutable_transform_param(); + transform_param->set_scale(scale); + transform_param->set_crop_size(1); + + DataLayer layer(param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_data_->num(), 5); + EXPECT_EQ(blob_top_data_->channels(), 2); + EXPECT_EQ(blob_top_data_->height(), 1); + EXPECT_EQ(blob_top_data_->width(), 1); + EXPECT_EQ(blob_top_label_->num(), 5); + EXPECT_EQ(blob_top_label_->channels(), 1); + EXPECT_EQ(blob_top_label_->height(), 1); + EXPECT_EQ(blob_top_label_->width(), 1); + + for (int iter = 0; iter < 2; ++iter) { + layer.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, blob_top_label_->cpu_data()[i]); + } + int num_with_center_value = 0; + for (int i = 0; i < 5; ++i) { + for (int j = 0; j < 2; ++j) { + const Dtype center_value = scale * (j ? 17 : 5); + num_with_center_value += + (center_value == blob_top_data_->cpu_data()[i * 2 + j]); + // At TEST time, check that we always get center value. + if (phase == caffe::TEST) { + EXPECT_EQ(center_value, this->blob_top_data_->cpu_data()[i * 2 + j]) + << "debug: iter " << iter << " i " << i << " j " << j; + } + } + } + // At TRAIN time, check that we did not get the center crop all 10 times. + // (This check fails with probability 1-1/12^10 in a correct + // implementation, so we call set_random_seed.) + if (phase == caffe::TRAIN) { + EXPECT_LT(num_with_center_value, 10); + } + } + } + + void TestReadCropTrainSequenceSeeded() { + LayerParameter param; + param.set_phase(TRAIN); + DataParameter* data_param = param.mutable_data_param(); + data_param->set_batch_size(5); + data_param->set_source(filename_->c_str()); + data_param->set_backend(backend_); + + TransformationParameter* transform_param = + param.mutable_transform_param(); + transform_param->set_crop_size(1); + transform_param->set_mirror(true); + + // Get crop sequence with Caffe seed 1701. + Caffe::set_random_seed(seed_); + vector > crop_sequence; + { + DataLayer layer1(param); + layer1.SetUp(blob_bottom_vec_, blob_top_vec_); + for (int iter = 0; iter < 2; ++iter) { + layer1.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, blob_top_label_->cpu_data()[i]); + } + vector iter_crop_sequence; + for (int i = 0; i < 5; ++i) { + for (int j = 0; j < 2; ++j) { + iter_crop_sequence.push_back( + blob_top_data_->cpu_data()[i * 2 + j]); + } + } + crop_sequence.push_back(iter_crop_sequence); + } + } // destroy 1st data layer and unlock the db + + // Get crop sequence after reseeding Caffe with 1701. + // Check that the sequence is the same as the original. + Caffe::set_random_seed(seed_); + DataLayer layer2(param); + layer2.SetUp(blob_bottom_vec_, blob_top_vec_); + for (int iter = 0; iter < 2; ++iter) { + layer2.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, blob_top_label_->cpu_data()[i]); + } + for (int i = 0; i < 5; ++i) { + for (int j = 0; j < 2; ++j) { + EXPECT_EQ(crop_sequence[iter][i * 2 + j], + blob_top_data_->cpu_data()[i * 2 + j]) + << "debug: iter " << iter << " i " << i << " j " << j; + } + } + } + } + + void TestReadCropTrainSequenceUnseeded() { + LayerParameter param; + param.set_phase(TRAIN); + DataParameter* data_param = param.mutable_data_param(); + data_param->set_batch_size(5); + data_param->set_source(filename_->c_str()); + data_param->set_backend(backend_); + + TransformationParameter* transform_param = + param.mutable_transform_param(); + transform_param->set_crop_size(1); + transform_param->set_mirror(true); + + // Get crop sequence with Caffe seed 1701, srand seed 1701. + Caffe::set_random_seed(seed_); + srand(seed_); + vector > crop_sequence; + { + DataLayer layer1(param); + layer1.SetUp(blob_bottom_vec_, blob_top_vec_); + for (int iter = 0; iter < 2; ++iter) { + layer1.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, blob_top_label_->cpu_data()[i]); + } + vector iter_crop_sequence; + for (int i = 0; i < 5; ++i) { + for (int j = 0; j < 2; ++j) { + iter_crop_sequence.push_back( + blob_top_data_->cpu_data()[i * 2 + j]); + } + } + crop_sequence.push_back(iter_crop_sequence); + } + } // destroy 1st data layer and unlock the db + + // Get crop sequence continuing from previous Caffe RNG state; reseed + // srand with 1701. Check that the sequence differs from the original. + srand(seed_); + DataLayer layer2(param); + layer2.SetUp(blob_bottom_vec_, blob_top_vec_); + for (int iter = 0; iter < 2; ++iter) { + layer2.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, blob_top_label_->cpu_data()[i]); + } + int num_sequence_matches = 0; + for (int i = 0; i < 5; ++i) { + for (int j = 0; j < 2; ++j) { + num_sequence_matches += (crop_sequence[iter][i * 2 + j] == + blob_top_data_->cpu_data()[i * 2 + j]); + } + } + EXPECT_LT(num_sequence_matches, 10); + } + } + + virtual ~DataLayerTest() { delete blob_top_data_; delete blob_top_label_; } + + DataParameter_DB backend_; + shared_ptr filename_; + Blob* const blob_top_data_; + Blob* const blob_top_label_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + int seed_; +}; + +TYPED_TEST_CASE(DataLayerTest, TestDtypesAndDevices); + +#ifdef USE_LEVELDB +TYPED_TEST(DataLayerTest, TestReadLevelDB) { + const bool unique_pixels = false; // all pixels the same; images different + this->Fill(unique_pixels, DataParameter_DB_LEVELDB); + this->TestRead(); +} + +TYPED_TEST(DataLayerTest, TestSkipLevelDB) { + this->Fill(false, DataParameter_DB_LEVELDB); + this->TestSkip(); +} + +TYPED_TEST(DataLayerTest, TestReshapeLevelDB) { + this->TestReshape(DataParameter_DB_LEVELDB); +} + +TYPED_TEST(DataLayerTest, TestReadCropTrainLevelDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LEVELDB); + this->TestReadCrop(TRAIN); +} + +// Test that the sequence of random crops is consistent when using +// Caffe::set_random_seed. +TYPED_TEST(DataLayerTest, TestReadCropTrainSequenceSeededLevelDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LEVELDB); + this->TestReadCropTrainSequenceSeeded(); +} + +// Test that the sequence of random crops differs across iterations when +// Caffe::set_random_seed isn't called (and seeds from srand are ignored). +TYPED_TEST(DataLayerTest, TestReadCropTrainSequenceUnseededLevelDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LEVELDB); + this->TestReadCropTrainSequenceUnseeded(); +} + +TYPED_TEST(DataLayerTest, TestReadCropTestLevelDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LEVELDB); + this->TestReadCrop(TEST); +} +#endif // USE_LEVELDB + +#ifdef USE_LMDB +TYPED_TEST(DataLayerTest, TestReadLMDB) { + const bool unique_pixels = false; // all pixels the same; images different + this->Fill(unique_pixels, DataParameter_DB_LMDB); + this->TestRead(); +} + +TYPED_TEST(DataLayerTest, TestSkipLMDB) { + this->Fill(false, DataParameter_DB_LMDB); + this->TestSkip(); +} + +TYPED_TEST(DataLayerTest, TestReshapeLMDB) { + this->TestReshape(DataParameter_DB_LMDB); +} + +TYPED_TEST(DataLayerTest, TestReadCropTrainLMDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LMDB); + this->TestReadCrop(TRAIN); +} + +// Test that the sequence of random crops is consistent when using +// Caffe::set_random_seed. +TYPED_TEST(DataLayerTest, TestReadCropTrainSequenceSeededLMDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LMDB); + this->TestReadCropTrainSequenceSeeded(); +} + +// Test that the sequence of random crops differs across iterations when +// Caffe::set_random_seed isn't called (and seeds from srand are ignored). +TYPED_TEST(DataLayerTest, TestReadCropTrainSequenceUnseededLMDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LMDB); + this->TestReadCropTrainSequenceUnseeded(); +} + +TYPED_TEST(DataLayerTest, TestReadCropTestLMDB) { + const bool unique_pixels = true; // all images the same; pixels different + this->Fill(unique_pixels, DataParameter_DB_LMDB); + this->TestReadCrop(TEST); +} + +#endif // USE_LMDB +} // namespace caffe +#endif // USE_OPENCV diff --git a/3rdparty/caffe/src/caffe/test/test_data_transformer.cpp b/3rdparty/caffe/src/caffe/test/test_data_transformer.cpp new file mode 100644 index 00000000..31bf1c1f --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_data_transformer.cpp @@ -0,0 +1,344 @@ +#ifdef USE_OPENCV +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/filler.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +void FillDatum(const int label, const int channels, const int height, + const int width, const bool unique_pixels, Datum * datum) { + datum->set_label(label); + datum->set_channels(channels); + datum->set_height(height); + datum->set_width(width); + int size = channels * height * width; + std::string* data = datum->mutable_data(); + for (int j = 0; j < size; ++j) { + int datum = unique_pixels ? j : label; + data->push_back(static_cast(datum)); + } +} + +template +class DataTransformTest : public ::testing::Test { + protected: + DataTransformTest() + : seed_(1701), + num_iter_(10) {} + + int NumSequenceMatches(const TransformationParameter transform_param, + const Datum& datum, Phase phase) { + // Get crop sequence with Caffe seed 1701. + DataTransformer transformer(transform_param, phase); + const int crop_size = transform_param.crop_size(); + Caffe::set_random_seed(seed_); + transformer.InitRand(); + Blob blob(1, datum.channels(), datum.height(), datum.width()); + if (transform_param.crop_size() > 0) { + blob.Reshape(1, datum.channels(), crop_size, crop_size); + } + + vector > crop_sequence; + for (int iter = 0; iter < this->num_iter_; ++iter) { + vector iter_crop_sequence; + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + iter_crop_sequence.push_back(blob.cpu_data()[j]); + } + crop_sequence.push_back(iter_crop_sequence); + } + // Check if the sequence differs from the previous + int num_sequence_matches = 0; + for (int iter = 0; iter < this->num_iter_; ++iter) { + vector iter_crop_sequence = crop_sequence[iter]; + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + num_sequence_matches += (crop_sequence[iter][j] == blob.cpu_data()[j]); + } + } + return num_sequence_matches; + } + + int seed_; + int num_iter_; +}; + +TYPED_TEST_CASE(DataTransformTest, TestDtypes); + +TYPED_TEST(DataTransformTest, TestEmptyTransform) { + TransformationParameter transform_param; + const bool unique_pixels = false; // all pixels the same equal to label + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + EXPECT_EQ(blob.num(), 1); + EXPECT_EQ(blob.channels(), datum.channels()); + EXPECT_EQ(blob.height(), datum.height()); + EXPECT_EQ(blob.width(), datum.width()); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], label); + } +} + +TYPED_TEST(DataTransformTest, TestEmptyTransformUniquePixels) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + Blob blob(1, 3, 4, 5); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + EXPECT_EQ(blob.num(), 1); + EXPECT_EQ(blob.channels(), datum.channels()); + EXPECT_EQ(blob.height(), datum.height()); + EXPECT_EQ(blob.width(), datum.width()); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], j); + } +} + +TYPED_TEST(DataTransformTest, TestCropSize) { + TransformationParameter transform_param; + const bool unique_pixels = false; // all pixels the same equal to label + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int crop_size = 2; + + transform_param.set_crop_size(crop_size); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + Blob blob(1, channels, crop_size, crop_size); + for (int iter = 0; iter < this->num_iter_; ++iter) { + transformer.Transform(datum, &blob); + EXPECT_EQ(blob.num(), 1); + EXPECT_EQ(blob.channels(), datum.channels()); + EXPECT_EQ(blob.height(), crop_size); + EXPECT_EQ(blob.width(), crop_size); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], label); + } + } +} + +TYPED_TEST(DataTransformTest, TestCropTrain) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int crop_size = 2; + const int size = channels * crop_size * crop_size; + + transform_param.set_crop_size(crop_size); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + int num_matches = this->NumSequenceMatches(transform_param, datum, TRAIN); + EXPECT_LT(num_matches, size * this->num_iter_); +} + +TYPED_TEST(DataTransformTest, TestCropTest) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int crop_size = 2; + const int size = channels * crop_size * crop_size; + + transform_param.set_crop_size(crop_size); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + int num_matches = this->NumSequenceMatches(transform_param, datum, TEST); + EXPECT_EQ(num_matches, size * this->num_iter_); +} + +TYPED_TEST(DataTransformTest, TestMirrorTrain) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int size = channels * height * width; + + transform_param.set_mirror(true); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + int num_matches = this->NumSequenceMatches(transform_param, datum, TRAIN); + EXPECT_LT(num_matches, size * this->num_iter_); +} + +TYPED_TEST(DataTransformTest, TestMirrorTest) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int size = channels * height * width; + + transform_param.set_mirror(true); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + int num_matches = this->NumSequenceMatches(transform_param, datum, TEST); + EXPECT_LT(num_matches, size * this->num_iter_); +} + +TYPED_TEST(DataTransformTest, TestCropMirrorTrain) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int crop_size = 2; + + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + transform_param.set_crop_size(crop_size); + int num_matches_crop = this->NumSequenceMatches( + transform_param, datum, TRAIN); + + transform_param.set_mirror(true); + int num_matches_crop_mirror = + this->NumSequenceMatches(transform_param, datum, TRAIN); + // When doing crop and mirror we expect less num_matches than just crop + EXPECT_LE(num_matches_crop_mirror, num_matches_crop); +} + +TYPED_TEST(DataTransformTest, TestCropMirrorTest) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int crop_size = 2; + + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + transform_param.set_crop_size(crop_size); + int num_matches_crop = this->NumSequenceMatches(transform_param, datum, TEST); + + transform_param.set_mirror(true); + int num_matches_crop_mirror = + this->NumSequenceMatches(transform_param, datum, TEST); + // When doing crop and mirror we expect less num_matches than just crop + EXPECT_LT(num_matches_crop_mirror, num_matches_crop); +} + + +TYPED_TEST(DataTransformTest, TestMeanValue) { + TransformationParameter transform_param; + const bool unique_pixels = false; // pixels are equal to label + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int mean_value = 2; + + transform_param.add_mean_value(mean_value); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], label - mean_value); + } +} + +TYPED_TEST(DataTransformTest, TestMeanValues) { + TransformationParameter transform_param; + const bool unique_pixels = false; // pixels are equal to label + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + + transform_param.add_mean_value(0); + transform_param.add_mean_value(1); + transform_param.add_mean_value(2); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + for (int c = 0; c < channels; ++c) { + for (int j = 0; j < height * width; ++j) { + EXPECT_EQ(blob.cpu_data()[blob.offset(0, c) + j], label - c); + } + } +} + +TYPED_TEST(DataTransformTest, TestMeanFile) { + TransformationParameter transform_param; + const bool unique_pixels = true; // pixels are consecutive ints [0,size] + const int label = 0; + const int channels = 3; + const int height = 4; + const int width = 5; + const int size = channels * height * width; + + // Create a mean file + string mean_file; + MakeTempFilename(&mean_file); + BlobProto blob_mean; + blob_mean.set_num(1); + blob_mean.set_channels(channels); + blob_mean.set_height(height); + blob_mean.set_width(width); + + for (int j = 0; j < size; ++j) { + blob_mean.add_data(j); + } + + LOG(INFO) << "Using temporary mean_file " << mean_file; + WriteProtoToBinaryFile(blob_mean, mean_file); + + transform_param.set_mean_file(mean_file); + Datum datum; + FillDatum(label, channels, height, width, unique_pixels, &datum); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], 0); + } +} + +} // namespace caffe +#endif // USE_OPENCV diff --git a/3rdparty/caffe/src/caffe/test/test_db.cpp b/3rdparty/caffe/src/caffe/test/test_db.cpp new file mode 100644 index 00000000..1b487b14 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_db.cpp @@ -0,0 +1,136 @@ +#if defined(USE_LEVELDB) && defined(USE_LMDB) && defined(USE_OPENCV) +#include + +#include "boost/scoped_ptr.hpp" +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +using boost::scoped_ptr; + +template +class DBTest : public ::testing::Test { + protected: + DBTest() + : backend_(TypeParam::backend), + root_images_(string(EXAMPLES_SOURCE_DIR) + string("images/")) {} + + virtual void SetUp() { + MakeTempDir(&source_); + source_ += "/db"; + string keys[] = {"cat.jpg", "fish-bike.jpg"}; + LOG(INFO) << "Using temporary db " << source_; + scoped_ptr db(db::GetDB(TypeParam::backend)); + db->Open(this->source_, db::NEW); + scoped_ptr txn(db->NewTransaction()); + for (int i = 0; i < 2; ++i) { + Datum datum; + ReadImageToDatum(root_images_ + keys[i], i, &datum); + string out; + CHECK(datum.SerializeToString(&out)); + txn->Put(keys[i], out); + } + txn->Commit(); + } + + virtual ~DBTest() { } + + DataParameter_DB backend_; + string source_; + string root_images_; +}; + +struct TypeLevelDB { + static DataParameter_DB backend; +}; +DataParameter_DB TypeLevelDB::backend = DataParameter_DB_LEVELDB; + +struct TypeLMDB { + static DataParameter_DB backend; +}; +DataParameter_DB TypeLMDB::backend = DataParameter_DB_LMDB; + +// typedef ::testing::Types TestTypes; +typedef ::testing::Types TestTypes; + +TYPED_TEST_CASE(DBTest, TestTypes); + +TYPED_TEST(DBTest, TestGetDB) { + scoped_ptr db(db::GetDB(TypeParam::backend)); +} + +TYPED_TEST(DBTest, TestNext) { + scoped_ptr db(db::GetDB(TypeParam::backend)); + db->Open(this->source_, db::READ); + scoped_ptr cursor(db->NewCursor()); + EXPECT_TRUE(cursor->valid()); + cursor->Next(); + EXPECT_TRUE(cursor->valid()); + cursor->Next(); + EXPECT_FALSE(cursor->valid()); +} + +TYPED_TEST(DBTest, TestSeekToFirst) { + scoped_ptr db(db::GetDB(TypeParam::backend)); + db->Open(this->source_, db::READ); + scoped_ptr cursor(db->NewCursor()); + cursor->Next(); + cursor->SeekToFirst(); + EXPECT_TRUE(cursor->valid()); + string key = cursor->key(); + Datum datum; + datum.ParseFromString(cursor->value()); + EXPECT_EQ(key, "cat.jpg"); + EXPECT_EQ(datum.channels(), 3); + EXPECT_EQ(datum.height(), 360); + EXPECT_EQ(datum.width(), 480); +} + +TYPED_TEST(DBTest, TestKeyValue) { + scoped_ptr db(db::GetDB(TypeParam::backend)); + db->Open(this->source_, db::READ); + scoped_ptr cursor(db->NewCursor()); + EXPECT_TRUE(cursor->valid()); + string key = cursor->key(); + Datum datum; + datum.ParseFromString(cursor->value()); + EXPECT_EQ(key, "cat.jpg"); + EXPECT_EQ(datum.channels(), 3); + EXPECT_EQ(datum.height(), 360); + EXPECT_EQ(datum.width(), 480); + cursor->Next(); + EXPECT_TRUE(cursor->valid()); + key = cursor->key(); + datum.ParseFromString(cursor->value()); + EXPECT_EQ(key, "fish-bike.jpg"); + EXPECT_EQ(datum.channels(), 3); + EXPECT_EQ(datum.height(), 323); + EXPECT_EQ(datum.width(), 481); + cursor->Next(); + EXPECT_FALSE(cursor->valid()); +} + +TYPED_TEST(DBTest, TestWrite) { + scoped_ptr db(db::GetDB(TypeParam::backend)); + db->Open(this->source_, db::WRITE); + scoped_ptr txn(db->NewTransaction()); + Datum datum; + ReadFileToDatum(this->root_images_ + "cat.jpg", 0, &datum); + string out; + CHECK(datum.SerializeToString(&out)); + txn->Put("cat.jpg", out); + ReadFileToDatum(this->root_images_ + "fish-bike.jpg", 1, &datum); + CHECK(datum.SerializeToString(&out)); + txn->Put("fish-bike.jpg", out); + txn->Commit(); +} + +} // namespace caffe +#endif // USE_LEVELDB, USE_LMDB and USE_OPENCV diff --git a/3rdparty/caffe/src/caffe/test/test_deconvolution_layer.cpp b/3rdparty/caffe/src/caffe/test/test_deconvolution_layer.cpp new file mode 100644 index 00000000..c4b09ad5 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_deconvolution_layer.cpp @@ -0,0 +1,304 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/deconv_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +// Since ConvolutionLayerTest checks the shared conv/deconv code in detail, +// we'll just do a simple forward test and a gradient check. +template +class DeconvolutionLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + DeconvolutionLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 4)), + blob_bottom_2_(new Blob(2, 3, 6, 4)), + blob_top_(new Blob()), + blob_top_2_(new Blob()) {} + virtual void SetUp() { + // fill the values + FillerParameter filler_param; + filler_param.set_value(1.); + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_2_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~DeconvolutionLayerTest() { + delete blob_bottom_; + delete blob_bottom_2_; + delete blob_top_; + delete blob_top_2_; + } + + Blob* const blob_bottom_; + Blob* const blob_bottom_2_; + Blob* const blob_top_; + Blob* const blob_top_2_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(DeconvolutionLayerTest, TestDtypesAndDevices); + +TYPED_TEST(DeconvolutionLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + shared_ptr > layer( + new DeconvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 4); + EXPECT_EQ(this->blob_top_->height(), 13); + EXPECT_EQ(this->blob_top_->width(), 9); + EXPECT_EQ(this->blob_top_2_->num(), 2); + EXPECT_EQ(this->blob_top_2_->channels(), 4); + EXPECT_EQ(this->blob_top_2_->height(), 13); + EXPECT_EQ(this->blob_top_2_->width(), 9); + // setting group should not change the shape + convolution_param->set_num_output(3); + convolution_param->set_group(3); + layer.reset(new DeconvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 13); + EXPECT_EQ(this->blob_top_->width(), 9); + EXPECT_EQ(this->blob_top_2_->num(), 2); + EXPECT_EQ(this->blob_top_2_->channels(), 3); + EXPECT_EQ(this->blob_top_2_->height(), 13); + EXPECT_EQ(this->blob_top_2_->width(), 9); +} + +TYPED_TEST(DeconvolutionLayerTest, TestSimpleDeconvolution) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("constant"); + convolution_param->mutable_weight_filler()->set_value(1); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new DeconvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + // constant-fill the bottom blobs + FillerParameter filler_param; + filler_param.set_value(1.); + ConstantFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_2_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // simply check that accumulation works with overlapping filters + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int n = 0; n < this->blob_top_->num(); ++n) { + for (int c = 0; c < this->blob_top_->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + Dtype expected = 3.1; + bool h_overlap = h % 2 == 0 && h > 0 + && h < this->blob_top_->height() - 1; + bool w_overlap = w % 2 == 0 && w > 0 + && w < this->blob_top_->width() - 1; + if (h_overlap && w_overlap) { + expected += 9; + } else if (h_overlap || w_overlap) { + expected += 3; + } + EXPECT_NEAR(top_data[this->blob_top_->offset(n, c, h, w)], + expected, 1e-4); + } + } + } + } +} + +TYPED_TEST(DeconvolutionLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + convolution_param->add_kernel_size(2); + convolution_param->add_stride(1); + convolution_param->set_num_output(1); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + DeconvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(DeconvolutionLayerTest, TestNDAgainst2D) { + typedef typename TypeParam::Dtype Dtype; + const int kernel_h = 11; + const int kernel_w = 13; + vector bottom_shape(4); + bottom_shape[0] = 15; + bottom_shape[1] = 12; + bottom_shape[2] = kernel_h * 2; + bottom_shape[3] = kernel_w * 2; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_num_output(18); + convolution_param->set_bias_term(false); + convolution_param->set_group(6); + convolution_param->set_kernel_h(kernel_h); + convolution_param->set_kernel_w(kernel_w); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + Blob weights; + Blob top_diff; + // Shape and fill weights and top_diff. + bool copy_diff; + bool reshape; + { + DeconvolutionLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + top_diff.ReshapeLike(*this->blob_top_); + filler.Fill(&top_diff); + ASSERT_EQ(1, layer.blobs().size()); + copy_diff = false; reshape = true; + weights.CopyFrom(*layer.blobs()[0], copy_diff, reshape); + } + vector propagate_down(1, true); + Blob result_2d; + Blob backward_result_2d; + Blob backward_weight_result_2d; + // Test with 2D im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_2d. + convolution_param->set_force_nd_im2col(false); + DeconvolutionLayer layer_2d(layer_param); + layer_2d.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_2d.blobs().size()); + copy_diff = false; reshape = false; + layer_2d.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_2d.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_2d.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_2d. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_2d.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_2d.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_2d.CopyFrom(weights, copy_diff, reshape); + } + Blob result_nd; + Blob backward_result_nd; + Blob backward_weight_result_nd; + // Test with ND im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_nd. + convolution_param->set_force_nd_im2col(true); + DeconvolutionLayer layer_nd(layer_param); + layer_nd.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_nd.blobs().size()); + copy_diff = false; reshape = false; + layer_nd.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_nd.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_nd.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_nd. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_nd.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_nd.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_nd.CopyFrom(weights, copy_diff, reshape); + } + ASSERT_EQ(result_nd.count(), result_2d.count()); + for (int i = 0; i < result_2d.count(); ++i) { + EXPECT_EQ(result_2d.cpu_data()[i], result_nd.cpu_data()[i]); + } + ASSERT_EQ(backward_result_nd.count(), backward_result_2d.count()); + for (int i = 0; i < backward_result_2d.count(); ++i) { + EXPECT_EQ(backward_result_2d.cpu_diff()[i], + backward_result_nd.cpu_diff()[i]); + } + ASSERT_EQ(backward_weight_result_nd.count(), + backward_weight_result_2d.count()); + for (int i = 0; i < backward_weight_result_2d.count(); ++i) { + EXPECT_EQ(backward_weight_result_2d.cpu_diff()[i], + backward_weight_result_nd.cpu_diff()[i]); + } +} + +TYPED_TEST(DeconvolutionLayerTest, TestGradient3D) { + typedef typename TypeParam::Dtype Dtype; + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 2; + bottom_shape[3] = 3; + bottom_shape[4] = 2; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(2); + convolution_param->add_stride(2); + convolution_param->add_pad(1); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + DeconvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_dummy_data_layer.cpp b/3rdparty/caffe/src/caffe/test/test_dummy_data_layer.cpp new file mode 100644 index 00000000..1a01ca85 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_dummy_data_layer.cpp @@ -0,0 +1,193 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layers/dummy_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class DummyDataLayerTest : public CPUDeviceTest { + protected: + DummyDataLayerTest() + : blob_top_a_(new Blob()), + blob_top_b_(new Blob()), + blob_top_c_(new Blob()) {} + + virtual void SetUp() { + blob_bottom_vec_.clear(); + blob_top_vec_.clear(); + blob_top_vec_.push_back(blob_top_a_); + blob_top_vec_.push_back(blob_top_b_); + blob_top_vec_.push_back(blob_top_c_); + } + + virtual ~DummyDataLayerTest() { + delete blob_top_a_; + delete blob_top_b_; + delete blob_top_c_; + } + + Blob* const blob_top_a_; + Blob* const blob_top_b_; + Blob* const blob_top_c_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(DummyDataLayerTest, TestDtypes); + +TYPED_TEST(DummyDataLayerTest, TestOneTopConstant) { + LayerParameter param; + DummyDataParameter* dummy_data_param = param.mutable_dummy_data_param(); + dummy_data_param->add_num(5); + dummy_data_param->add_channels(3); + dummy_data_param->add_height(2); + dummy_data_param->add_width(4); + this->blob_top_vec_.resize(1); + DummyDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_a_->num(), 5); + EXPECT_EQ(this->blob_top_a_->channels(), 3); + EXPECT_EQ(this->blob_top_a_->height(), 2); + EXPECT_EQ(this->blob_top_a_->width(), 4); + EXPECT_EQ(this->blob_top_b_->count(), 0); + EXPECT_EQ(this->blob_top_c_->count(), 0); + for (int i = 0; i < this->blob_top_vec_.size(); ++i) { + for (int j = 0; j < this->blob_top_vec_[i]->count(); ++j) { + EXPECT_EQ(0, this->blob_top_vec_[i]->cpu_data()[j]); + } + } + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_vec_.size(); ++i) { + for (int j = 0; j < this->blob_top_vec_[i]->count(); ++j) { + EXPECT_EQ(0, this->blob_top_vec_[i]->cpu_data()[j]); + } + } +} + +TYPED_TEST(DummyDataLayerTest, TestTwoTopConstant) { + LayerParameter param; + DummyDataParameter* dummy_data_param = param.mutable_dummy_data_param(); + dummy_data_param->add_num(5); + dummy_data_param->add_channels(3); + dummy_data_param->add_height(2); + dummy_data_param->add_width(4); + dummy_data_param->add_num(5); + // Don't explicitly set number of channels or height for 2nd top blob; should + // default to first channels and height (as we check later). + dummy_data_param->add_height(1); + FillerParameter* data_filler_param = dummy_data_param->add_data_filler(); + data_filler_param->set_value(7); + this->blob_top_vec_.resize(2); + DummyDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_a_->num(), 5); + EXPECT_EQ(this->blob_top_a_->channels(), 3); + EXPECT_EQ(this->blob_top_a_->height(), 2); + EXPECT_EQ(this->blob_top_a_->width(), 4); + EXPECT_EQ(this->blob_top_b_->num(), 5); + EXPECT_EQ(this->blob_top_b_->channels(), 3); + EXPECT_EQ(this->blob_top_b_->height(), 1); + EXPECT_EQ(this->blob_top_b_->width(), 4); + EXPECT_EQ(this->blob_top_c_->count(), 0); + for (int i = 0; i < this->blob_top_vec_.size(); ++i) { + for (int j = 0; j < this->blob_top_vec_[i]->count(); ++j) { + EXPECT_EQ(7, this->blob_top_vec_[i]->cpu_data()[j]); + } + } + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_vec_.size(); ++i) { + for (int j = 0; j < this->blob_top_vec_[i]->count(); ++j) { + EXPECT_EQ(7, this->blob_top_vec_[i]->cpu_data()[j]); + } + } +} + +TYPED_TEST(DummyDataLayerTest, TestThreeTopConstantGaussianConstant) { + LayerParameter param; + DummyDataParameter* dummy_data_param = param.mutable_dummy_data_param(); + dummy_data_param->add_num(5); + dummy_data_param->add_channels(3); + dummy_data_param->add_height(2); + dummy_data_param->add_width(4); + FillerParameter* data_filler_param_a = dummy_data_param->add_data_filler(); + data_filler_param_a->set_value(7); + FillerParameter* data_filler_param_b = dummy_data_param->add_data_filler(); + data_filler_param_b->set_type("gaussian"); + TypeParam gaussian_mean = 3.0; + TypeParam gaussian_std = 0.01; + data_filler_param_b->set_mean(gaussian_mean); + data_filler_param_b->set_std(gaussian_std); + FillerParameter* data_filler_param_c = dummy_data_param->add_data_filler(); + data_filler_param_c->set_value(9); + DummyDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_a_->num(), 5); + EXPECT_EQ(this->blob_top_a_->channels(), 3); + EXPECT_EQ(this->blob_top_a_->height(), 2); + EXPECT_EQ(this->blob_top_a_->width(), 4); + EXPECT_EQ(this->blob_top_b_->num(), 5); + EXPECT_EQ(this->blob_top_b_->channels(), 3); + EXPECT_EQ(this->blob_top_b_->height(), 2); + EXPECT_EQ(this->blob_top_b_->width(), 4); + EXPECT_EQ(this->blob_top_c_->num(), 5); + EXPECT_EQ(this->blob_top_c_->channels(), 3); + EXPECT_EQ(this->blob_top_c_->height(), 2); + EXPECT_EQ(this->blob_top_c_->width(), 4); + for (int i = 0; i < this->blob_top_a_->count(); ++i) { + EXPECT_EQ(7, this->blob_top_a_->cpu_data()[i]); + } + // Blob b uses a Gaussian filler, so SetUp should not have initialized it. + // Blob b's data should therefore be the default Blob data value: 0. + for (int i = 0; i < this->blob_top_b_->count(); ++i) { + EXPECT_EQ(0, this->blob_top_b_->cpu_data()[i]); + } + for (int i = 0; i < this->blob_top_c_->count(); ++i) { + EXPECT_EQ(9, this->blob_top_c_->cpu_data()[i]); + } + + // Do a Forward pass to fill in Blob b with Gaussian data. + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_a_->count(); ++i) { + EXPECT_EQ(7, this->blob_top_a_->cpu_data()[i]); + } + // Check that the Gaussian's data has been filled in with values within + // 10 standard deviations of the mean. Record the first and last sample. + // to check that they're different after the next Forward pass. + for (int i = 0; i < this->blob_top_b_->count(); ++i) { + EXPECT_NEAR(gaussian_mean, this->blob_top_b_->cpu_data()[i], + gaussian_std * 10); + } + const TypeParam first_gaussian_sample = this->blob_top_b_->cpu_data()[0]; + const TypeParam last_gaussian_sample = + this->blob_top_b_->cpu_data()[this->blob_top_b_->count() - 1]; + for (int i = 0; i < this->blob_top_c_->count(); ++i) { + EXPECT_EQ(9, this->blob_top_c_->cpu_data()[i]); + } + + // Do another Forward pass to fill in Blob b with Gaussian data again, + // checking that we get different values. + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_a_->count(); ++i) { + EXPECT_EQ(7, this->blob_top_a_->cpu_data()[i]); + } + for (int i = 0; i < this->blob_top_b_->count(); ++i) { + EXPECT_NEAR(gaussian_mean, this->blob_top_b_->cpu_data()[i], + gaussian_std * 10); + } + EXPECT_NE(first_gaussian_sample, this->blob_top_b_->cpu_data()[0]); + EXPECT_NE(last_gaussian_sample, + this->blob_top_b_->cpu_data()[this->blob_top_b_->count() - 1]); + for (int i = 0; i < this->blob_top_c_->count(); ++i) { + EXPECT_EQ(9, this->blob_top_c_->cpu_data()[i]); + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_eltwise_layer.cpp b/3rdparty/caffe/src/caffe/test/test_eltwise_layer.cpp new file mode 100644 index 00000000..c06e3baa --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_eltwise_layer.cpp @@ -0,0 +1,209 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/eltwise_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class EltwiseLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + EltwiseLayerTest() + : blob_bottom_a_(new Blob(2, 3, 4, 5)), + blob_bottom_b_(new Blob(2, 3, 4, 5)), + blob_bottom_c_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + // fill the values + Caffe::set_random_seed(1701); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_a_); + filler.Fill(this->blob_bottom_b_); + filler.Fill(this->blob_bottom_c_); + blob_bottom_vec_.push_back(blob_bottom_a_); + blob_bottom_vec_.push_back(blob_bottom_b_); + blob_bottom_vec_.push_back(blob_bottom_c_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~EltwiseLayerTest() { + delete blob_bottom_a_; + delete blob_bottom_b_; + delete blob_bottom_c_; + delete blob_top_; + } + Blob* const blob_bottom_a_; + Blob* const blob_bottom_b_; + Blob* const blob_bottom_c_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(EltwiseLayerTest, TestDtypesAndDevices); + +TYPED_TEST(EltwiseLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_PROD); + shared_ptr > layer( + new EltwiseLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 4); + EXPECT_EQ(this->blob_top_->width(), 5); +} + +TYPED_TEST(EltwiseLayerTest, TestProd) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_PROD); + shared_ptr > layer( + new EltwiseLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_a_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_b_->cpu_data(); + const Dtype* in_data_c = this->blob_bottom_c_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i] * in_data_c[i], 1e-4); + } +} + +TYPED_TEST(EltwiseLayerTest, TestSum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_SUM); + shared_ptr > layer( + new EltwiseLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_a_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_b_->cpu_data(); + const Dtype* in_data_c = this->blob_bottom_c_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i] + in_data_c[i], 1e-4); + } +} + +TYPED_TEST(EltwiseLayerTest, TestSumCoeff) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_SUM); + eltwise_param->add_coeff(1); + eltwise_param->add_coeff(-0.5); + eltwise_param->add_coeff(2); + shared_ptr > layer( + new EltwiseLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_a_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_b_->cpu_data(); + const Dtype* in_data_c = this->blob_bottom_c_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] - 0.5*in_data_b[i] + 2*in_data_c[i], + 1e-4); + } +} + +TYPED_TEST(EltwiseLayerTest, TestStableProdGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_PROD); + eltwise_param->set_stable_prod_grad(true); + EltwiseLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(EltwiseLayerTest, TestUnstableProdGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_PROD); + eltwise_param->set_stable_prod_grad(false); + EltwiseLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(EltwiseLayerTest, TestSumGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_SUM); + EltwiseLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(EltwiseLayerTest, TestSumCoeffGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_SUM); + eltwise_param->add_coeff(1); + eltwise_param->add_coeff(-0.5); + eltwise_param->add_coeff(2); + EltwiseLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(EltwiseLayerTest, TestMax) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_MAX); + shared_ptr > layer( + new EltwiseLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_a_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_b_->cpu_data(); + const Dtype* in_data_c = this->blob_bottom_c_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_EQ(data[i], + std::max(in_data_a[i], std::max(in_data_b[i], in_data_c[i]))); + } +} + +TYPED_TEST(EltwiseLayerTest, TestMaxGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EltwiseParameter* eltwise_param = layer_param.mutable_eltwise_param(); + eltwise_param->set_operation(EltwiseParameter_EltwiseOp_MAX); + EltwiseLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_embed_layer.cpp b/3rdparty/caffe/src/caffe/test/test_embed_layer.cpp new file mode 100644 index 00000000..13f13a87 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_embed_layer.cpp @@ -0,0 +1,178 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/embed_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class EmbedLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + EmbedLayerTest() + : blob_bottom_(new Blob(4, 1, 1, 1)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~EmbedLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(EmbedLayerTest, TestDtypesAndDevices); + +TYPED_TEST(EmbedLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EmbedParameter* embed_param = layer_param.mutable_embed_param(); + embed_param->set_num_output(10); + embed_param->set_input_dim(5); + shared_ptr > layer(new EmbedLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 5); + EXPECT_EQ(this->blob_top_->shape(0), 4); + EXPECT_EQ(this->blob_top_->shape(1), 1); + EXPECT_EQ(this->blob_top_->shape(2), 1); + EXPECT_EQ(this->blob_top_->shape(3), 1); + EXPECT_EQ(this->blob_top_->shape(4), 10); +} + +TYPED_TEST(EmbedLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EmbedParameter* embed_param = layer_param.mutable_embed_param(); + const int kNumOutput = 10; + const int kInputDim = 5; + embed_param->set_num_output(kNumOutput); + embed_param->set_input_dim(kInputDim); + embed_param->mutable_weight_filler()->set_type("uniform"); + embed_param->mutable_weight_filler()->set_min(-10); + embed_param->mutable_weight_filler()->set_max(10); + embed_param->set_bias_term(false); + shared_ptr > layer(new EmbedLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer->blobs().size()); + vector weight_shape(2); + weight_shape[0] = kInputDim; + weight_shape[1] = kNumOutput; + ASSERT_TRUE(weight_shape == layer->blobs()[0]->shape()); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + this->blob_bottom_->mutable_cpu_data()[i] = caffe_rng_rand() % kInputDim; + } + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + vector weight_offset(2, 0); + vector top_offset(5, 0); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + weight_offset[0] = static_cast(this->blob_bottom_->cpu_data()[i]); + weight_offset[1] = 0; + top_offset[0] = i; + top_offset[4] = 0; + for (int j = 0; j < kNumOutput; ++j) { + EXPECT_EQ(layer->blobs()[0]->data_at(weight_offset), + this->blob_top_->data_at(top_offset)); + ++top_offset[4]; + ++weight_offset[1]; + } + } +} + +TYPED_TEST(EmbedLayerTest, TestForwardWithBias) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EmbedParameter* embed_param = layer_param.mutable_embed_param(); + const int kNumOutput = 10; + const int kInputDim = 5; + embed_param->set_num_output(kNumOutput); + embed_param->set_input_dim(kInputDim); + embed_param->mutable_weight_filler()->set_type("uniform"); + embed_param->mutable_weight_filler()->set_min(-10); + embed_param->mutable_weight_filler()->set_max(10); + embed_param->mutable_bias_filler()->CopyFrom(embed_param->weight_filler()); + embed_param->set_bias_term(true); + shared_ptr > layer(new EmbedLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(2, layer->blobs().size()); + vector weight_shape(2); + weight_shape[0] = kInputDim; + weight_shape[1] = kNumOutput; + ASSERT_TRUE(weight_shape == layer->blobs()[0]->shape()); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + this->blob_bottom_->mutable_cpu_data()[i] = caffe_rng_rand() % kInputDim; + } + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + vector bias_offset(1, 0); + vector weight_offset(2, 0); + vector top_offset(5, 0); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + weight_offset[0] = static_cast(this->blob_bottom_->cpu_data()[i]); + weight_offset[1] = 0; + top_offset[0] = i; + top_offset[4] = 0; + bias_offset[0] = 0; + for (int j = 0; j < kNumOutput; ++j) { + EXPECT_FLOAT_EQ(layer->blobs()[0]->data_at(weight_offset) + + layer->blobs()[1]->data_at(bias_offset), + this->blob_top_->data_at(top_offset)); + ++top_offset[4]; + ++weight_offset[1]; + ++bias_offset[0]; + } + } +} + +TYPED_TEST(EmbedLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EmbedParameter* embed_param = layer_param.mutable_embed_param(); + embed_param->set_num_output(10); + embed_param->set_input_dim(5); + embed_param->set_bias_term(false); + embed_param->mutable_weight_filler()->set_type("uniform"); + embed_param->mutable_weight_filler()->set_min(-10); + embed_param->mutable_weight_filler()->set_max(10); + EmbedLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + this->blob_bottom_->mutable_cpu_data()[0] = 4; + this->blob_bottom_->mutable_cpu_data()[1] = 2; + this->blob_bottom_->mutable_cpu_data()[2] = 2; + this->blob_bottom_->mutable_cpu_data()[3] = 3; + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, -2); +} + +TYPED_TEST(EmbedLayerTest, TestGradientWithBias) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + EmbedParameter* embed_param = layer_param.mutable_embed_param(); + embed_param->set_num_output(10); + embed_param->set_input_dim(5); + embed_param->set_bias_term(true); + embed_param->mutable_weight_filler()->set_type("uniform"); + embed_param->mutable_weight_filler()->set_min(-10); + embed_param->mutable_weight_filler()->set_max(10); + embed_param->mutable_bias_filler()->CopyFrom(embed_param->weight_filler()); + EmbedLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + this->blob_bottom_->mutable_cpu_data()[0] = 4; + this->blob_bottom_->mutable_cpu_data()[1] = 2; + this->blob_bottom_->mutable_cpu_data()[2] = 2; + this->blob_bottom_->mutable_cpu_data()[3] = 3; + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, -2); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_euclidean_loss_layer.cpp b/3rdparty/caffe/src/caffe/test/test_euclidean_loss_layer.cpp new file mode 100644 index 00000000..b026f5b2 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_euclidean_loss_layer.cpp @@ -0,0 +1,89 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/euclidean_loss_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class EuclideanLossLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + EuclideanLossLayerTest() + : blob_bottom_data_(new Blob(10, 5, 1, 1)), + blob_bottom_label_(new Blob(10, 5, 1, 1)), + blob_top_loss_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_data_); + filler.Fill(this->blob_bottom_label_); + blob_bottom_vec_.push_back(blob_bottom_label_); + blob_top_vec_.push_back(blob_top_loss_); + } + virtual ~EuclideanLossLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_label_; + delete blob_top_loss_; + } + + void TestForward() { + // Get the loss without a specified objective weight -- should be + // equivalent to explicitly specifying a weight of 1. + LayerParameter layer_param; + EuclideanLossLayer layer_weight_1(layer_param); + layer_weight_1.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype loss_weight_1 = + layer_weight_1.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Get the loss again with a different objective weight; check that it is + // scaled appropriately. + const Dtype kLossWeight = 3.7; + layer_param.add_loss_weight(kLossWeight); + EuclideanLossLayer layer_weight_2(layer_param); + layer_weight_2.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype loss_weight_2 = + layer_weight_2.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype kErrorMargin = 1e-5; + EXPECT_NEAR(loss_weight_1 * kLossWeight, loss_weight_2, kErrorMargin); + // Make sure the loss is non-trivial. + const Dtype kNonTrivialAbsThresh = 1e-1; + EXPECT_GE(fabs(loss_weight_1), kNonTrivialAbsThresh); + } + + Blob* const blob_bottom_data_; + Blob* const blob_bottom_label_; + Blob* const blob_top_loss_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(EuclideanLossLayerTest, TestDtypesAndDevices); + +TYPED_TEST(EuclideanLossLayerTest, TestForward) { + this->TestForward(); +} + +TYPED_TEST(EuclideanLossLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const Dtype kLossWeight = 3.7; + layer_param.add_loss_weight(kLossWeight); + EuclideanLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 1e-2, 1701); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_filler.cpp b/3rdparty/caffe/src/caffe/test/test_filler.cpp new file mode 100644 index 00000000..26e9b217 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_filler.cpp @@ -0,0 +1,241 @@ +#include "gtest/gtest.h" + +#include "caffe/filler.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class ConstantFillerTest : public ::testing::Test { + protected: + ConstantFillerTest() + : blob_(new Blob(2, 3, 4, 5)), + filler_param_() { + filler_param_.set_value(10.); + filler_.reset(new ConstantFiller(filler_param_)); + filler_->Fill(blob_); + } + virtual ~ConstantFillerTest() { delete blob_; } + Blob* const blob_; + FillerParameter filler_param_; + shared_ptr > filler_; +}; + +TYPED_TEST_CASE(ConstantFillerTest, TestDtypes); + +TYPED_TEST(ConstantFillerTest, TestFill) { + EXPECT_TRUE(this->blob_); + const int count = this->blob_->count(); + const TypeParam* data = this->blob_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_GE(data[i], this->filler_param_.value()); + } +} + + +template +class UniformFillerTest : public ::testing::Test { + protected: + UniformFillerTest() + : blob_(new Blob(2, 3, 4, 5)), + filler_param_() { + filler_param_.set_min(1.); + filler_param_.set_max(2.); + filler_.reset(new UniformFiller(filler_param_)); + filler_->Fill(blob_); + } + virtual ~UniformFillerTest() { delete blob_; } + Blob* const blob_; + FillerParameter filler_param_; + shared_ptr > filler_; +}; + +TYPED_TEST_CASE(UniformFillerTest, TestDtypes); + +TYPED_TEST(UniformFillerTest, TestFill) { + EXPECT_TRUE(this->blob_); + const int count = this->blob_->count(); + const TypeParam* data = this->blob_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_GE(data[i], this->filler_param_.min()); + EXPECT_LE(data[i], this->filler_param_.max()); + } +} + +template +class PositiveUnitballFillerTest : public ::testing::Test { + protected: + PositiveUnitballFillerTest() + : blob_(new Blob(2, 3, 4, 5)), + filler_param_() { + filler_.reset(new PositiveUnitballFiller(filler_param_)); + filler_->Fill(blob_); + } + virtual ~PositiveUnitballFillerTest() { delete blob_; } + Blob* const blob_; + FillerParameter filler_param_; + shared_ptr > filler_; +}; + +TYPED_TEST_CASE(PositiveUnitballFillerTest, TestDtypes); + +TYPED_TEST(PositiveUnitballFillerTest, TestFill) { + EXPECT_TRUE(this->blob_); + const int num = this->blob_->num(); + const int count = this->blob_->count(); + const int dim = count / num; + const TypeParam* data = this->blob_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_GE(data[i], 0); + EXPECT_LE(data[i], 1); + } + for (int i = 0; i < num; ++i) { + TypeParam sum = 0; + for (int j = 0; j < dim; ++j) { + sum += data[i * dim + j]; + } + EXPECT_GE(sum, 0.999); + EXPECT_LE(sum, 1.001); + } +} + +template +class GaussianFillerTest : public ::testing::Test { + protected: + GaussianFillerTest() + : blob_(new Blob(2, 3, 4, 5)), + filler_param_() { + filler_param_.set_mean(10.); + filler_param_.set_std(0.1); + filler_.reset(new GaussianFiller(filler_param_)); + filler_->Fill(blob_); + } + virtual ~GaussianFillerTest() { delete blob_; } + Blob* const blob_; + FillerParameter filler_param_; + shared_ptr > filler_; +}; + +TYPED_TEST_CASE(GaussianFillerTest, TestDtypes); + +TYPED_TEST(GaussianFillerTest, TestFill) { + EXPECT_TRUE(this->blob_); + const int count = this->blob_->count(); + const TypeParam* data = this->blob_->cpu_data(); + TypeParam mean = 0.; + TypeParam var = 0.; + for (int i = 0; i < count; ++i) { + mean += data[i]; + var += (data[i] - this->filler_param_.mean()) * + (data[i] - this->filler_param_.mean()); + } + mean /= count; + var /= count; + // Very loose test. + EXPECT_GE(mean, this->filler_param_.mean() - this->filler_param_.std() * 5); + EXPECT_LE(mean, this->filler_param_.mean() + this->filler_param_.std() * 5); + TypeParam target_var = this->filler_param_.std() * this->filler_param_.std(); + EXPECT_GE(var, target_var / 5.); + EXPECT_LE(var, target_var * 5.); +} + +template +class XavierFillerTest : public ::testing::Test { + protected: + XavierFillerTest() + : blob_(new Blob(1000, 2, 4, 5)), + filler_param_() { + } + virtual void test_params(FillerParameter_VarianceNorm variance_norm, + Dtype n) { + this->filler_param_.set_variance_norm(variance_norm); + this->filler_.reset(new XavierFiller(this->filler_param_)); + this->filler_->Fill(blob_); + EXPECT_TRUE(this->blob_); + const int count = this->blob_->count(); + const Dtype* data = this->blob_->cpu_data(); + Dtype mean = 0.; + Dtype ex2 = 0.; + for (int i = 0; i < count; ++i) { + mean += data[i]; + ex2 += data[i] * data[i]; + } + mean /= count; + ex2 /= count; + Dtype std = sqrt(ex2 - mean*mean); + Dtype target_std = sqrt(2.0 / n); + EXPECT_NEAR(mean, 0.0, 0.1); + EXPECT_NEAR(std, target_std, 0.1); + } + virtual ~XavierFillerTest() { delete blob_; } + Blob* const blob_; + FillerParameter filler_param_; + shared_ptr > filler_; +}; + +TYPED_TEST_CASE(XavierFillerTest, TestDtypes); + +TYPED_TEST(XavierFillerTest, TestFillFanIn) { + TypeParam n = 2*4*5; + this->test_params(FillerParameter_VarianceNorm_FAN_IN, n); +} +TYPED_TEST(XavierFillerTest, TestFillFanOut) { + TypeParam n = 1000*4*5; + this->test_params(FillerParameter_VarianceNorm_FAN_OUT, n); +} +TYPED_TEST(XavierFillerTest, TestFillAverage) { + TypeParam n = (2*4*5 + 1000*4*5) / 2.0; + this->test_params(FillerParameter_VarianceNorm_AVERAGE, n); +} + +template +class MSRAFillerTest : public ::testing::Test { + protected: + MSRAFillerTest() + : blob_(new Blob(1000, 2, 4, 5)), + filler_param_() { + } + virtual void test_params(FillerParameter_VarianceNorm variance_norm, + Dtype n) { + this->filler_param_.set_variance_norm(variance_norm); + this->filler_.reset(new MSRAFiller(this->filler_param_)); + this->filler_->Fill(blob_); + EXPECT_TRUE(this->blob_); + const int count = this->blob_->count(); + const Dtype* data = this->blob_->cpu_data(); + Dtype mean = 0.; + Dtype ex2 = 0.; + for (int i = 0; i < count; ++i) { + mean += data[i]; + ex2 += data[i] * data[i]; + } + mean /= count; + ex2 /= count; + Dtype std = sqrt(ex2 - mean*mean); + Dtype target_std = sqrt(2.0 / n); + EXPECT_NEAR(mean, 0.0, 0.1); + EXPECT_NEAR(std, target_std, 0.1); + } + virtual ~MSRAFillerTest() { delete blob_; } + Blob* const blob_; + FillerParameter filler_param_; + shared_ptr > filler_; +}; + +TYPED_TEST_CASE(MSRAFillerTest, TestDtypes); + +TYPED_TEST(MSRAFillerTest, TestFillFanIn) { + TypeParam n = 2*4*5; + this->test_params(FillerParameter_VarianceNorm_FAN_IN, n); +} +TYPED_TEST(MSRAFillerTest, TestFillFanOut) { + TypeParam n = 1000*4*5; + this->test_params(FillerParameter_VarianceNorm_FAN_OUT, n); +} +TYPED_TEST(MSRAFillerTest, TestFillAverage) { + TypeParam n = (2*4*5 + 1000*4*5) / 2.0; + this->test_params(FillerParameter_VarianceNorm_AVERAGE, n); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_filter_layer.cpp b/3rdparty/caffe/src/caffe/test/test_filter_layer.cpp new file mode 100644 index 00000000..9ea2b8b2 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_filter_layer.cpp @@ -0,0 +1,126 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/filter_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class FilterLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + FilterLayerTest() + : blob_bottom_data_(new Blob(4, 3, 6, 4)), + blob_bottom_labels_(new Blob(4, 1, 1, 1)), + blob_bottom_selector_(new Blob(4, 1, 1, 1)), + blob_top_data_(new Blob()), + blob_top_labels_(new Blob()) {} + virtual void SetUp() { + // fill the values + Caffe::set_random_seed(1890); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + // fill the selector blob + Dtype* bottom_data_selector_ = blob_bottom_selector_->mutable_cpu_data(); + bottom_data_selector_[0] = 0; + bottom_data_selector_[1] = 1; + bottom_data_selector_[2] = 1; + bottom_data_selector_[3] = 0; + // fill the other bottom blobs + filler.Fill(blob_bottom_data_); + for (int i = 0; i < blob_bottom_labels_->count(); ++i) { + blob_bottom_labels_->mutable_cpu_data()[i] = caffe_rng_rand() % 5; + } + blob_bottom_vec_.push_back(blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_labels_); + blob_bottom_vec_.push_back(blob_bottom_selector_); + blob_top_vec_.push_back(blob_top_data_); + blob_top_vec_.push_back(blob_top_labels_); + } + virtual ~FilterLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_labels_; + delete blob_bottom_selector_; + delete blob_top_data_; + delete blob_top_labels_; + } + Blob* const blob_bottom_data_; + Blob* const blob_bottom_labels_; + Blob* const blob_bottom_selector_; + // blobs for the top of FilterLayer + Blob* const blob_top_data_; + Blob* const blob_top_labels_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(FilterLayerTest, TestDtypesAndDevices); + +TYPED_TEST(FilterLayerTest, TestReshape) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + FilterLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Reshape(this->blob_bottom_vec_, this->blob_top_vec_); + // In the test first and last items should have been filtered + // so we just expect 2 remaining items + EXPECT_EQ(this->blob_top_data_->shape(0), 2); + EXPECT_EQ(this->blob_top_labels_->shape(0), 2); + EXPECT_GT(this->blob_bottom_data_->shape(0), + this->blob_top_data_->shape(0)); + EXPECT_GT(this->blob_bottom_labels_->shape(0), + this->blob_top_labels_->shape(0)); + for (int i = 1; i < this->blob_bottom_labels_->num_axes(); i++) { + EXPECT_EQ(this->blob_bottom_labels_->shape(i), + this->blob_top_labels_->shape(i)); + } +} + +TYPED_TEST(FilterLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + FilterLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Reshape(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_labels_->data_at(0, 0, 0, 0), + this->blob_bottom_labels_->data_at(1, 0, 0, 0)); + EXPECT_EQ(this->blob_top_labels_->data_at(1, 0, 0, 0), + this->blob_bottom_labels_->data_at(2, 0, 0, 0)); + + int dim = this->blob_top_data_->count() / + this->blob_top_data_->shape(0); + const Dtype* top_data = this->blob_top_data_->cpu_data(); + const Dtype* bottom_data = this->blob_bottom_data_->cpu_data(); + // selector is 0 1 1 0, so we need to compare bottom(1,c,h,w) + // with top(0,c,h,w) and bottom(2,c,h,w) with top(1,c,h,w) + bottom_data += dim; // bottom(1,c,h,w) + for (size_t n = 0; n < dim; n++) + EXPECT_EQ(top_data[n], bottom_data[n]); + + bottom_data += dim; // bottom(2,c,h,w) + top_data += dim; // top(1,c,h,w) + for (size_t n = 0; n < dim; n++) + EXPECT_EQ(top_data[n], bottom_data[n]); +} + +TYPED_TEST(FilterLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + FilterLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + // check only input 0 (data) because labels and selector + // don't need backpropagation + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_flatten_layer.cpp b/3rdparty/caffe/src/caffe/test/test_flatten_layer.cpp new file mode 100644 index 00000000..d929ac7a --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_flatten_layer.cpp @@ -0,0 +1,108 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/flatten_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class FlattenLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + FlattenLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 5)), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~FlattenLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(FlattenLayerTest, TestDtypesAndDevices); + +TYPED_TEST(FlattenLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + FlattenLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 2); + EXPECT_EQ(this->blob_top_->shape(0), 2); + EXPECT_EQ(this->blob_top_->shape(1), 3 * 6 * 5); +} + +TYPED_TEST(FlattenLayerTest, TestSetupWithAxis) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_flatten_param()->set_axis(2); + FlattenLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 3); + EXPECT_EQ(this->blob_top_->shape(0), 2); + EXPECT_EQ(this->blob_top_->shape(1), 3); + EXPECT_EQ(this->blob_top_->shape(2), 6 * 5); +} + +TYPED_TEST(FlattenLayerTest, TestSetupWithEndAxis) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_flatten_param()->set_end_axis(-2); + FlattenLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 3); + EXPECT_EQ(this->blob_top_->shape(0), 2); + EXPECT_EQ(this->blob_top_->shape(1), 3 * 6); + EXPECT_EQ(this->blob_top_->shape(2), 5); +} + +TYPED_TEST(FlattenLayerTest, TestSetupWithStartAndEndAxis) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_flatten_param()->set_axis(0); + layer_param.mutable_flatten_param()->set_end_axis(-2); + FlattenLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 2); + EXPECT_EQ(this->blob_top_->shape(0), 2 * 3 * 6); + EXPECT_EQ(this->blob_top_->shape(1), 5); +} + +TYPED_TEST(FlattenLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + FlattenLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int c = 0; c < 3 * 6 * 5; ++c) { + EXPECT_EQ(this->blob_top_->data_at(0, c, 0, 0), + this->blob_bottom_->data_at(0, c / (6 * 5), (c / 5) % 6, c % 5)); + EXPECT_EQ(this->blob_top_->data_at(1, c, 0, 0), + this->blob_bottom_->data_at(1, c / (6 * 5), (c / 5) % 6, c % 5)); + } +} + +TYPED_TEST(FlattenLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + FlattenLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_gradient_based_solver.cpp b/3rdparty/caffe/src/caffe/test/test_gradient_based_solver.cpp new file mode 100644 index 00000000..f4395f53 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_gradient_based_solver.cpp @@ -0,0 +1,1289 @@ +#include +#include +#include +#include + +#include "google/protobuf/text_format.h" + +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/parallel.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/sgd_solvers.hpp" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +using std::ostringstream; + +namespace caffe { + +template +class GradientBasedSolverTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + GradientBasedSolverTest() : + seed_(1701), num_(4), channels_(3), height_(10), width_(10), + share_(false) { + input_file_ = new string( + ABS_TEST_DATA_DIR "/solver_data_list.txt"); + } + ~GradientBasedSolverTest() { + delete input_file_; + } + + string snapshot_prefix_; + shared_ptr > solver_; +#ifdef USE_NCCL + shared_ptr > nccl_; +#endif + int seed_; + // Dimensions are determined by generate_sample_data.py + // TODO this is brittle and the hdf5 file should be checked instead. + int num_, channels_, height_, width_; + bool share_; + Dtype delta_; // Stability constant for RMSProp, AdaGrad, AdaDelta and Adam + + // Test data: check out generate_sample_data.py in the same directory. + string* input_file_; + + virtual void InitSolver(const SolverParameter& param) = 0; + + virtual void InitSolverFromProtoString(const string& proto) { + SolverParameter param; + CHECK(google::protobuf::TextFormat::ParseFromString(proto, ¶m)); + // Set the solver_mode according to current Caffe::mode. + switch (Caffe::mode()) { + case Caffe::CPU: + param.set_solver_mode(SolverParameter_SolverMode_CPU); + break; + case Caffe::GPU: + param.set_solver_mode(SolverParameter_SolverMode_GPU); + break; + default: + LOG(FATAL) << "Unknown Caffe mode: " << Caffe::mode(); + } + InitSolver(param); + delta_ = param.delta(); + } + + string RunLeastSquaresSolver(const Dtype learning_rate, + const Dtype weight_decay, const Dtype momentum, const int num_iters, + const int iter_size = 1, const int devices = 1, + const bool snapshot = false, const char* from_snapshot = NULL) { + ostringstream proto; + int device_id = 0; +#ifndef CPU_ONLY + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaGetDevice(&device_id)); + } +#endif + proto << + "snapshot_after_train: " << snapshot << " " + "max_iter: " << num_iters << " " + "base_lr: " << learning_rate << " " + "lr_policy: 'fixed' " + "iter_size: " << iter_size << " " + "device_id: " << device_id << " " + "layer_wise_reduce: " << (!share_) << " " + "net_param { " + " name: 'TestNetwork' " + " layer { " + " name: 'data' " + " type: 'HDF5Data' " + " hdf5_data_param { " + " source: '" << *(this->input_file_) << "' " + " batch_size: " << num_ / iter_size << " " + " } " + " top: 'data' " + " top: 'targets' " + " } "; + if (share_) { + proto << + " layer { " + " name: 'slice' " + " type: 'Slice' " + " bottom: 'data' " + " top: 'data1' " + " top: 'data2' " + " slice_param { " + " axis: 0 " + " } " + " } "; + } + proto << + " layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " param { name: 'weights' } " + " param { name: 'bias' } " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 1.0 " + " } " + " bias_filler { " + " type: 'gaussian' " + " std: 1.0 " + " } " + " } " + " bottom: '" << string(share_ ? "data1": "data") << "' " + " top: '" << string(share_ ? "innerprod1": "innerprod") << "' " + " } "; + if (share_) { + proto << + " layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " param { name: 'weights' } " + " param { name: 'bias' } " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 1.0 " + " } " + " bias_filler { " + " type: 'gaussian' " + " std: 1.0 " + " } " + " } " + " bottom: 'data2' " + " top: 'innerprod2' " + " } " + " layer { " + " name: 'concat' " + " type: 'Concat' " + " bottom: 'innerprod1' " + " bottom: 'innerprod2' " + " top: 'innerprod' " + " concat_param { " + " axis: 0 " + " } " + " } "; + } + proto << + " layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod' " + " bottom: 'targets' " + " } " + "} "; + if (weight_decay != 0) { + proto << "weight_decay: " << weight_decay << " "; + } + if (momentum != 0) { + proto << "momentum: " << momentum << " "; + } + MakeTempDir(&snapshot_prefix_); + proto << "snapshot_prefix: '" << snapshot_prefix_ << "/' "; + if (snapshot) { + proto << "snapshot: " << num_iters << " "; + } + Caffe::set_random_seed(this->seed_); + this->InitSolverFromProtoString(proto.str()); + if (from_snapshot) { + this->solver_->Restore(from_snapshot); + for (int i = 0; i < this->solver_->iter(); ++i) { + this->solver_->net()->Forward(); + } + } + if (devices == 1) { + this->solver_->Solve(); + } else { + LOG(INFO) << "Multi-GPU test on " << devices << " devices"; + vector gpus; + // put current device at the beginning + int device_id = solver_->param().device_id(); + gpus.push_back(device_id); + for (int i = 0; gpus.size() < devices; ++i) { + if (i != device_id) + gpus.push_back(i); + } + Caffe::set_solver_count(gpus.size()); +#ifdef USE_NCCL + this->nccl_.reset(new NCCL(this->solver_)); + this->nccl_->Run(gpus, from_snapshot); +#endif + Caffe::set_solver_count(1); + } + if (snapshot) { + ostringstream resume_file; + resume_file << snapshot_prefix_ << "/_iter_" << num_iters + << ".solverstate"; + string resume_filename = resume_file.str(); + return resume_filename; + } + return string(); + } + + // Compute an update value given the current state of the train net, + // using the analytical formula for the least squares gradient. + // updated_params will store the updated weight and bias results, + // using the blobs' diffs to hold the update values themselves. + void ComputeLeastSquaresUpdate(const Dtype learning_rate, + const Dtype weight_decay, const Dtype momentum, const int num_iters, + vector > >* updated_params) { + const int N = num_; + const int D = channels_ * height_ * width_; + + // Run a forward pass, and manually compute the update values from the + // result. + Net& net = *this->solver_->net(); + net.Forward(); + ASSERT_TRUE(net.has_blob("data")); + const Blob& data = *net.blob_by_name("data"); + ASSERT_TRUE(net.has_blob("targets")); + const Blob& targets = *net.blob_by_name("targets"); + ASSERT_TRUE(net.has_layer("innerprod")); + const vector > >& param_blobs = + net.layer_by_name("innerprod")->blobs(); + const int num_param_blobs = 2; + ASSERT_EQ(num_param_blobs, param_blobs.size()); + const Blob& weights = *param_blobs[0]; + const Blob& bias = *param_blobs[1]; + ASSERT_EQ(D * N, data.count()); + ASSERT_EQ(N, targets.count()); + ASSERT_EQ(D, weights.count()); + ASSERT_EQ(1, bias.count()); + + updated_params->clear(); + updated_params->resize(num_param_blobs); + for (int i = 0; i < num_param_blobs; ++i) { + (*updated_params)[i].reset(new Blob()); + } + Blob& updated_weights = *(*updated_params)[0]; + updated_weights.ReshapeLike(weights); + Blob& updated_bias = *(*updated_params)[1]; + updated_bias.ReshapeLike(bias); + + for (int i = 0; i <= D; ++i) { + // Compute the derivative with respect to the ith weight (i.e., the ith + // element of the gradient). + Dtype grad = 0; + for (int j = 0; j <= D; ++j) { + // Compute element (i, j) of X^T * X. + Dtype element = 0; + for (int k = 0; k < N; ++k) { + // (i, k) in X^T (== (k, i) in X) times (k, j) in X. + const Dtype element_i = (i == D) ? 1 : data.cpu_data()[k * D + i]; + const Dtype element_j = (j == D) ? 1 : data.cpu_data()[k * D + j]; + element += element_i * element_j; + } + if (j == D) { + grad += element * bias.cpu_data()[0]; + } else { + grad += element * weights.cpu_data()[j]; + } + } + for (int k = 0; k < N; ++k) { + const Dtype element_i = (i == D) ? 1 : data.cpu_data()[k * D + i]; + grad -= element_i * targets.cpu_data()[k]; + } + // Scale the gradient over the N samples. + grad /= N; + // Add the weight decay to the gradient. + grad += weight_decay * + ((i == D) ? bias.cpu_data()[0] : weights.cpu_data()[i]); + // Finally, compute update. + const vector > >& history = solver_->history(); + if (solver_->type() != string("AdaDelta") + && solver_->type() != string("Adam")) { + ASSERT_EQ(2, history.size()); // 1 blob for weights, 1 for bias + } else { + ASSERT_EQ(4, history.size()); // additional blobs for update history + } + Dtype update_value = learning_rate * grad; + const Dtype history_value = (i == D) ? + history[1]->cpu_data()[0] : history[0]->cpu_data()[i]; + const Dtype temp = momentum * history_value; + if (solver_->type() == string("SGD")) { + update_value += temp; + } else if (solver_->type() == string("Nesterov")) { + update_value += temp; + // step back then over-step + update_value = (1 + momentum) * update_value - temp; + } else if (solver_->type() == string("AdaGrad")) { + update_value /= std::sqrt(history_value + grad * grad) + delta_; + } else if (solver_->type() == string("RMSProp")) { + const Dtype rms_decay = 0.95; + update_value /= std::sqrt(rms_decay*history_value + + grad * grad * (1 - rms_decay)) + delta_; + } else if (solver_->type() == string("AdaDelta")) { + const Dtype update_history_value = (i == D) ? + history[1 + num_param_blobs]->cpu_data()[0] : + history[0 + num_param_blobs]->cpu_data()[i]; + const Dtype weighted_gradient_average = + momentum * history_value + (1 - momentum) * (grad * grad); + update_value = grad * std::sqrt((update_history_value + delta_) / + (weighted_gradient_average + delta_)) * learning_rate; + // not actually needed, just here for illustrative purposes + // const Dtype weighted_update_average = + // momentum * update_history_value + (1 - momentum) * (update_value); + } else if (solver_->type() == string("Adam")) { + const Dtype momentum2 = 0.999; + const Dtype m = history_value; + const Dtype v = (i == D) ? + history[1 + num_param_blobs]->cpu_data()[0] : + history[0 + num_param_blobs]->cpu_data()[i]; + const Dtype val_m = (1 - momentum) * grad + momentum * m; + const Dtype val_v = (1 - momentum2) * grad * grad + momentum2 * v; + Dtype alpha_t = learning_rate * + std::sqrt(Dtype(1) - pow(momentum2, num_iters)) / + (Dtype(1.) - pow(momentum, num_iters)); + update_value = alpha_t * val_m / (std::sqrt(val_v) + delta_); + } else { + LOG(FATAL) << "Unknown solver type: " << solver_->type(); + } + if (i == D) { + updated_bias.mutable_cpu_diff()[0] = update_value; + updated_bias.mutable_cpu_data()[0] = bias.cpu_data()[0] - update_value; + } else { + updated_weights.mutable_cpu_diff()[i] = update_value; + updated_weights.mutable_cpu_data()[i] = + weights.cpu_data()[i] - update_value; + } + } + } + + void CheckLeastSquaresUpdate( + const vector > >& updated_params) { + const int D = channels_ * height_ * width_; + + const Blob& updated_weights = *updated_params[0]; + const Blob& updated_bias = *updated_params[1]; + + Net& net = *this->solver_->net(); + ASSERT_TRUE(net.has_layer("innerprod")); + const vector > >& param_blobs = + net.layer_by_name("innerprod")->blobs(); + ASSERT_EQ(2, param_blobs.size()); + const Blob& solver_updated_weights = *param_blobs[0]; + ASSERT_EQ(D, solver_updated_weights.count()); + const double kPrecision = 1e-2; + const double kMinPrecision = 1e-7; + for (int i = 0; i < D; ++i) { + const Dtype expected_updated_weight = updated_weights.cpu_data()[i]; + const Dtype solver_updated_weight = solver_updated_weights.cpu_data()[i]; + const Dtype error_margin = std::max(kMinPrecision, kPrecision * + std::min(fabs(expected_updated_weight), fabs(solver_updated_weight))); + EXPECT_NEAR(expected_updated_weight, solver_updated_weight, error_margin); + } + const Blob& solver_updated_bias_blob = *param_blobs[1]; + ASSERT_EQ(1, solver_updated_bias_blob.count()); + const Dtype expected_updated_bias = updated_bias.cpu_data()[0]; + const Dtype solver_updated_bias = solver_updated_bias_blob.cpu_data()[0]; + const Dtype error_margin = std::max(kMinPrecision, kPrecision * + std::min(fabs(expected_updated_bias), fabs(solver_updated_bias))); + EXPECT_NEAR(expected_updated_bias, solver_updated_bias, error_margin); + + // Check the solver's history -- should contain the previous update value. + if (solver_->type() == string("SGD")) { + const vector > >& history = solver_->history(); + ASSERT_EQ(2, history.size()); + for (int i = 0; i < D; ++i) { + const Dtype expected_history = updated_weights.cpu_diff()[i]; + const Dtype solver_history = history[0]->cpu_data()[i]; + const Dtype error_margin_hist = std::max(kMinPrecision, kPrecision * + std::min(fabs(expected_history), fabs(solver_history))); + EXPECT_NEAR(expected_history, solver_history, error_margin_hist); + } + const Dtype expected_history = updated_bias.cpu_diff()[0]; + const Dtype solver_history = history[1]->cpu_data()[0]; + const Dtype error_margin_hist = std::max(kMinPrecision, kPrecision * + std::min(fabs(expected_history), fabs(solver_history))); + EXPECT_NEAR(expected_history, solver_history, error_margin_hist); + } + } + + void CheckAccumulation(const Dtype kLearningRate, const Dtype kWeightDecay, + const Dtype kMomentum, const int kNumIters, const int kIterSize) { + const double kPrecision = 1e-2; + const double kMinPrecision = 1e-7; + // Solve without accumulation and save parameters. + this->RunLeastSquaresSolver(kLearningRate, kWeightDecay, kMomentum, + kNumIters); + // Save parameters for comparison. + Net& net = *this->solver_->net(); + const vector > >& param_blobs = + net.layer_by_name("innerprod")->blobs(); + vector > > noaccum_params(param_blobs.size()); + for (int i = 0; i < param_blobs.size(); ++i) { + noaccum_params[i].reset(new Blob()); + noaccum_params[i]->CopyFrom(*param_blobs[i], false, true); + } + // Solve by equivalent accumulation of gradients over divided batches. + this->RunLeastSquaresSolver(kLearningRate, kWeightDecay, kMomentum, + kNumIters, kIterSize); + Net& net_accum = *this->solver_->net(); + const vector > >& accum_params = + net_accum.layer_by_name("innerprod")->blobs(); + // Compare accumulated parameters against no accumulation standard. + const int D = this->channels_ * this->height_ * this->width_; + for (int i = 0; i < D; ++i) { + const Dtype expected_param = noaccum_params[0]->cpu_data()[i]; + const Dtype accum_param = accum_params[0]->cpu_data()[i]; + const Dtype error_margin = std::max(kMinPrecision, kPrecision * + std::min(fabs(expected_param), fabs(accum_param))); + EXPECT_NEAR(expected_param, accum_param, error_margin); + } + ASSERT_EQ(1, accum_params[1]->count()); + const Dtype expected_bias = noaccum_params[1]->cpu_data()[0]; + const Dtype accum_bias = accum_params[1]->cpu_data()[0]; + const Dtype error_margin = std::max(kMinPrecision, kPrecision * + std::min(fabs(expected_bias), fabs(accum_bias))); + EXPECT_NEAR(expected_bias, accum_bias, error_margin); + } + + // Test that the correct update is computed for a regularized least squares + // problem: + // + // E = (1/(2n)) || X w - y ||^2 + (lambda / 2) || w ||^2 + // \nabla_w E = (1/n) (X^T X w - X^T y) + lambda * w + // + // X \in R^{n x (d+1)} (each example is a row, (d+1)th element is always 1) + // w \in R^{(d+1) x 1} ((d+1)th element is the bias) + // y \in R^{n x 1} + // lambda is weight_decay + // + // TestLeastSquaresUpdate works "inductively", assuming that the solver + // correctly updates the net K (= iter_to_check) times, then given the history + // from the Kth update, we compute the (K+1)th update and check that it + // matches the solver's (K+1)th update. + void TestLeastSquaresUpdate(const Dtype learning_rate = 1.0, + const Dtype weight_decay = 0.0, const Dtype momentum = 0.0, + const int iter_to_check = 0) { + const int kNum = num_; + const int kIterSize = 1; + // Test over all numbers of devices. + int available_devices = 1; +#ifdef USE_NCCL + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaGetDeviceCount(&available_devices)); + } +#endif + // Takes a while to test all sizes for each test so sparse + vector sizes; + sizes.push_back(1); + if (available_devices >= 2) { + sizes.push_back(2); + } + if (available_devices >= 3) { + sizes.push_back(3); + } + if (available_devices >= 8) { + sizes.push_back(8); + } + if (available_devices >= 16) { + sizes.push_back(16); + } + for (int i = 0; i < sizes.size(); ++i) { + int devices = sizes[i]; + // Configure batch size for single / multi device equivalence. + // Constant data is needed for multi device as for accumulation. + num_ = kNum * devices; + + // Initialize the solver and run K (= iter_to_check) solver iterations + // (on single device). + RunLeastSquaresSolver(learning_rate, weight_decay, momentum, + iter_to_check, kIterSize, 1); + + // Compute the (K+1)th update using the analytic least squares gradient. + vector > > updated_params; + ComputeLeastSquaresUpdate(learning_rate, weight_decay, momentum, + iter_to_check + 1, &updated_params); + + // Reinitialize the solver and run K+1 solver iterations. + num_ = kNum; + RunLeastSquaresSolver(learning_rate, weight_decay, momentum, + iter_to_check + 1, kIterSize, devices); + + // Check that the solver's solution matches ours. + CheckLeastSquaresUpdate(updated_params); + } + } + + void TestSnapshot(const Dtype learning_rate = 1.0, + const Dtype weight_decay = 0.0, const Dtype momentum = 0.0, + const int num_iters = 1) { + // Run the solver for num_iters * 2 iterations. + const int total_num_iters = num_iters * 2; + bool snapshot = false; + const int kIterSize = 1; + const int kDevices = 1; + RunLeastSquaresSolver(learning_rate, weight_decay, momentum, + total_num_iters, kIterSize, kDevices, snapshot); + + // Save the resulting param values. + vector > > param_copies; + const vector*>& orig_params = + solver_->net()->learnable_params(); + param_copies.resize(orig_params.size()); + for (int i = 0; i < orig_params.size(); ++i) { + param_copies[i].reset(new Blob()); + const bool kReshape = true; + for (int copy_diff = false; copy_diff <= true; ++copy_diff) { + param_copies[i]->CopyFrom(*orig_params[i], copy_diff, kReshape); + } + } + + // Save the solver history + vector > > history_copies; + const vector > >& orig_history = solver_->history(); + history_copies.resize(orig_history.size()); + for (int i = 0; i < orig_history.size(); ++i) { + history_copies[i].reset(new Blob()); + const bool kReshape = true; + for (int copy_diff = false; copy_diff <= true; ++copy_diff) { + history_copies[i]->CopyFrom(*orig_history[i], copy_diff, kReshape); + } + } + + // Run the solver for num_iters iterations and snapshot. + snapshot = true; + string snapshot_name = RunLeastSquaresSolver(learning_rate, weight_decay, + momentum, num_iters, kIterSize, kDevices, snapshot); + + // Reinitialize the solver and run for num_iters more iterations. + snapshot = false; + RunLeastSquaresSolver(learning_rate, weight_decay, momentum, + total_num_iters, kIterSize, kDevices, + snapshot, snapshot_name.c_str()); + + // Check that params now match. + const vector*>& params = solver_->net()->learnable_params(); + for (int i = 0; i < params.size(); ++i) { + for (int j = 0; j < params[i]->count(); ++j) { + EXPECT_FLOAT_EQ(param_copies[i]->cpu_data()[j], + params[i]->cpu_data()[j]) + << "param " << i << " data differed at dim " << j; + EXPECT_FLOAT_EQ(param_copies[i]->cpu_diff()[j], + params[i]->cpu_diff()[j]) + << "param " << i << " diff differed at dim " << j; + } + } + + // Check that history now matches. + const vector > >& history = solver_->history(); + for (int i = 0; i < history.size(); ++i) { + for (int j = 0; j < history[i]->count(); ++j) { + EXPECT_FLOAT_EQ(history_copies[i]->cpu_data()[j], + history[i]->cpu_data()[j]) + << "history blob " << i << " data differed at dim " << j; + EXPECT_FLOAT_EQ(history_copies[i]->cpu_diff()[j], + history[i]->cpu_diff()[j]) + << "history blob " << i << " diff differed at dim " << j; + } + } + } +}; + + +template +class SGDSolverTest : public GradientBasedSolverTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + virtual void InitSolver(const SolverParameter& param) { + this->solver_.reset(new SGDSolver(param)); + } +}; + +TYPED_TEST_CASE(SGDSolverTest, TestDtypesAndDevices); + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdate) { + this->TestLeastSquaresUpdate(); +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateLROneHundredth) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + this->TestLeastSquaresUpdate(kLearningRate); +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithWeightDecay) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 1; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithWeightDecayMultiIter) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithMomentum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0; + const Dtype kMomentum = 0.5; + const int kNumIters = 1; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithMomentumMultiIter) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0; + const Dtype kMomentum = 0.5; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithEverything) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.5; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithEverythingShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.5; + const int kNumIters = 4; + this->share_ = true; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithEverythingAccum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + const int kIterSize = 2; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(SGDSolverTest, TestLeastSquaresUpdateWithEverythingAccumShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + const int kIterSize = 2; + this->share_ = true; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(SGDSolverTest, TestSnapshot) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(SGDSolverTest, TestSnapshotShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + this->share_ = true; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + + +template +class AdaGradSolverTest : public GradientBasedSolverTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + virtual void InitSolver(const SolverParameter& param) { + this->solver_.reset(new AdaGradSolver(param)); + } +}; + +TYPED_TEST_CASE(AdaGradSolverTest, TestDtypesAndDevices); + +TYPED_TEST(AdaGradSolverTest, TestAdaGradLeastSquaresUpdate) { + this->TestLeastSquaresUpdate(); +} + +TYPED_TEST(AdaGradSolverTest, TestAdaGradLeastSquaresUpdateLROneHundredth) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + this->TestLeastSquaresUpdate(kLearningRate); +} + +TYPED_TEST(AdaGradSolverTest, TestAdaGradLeastSquaresUpdateWithWeightDecay) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay); +} + +TYPED_TEST(AdaGradSolverTest, TestAdaGradLeastSquaresUpdateWithEverything) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdaGradSolverTest, + TestAdaGradLeastSquaresUpdateWithEverythingShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + this->share_ = true; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdaGradSolverTest, TestLeastSquaresUpdateWithEverythingAccum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + const int kIterSize = 2; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(AdaGradSolverTest, TestLeastSquaresUpdateWithEverythingAccumShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + const int kIterSize = 2; + this->share_ = true; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(AdaGradSolverTest, TestSnapshot) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdaGradSolverTest, TestSnapshotShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + this->share_ = true; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + + +template +class NesterovSolverTest : public GradientBasedSolverTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + virtual void InitSolver(const SolverParameter& param) { + this->solver_.reset(new NesterovSolver(param)); + } +}; + +TYPED_TEST_CASE(NesterovSolverTest, TestDtypesAndDevices); + +TYPED_TEST(NesterovSolverTest, TestNesterovLeastSquaresUpdate) { + this->TestLeastSquaresUpdate(); +} + +TYPED_TEST(NesterovSolverTest, TestNesterovLeastSquaresUpdateLROneHundredth) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + this->TestLeastSquaresUpdate(kLearningRate); +} + +TYPED_TEST(NesterovSolverTest, TestNesterovLeastSquaresUpdateWithWeightDecay) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay); +} + +TYPED_TEST(NesterovSolverTest, + TestNesterovLeastSquaresUpdateWithWeightDecayMultiIter) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(NesterovSolverTest, TestNesterovLeastSquaresUpdateWithMomentum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0; + const Dtype kMomentum = 0.5; + const int kNumIters = 1; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(NesterovSolverTest, TestLeastSquaresUpdateWithMomentumMultiIter) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0; + const Dtype kMomentum = 0.5; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(NesterovSolverTest, TestNesterovLeastSquaresUpdateWithEverything) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(NesterovSolverTest, + TestNesterovLeastSquaresUpdateWithEverythingShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + this->share_ = true; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(NesterovSolverTest, TestLeastSquaresUpdateWithEverythingAccum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + const int kIterSize = 2; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(NesterovSolverTest, TestLeastSquaresUpdateWithEverythingAccumShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + const int kIterSize = 2; + this->share_ = true; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(NesterovSolverTest, TestSnapshot) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(NesterovSolverTest, TestSnapshotShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + this->share_ = true; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +template +class AdaDeltaSolverTest : public GradientBasedSolverTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + virtual void InitSolver(const SolverParameter& param) { + this->solver_.reset(new AdaDeltaSolver(param)); + } +}; + +TYPED_TEST_CASE(AdaDeltaSolverTest, TestDtypesAndDevices); + +TYPED_TEST(AdaDeltaSolverTest, TestAdaDeltaLeastSquaresUpdate) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + this->TestLeastSquaresUpdate(kLearningRate); +} + +TYPED_TEST(AdaDeltaSolverTest, TestAdaDeltaLeastSquaresUpdateWithWeightDecay) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.95; + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum); +} + +TYPED_TEST(AdaDeltaSolverTest, TestAdaDeltaLeastSquaresUpdateWithHalfMomentum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.0; + const Dtype kMomentum = 0.5; + const int kNumIters = 1; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum); + } +} + +TYPED_TEST(AdaDeltaSolverTest, TestAdaDeltaLeastSquaresUpdateWithMomentum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.0; + const Dtype kMomentum = 0.95; + const int kNumIters = 1; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum); + } +} + +TYPED_TEST(AdaDeltaSolverTest, TestLeastSquaresUpdateWithMomentumMultiIter) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.0; + const Dtype kMomentum = 0.95; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdaDeltaSolverTest, TestAdaDeltaLeastSquaresUpdateWithEverything) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.1; + const Dtype kMomentum = 0.95; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdaDeltaSolverTest, + TestAdaDeltaLeastSquaresUpdateWithEverythingShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.1; + const Dtype kMomentum = 0.95; + const int kNumIters = 4; + this->share_ = true; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdaDeltaSolverTest, TestLeastSquaresUpdateWithEverythingAccum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.1; + const Dtype kMomentum = 0.95; + const int kNumIters = 4; + const int kIterSize = 2; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(AdaDeltaSolverTest, TestLeastSquaresUpdateWithEverythingAccumShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.1; + const Dtype kMomentum = 0.95; + const int kNumIters = 4; + const int kIterSize = 2; + this->share_ = true; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(AdaDeltaSolverTest, TestSnapshot) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.1; + const Dtype kMomentum = 0.95; + const int kNumIters = 4; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdaDeltaSolverTest, TestSnapshotShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.1; + const Dtype kWeightDecay = 0.1; + const Dtype kMomentum = 0.95; + const int kNumIters = 4; + this->share_ = true; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +template +class AdamSolverTest : public GradientBasedSolverTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + virtual void InitSolver(const SolverParameter& param) { + SolverParameter new_param = param; + const Dtype momentum = 0.9; + new_param.set_momentum(momentum); + const Dtype momentum2 = 0.999; + new_param.set_momentum2(momentum2); + this->solver_.reset(new AdamSolver(new_param)); + } +}; + +TYPED_TEST_CASE(AdamSolverTest, TestDtypesAndDevices); + +TYPED_TEST(AdamSolverTest, TestAdamLeastSquaresUpdate) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0; + const Dtype kMomentum = 0.9; + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum); +} + +TYPED_TEST(AdamSolverTest, TestAdamLeastSquaresUpdateWithWeightDecay) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum); +} + +TYPED_TEST(AdamSolverTest, TestAdamLeastSquaresUpdateWithEverything) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdamSolverTest, TestAdamLeastSquaresUpdateWithEverythingShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + this->share_ = true; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdamSolverTest, TestLeastSquaresUpdateWithEverythingAccum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + const int kIterSize = 2; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(AdamSolverTest, TestLeastSquaresUpdateWithEverythingAccumShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + const int kIterSize = 2; + this->share_ = true; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(AdamSolverTest, TestSnapshot) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(AdamSolverTest, TestSnapshotShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.9; + const int kNumIters = 4; + this->share_ = true; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +template +class RMSPropSolverTest : public GradientBasedSolverTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + virtual void InitSolver(const SolverParameter& param) { + const Dtype rms_decay = 0.95; + SolverParameter new_param = param; + new_param.set_rms_decay(rms_decay); + this->solver_.reset(new RMSPropSolver(new_param)); + } +}; + +TYPED_TEST_CASE(RMSPropSolverTest, TestDtypesAndDevices); + +TYPED_TEST(RMSPropSolverTest, TestRMSPropLeastSquaresUpdateWithWeightDecay) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 1.0; + const Dtype kWeightDecay = 0.5; + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay); +} + +TYPED_TEST(RMSPropSolverTest, TestRMSPropLeastSquaresUpdateWithRmsDecay) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.0; + const Dtype kMomentum = 0.0; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(RMSPropSolverTest, TestRMSPropLeastSquaresUpdateWithEverything) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.0; + const int kNumIters = 4; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(RMSPropSolverTest, + TestRMSPropLeastSquaresUpdateWithEverythingShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.0; + const int kNumIters = 4; + this->share_ = true; + for (int i = 0; i <= kNumIters; ++i) { + this->TestLeastSquaresUpdate(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(RMSPropSolverTest, TestLeastSquaresUpdateWithEverythingAccum) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.0; + const int kNumIters = 4; + const int kIterSize = 2; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(RMSPropSolverTest, TestLeastSquaresUpdateWithEverythingAccumShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0.0; + const int kNumIters = 4; + const int kIterSize = 2; + this->share_ = true; + this->CheckAccumulation(kLearningRate, kWeightDecay, kMomentum, kNumIters, + kIterSize); +} + +TYPED_TEST(RMSPropSolverTest, TestSnapshot) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +TYPED_TEST(RMSPropSolverTest, TestSnapshotShare) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kLearningRate = 0.01; + const Dtype kWeightDecay = 0.5; + const Dtype kMomentum = 0; + const int kNumIters = 4; + this->share_ = true; + for (int i = 1; i <= kNumIters; ++i) { + this->TestSnapshot(kLearningRate, kWeightDecay, kMomentum, i); + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_hdf5_output_layer.cpp b/3rdparty/caffe/src/caffe/test/test_hdf5_output_layer.cpp new file mode 100644 index 00000000..f94dd57e --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_hdf5_output_layer.cpp @@ -0,0 +1,122 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layers/hdf5_output_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/hdf5.hpp" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class HDF5OutputLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + HDF5OutputLayerTest() + : input_file_name_(ABS_TEST_DATA_DIR "/sample_data.h5"), + blob_data_(new Blob()), + blob_label_(new Blob()), + num_(5), + channels_(8), + height_(5), + width_(5) { + MakeTempFilename(&output_file_name_); + } + + virtual ~HDF5OutputLayerTest() { + delete blob_data_; + delete blob_label_; + } + + void CheckBlobEqual(const Blob& b1, const Blob& b2); + + string output_file_name_; + string input_file_name_; + Blob* const blob_data_; + Blob* const blob_label_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + int num_; + int channels_; + int height_; + int width_; +}; + +template +void HDF5OutputLayerTest::CheckBlobEqual(const Blob& b1, + const Blob& b2) { + EXPECT_EQ(b1.num(), b2.num()); + EXPECT_EQ(b1.channels(), b2.channels()); + EXPECT_EQ(b1.height(), b2.height()); + EXPECT_EQ(b1.width(), b2.width()); + for (int n = 0; n < b1.num(); ++n) { + for (int c = 0; c < b1.channels(); ++c) { + for (int h = 0; h < b1.height(); ++h) { + for (int w = 0; w < b1.width(); ++w) { + EXPECT_EQ(b1.data_at(n, c, h, w), b2.data_at(n, c, h, w)); + } + } + } + } +} + +TYPED_TEST_CASE(HDF5OutputLayerTest, TestDtypesAndDevices); + +TYPED_TEST(HDF5OutputLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LOG(INFO) << "Loading HDF5 file " << this->input_file_name_; + hid_t file_id = H5Fopen(this->input_file_name_.c_str(), H5F_ACC_RDONLY, + H5P_DEFAULT); + ASSERT_GE(file_id, 0)<< "Failed to open HDF5 file" << + this->input_file_name_; + // Allow reshape here as we are loading data not params + bool reshape = true; + hdf5_load_nd_dataset(file_id, HDF5_DATA_DATASET_NAME, 0, 4, + this->blob_data_, reshape); + hdf5_load_nd_dataset(file_id, HDF5_DATA_LABEL_NAME, 0, 4, + this->blob_label_, reshape); + herr_t status = H5Fclose(file_id); + EXPECT_GE(status, 0)<< "Failed to close HDF5 file " << + this->input_file_name_; + this->blob_bottom_vec_.push_back(this->blob_data_); + this->blob_bottom_vec_.push_back(this->blob_label_); + + LayerParameter param; + param.mutable_hdf5_output_param()->set_file_name(this->output_file_name_); + // This code block ensures that the layer is deconstructed and + // the output hdf5 file is closed. + { + HDF5OutputLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(layer.file_name(), this->output_file_name_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + } + file_id = H5Fopen(this->output_file_name_.c_str(), H5F_ACC_RDONLY, + H5P_DEFAULT); + ASSERT_GE( + file_id, 0)<< "Failed to open HDF5 file" << + this->input_file_name_; + + Blob* blob_data = new Blob(); + hdf5_load_nd_dataset(file_id, HDF5_DATA_DATASET_NAME, 0, 4, + blob_data, reshape); + this->CheckBlobEqual(*(this->blob_data_), *blob_data); + + Blob* blob_label = new Blob(); + hdf5_load_nd_dataset(file_id, HDF5_DATA_LABEL_NAME, 0, 4, + blob_label, reshape); + this->CheckBlobEqual(*(this->blob_label_), *blob_label); + + status = H5Fclose(file_id); + EXPECT_GE(status, 0) << "Failed to close HDF5 file " << + this->output_file_name_; +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_hdf5data_layer.cpp b/3rdparty/caffe/src/caffe/test/test_hdf5data_layer.cpp new file mode 100644 index 00000000..3977c486 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_hdf5data_layer.cpp @@ -0,0 +1,165 @@ +#include +#include + +#include "hdf5.h" + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layers/hdf5_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class HDF5DataLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + HDF5DataLayerTest() + : filename(NULL), + blob_top_data_(new Blob()), + blob_top_label_(new Blob()), + blob_top_label2_(new Blob()) {} + virtual void SetUp() { + blob_top_vec_.push_back(blob_top_data_); + blob_top_vec_.push_back(blob_top_label_); + blob_top_vec_.push_back(blob_top_label2_); + + // Check out generate_sample_data.py in the same directory. + filename = new string(ABS_TEST_DATA_DIR "/sample_data_list.txt"); + LOG(INFO)<< "Using sample HDF5 data file " << filename; + } + + virtual ~HDF5DataLayerTest() { + delete blob_top_data_; + delete blob_top_label_; + delete blob_top_label2_; + delete filename; + } + + string* filename; + Blob* const blob_top_data_; + Blob* const blob_top_label_; + Blob* const blob_top_label2_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(HDF5DataLayerTest, TestDtypesAndDevices); + +TYPED_TEST(HDF5DataLayerTest, TestRead) { + typedef typename TypeParam::Dtype Dtype; + // Create LayerParameter with the known parameters. + // The data file we are reading has 10 rows and 8 columns, + // with values from 0 to 10*8 reshaped in row-major order. + LayerParameter param; + param.add_top("data"); + param.add_top("label"); + param.add_top("label2"); + + HDF5DataParameter* hdf5_data_param = param.mutable_hdf5_data_param(); + int batch_size = 5; + hdf5_data_param->set_batch_size(batch_size); + hdf5_data_param->set_source(*(this->filename)); + int num_cols = 8; + int height = 6; + int width = 5; + + // Test that the layer setup gives correct parameters. + HDF5DataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), batch_size); + EXPECT_EQ(this->blob_top_data_->channels(), num_cols); + EXPECT_EQ(this->blob_top_data_->height(), height); + EXPECT_EQ(this->blob_top_data_->width(), width); + + EXPECT_EQ(this->blob_top_label_->num_axes(), 2); + EXPECT_EQ(this->blob_top_label_->shape(0), batch_size); + EXPECT_EQ(this->blob_top_label_->shape(1), 1); + + EXPECT_EQ(this->blob_top_label2_->num_axes(), 2); + EXPECT_EQ(this->blob_top_label2_->shape(0), batch_size); + EXPECT_EQ(this->blob_top_label2_->shape(1), 1); + + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + // Go through the data 10 times (5 batches). + const int data_size = num_cols * height * width; + for (int iter = 0; iter < 10; ++iter) { + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // On even iterations, we're reading the first half of the data. + // On odd iterations, we're reading the second half of the data. + // NB: label is 1-indexed + int label_offset = 1 + ((iter % 2 == 0) ? 0 : batch_size); + int label2_offset = 1 + label_offset; + int data_offset = (iter % 2 == 0) ? 0 : batch_size * data_size; + + // Every two iterations we are reading the second file, + // which has the same labels, but data is offset by total data size, + // which is 2400 (see generate_sample_data). + int file_offset = (iter % 4 < 2) ? 0 : 2400; + + for (int i = 0; i < batch_size; ++i) { + EXPECT_EQ( + label_offset + i, + this->blob_top_label_->cpu_data()[i]); + EXPECT_EQ( + label2_offset + i, + this->blob_top_label2_->cpu_data()[i]); + } + for (int i = 0; i < batch_size; ++i) { + for (int j = 0; j < num_cols; ++j) { + for (int h = 0; h < height; ++h) { + for (int w = 0; w < width; ++w) { + int idx = ( + i * num_cols * height * width + + j * height * width + + h * width + w); + EXPECT_EQ( + file_offset + data_offset + idx, + this->blob_top_data_->cpu_data()[idx]) + << "debug: i " << i << " j " << j + << " iter " << iter; + } + } + } + } + } +} + +TYPED_TEST(HDF5DataLayerTest, TestSkip) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + param.add_top("data"); + param.add_top("label"); + + HDF5DataParameter* hdf5_data_param = param.mutable_hdf5_data_param(); + int batch_size = 5; + hdf5_data_param->set_batch_size(batch_size); + hdf5_data_param->set_source(*(this->filename)); + + Caffe::set_solver_count(8); + for (int dev = 0; dev < Caffe::solver_count(); ++dev) { + Caffe::set_solver_rank(dev); + + HDF5DataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + int label = dev; + for (int iter = 0; iter < 1; ++iter) { + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < batch_size; ++i) { + EXPECT_EQ(1 + label, this->blob_top_label_->cpu_data()[i]); + label = (label + Caffe::solver_count()) % (batch_size * 2); + } + } + } + Caffe::set_solver_count(1); + Caffe::set_solver_rank(0); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_hinge_loss_layer.cpp b/3rdparty/caffe/src/caffe/test/test_hinge_loss_layer.cpp new file mode 100644 index 00000000..8bf89fa6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_hinge_loss_layer.cpp @@ -0,0 +1,74 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/hinge_loss_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class HingeLossLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + HingeLossLayerTest() + : blob_bottom_data_(new Blob(10, 5, 1, 1)), + blob_bottom_label_(new Blob(10, 1, 1, 1)), + blob_top_loss_(new Blob()) { + // fill the values + Caffe::set_random_seed(1701); + FillerParameter filler_param; + filler_param.set_std(10); + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_data_); + for (int i = 0; i < blob_bottom_label_->count(); ++i) { + blob_bottom_label_->mutable_cpu_data()[i] = caffe_rng_rand() % 5; + } + blob_bottom_vec_.push_back(blob_bottom_label_); + blob_top_vec_.push_back(blob_top_loss_); + } + virtual ~HingeLossLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_label_; + delete blob_top_loss_; + } + Blob* const blob_bottom_data_; + Blob* const blob_bottom_label_; + Blob* const blob_top_loss_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(HingeLossLayerTest, TestDtypesAndDevices); + + +TYPED_TEST(HingeLossLayerTest, TestGradientL1) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + HingeLossLayer layer(layer_param); + GradientChecker checker(1e-2, 2e-3, 1701, 1, 0.01); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(HingeLossLayerTest, TestGradientL2) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Set norm to L2 + HingeLossParameter* hinge_loss_param = layer_param.mutable_hinge_loss_param(); + hinge_loss_param->set_norm(HingeLossParameter_Norm_L2); + HingeLossLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2, 1701); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_im2col_kernel.cu b/3rdparty/caffe/src/caffe/test/test_im2col_kernel.cu new file mode 100644 index 00000000..e3a9791b --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_im2col_kernel.cu @@ -0,0 +1,213 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/im2col_layer.hpp" +#include "caffe/util/im2col.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +// Forward declare kernel functions +template +__global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, + const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, + const int height_col, const int width_col, + Dtype* data_col); + +template +__global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_col); + +template +class Im2colKernelTest : public GPUDeviceTest { + protected: + Im2colKernelTest() + // big so launches > 1024 threads + : blob_bottom_(new Blob(5, 500, 15, 15)), + blob_kernel_shape_(new Blob()), + blob_stride_(new Blob()), + blob_pad_(new Blob()), + blob_dilation_(new Blob()), + blob_top_(new Blob()), + blob_top_cpu_(new Blob()) { + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + vector dim_blob_shape(1, 2); + blob_kernel_shape_->Reshape(dim_blob_shape); + blob_stride_->Reshape(dim_blob_shape); + blob_pad_->Reshape(dim_blob_shape); + blob_dilation_->Reshape(dim_blob_shape); + + height_ = blob_bottom_->height(); + width_ = blob_bottom_->width(); + channels_ = blob_bottom_->channels(); + pad_ = 0; + stride_ = 2; + dilation_ = 3; + kernel_size_ = 3; + height_col_ = (height_ + 2 * pad_ - + (dilation_ * (kernel_size_ - 1) + 1)) / stride_ + 1; + width_col_ = (width_ + 2 * pad_ - + (dilation_ * (kernel_size_ - 1) + 1)) / stride_ + 1; + + for (int i = 0; i < 2; ++i) { + blob_kernel_shape_->mutable_cpu_data()[i] = kernel_size_; + blob_stride_->mutable_cpu_data()[i] = stride_; + blob_pad_->mutable_cpu_data()[i] = pad_; + blob_dilation_->mutable_cpu_data()[i] = dilation_; + } + } + + virtual ~Im2colKernelTest() { + delete blob_bottom_; + delete blob_top_; + delete blob_top_cpu_; + delete blob_kernel_shape_; + delete blob_stride_; + delete blob_pad_; + delete blob_dilation_; + } + + Blob* const blob_kernel_shape_; + Blob* const blob_stride_; + Blob* const blob_pad_; + Blob* const blob_dilation_; + Blob* const blob_bottom_; + Blob* const blob_top_; + Blob* const blob_top_cpu_; + int height_; + int width_; + int channels_; + int pad_; + int stride_; + int dilation_; + int kernel_size_; + int height_col_; + int width_col_; +}; + +TYPED_TEST_CASE(Im2colKernelTest, TestDtypes); + +TYPED_TEST(Im2colKernelTest, Test2D) { + // Reshape the blobs to correct size for im2col output + this->blob_top_->Reshape(this->blob_bottom_->num(), + this->channels_ * this->kernel_size_ * this->kernel_size_, + this->height_col_, + this->width_col_); + + this->blob_top_cpu_->Reshape(this->blob_bottom_->num(), + this->channels_ * this->kernel_size_ * this->kernel_size_, + this->height_col_, + this->width_col_); + + const TypeParam* bottom_data = this->blob_bottom_->gpu_data(); + TypeParam* top_data = this->blob_top_->mutable_gpu_data(); + TypeParam* cpu_data = this->blob_top_cpu_->mutable_cpu_data(); + + // CPU Version + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + im2col_cpu(this->blob_bottom_->cpu_data() + this->blob_bottom_->offset(n), + this->channels_, this->height_, this->width_, + this->kernel_size_, this->kernel_size_, this->pad_, this->pad_, + this->stride_, this->stride_, this->dilation_, this->dilation_, + cpu_data + this->blob_top_cpu_->offset(n)); + } + + // GPU version + int num_kernels = this->channels_ * this->height_col_ * this->width_col_; + int default_grid_dim = CAFFE_GET_BLOCKS(num_kernels); + + // Launch with different grid sizes + for (int grid_div = 2; grid_div <= 8; grid_div++) { + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + int grid_dim = default_grid_dim/grid_div; + // NOLINT_NEXT_LINE(whitespace/operators) + im2col_gpu_kernel<<>>( + num_kernels, bottom_data + this->blob_bottom_->offset(n), + this->height_, this->width_, this->kernel_size_, this->kernel_size_, + this->pad_, this->pad_, this->stride_, this->stride_, + this->dilation_, this->dilation_, + this->height_col_, this->width_col_, + top_data + this->blob_top_->offset(n)); + CUDA_POST_KERNEL_CHECK; + } + + // Compare results against CPU version + for (int i = 0; i < this->blob_top_->count(); ++i) { + TypeParam cpuval = cpu_data[i]; + TypeParam gpuval = this->blob_top_->cpu_data()[i]; + EXPECT_EQ(cpuval, gpuval); + if (cpuval != gpuval) { + break; + } + } + } +} + +TYPED_TEST(Im2colKernelTest, TestND) { + // Reshape the blobs to correct size for im2col output + this->blob_top_->Reshape(this->blob_bottom_->num(), + this->channels_ * this->kernel_size_ * this->kernel_size_, + this->height_col_, + this->width_col_); + + this->blob_top_cpu_->ReshapeLike(*this->blob_top_); + + const TypeParam* bottom_data_cpu = this->blob_bottom_->cpu_data(); + TypeParam* top_data_cpu = this->blob_top_cpu_->mutable_cpu_data(); + + // CPU Version + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + im2col_nd_cpu(bottom_data_cpu + this->blob_bottom_->offset(n), 2, + this->blob_bottom_->shape().data() + 1, + this->blob_top_cpu_->shape().data() + 1, + this->blob_kernel_shape_->cpu_data(), + this->blob_pad_->cpu_data(), this->blob_stride_->cpu_data(), + this->blob_dilation_->cpu_data(), + top_data_cpu + this->blob_top_cpu_->offset(n)); + } + + // GPU version + int num_kernels = this->channels_ * this->height_col_ * this->width_col_; + int default_grid_dim = CAFFE_GET_BLOCKS(num_kernels); + const TypeParam* bottom_data_gpu = this->blob_bottom_->gpu_data(); + + // Launch with different grid sizes + for (int grid_div = 2; grid_div <= 8; grid_div++) { + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + const int grid_dim = default_grid_dim / grid_div; + TypeParam* top_data_gpu = this->blob_top_->mutable_gpu_data(); + // NOLINT_NEXT_LINE(whitespace/operators) + im2col_nd_gpu_kernel<<>>( + num_kernels, bottom_data_gpu + this->blob_bottom_->offset(n), + this->blob_bottom_->gpu_shape() + 1, this->blob_top_->gpu_shape() + 1, + this->blob_kernel_shape_->gpu_data(), this->blob_pad_->gpu_data(), + this->blob_stride_->gpu_data(), this->blob_dilation_->gpu_data(), + top_data_gpu + this->blob_top_->offset(n)); + CUDA_POST_KERNEL_CHECK; + } + + // Compare results against CPU version + for (int i = 0; i < this->blob_top_->count(); ++i) { + TypeParam cpuval = top_data_cpu[i]; + TypeParam gpuval = this->blob_top_->cpu_data()[i]; + EXPECT_EQ(cpuval, gpuval); + if (cpuval != gpuval) { + break; + } + } + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_im2col_layer.cpp b/3rdparty/caffe/src/caffe/test/test_im2col_layer.cpp new file mode 100644 index 00000000..a7faf18f --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_im2col_layer.cpp @@ -0,0 +1,178 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/im2col_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class Im2colLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + Im2colLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 5)), + blob_top_(new Blob()) { + // fill the values + Caffe::set_random_seed(1701); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~Im2colLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(Im2colLayerTest, TestDtypesAndDevices); + +TYPED_TEST(Im2colLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(10); + bottom_shape.push_back(11); + this->blob_bottom_->Reshape(bottom_shape); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->add_dilation(3); + Im2colLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 27); + EXPECT_EQ(this->blob_top_->height(), 2); + EXPECT_EQ(this->blob_top_->width(), 3); +} + +TYPED_TEST(Im2colLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + Im2colLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // We are lazy and will only check the top left block + for (int c = 0; c < 27; ++c) { + EXPECT_EQ(this->blob_bottom_->data_at(0, (c / 9), (c / 3) % 3, c % 3), + this->blob_top_->data_at(0, c, 0, 0)); + } +} + +TYPED_TEST(Im2colLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(Im2colLayerTest, TestDilatedGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(10); + bottom_shape.push_back(9); + this->blob_bottom_->Reshape(bottom_shape); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->add_dilation(3); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(Im2colLayerTest, TestGradientForceND) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_force_nd_im2col(true); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(Im2colLayerTest, TestDilatedGradientForceND) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(10); + bottom_shape.push_back(9); + this->blob_bottom_->Reshape(bottom_shape); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->add_dilation(3); + convolution_param->set_force_nd_im2col(true); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(Im2colLayerTest, TestRect) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_kernel_h(5); + convolution_param->set_kernel_w(3); + convolution_param->add_stride(2); + Im2colLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // We are lazy and will only check the top left block + for (int c = 0; c < 45; ++c) { + EXPECT_EQ(this->blob_top_->data_at(0, c, 0, 0), + this->blob_bottom_->data_at(0, (c / 15), (c / 3) % 5, c % 3)); + } +} + +TYPED_TEST(Im2colLayerTest, TestRectGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_kernel_h(5); + convolution_param->set_kernel_w(3); + convolution_param->add_stride(2); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_image_data_layer.cpp b/3rdparty/caffe/src/caffe/test/test_image_data_layer.cpp new file mode 100644 index 00000000..ce5e0bc6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_image_data_layer.cpp @@ -0,0 +1,219 @@ +#ifdef USE_OPENCV +#include +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/image_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class ImageDataLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ImageDataLayerTest() + : seed_(1701), + blob_top_data_(new Blob()), + blob_top_label_(new Blob()) {} + virtual void SetUp() { + blob_top_vec_.push_back(blob_top_data_); + blob_top_vec_.push_back(blob_top_label_); + Caffe::set_random_seed(seed_); + // Create test input file. + MakeTempFilename(&filename_); + std::ofstream outfile(filename_.c_str(), std::ofstream::out); + LOG(INFO) << "Using temporary file " << filename_; + for (int i = 0; i < 5; ++i) { + outfile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << i << std::endl; + } + outfile.close(); + // Create test input file for images of distinct sizes. + MakeTempFilename(&filename_reshape_); + std::ofstream reshapefile(filename_reshape_.c_str(), std::ofstream::out); + LOG(INFO) << "Using temporary file " << filename_reshape_; + reshapefile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << 0 << std::endl; + reshapefile << EXAMPLES_SOURCE_DIR "images/fish-bike.jpg " << 1 + << std::endl; + reshapefile.close(); + // Create test input file for images with space in names + MakeTempFilename(&filename_space_); + std::ofstream spacefile(filename_space_.c_str(), std::ofstream::out); + LOG(INFO) << "Using temporary file " << filename_space_; + spacefile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << 0 << std::endl; + spacefile << EXAMPLES_SOURCE_DIR "images/cat gray.jpg " << 1 << std::endl; + spacefile.close(); + } + + virtual ~ImageDataLayerTest() { + delete blob_top_data_; + delete blob_top_label_; + } + + int seed_; + string filename_; + string filename_reshape_; + string filename_space_; + Blob* const blob_top_data_; + Blob* const blob_top_label_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ImageDataLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ImageDataLayerTest, TestRead) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + ImageDataParameter* image_data_param = param.mutable_image_data_param(); + image_data_param->set_batch_size(5); + image_data_param->set_source(this->filename_.c_str()); + image_data_param->set_shuffle(false); + ImageDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 5); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 360); + EXPECT_EQ(this->blob_top_data_->width(), 480); + EXPECT_EQ(this->blob_top_label_->num(), 5); + EXPECT_EQ(this->blob_top_label_->channels(), 1); + EXPECT_EQ(this->blob_top_label_->height(), 1); + EXPECT_EQ(this->blob_top_label_->width(), 1); + // Go through the data twice + for (int iter = 0; iter < 2; ++iter) { + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, this->blob_top_label_->cpu_data()[i]); + } + } +} + +TYPED_TEST(ImageDataLayerTest, TestResize) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + ImageDataParameter* image_data_param = param.mutable_image_data_param(); + image_data_param->set_batch_size(5); + image_data_param->set_source(this->filename_.c_str()); + image_data_param->set_new_height(256); + image_data_param->set_new_width(256); + image_data_param->set_shuffle(false); + ImageDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 5); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 256); + EXPECT_EQ(this->blob_top_data_->width(), 256); + EXPECT_EQ(this->blob_top_label_->num(), 5); + EXPECT_EQ(this->blob_top_label_->channels(), 1); + EXPECT_EQ(this->blob_top_label_->height(), 1); + EXPECT_EQ(this->blob_top_label_->width(), 1); + // Go through the data twice + for (int iter = 0; iter < 2; ++iter) { + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, this->blob_top_label_->cpu_data()[i]); + } + } +} + +TYPED_TEST(ImageDataLayerTest, TestReshape) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + ImageDataParameter* image_data_param = param.mutable_image_data_param(); + image_data_param->set_batch_size(1); + image_data_param->set_source(this->filename_reshape_.c_str()); + image_data_param->set_shuffle(false); + ImageDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_label_->num(), 1); + EXPECT_EQ(this->blob_top_label_->channels(), 1); + EXPECT_EQ(this->blob_top_label_->height(), 1); + EXPECT_EQ(this->blob_top_label_->width(), 1); + // cat.jpg + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 1); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 360); + EXPECT_EQ(this->blob_top_data_->width(), 480); + // fish-bike.jpg + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 1); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 323); + EXPECT_EQ(this->blob_top_data_->width(), 481); +} + +TYPED_TEST(ImageDataLayerTest, TestShuffle) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + ImageDataParameter* image_data_param = param.mutable_image_data_param(); + image_data_param->set_batch_size(5); + image_data_param->set_source(this->filename_.c_str()); + image_data_param->set_shuffle(true); + ImageDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 5); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 360); + EXPECT_EQ(this->blob_top_data_->width(), 480); + EXPECT_EQ(this->blob_top_label_->num(), 5); + EXPECT_EQ(this->blob_top_label_->channels(), 1); + EXPECT_EQ(this->blob_top_label_->height(), 1); + EXPECT_EQ(this->blob_top_label_->width(), 1); + // Go through the data twice + for (int iter = 0; iter < 2; ++iter) { + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + map values_to_indices; + int num_in_order = 0; + for (int i = 0; i < 5; ++i) { + Dtype value = this->blob_top_label_->cpu_data()[i]; + // Check that the value has not been seen already (no duplicates). + EXPECT_EQ(values_to_indices.find(value), values_to_indices.end()); + values_to_indices[value] = i; + num_in_order += (value == Dtype(i)); + } + EXPECT_EQ(5, values_to_indices.size()); + EXPECT_GT(5, num_in_order); + } +} + +TYPED_TEST(ImageDataLayerTest, TestSpace) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + ImageDataParameter* image_data_param = param.mutable_image_data_param(); + image_data_param->set_batch_size(1); + image_data_param->set_source(this->filename_space_.c_str()); + image_data_param->set_shuffle(false); + ImageDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_label_->num(), 1); + EXPECT_EQ(this->blob_top_label_->channels(), 1); + EXPECT_EQ(this->blob_top_label_->height(), 1); + EXPECT_EQ(this->blob_top_label_->width(), 1); + // cat.jpg + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 1); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 360); + EXPECT_EQ(this->blob_top_data_->width(), 480); + EXPECT_EQ(this->blob_top_label_->cpu_data()[0], 0); + // cat gray.jpg + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 1); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 360); + EXPECT_EQ(this->blob_top_data_->width(), 480); + EXPECT_EQ(this->blob_top_label_->cpu_data()[0], 1); +} + +} // namespace caffe +#endif // USE_OPENCV diff --git a/3rdparty/caffe/src/caffe/test/test_infogain_loss_layer.cpp b/3rdparty/caffe/src/caffe/test/test_infogain_loss_layer.cpp new file mode 100644 index 00000000..34f21271 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_infogain_loss_layer.cpp @@ -0,0 +1,138 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/infogain_loss_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class InfogainLossLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + InfogainLossLayerTest() + : blob_bottom_data_(new Blob(4, 2, 5, 2)), + blob_bottom_label_(new Blob(4, 2, 1, 2)), + blob_bottom_infogain_(new Blob(1, 1, 5, 5)), + blob_top_loss_(new Blob()), + blob_top_prob_(new Blob()), + inner_(2), outer_(4*2), num_labels_(5) { + Caffe::set_random_seed(1701); + FillerParameter filler_param; + filler_param.set_min(-0.5); + filler_param.set_max(2.0); + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_data_); + for (int i = 0; i < blob_bottom_label_->count(); ++i) { + blob_bottom_label_->mutable_cpu_data()[i] = + caffe_rng_rand() % num_labels_; + } + blob_bottom_vec_.push_back(blob_bottom_label_); + filler_param.set_min(0.1); + filler_param.set_max(2.0); + UniformFiller infogain_filler(filler_param); + infogain_filler.Fill(this->blob_bottom_infogain_); + blob_bottom_vec_.push_back(blob_bottom_infogain_); + blob_top_vec_.push_back(blob_top_loss_); + blob_top_vec_.push_back(blob_top_prob_); + } + virtual ~InfogainLossLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_label_; + delete blob_bottom_infogain_; + delete blob_top_loss_; + delete blob_top_prob_; + } + Blob* const blob_bottom_data_; + Blob* const blob_bottom_label_; + Blob* const blob_bottom_infogain_; + Blob* const blob_top_loss_; + Blob* const blob_top_prob_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + int inner_, outer_, num_labels_; +}; + +TYPED_TEST_CASE(InfogainLossLayerTest, TestDtypesAndDevices); + +TYPED_TEST(InfogainLossLayerTest, TestInfogainLoss) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_infogain_loss_param()->set_axis(2); + layer_param.clear_loss_weight(); + layer_param.add_loss_weight(1); + layer_param.add_loss_weight(0); + /*vector* lw = layer_param.mutable_loss_weight(); + lw->clear(); + lw->push_back(1); + lw->push_back(1);*/ + InfogainLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* data = this->blob_bottom_vec_[0]->cpu_data(); + const Dtype* prob = this->blob_top_vec_[1]->cpu_data(); + const Dtype* labels = this->blob_bottom_vec_[1]->cpu_data(); + const Dtype* H = this->blob_bottom_vec_[2]->cpu_data(); + // first. test the prob top + CHECK_EQ(this->blob_bottom_vec_[0]->num_axes(), + this->blob_top_vec_[1]->num_axes()) + << "prob top shape not match bottom data"; + for (int ai = 0 ; ai < this->blob_bottom_vec_[0]->num_axes(); ai++) { + CHECK_EQ(this->blob_bottom_vec_[0]->shape(ai), + this->blob_top_vec_[1]->shape(ai)) + << "prob top shape not match bottom data"; + } + vector est_prob(this->num_labels_, 0); + for ( int i = 0 ; i < this->outer_; i++ ) { + for ( int j = 0; j < this->inner_; j++ ) { + Dtype den = 0; + for ( int l = 0; l < this->num_labels_; l++ ) { + est_prob[l] = std::exp( + data[i*this->num_labels_*this->inner_ + l*this->inner_ + j]); + den += est_prob[l]; + } + for ( int l = 0; l < this->num_labels_; l++ ) { + EXPECT_NEAR(prob[i*this->num_labels_*this->inner_ + l*this->inner_ + j], + est_prob[l]/den, 1e-6); + } + } + } + Dtype loss = 0; // loss from prob top + for ( int i = 0 ; i < this->outer_; i++ ) { + for ( int j = 0; j < this->inner_; j++ ) { + int gt = static_cast(labels[i*this->inner_+j]); + for ( int l = 0; l < this->num_labels_; l++ ) { + loss -= H[gt*this->num_labels_ + l] * + log(std::max( + prob[i*this->num_labels_*this->inner_ + l*this->inner_ + j], + Dtype(kLOG_THRESHOLD))); + } + } + } + EXPECT_NEAR(this->blob_top_loss_->cpu_data()[0], + loss/(this->outer_*this->inner_), 1e-6); +} + +TYPED_TEST(InfogainLossLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_infogain_loss_param()->set_axis(2); + InfogainLossLayer layer(layer_param); + this->blob_top_vec_.clear(); // ignore prob top. + this->blob_top_vec_.push_back(this->blob_top_loss_); + GradientChecker checker(1e-4, 2e-2, 1701); // no "kink" + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_inner_product_layer.cpp b/3rdparty/caffe/src/caffe/test/test_inner_product_layer.cpp new file mode 100644 index 00000000..6d84d292 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_inner_product_layer.cpp @@ -0,0 +1,391 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/inner_product_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +#ifndef CPU_ONLY +extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; +#endif + +template +class InnerProductLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + InnerProductLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_bottom_nobatch_(new Blob(1, 2, 3, 4)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~InnerProductLayerTest() { + delete blob_bottom_; + delete blob_bottom_nobatch_; + delete blob_top_; + } + Blob* const blob_bottom_; + Blob* const blob_bottom_nobatch_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(InnerProductLayerTest, TestDtypesAndDevices); + +TYPED_TEST(InnerProductLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); + EXPECT_EQ(this->blob_top_->channels(), 10); +} + +/** @brief TestSetUp while toggling transpose flag + */ +TYPED_TEST(InnerProductLayerTest, TestSetUpTransposeFalse) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->set_transpose(false); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(2, this->blob_top_->num()); + EXPECT_EQ(1, this->blob_top_->height()); + EXPECT_EQ(1, this->blob_top_->width()); + EXPECT_EQ(10, this->blob_top_->channels()); + EXPECT_EQ(2, layer->blobs()[0]->num_axes()); + EXPECT_EQ(10, layer->blobs()[0]->shape(0)); + EXPECT_EQ(60, layer->blobs()[0]->shape(1)); +} + +/** @brief TestSetUp while toggling transpose flag + */ +TYPED_TEST(InnerProductLayerTest, TestSetUpTransposeTrue) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->set_transpose(true); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(2, this->blob_top_->num()); + EXPECT_EQ(1, this->blob_top_->height()); + EXPECT_EQ(1, this->blob_top_->width()); + EXPECT_EQ(10, this->blob_top_->channels()); + EXPECT_EQ(2, layer->blobs()[0]->num_axes()); + EXPECT_EQ(60, layer->blobs()[0]->shape(0)); + EXPECT_EQ(10, layer->blobs()[0]->shape(1)); +} + +TYPED_TEST(InnerProductLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->mutable_weight_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + for (int i = 0; i < count; ++i) { + EXPECT_GE(data[i], 1.); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +/** + * @brief Init. an IP layer without transpose + random weights, + * run Forward, save the result. + * Init. another IP layer with transpose. + * manually copy and transpose the weights from the first IP layer, + * then run Forward on the same input and check that the result is the same + */ +TYPED_TEST(InnerProductLayerTest, TestForwardTranspose) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->mutable_weight_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + inner_product_param->set_transpose(false); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const int count = this->blob_top_->count(); + Blob* const top = new Blob(); + top->ReshapeLike(*this->blob_top_); + caffe_copy(count, this->blob_top_->cpu_data(), top->mutable_cpu_data()); + this->blob_top_vec_.clear(); + this->blob_top_vec_.push_back(new Blob()); + inner_product_param->set_transpose(true); + shared_ptr > ip_t( + new InnerProductLayer(layer_param)); + ip_t->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const int count_w = layer->blobs()[0]->count(); + EXPECT_EQ(count_w, ip_t->blobs()[0]->count()); + // manually copy and transpose the weights from 1st IP layer into 2nd + const Dtype* w = layer->blobs()[0]->cpu_data(); + Dtype* w_t = ip_t->blobs()[0]->mutable_cpu_data(); + const int width = layer->blobs()[0]->shape(1); + const int width_t = ip_t->blobs()[0]->shape(1); + for (int i = 0; i < count_w; ++i) { + int r = i / width; + int c = i % width; + w_t[c*width_t+r] = w[r*width+c]; // copy while transposing + } + // copy bias from 1st IP layer to 2nd IP layer + ASSERT_EQ(layer->blobs()[1]->count(), ip_t->blobs()[1]->count()); + caffe_copy(layer->blobs()[1]->count(), layer->blobs()[1]->cpu_data(), + ip_t->blobs()[1]->mutable_cpu_data()); + ip_t->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(count, this->blob_top_->count()) + << "Invalid count for top blob for IP with transpose."; + Blob* const top_t = new Blob();\ + top_t->ReshapeLike(*this->blob_top_vec_[0]); + caffe_copy(count, + this->blob_top_vec_[0]->cpu_data(), + top_t->mutable_cpu_data()); + const Dtype* data = top->cpu_data(); + const Dtype* data_t = top_t->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_FLOAT_EQ(data[i], data_t[i]); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +TYPED_TEST(InnerProductLayerTest, TestForwardNoBatch) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_nobatch_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->mutable_weight_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + for (int i = 0; i < count; ++i) { + EXPECT_GE(data[i], 1.); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +TYPED_TEST(InnerProductLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->mutable_weight_filler()->set_type("gaussian"); + inner_product_param->mutable_bias_filler()->set_type("gaussian"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + InnerProductLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +TYPED_TEST(InnerProductLayerTest, TestGradientTranspose) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(11); + inner_product_param->mutable_weight_filler()->set_type("gaussian"); + inner_product_param->mutable_bias_filler()->set_type("gaussian"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + inner_product_param->set_transpose(true); + InnerProductLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +TYPED_TEST(InnerProductLayerTest, TestBackwardTranspose) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->mutable_weight_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + inner_product_param->set_transpose(false); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // copy top blob + Blob* const top = new Blob(); + top->CopyFrom(*this->blob_top_, false, true); + // fake top diff + Blob* const diff = new Blob(); + diff->ReshapeLike(*this->blob_top_); + { + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(diff); + } + caffe_copy(this->blob_top_vec_[0]->count(), + diff->cpu_data(), + this->blob_top_vec_[0]->mutable_cpu_diff()); + vector propagate_down(1, true); + layer->Backward(this->blob_top_vec_, + propagate_down, + this->blob_bottom_vec_); + // copy first ip's weights and their diffs + Blob* const w = new Blob(); + w->CopyFrom(*layer->blobs()[0], false, true); + w->CopyFrom(*layer->blobs()[0], true, true); + // copy bottom diffs + Blob* const bottom_diff = new Blob(); + bottom_diff->CopyFrom(*this->blob_bottom_vec_[0], true, true); + // repeat original top with transposed ip + this->blob_top_vec_.clear(); + this->blob_top_vec_.push_back(new Blob()); + inner_product_param->set_transpose(true); + shared_ptr > ip_t( + new InnerProductLayer(layer_param)); + ip_t->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + // manually copy and transpose the weights from 1st IP layer into 2nd + { + const Dtype* w_src = w->cpu_data(); + Dtype* w_t = ip_t->blobs()[0]->mutable_cpu_data(); + const int width = layer->blobs()[0]->shape(1); + const int width_t = ip_t->blobs()[0]->shape(1); + for (int i = 0; i < layer->blobs()[0]->count(); ++i) { + int r = i / width; + int c = i % width; + w_t[c*width_t+r] = w_src[r*width+c]; // copy while transposing + } + // copy bias from 1st IP layer to 2nd IP layer + ASSERT_EQ(layer->blobs()[1]->count(), ip_t->blobs()[1]->count()); + caffe_copy(layer->blobs()[1]->count(), layer->blobs()[1]->cpu_data(), + ip_t->blobs()[1]->mutable_cpu_data()); + } + ip_t->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(this->blob_top_vec_[0]->count(), + diff->cpu_data(), + this->blob_top_vec_[0]->mutable_cpu_diff()); + ip_t->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const Dtype* data = w->cpu_diff(); + const Dtype* data_t = ip_t->blobs()[0]->cpu_diff(); + const int WIDTH = layer->blobs()[0]->shape(1); + const int WIDTH_T = ip_t->blobs()[0]->shape(1); + for (int i = 0; i < layer->blobs()[0]->count(); ++i) { + int r = i / WIDTH; + int c = i % WIDTH; + EXPECT_NE(Dtype(0.), data[r*WIDTH+c]); + EXPECT_FLOAT_EQ(data[r*WIDTH+c], data_t[c*WIDTH_T+r]); + } + data = bottom_diff->cpu_diff(); + data_t = this->blob_bottom_vec_[0]->cpu_diff(); + for (int i = 0; i < this->blob_bottom_vec_[0]->count(); ++i) { + EXPECT_NE(Dtype(0.), data[i]); + EXPECT_FLOAT_EQ(data[i], data_t[i]); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_internal_thread.cpp b/3rdparty/caffe/src/caffe/test/test_internal_thread.cpp new file mode 100644 index 00000000..93f1cc54 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_internal_thread.cpp @@ -0,0 +1,53 @@ +#include "glog/logging.h" +#include "gtest/gtest.h" + +#include "caffe/internal_thread.hpp" +#include "caffe/util/math_functions.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + + +class InternalThreadTest : public ::testing::Test {}; + +TEST_F(InternalThreadTest, TestStartAndExit) { + InternalThread thread; + EXPECT_FALSE(thread.is_started()); + thread.StartInternalThread(); + EXPECT_TRUE(thread.is_started()); + thread.StopInternalThread(); + EXPECT_FALSE(thread.is_started()); +} + +class TestThreadA : public InternalThread { + void InternalThreadEntry() { + EXPECT_EQ(4244559767, caffe_rng_rand()); + } +}; + +class TestThreadB : public InternalThread { + void InternalThreadEntry() { + EXPECT_EQ(1726478280, caffe_rng_rand()); + } +}; + +TEST_F(InternalThreadTest, TestRandomSeed) { + TestThreadA t1; + Caffe::set_random_seed(9658361); + t1.StartInternalThread(); + t1.StopInternalThread(); + + TestThreadA t2; + Caffe::set_random_seed(9658361); + t2.StartInternalThread(); + t2.StopInternalThread(); + + TestThreadB t3; + Caffe::set_random_seed(3435563); + t3.StartInternalThread(); + t3.StopInternalThread(); +} + +} // namespace caffe + diff --git a/3rdparty/caffe/src/caffe/test/test_io.cpp b/3rdparty/caffe/src/caffe/test/test_io.cpp new file mode 100644 index 00000000..c2c919e9 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_io.cpp @@ -0,0 +1,424 @@ +#ifdef USE_OPENCV +#include +#include +#include +#include + +#include + +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +class IOTest : public ::testing::Test {}; + +bool ReadImageToDatumReference(const string& filename, const int label, + const int height, const int width, const bool is_color, Datum* datum) { + cv::Mat cv_img; + int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR : + CV_LOAD_IMAGE_GRAYSCALE); + + cv::Mat cv_img_origin = cv::imread(filename, cv_read_flag); + if (!cv_img_origin.data) { + LOG(ERROR) << "Could not open or find file " << filename; + return false; + } + if (height > 0 && width > 0) { + cv::resize(cv_img_origin, cv_img, cv::Size(width, height)); + } else { + cv_img = cv_img_origin; + } + + int num_channels = (is_color ? 3 : 1); + datum->set_channels(num_channels); + datum->set_height(cv_img.rows); + datum->set_width(cv_img.cols); + datum->set_label(label); + datum->clear_data(); + datum->clear_float_data(); + string* datum_string = datum->mutable_data(); + if (is_color) { + for (int c = 0; c < num_channels; ++c) { + for (int h = 0; h < cv_img.rows; ++h) { + for (int w = 0; w < cv_img.cols; ++w) { + datum_string->push_back( + static_cast(cv_img.at(h, w)[c])); + } + } + } + } else { // Faster than repeatedly testing is_color for each pixel w/i loop + for (int h = 0; h < cv_img.rows; ++h) { + for (int w = 0; w < cv_img.cols; ++w) { + datum_string->push_back( + static_cast(cv_img.at(h, w))); + } + } + } + return true; +} + +TEST_F(IOTest, TestReadImageToDatum) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + ReadImageToDatum(filename, 0, &datum); + EXPECT_EQ(datum.channels(), 3); + EXPECT_EQ(datum.height(), 360); + EXPECT_EQ(datum.width(), 480); +} + +TEST_F(IOTest, TestReadImageToDatumReference) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum, datum_ref; + ReadImageToDatum(filename, 0, 0, 0, true, &datum); + ReadImageToDatumReference(filename, 0, 0, 0, true, &datum_ref); + EXPECT_EQ(datum.channels(), datum_ref.channels()); + EXPECT_EQ(datum.height(), datum_ref.height()); + EXPECT_EQ(datum.width(), datum_ref.width()); + EXPECT_EQ(datum.data().size(), datum_ref.data().size()); + + const string& data = datum.data(); + const string& data_ref = datum.data(); + + for (int i = 0; i < datum.data().size(); ++i) { + EXPECT_TRUE(data[i] == data_ref[i]); + } +} + + +TEST_F(IOTest, TestReadImageToDatumReferenceResized) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum, datum_ref; + ReadImageToDatum(filename, 0, 100, 200, true, &datum); + ReadImageToDatumReference(filename, 0, 100, 200, true, &datum_ref); + EXPECT_EQ(datum.channels(), datum_ref.channels()); + EXPECT_EQ(datum.height(), datum_ref.height()); + EXPECT_EQ(datum.width(), datum_ref.width()); + EXPECT_EQ(datum.data().size(), datum_ref.data().size()); + + const string& data = datum.data(); + const string& data_ref = datum.data(); + + for (int i = 0; i < datum.data().size(); ++i) { + EXPECT_TRUE(data[i] == data_ref[i]); + } +} + +TEST_F(IOTest, TestReadImageToDatumContent) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + ReadImageToDatum(filename, 0, &datum); + cv::Mat cv_img = ReadImageToCVMat(filename); + EXPECT_EQ(datum.channels(), cv_img.channels()); + EXPECT_EQ(datum.height(), cv_img.rows); + EXPECT_EQ(datum.width(), cv_img.cols); + + const string& data = datum.data(); + int index = 0; + for (int c = 0; c < datum.channels(); ++c) { + for (int h = 0; h < datum.height(); ++h) { + for (int w = 0; w < datum.width(); ++w) { + EXPECT_TRUE(data[index++] == + static_cast(cv_img.at(h, w)[c])); + } + } + } +} + +TEST_F(IOTest, TestReadImageToDatumContentGray) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + const bool is_color = false; + ReadImageToDatum(filename, 0, is_color, &datum); + cv::Mat cv_img = ReadImageToCVMat(filename, is_color); + EXPECT_EQ(datum.channels(), cv_img.channels()); + EXPECT_EQ(datum.height(), cv_img.rows); + EXPECT_EQ(datum.width(), cv_img.cols); + + const string& data = datum.data(); + int index = 0; + for (int h = 0; h < datum.height(); ++h) { + for (int w = 0; w < datum.width(); ++w) { + EXPECT_TRUE(data[index++] == static_cast(cv_img.at(h, w))); + } + } +} + +TEST_F(IOTest, TestReadImageToDatumResized) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + ReadImageToDatum(filename, 0, 100, 200, &datum); + EXPECT_EQ(datum.channels(), 3); + EXPECT_EQ(datum.height(), 100); + EXPECT_EQ(datum.width(), 200); +} + + +TEST_F(IOTest, TestReadImageToDatumResizedSquare) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + ReadImageToDatum(filename, 0, 256, 256, &datum); + EXPECT_EQ(datum.channels(), 3); + EXPECT_EQ(datum.height(), 256); + EXPECT_EQ(datum.width(), 256); +} + +TEST_F(IOTest, TestReadImageToDatumGray) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + const bool is_color = false; + ReadImageToDatum(filename, 0, is_color, &datum); + EXPECT_EQ(datum.channels(), 1); + EXPECT_EQ(datum.height(), 360); + EXPECT_EQ(datum.width(), 480); +} + +TEST_F(IOTest, TestReadImageToDatumResizedGray) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + const bool is_color = false; + ReadImageToDatum(filename, 0, 256, 256, is_color, &datum); + EXPECT_EQ(datum.channels(), 1); + EXPECT_EQ(datum.height(), 256); + EXPECT_EQ(datum.width(), 256); +} + +TEST_F(IOTest, TestReadImageToCVMat) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + cv::Mat cv_img = ReadImageToCVMat(filename); + EXPECT_EQ(cv_img.channels(), 3); + EXPECT_EQ(cv_img.rows, 360); + EXPECT_EQ(cv_img.cols, 480); +} + +TEST_F(IOTest, TestReadImageToCVMatResized) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + cv::Mat cv_img = ReadImageToCVMat(filename, 100, 200); + EXPECT_EQ(cv_img.channels(), 3); + EXPECT_EQ(cv_img.rows, 100); + EXPECT_EQ(cv_img.cols, 200); +} + +TEST_F(IOTest, TestReadImageToCVMatResizedSquare) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + cv::Mat cv_img = ReadImageToCVMat(filename, 256, 256); + EXPECT_EQ(cv_img.channels(), 3); + EXPECT_EQ(cv_img.rows, 256); + EXPECT_EQ(cv_img.cols, 256); +} + +TEST_F(IOTest, TestReadImageToCVMatGray) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + const bool is_color = false; + cv::Mat cv_img = ReadImageToCVMat(filename, is_color); + EXPECT_EQ(cv_img.channels(), 1); + EXPECT_EQ(cv_img.rows, 360); + EXPECT_EQ(cv_img.cols, 480); +} + +TEST_F(IOTest, TestReadImageToCVMatResizedGray) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + const bool is_color = false; + cv::Mat cv_img = ReadImageToCVMat(filename, 256, 256, is_color); + EXPECT_EQ(cv_img.channels(), 1); + EXPECT_EQ(cv_img.rows, 256); + EXPECT_EQ(cv_img.cols, 256); +} + +TEST_F(IOTest, TestCVMatToDatum) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + cv::Mat cv_img = ReadImageToCVMat(filename); + Datum datum; + CVMatToDatum(cv_img, &datum); + EXPECT_EQ(datum.channels(), 3); + EXPECT_EQ(datum.height(), 360); + EXPECT_EQ(datum.width(), 480); +} + +TEST_F(IOTest, TestCVMatToDatumContent) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + cv::Mat cv_img = ReadImageToCVMat(filename); + Datum datum; + CVMatToDatum(cv_img, &datum); + Datum datum_ref; + ReadImageToDatum(filename, 0, &datum_ref); + EXPECT_EQ(datum.channels(), datum_ref.channels()); + EXPECT_EQ(datum.height(), datum_ref.height()); + EXPECT_EQ(datum.width(), datum_ref.width()); + EXPECT_EQ(datum.data().size(), datum_ref.data().size()); + + const string& data = datum.data(); + const string& data_ref = datum_ref.data(); + for (int i = 0; i < datum.data().size(); ++i) { + EXPECT_TRUE(data[i] == data_ref[i]); + } +} + +TEST_F(IOTest, TestCVMatToDatumReference) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + cv::Mat cv_img = ReadImageToCVMat(filename); + Datum datum; + CVMatToDatum(cv_img, &datum); + Datum datum_ref; + ReadImageToDatumReference(filename, 0, 0, 0, true, &datum_ref); + EXPECT_EQ(datum.channels(), datum_ref.channels()); + EXPECT_EQ(datum.height(), datum_ref.height()); + EXPECT_EQ(datum.width(), datum_ref.width()); + EXPECT_EQ(datum.data().size(), datum_ref.data().size()); + + const string& data = datum.data(); + const string& data_ref = datum_ref.data(); + for (int i = 0; i < datum.data().size(); ++i) { + EXPECT_TRUE(data[i] == data_ref[i]); + } +} + +TEST_F(IOTest, TestReadFileToDatum) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + EXPECT_TRUE(ReadFileToDatum(filename, &datum)); + EXPECT_TRUE(datum.encoded()); + EXPECT_EQ(datum.label(), -1); + EXPECT_EQ(datum.data().size(), 140391); +} + +TEST_F(IOTest, TestDecodeDatum) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + EXPECT_TRUE(ReadFileToDatum(filename, &datum)); + EXPECT_TRUE(DecodeDatum(&datum, true)); + EXPECT_FALSE(DecodeDatum(&datum, true)); + Datum datum_ref; + ReadImageToDatumReference(filename, 0, 0, 0, true, &datum_ref); + EXPECT_EQ(datum.channels(), datum_ref.channels()); + EXPECT_EQ(datum.height(), datum_ref.height()); + EXPECT_EQ(datum.width(), datum_ref.width()); + EXPECT_EQ(datum.data().size(), datum_ref.data().size()); + + const string& data = datum.data(); + const string& data_ref = datum_ref.data(); + for (int i = 0; i < datum.data().size(); ++i) { + EXPECT_TRUE(data[i] == data_ref[i]); + } +} + +TEST_F(IOTest, TestDecodeDatumToCVMat) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + EXPECT_TRUE(ReadFileToDatum(filename, &datum)); + cv::Mat cv_img = DecodeDatumToCVMat(datum, true); + EXPECT_EQ(cv_img.channels(), 3); + EXPECT_EQ(cv_img.rows, 360); + EXPECT_EQ(cv_img.cols, 480); + cv_img = DecodeDatumToCVMat(datum, false); + EXPECT_EQ(cv_img.channels(), 1); + EXPECT_EQ(cv_img.rows, 360); + EXPECT_EQ(cv_img.cols, 480); +} + +TEST_F(IOTest, TestDecodeDatumToCVMatContent) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + EXPECT_TRUE(ReadImageToDatum(filename, 0, std::string("jpg"), &datum)); + cv::Mat cv_img = DecodeDatumToCVMat(datum, true); + cv::Mat cv_img_ref = ReadImageToCVMat(filename); + EXPECT_EQ(cv_img_ref.channels(), cv_img.channels()); + EXPECT_EQ(cv_img_ref.rows, cv_img.rows); + EXPECT_EQ(cv_img_ref.cols, cv_img.cols); + + for (int c = 0; c < datum.channels(); ++c) { + for (int h = 0; h < datum.height(); ++h) { + for (int w = 0; w < datum.width(); ++w) { + EXPECT_TRUE(cv_img.at(h, w)[c]== + cv_img_ref.at(h, w)[c]); + } + } + } +} + +TEST_F(IOTest, TestDecodeDatumNative) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + EXPECT_TRUE(ReadFileToDatum(filename, &datum)); + EXPECT_TRUE(DecodeDatumNative(&datum)); + EXPECT_FALSE(DecodeDatumNative(&datum)); + Datum datum_ref; + ReadImageToDatumReference(filename, 0, 0, 0, true, &datum_ref); + EXPECT_EQ(datum.channels(), datum_ref.channels()); + EXPECT_EQ(datum.height(), datum_ref.height()); + EXPECT_EQ(datum.width(), datum_ref.width()); + EXPECT_EQ(datum.data().size(), datum_ref.data().size()); + + const string& data = datum.data(); + const string& data_ref = datum_ref.data(); + for (int i = 0; i < datum.data().size(); ++i) { + EXPECT_TRUE(data[i] == data_ref[i]); + } +} + +TEST_F(IOTest, TestDecodeDatumToCVMatNative) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + EXPECT_TRUE(ReadFileToDatum(filename, &datum)); + cv::Mat cv_img = DecodeDatumToCVMatNative(datum); + EXPECT_EQ(cv_img.channels(), 3); + EXPECT_EQ(cv_img.rows, 360); + EXPECT_EQ(cv_img.cols, 480); +} + +TEST_F(IOTest, TestDecodeDatumNativeGray) { + string filename = EXAMPLES_SOURCE_DIR "images/cat_gray.jpg"; + Datum datum; + EXPECT_TRUE(ReadFileToDatum(filename, &datum)); + EXPECT_TRUE(DecodeDatumNative(&datum)); + EXPECT_FALSE(DecodeDatumNative(&datum)); + Datum datum_ref; + ReadImageToDatumReference(filename, 0, 0, 0, false, &datum_ref); + EXPECT_EQ(datum.channels(), datum_ref.channels()); + EXPECT_EQ(datum.height(), datum_ref.height()); + EXPECT_EQ(datum.width(), datum_ref.width()); + EXPECT_EQ(datum.data().size(), datum_ref.data().size()); + + const string& data = datum.data(); + const string& data_ref = datum_ref.data(); + for (int i = 0; i < datum.data().size(); ++i) { + EXPECT_TRUE(data[i] == data_ref[i]); + } +} + +TEST_F(IOTest, TestDecodeDatumToCVMatNativeGray) { + string filename = EXAMPLES_SOURCE_DIR "images/cat_gray.jpg"; + Datum datum; + EXPECT_TRUE(ReadFileToDatum(filename, &datum)); + cv::Mat cv_img = DecodeDatumToCVMatNative(datum); + EXPECT_EQ(cv_img.channels(), 1); + EXPECT_EQ(cv_img.rows, 360); + EXPECT_EQ(cv_img.cols, 480); +} + +TEST_F(IOTest, TestDecodeDatumToCVMatContentNative) { + string filename = EXAMPLES_SOURCE_DIR "images/cat.jpg"; + Datum datum; + EXPECT_TRUE(ReadImageToDatum(filename, 0, std::string("jpg"), &datum)); + cv::Mat cv_img = DecodeDatumToCVMatNative(datum); + cv::Mat cv_img_ref = ReadImageToCVMat(filename); + EXPECT_EQ(cv_img_ref.channels(), cv_img.channels()); + EXPECT_EQ(cv_img_ref.rows, cv_img.rows); + EXPECT_EQ(cv_img_ref.cols, cv_img.cols); + + for (int c = 0; c < datum.channels(); ++c) { + for (int h = 0; h < datum.height(); ++h) { + for (int w = 0; w < datum.width(); ++w) { + EXPECT_TRUE(cv_img.at(h, w)[c]== + cv_img_ref.at(h, w)[c]); + } + } + } +} + +} // namespace caffe +#endif // USE_OPENCV diff --git a/3rdparty/caffe/src/caffe/test/test_layer_factory.cpp b/3rdparty/caffe/src/caffe/test/test_layer_factory.cpp new file mode 100644 index 00000000..7d5d39d8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_layer_factory.cpp @@ -0,0 +1,51 @@ +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/layer_factory.hpp" +#include "caffe/util/db.hpp" +#include "caffe/util/io.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class LayerFactoryTest : public MultiDeviceTest {}; + +TYPED_TEST_CASE(LayerFactoryTest, TestDtypesAndDevices); + +TYPED_TEST(LayerFactoryTest, TestCreateLayer) { + typedef typename TypeParam::Dtype Dtype; + typename LayerRegistry::CreatorRegistry& registry = + LayerRegistry::Registry(); + shared_ptr > layer; + for (typename LayerRegistry::CreatorRegistry::iterator iter = + registry.begin(); iter != registry.end(); ++iter) { + // Special case: PythonLayer is checked by pytest + if (iter->first == "Python") { continue; } + LayerParameter layer_param; + // Data layers expect a DB + if (iter->first == "Data") { +#ifdef USE_LEVELDB + string tmp; + MakeTempDir(&tmp); + boost::scoped_ptr db(db::GetDB(DataParameter_DB_LEVELDB)); + db->Open(tmp, db::NEW); + db->Close(); + layer_param.mutable_data_param()->set_source(tmp); +#else + continue; +#endif // USE_LEVELDB + } + layer_param.set_type(iter->first); + layer = LayerRegistry::CreateLayer(layer_param); + EXPECT_EQ(iter->first, layer->type()); + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_lrn_layer.cpp b/3rdparty/caffe/src/caffe/test/test_lrn_layer.cpp new file mode 100644 index 00000000..4c97b1ae --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_lrn_layer.cpp @@ -0,0 +1,450 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/lrn_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_lcn_layer.hpp" +#include "caffe/layers/cudnn_lrn_layer.hpp" +#endif + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +using std::min; +using std::max; + +namespace caffe { + +template +class LRNLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + LRNLayerTest() + : epsilon_(Dtype(1e-5)), + blob_bottom_(new Blob()), + blob_top_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1701); + blob_bottom_->Reshape(2, 7, 3, 3); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~LRNLayerTest() { delete blob_bottom_; delete blob_top_; } + void ReferenceLRNForward(const Blob& blob_bottom, + const LayerParameter& layer_param, Blob* blob_top); + + Dtype epsilon_; + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +template +void LRNLayerTest::ReferenceLRNForward( + const Blob& blob_bottom, const LayerParameter& layer_param, + Blob* blob_top) { + typedef typename TypeParam::Dtype Dtype; + blob_top->Reshape(blob_bottom.num(), blob_bottom.channels(), + blob_bottom.height(), blob_bottom.width()); + Dtype* top_data = blob_top->mutable_cpu_data(); + LRNParameter lrn_param = layer_param.lrn_param(); + Dtype alpha = lrn_param.alpha(); + Dtype beta = lrn_param.beta(); + int size = lrn_param.local_size(); + switch (lrn_param.norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + for (int n = 0; n < blob_bottom.num(); ++n) { + for (int c = 0; c < blob_bottom.channels(); ++c) { + for (int h = 0; h < blob_bottom.height(); ++h) { + for (int w = 0; w < blob_bottom.width(); ++w) { + int c_start = c - (size - 1) / 2; + int c_end = min(c_start + size, blob_bottom.channels()); + c_start = max(c_start, 0); + Dtype scale = 1.; + for (int i = c_start; i < c_end; ++i) { + Dtype value = blob_bottom.data_at(n, i, h, w); + scale += value * value * alpha / size; + } + *(top_data + blob_top->offset(n, c, h, w)) = + blob_bottom.data_at(n, c, h, w) / pow(scale, beta); + } + } + } + } + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + for (int n = 0; n < blob_bottom.num(); ++n) { + for (int c = 0; c < blob_bottom.channels(); ++c) { + for (int h = 0; h < blob_bottom.height(); ++h) { + int h_start = h - (size - 1) / 2; + int h_end = min(h_start + size, blob_bottom.height()); + h_start = max(h_start, 0); + for (int w = 0; w < blob_bottom.width(); ++w) { + Dtype scale = 1.; + int w_start = w - (size - 1) / 2; + int w_end = min(w_start + size, blob_bottom.width()); + w_start = max(w_start, 0); + for (int nh = h_start; nh < h_end; ++nh) { + for (int nw = w_start; nw < w_end; ++nw) { + Dtype value = blob_bottom.data_at(n, c, nh, nw); + scale += value * value * alpha / (size * size); + } + } + *(top_data + blob_top->offset(n, c, h, w)) = + blob_bottom.data_at(n, c, h, w) / pow(scale, beta); + } + } + } + } + break; + default: + LOG(FATAL) << "Unknown normalization region."; + } +} + +TYPED_TEST_CASE(LRNLayerTest, TestDtypesAndDevices); + +TYPED_TEST(LRNLayerTest, TestSetupAcrossChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 7); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 3); +} + +TYPED_TEST(LRNLayerTest, TestForwardAcrossChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(LRNLayerTest, TestForwardAcrossChannelsLargeRegion) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_local_size(15); + LRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(LRNLayerTest, TestGradientAcrossChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LRNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + // for (int i = 0; i < this->blob_bottom_->count(); ++i) { + // std::cout << "CPU diff " << this->blob_bottom_->cpu_diff()[i] + // << std::endl; + // } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(LRNLayerTest, TestGradientAcrossChannelsLargeRegion) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_local_size(15); + LRNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + // for (int i = 0; i < this->blob_bottom_->count(); ++i) { + // std::cout << "CPU diff " << this->blob_bottom_->cpu_diff()[i] + // << std::endl; + // } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(LRNLayerTest, TestSetupWithinChannel) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_norm_region( + LRNParameter_NormRegion_WITHIN_CHANNEL); + layer_param.mutable_lrn_param()->set_local_size(3); + LRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 7); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 3); +} + +TYPED_TEST(LRNLayerTest, TestForwardWithinChannel) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_norm_region( + LRNParameter_NormRegion_WITHIN_CHANNEL); + layer_param.mutable_lrn_param()->set_local_size(3); + LRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(LRNLayerTest, TestGradientWithinChannel) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_norm_region( + LRNParameter_NormRegion_WITHIN_CHANNEL); + layer_param.mutable_lrn_param()->set_local_size(3); + LRNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#ifdef USE_CUDNN +template +class CuDNNLRNLayerTest : public GPUDeviceTest { + protected: + CuDNNLRNLayerTest() + : epsilon_(Dtype(1e-5)), + blob_bottom_(new Blob()), + blob_top_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1701); + blob_bottom_->Reshape(2, 7, 3, 3); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~CuDNNLRNLayerTest() { delete blob_bottom_; delete blob_top_; } + void ReferenceLRNForward(const Blob& blob_bottom, + const LayerParameter& layer_param, Blob* blob_top); + + Dtype epsilon_; + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +template +void CuDNNLRNLayerTest::ReferenceLRNForward( + const Blob& blob_bottom, const LayerParameter& layer_param, + Blob* blob_top) { + typedef TypeParam Dtype; + blob_top->Reshape(blob_bottom.num(), blob_bottom.channels(), + blob_bottom.height(), blob_bottom.width()); + Dtype* top_data = blob_top->mutable_cpu_data(); + LRNParameter lrn_param = layer_param.lrn_param(); + Dtype alpha = lrn_param.alpha(); + Dtype beta = lrn_param.beta(); + int size = lrn_param.local_size(); + switch (lrn_param.norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + for (int n = 0; n < blob_bottom.num(); ++n) { + for (int c = 0; c < blob_bottom.channels(); ++c) { + for (int h = 0; h < blob_bottom.height(); ++h) { + for (int w = 0; w < blob_bottom.width(); ++w) { + int c_start = c - (size - 1) / 2; + int c_end = min(c_start + size, blob_bottom.channels()); + c_start = max(c_start, 0); + Dtype scale = 1.; + for (int i = c_start; i < c_end; ++i) { + Dtype value = blob_bottom.data_at(n, i, h, w); + scale += value * value * alpha / size; + } + *(top_data + blob_top->offset(n, c, h, w)) = + blob_bottom.data_at(n, c, h, w) / pow(scale, beta); + } + } + } + } + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + for (int n = 0; n < blob_bottom.num(); ++n) { + for (int c = 0; c < blob_bottom.channels(); ++c) { + for (int h = 0; h < blob_bottom.height(); ++h) { + int h_start = h - (size - 1) / 2; + int h_end = min(h_start + size, blob_bottom.height()); + h_start = max(h_start, 0); + for (int w = 0; w < blob_bottom.width(); ++w) { + Dtype scale = 1.; + int w_start = w - (size - 1) / 2; + int w_end = min(w_start + size, blob_bottom.width()); + w_start = max(w_start, 0); + for (int nh = h_start; nh < h_end; ++nh) { + for (int nw = w_start; nw < w_end; ++nw) { + Dtype value = blob_bottom.data_at(n, c, nh, nw); + scale += value * value * alpha / (size * size); + } + } + *(top_data + blob_top->offset(n, c, h, w)) = + blob_bottom.data_at(n, c, h, w) / pow(scale, beta); + } + } + } + } + break; + default: + LOG(FATAL) << "Unknown normalization region."; + } +} + +TYPED_TEST_CASE(CuDNNLRNLayerTest, TestDtypes); + +TYPED_TEST(CuDNNLRNLayerTest, TestForwardAcrossChannelsCuDNN) { + // typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CuDNNLRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(CuDNNLRNLayerTest, TestForwardAcrossChannelsLargeRegionCuDNN) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_local_size(15); + CuDNNLRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(CuDNNLRNLayerTest, TestGradientAcrossChannelsCuDNN) { + typedef TypeParam Dtype; + LayerParameter layer_param; + CuDNNLRNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNLRNLayerTest, TestForwardWithinChannel) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_norm_region( + LRNParameter_NormRegion_WITHIN_CHANNEL); + layer_param.mutable_lrn_param()->set_local_size(3); + CuDNNLCNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(CuDNNLRNLayerTest, TestGradientWithinChannel) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_norm_region( + LRNParameter_NormRegion_WITHIN_CHANNEL); + layer_param.mutable_lrn_param()->set_local_size(3); + CuDNNLCNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNLRNLayerTest, TestGradientAcrossChannelsLargeRegionCuDNN) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_local_size(15); + CuDNNLRNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_lstm_layer.cpp b/3rdparty/caffe/src/caffe/test/test_lstm_layer.cpp new file mode 100644 index 00000000..51905baa --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_lstm_layer.cpp @@ -0,0 +1,288 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/lstm_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class LSTMLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + LSTMLayerTest() : num_output_(7) { + blob_bottom_vec_.push_back(&blob_bottom_); + blob_bottom_vec_.push_back(&blob_bottom_cont_); + blob_top_vec_.push_back(&blob_top_); + unit_blob_bottom_vec_.push_back(&unit_blob_bottom_c_prev_); + unit_blob_bottom_vec_.push_back(&unit_blob_bottom_x_); + unit_blob_bottom_vec_.push_back(&unit_blob_bottom_cont_); + unit_blob_top_vec_.push_back(&unit_blob_top_c_); + unit_blob_top_vec_.push_back(&unit_blob_top_h_); + + ReshapeBlobs(1, 3); + + layer_param_.mutable_recurrent_param()->set_num_output(num_output_); + FillerParameter* weight_filler = + layer_param_.mutable_recurrent_param()->mutable_weight_filler(); + weight_filler->set_type("gaussian"); + weight_filler->set_std(0.2); + FillerParameter* bias_filler = + layer_param_.mutable_recurrent_param()->mutable_bias_filler(); + bias_filler->set_type("gaussian"); + bias_filler->set_std(0.1); + + layer_param_.set_phase(TEST); + } + + void ReshapeBlobs(int num_timesteps, int num_instances) { + blob_bottom_.Reshape(num_timesteps, num_instances, 3, 2); + blob_bottom_static_.Reshape(num_instances, 2, 3, 4); + vector shape(2); + shape[0] = num_timesteps; + shape[1] = num_instances; + blob_bottom_cont_.Reshape(shape); + shape.push_back(num_output_); + + shape[0] = 1; shape[1] = num_instances; shape[2] = 4 * num_output_; + unit_blob_bottom_x_.Reshape(shape); + shape[0] = 1; shape[1] = num_instances; shape[2] = num_output_; + unit_blob_bottom_c_prev_.Reshape(shape); + shape.resize(2); + shape[0] = 1; shape[1] = num_instances; + unit_blob_bottom_cont_.Reshape(shape); + + FillerParameter filler_param; + filler_param.set_min(-1); + filler_param.set_max(1); + UniformFiller filler(filler_param); + filler.Fill(&blob_bottom_); + filler.Fill(&unit_blob_bottom_c_prev_); + filler.Fill(&unit_blob_bottom_x_); + } + + int num_output_; + LayerParameter layer_param_; + Blob blob_bottom_; + Blob blob_bottom_cont_; + Blob blob_bottom_static_; + Blob blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + + Blob unit_blob_bottom_cont_; + Blob unit_blob_bottom_c_prev_; + Blob unit_blob_bottom_x_; + Blob unit_blob_top_c_; + Blob unit_blob_top_h_; + vector*> unit_blob_bottom_vec_; + vector*> unit_blob_top_vec_; +}; + +TYPED_TEST_CASE(LSTMLayerTest, TestDtypesAndDevices); + +TYPED_TEST(LSTMLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + LSTMLayer layer(this->layer_param_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + vector expected_top_shape = this->blob_bottom_.shape(); + expected_top_shape.resize(3); + expected_top_shape[2] = this->num_output_; + EXPECT_TRUE(this->blob_top_.shape() == expected_top_shape); +} + +TYPED_TEST(LSTMLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + const int kNumTimesteps = 3; + const int num = this->blob_bottom_.shape(1); + this->ReshapeBlobs(kNumTimesteps, num); + + // Fill the cont blob with <0, 1, 1, ..., 1>, + // indicating a sequence that begins at the first timestep + // then continues for the rest of the sequence. + for (int t = 0; t < kNumTimesteps; ++t) { + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[t * num + n] = t > 0; + } + } + + // Process the full sequence in a single batch. + FillerParameter filler_param; + filler_param.set_mean(0); + filler_param.set_std(1); + GaussianFiller sequence_filler(filler_param); + Caffe::set_random_seed(1); + sequence_filler.Fill(&this->blob_bottom_); + shared_ptr > layer(new LSTMLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + LOG(INFO) << "Calling forward for full sequence LSTM"; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Copy the inputs and outputs to reuse/check them later. + Blob bottom_copy(this->blob_bottom_.shape()); + bottom_copy.CopyFrom(this->blob_bottom_); + Blob top_copy(this->blob_top_.shape()); + top_copy.CopyFrom(this->blob_top_); + + // Process the batch one timestep at a time; + // check that we get the same result. + this->ReshapeBlobs(1, num); + layer.reset(new LSTMLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const int bottom_count = this->blob_bottom_.count(); + const int top_count = this->blob_top_.count(); + const Dtype kEpsilon = 1e-5; + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = t > 0; + } + LOG(INFO) << "Calling forward for LSTM timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + ASSERT_LT(t * top_count + i, top_copy.count()); + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } + } + + // Process the batch one timestep at a time with all cont blobs set to 0. + // Check that we get a different result, except in the first timestep. + Caffe::set_random_seed(1701); + layer.reset(new LSTMLayer(this->layer_param_)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = 0; + } + LOG(INFO) << "Calling forward for LSTM timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + if (t == 0) { + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } else { + EXPECT_NE(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i]) + << "t = " << t << "; i = " << i; + } + } + } +} + +TYPED_TEST(LSTMLayerTest, TestLSTMUnitSetUp) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LSTMUnitLayer layer(layer_param); + layer.SetUp(this->unit_blob_bottom_vec_, this->unit_blob_top_vec_); + const int num_axes = this->unit_blob_bottom_c_prev_.num_axes(); + ASSERT_EQ(num_axes, this->unit_blob_top_c_.num_axes()); + ASSERT_EQ(num_axes, this->unit_blob_top_h_.num_axes()); + for (int i = 0; i < num_axes; ++i) { + EXPECT_EQ(this->unit_blob_bottom_c_prev_.shape(i), + this->unit_blob_top_c_.shape(i)); + EXPECT_EQ(this->unit_blob_bottom_c_prev_.shape(i), + this->unit_blob_top_h_.shape(i)); + } +} + +TYPED_TEST(LSTMLayerTest, TestLSTMUnitGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LSTMUnitLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + Dtype* cont_data = this->blob_bottom_cont_.mutable_cpu_data(); + cont_data[0] = 0; + cont_data[1] = 0; + cont_data[2] = 0; + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 1); +} + +TYPED_TEST(LSTMLayerTest, TestLSTMUnitGradientNonZeroCont) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LSTMUnitLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + Dtype* cont_data = this->blob_bottom_cont_.mutable_cpu_data(); + cont_data[0] = 1; + cont_data[1] = 0; + cont_data[2] = 1; + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 1); +} + +TYPED_TEST(LSTMLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(LSTMLayerTest, TestGradientNonZeroCont) { + typedef typename TypeParam::Dtype Dtype; + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(LSTMLayerTest, TestGradientNonZeroContBufferSize2) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(LSTMLayerTest, TestGradientNonZeroContBufferSize2WithStaticInput) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + filler.Fill(&this->blob_bottom_static_); + this->blob_bottom_vec_.push_back(&this->blob_bottom_static_); + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 2); +} + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_math_functions.cpp b/3rdparty/caffe/src/caffe/test/test_math_functions.cpp new file mode 100644 index 00000000..efc5a278 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_math_functions.cpp @@ -0,0 +1,203 @@ +#include // for uint32_t & uint64_t +#include +#include // for std::fabs + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/util/math_functions.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class MathFunctionsTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + MathFunctionsTest() + : blob_bottom_(new Blob()), + blob_top_(new Blob()) { + } + + virtual void SetUp() { + Caffe::set_random_seed(1701); + this->blob_bottom_->Reshape(11, 17, 19, 23); + this->blob_top_->Reshape(11, 17, 19, 23); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_top_); + } + + virtual ~MathFunctionsTest() { + delete blob_bottom_; + delete blob_top_; + } + + Blob* const blob_bottom_; + Blob* const blob_top_; +}; + +template +class CPUMathFunctionsTest + : public MathFunctionsTest > { +}; + +TYPED_TEST_CASE(CPUMathFunctionsTest, TestDtypes); + +TYPED_TEST(CPUMathFunctionsTest, TestNothing) { + // The first test case of a test suite takes the longest time + // due to the set up overhead. +} + +TYPED_TEST(CPUMathFunctionsTest, TestAsum) { + int n = this->blob_bottom_->count(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + TypeParam std_asum = 0; + for (int i = 0; i < n; ++i) { + std_asum += std::fabs(x[i]); + } + TypeParam cpu_asum = caffe_cpu_asum(n, x); + EXPECT_LT((cpu_asum - std_asum) / std_asum, 1e-2); +} + +TYPED_TEST(CPUMathFunctionsTest, TestSign) { + int n = this->blob_bottom_->count(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + caffe_cpu_sign(n, x, this->blob_bottom_->mutable_cpu_diff()); + const TypeParam* signs = this->blob_bottom_->cpu_diff(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(signs[i], x[i] > 0 ? 1 : (x[i] < 0 ? -1 : 0)); + } +} + +TYPED_TEST(CPUMathFunctionsTest, TestSgnbit) { + int n = this->blob_bottom_->count(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + caffe_cpu_sgnbit(n, x, this->blob_bottom_->mutable_cpu_diff()); + const TypeParam* signbits = this->blob_bottom_->cpu_diff(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(signbits[i], x[i] < 0 ? 1 : 0); + } +} + +TYPED_TEST(CPUMathFunctionsTest, TestFabs) { + int n = this->blob_bottom_->count(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + caffe_abs(n, x, this->blob_bottom_->mutable_cpu_diff()); + const TypeParam* abs_val = this->blob_bottom_->cpu_diff(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(abs_val[i], x[i] > 0 ? x[i] : -x[i]); + } +} + +TYPED_TEST(CPUMathFunctionsTest, TestScale) { + int n = this->blob_bottom_->count(); + TypeParam alpha = this->blob_bottom_->cpu_diff()[caffe_rng_rand() % + this->blob_bottom_->count()]; + caffe_cpu_scale(n, alpha, this->blob_bottom_->cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + const TypeParam* scaled = this->blob_bottom_->cpu_diff(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(scaled[i], x[i] * alpha); + } +} + +TYPED_TEST(CPUMathFunctionsTest, TestCopy) { + const int n = this->blob_bottom_->count(); + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + TypeParam* top_data = this->blob_top_->mutable_cpu_data(); + caffe_copy(n, bottom_data, top_data); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(bottom_data[i], top_data[i]); + } +} + +#ifndef CPU_ONLY + +template +class GPUMathFunctionsTest : public MathFunctionsTest > { +}; + +TYPED_TEST_CASE(GPUMathFunctionsTest, TestDtypes); + +TYPED_TEST(GPUMathFunctionsTest, TestAsum) { + int n = this->blob_bottom_->count(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + TypeParam std_asum = 0; + for (int i = 0; i < n; ++i) { + std_asum += std::fabs(x[i]); + } + TypeParam gpu_asum; + caffe_gpu_asum(n, this->blob_bottom_->gpu_data(), &gpu_asum); + EXPECT_LT((gpu_asum - std_asum) / std_asum, 1e-2); +} + +TYPED_TEST(GPUMathFunctionsTest, TestSign) { + int n = this->blob_bottom_->count(); + caffe_gpu_sign(n, this->blob_bottom_->gpu_data(), + this->blob_bottom_->mutable_gpu_diff()); + const TypeParam* signs = this->blob_bottom_->cpu_diff(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(signs[i], x[i] > 0 ? 1 : (x[i] < 0 ? -1 : 0)); + } +} + +TYPED_TEST(GPUMathFunctionsTest, TestSgnbit) { + int n = this->blob_bottom_->count(); + caffe_gpu_sgnbit(n, this->blob_bottom_->gpu_data(), + this->blob_bottom_->mutable_gpu_diff()); + const TypeParam* signbits = this->blob_bottom_->cpu_diff(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(signbits[i], x[i] < 0 ? 1 : 0); + } +} + +TYPED_TEST(GPUMathFunctionsTest, TestFabs) { + int n = this->blob_bottom_->count(); + caffe_gpu_abs(n, this->blob_bottom_->gpu_data(), + this->blob_bottom_->mutable_gpu_diff()); + const TypeParam* abs_val = this->blob_bottom_->cpu_diff(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(abs_val[i], x[i] > 0 ? x[i] : -x[i]); + } +} + +TYPED_TEST(GPUMathFunctionsTest, TestScale) { + int n = this->blob_bottom_->count(); + TypeParam alpha = this->blob_bottom_->cpu_diff()[caffe_rng_rand() % + this->blob_bottom_->count()]; + caffe_gpu_scale(n, alpha, this->blob_bottom_->gpu_data(), + this->blob_bottom_->mutable_gpu_diff()); + const TypeParam* scaled = this->blob_bottom_->cpu_diff(); + const TypeParam* x = this->blob_bottom_->cpu_data(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(scaled[i], x[i] * alpha); + } +} + +TYPED_TEST(GPUMathFunctionsTest, TestCopy) { + const int n = this->blob_bottom_->count(); + const TypeParam* bottom_data = this->blob_bottom_->gpu_data(); + TypeParam* top_data = this->blob_top_->mutable_gpu_data(); + caffe_copy(n, bottom_data, top_data); + bottom_data = this->blob_bottom_->cpu_data(); + top_data = this->blob_top_->mutable_cpu_data(); + for (int i = 0; i < n; ++i) { + EXPECT_EQ(bottom_data[i], top_data[i]); + } +} + +#endif + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_maxpool_dropout_layers.cpp b/3rdparty/caffe/src/caffe/test/test_maxpool_dropout_layers.cpp new file mode 100644 index 00000000..4f0e20ac --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_maxpool_dropout_layers.cpp @@ -0,0 +1,127 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/dropout_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class MaxPoolingDropoutTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + MaxPoolingDropoutTest() + : blob_bottom_(new Blob()), + blob_top_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1703); + blob_bottom_->Reshape(2, 3, 6, 5); + // fill the values + FillerParameter filler_param; + filler_param.set_value(1.); + ConstantFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~MaxPoolingDropoutTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(MaxPoolingDropoutTest, TestDtypesAndDevices); + +TYPED_TEST(MaxPoolingDropoutTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + PoolingLayer max_layer(layer_param); + max_layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + DropoutLayer dropout_layer(layer_param); + dropout_layer.SetUp(this->blob_top_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 2); +} + + +TYPED_TEST(MaxPoolingDropoutTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* top_data = this->blob_top_->cpu_data(); + Dtype sum = 0.; + for (int i = 0; i < this->blob_top_->count(); ++i) { + sum += top_data[i]; + } + EXPECT_EQ(sum, this->blob_top_->count()); + // Dropout in-place + DropoutLayer dropout_layer(layer_param); + dropout_layer.SetUp(this->blob_top_vec_, this->blob_top_vec_); + dropout_layer.Forward(this->blob_top_vec_, this->blob_top_vec_); + sum = 0.; + Dtype scale = 1. / (1. - layer_param.dropout_param().dropout_ratio()); + top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + sum += top_data[i]; + } + EXPECT_GE(sum, 0); + EXPECT_LE(sum, this->blob_top_->count()*scale); +} + +TYPED_TEST(MaxPoolingDropoutTest, TestBackward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.set_phase(TRAIN); + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + const Dtype* bottom_diff = this->blob_bottom_->cpu_diff(); + Dtype sum = 0.; + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + sum += bottom_diff[i]; + } + EXPECT_EQ(sum, this->blob_top_->count()); + // Dropout in-place + DropoutLayer dropout_layer(layer_param); + dropout_layer.SetUp(this->blob_top_vec_, this->blob_top_vec_); + dropout_layer.Forward(this->blob_top_vec_, this->blob_top_vec_); + dropout_layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_top_vec_); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + Dtype sum_with_dropout = 0.; + bottom_diff = this->blob_bottom_->cpu_diff(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + sum_with_dropout += bottom_diff[i]; + } + EXPECT_GE(sum_with_dropout, sum); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_memory_data_layer.cpp b/3rdparty/caffe/src/caffe/test/test_memory_data_layer.cpp new file mode 100644 index 00000000..7998bc18 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_memory_data_layer.cpp @@ -0,0 +1,299 @@ +#ifdef USE_OPENCV +#include +#endif // USE_OPENCV + +#include +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/memory_data_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class MemoryDataLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + MemoryDataLayerTest() + : data_(new Blob()), + labels_(new Blob()), + data_blob_(new Blob()), + label_blob_(new Blob()) {} + virtual void SetUp() { + batch_size_ = 8; + batches_ = 12; + channels_ = 4; + height_ = 7; + width_ = 11; + blob_top_vec_.push_back(data_blob_); + blob_top_vec_.push_back(label_blob_); + // pick random input data + FillerParameter filler_param; + GaussianFiller filler(filler_param); + data_->Reshape(batches_ * batch_size_, channels_, height_, width_); + labels_->Reshape(batches_ * batch_size_, 1, 1, 1); + filler.Fill(this->data_); + filler.Fill(this->labels_); + } + + virtual ~MemoryDataLayerTest() { + delete data_blob_; + delete label_blob_; + delete data_; + delete labels_; + } + int batch_size_; + int batches_; + int channels_; + int height_; + int width_; + // we don't really need blobs for the input data, but it makes it + // easier to call Filler + Blob* const data_; + Blob* const labels_; + // blobs for the top of MemoryDataLayer + Blob* const data_blob_; + Blob* const label_blob_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(MemoryDataLayerTest, TestDtypesAndDevices); + +TYPED_TEST(MemoryDataLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + + LayerParameter layer_param; + MemoryDataParameter* md_param = layer_param.mutable_memory_data_param(); + md_param->set_batch_size(this->batch_size_); + md_param->set_channels(this->channels_); + md_param->set_height(this->height_); + md_param->set_width(this->width_); + shared_ptr > layer( + new MemoryDataLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->data_blob_->num(), this->batch_size_); + EXPECT_EQ(this->data_blob_->channels(), this->channels_); + EXPECT_EQ(this->data_blob_->height(), this->height_); + EXPECT_EQ(this->data_blob_->width(), this->width_); + EXPECT_EQ(this->label_blob_->num(), this->batch_size_); + EXPECT_EQ(this->label_blob_->channels(), 1); + EXPECT_EQ(this->label_blob_->height(), 1); + EXPECT_EQ(this->label_blob_->width(), 1); +} + +// run through a few batches and check that the right data appears +TYPED_TEST(MemoryDataLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + + LayerParameter layer_param; + MemoryDataParameter* md_param = layer_param.mutable_memory_data_param(); + md_param->set_batch_size(this->batch_size_); + md_param->set_channels(this->channels_); + md_param->set_height(this->height_); + md_param->set_width(this->width_); + shared_ptr > layer( + new MemoryDataLayer(layer_param)); + layer->DataLayerSetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Reset(this->data_->mutable_cpu_data(), + this->labels_->mutable_cpu_data(), this->data_->num()); + for (int i = 0; i < this->batches_ * 6; ++i) { + int batch_num = i % this->batches_; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int j = 0; j < this->data_blob_->count(); ++j) { + EXPECT_EQ(this->data_blob_->cpu_data()[j], + this->data_->cpu_data()[ + this->data_->offset(1) * this->batch_size_ * batch_num + j]); + } + for (int j = 0; j < this->label_blob_->count(); ++j) { + EXPECT_EQ(this->label_blob_->cpu_data()[j], + this->labels_->cpu_data()[this->batch_size_ * batch_num + j]); + } + } +} + +#ifdef USE_OPENCV +TYPED_TEST(MemoryDataLayerTest, AddDatumVectorDefaultTransform) { + typedef typename TypeParam::Dtype Dtype; + + LayerParameter param; + MemoryDataParameter* memory_data_param = param.mutable_memory_data_param(); + memory_data_param->set_batch_size(this->batch_size_); + memory_data_param->set_channels(this->channels_); + memory_data_param->set_height(this->height_); + memory_data_param->set_width(this->width_); + MemoryDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + // We add batch_size*num_iter items, then for each iteration + // we forward batch_size elements + int num_iter = 5; + vector datum_vector(this->batch_size_ * num_iter); + const size_t count = this->channels_ * this->height_ * this->width_; + size_t pixel_index = 0; + for (int i = 0; i < this->batch_size_ * num_iter; ++i) { + datum_vector[i].set_channels(this->channels_); + datum_vector[i].set_height(this->height_); + datum_vector[i].set_width(this->width_); + datum_vector[i].set_label(i); + vector pixels(count); + for (int j = 0; j < count; ++j) { + pixels[j] = pixel_index++ % 256; + } + datum_vector[i].set_data(&(pixels[0]), count); + } + layer.AddDatumVector(datum_vector); + + int data_index; + // Go through the data 5 times + for (int iter = 0; iter < num_iter; ++iter) { + int offset = this->batch_size_ * iter; + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->data_blob_->cpu_data(); + size_t index = 0; + for (int i = 0; i < this->batch_size_; ++i) { + const string& data_string = datum_vector[offset + i].data(); + EXPECT_EQ(offset + i, this->label_blob_->cpu_data()[i]); + for (int c = 0; c < this->channels_; ++c) { + for (int h = 0; h < this->height_; ++h) { + for (int w = 0; w < this->width_; ++w) { + data_index = (c * this->height_ + h) * this->width_ + w; + EXPECT_EQ(static_cast( + static_cast(data_string[data_index])), + data[index++]); + } + } + } + } + } +} + +TYPED_TEST(MemoryDataLayerTest, AddMatVectorDefaultTransform) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + MemoryDataParameter* memory_data_param = param.mutable_memory_data_param(); + memory_data_param->set_batch_size(this->batch_size_); + memory_data_param->set_channels(this->channels_); + memory_data_param->set_height(this->height_); + memory_data_param->set_width(this->width_); + MemoryDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + // We add batch_size*num_iter items, then for each iteration + // we forward batch_size elements + int num_iter = 5; + vector mat_vector(this->batch_size_ * num_iter); + vector label_vector(this->batch_size_ * num_iter); + for (int i = 0; i < this->batch_size_*num_iter; ++i) { + mat_vector[i] = cv::Mat(this->height_, this->width_, CV_8UC4); + label_vector[i] = i; + cv::randu(mat_vector[i], cv::Scalar::all(0), cv::Scalar::all(255)); + } + layer.AddMatVector(mat_vector, label_vector); + + int data_index; + const size_t count = this->channels_ * this->height_ * this->width_; + for (int iter = 0; iter < num_iter; ++iter) { + int offset = this->batch_size_ * iter; + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->data_blob_->cpu_data(); + for (int i = 0; i < this->batch_size_; ++i) { + EXPECT_EQ(offset + i, this->label_blob_->cpu_data()[i]); + for (int h = 0; h < this->height_; ++h) { + const unsigned char* ptr_mat = mat_vector[offset + i].ptr(h); + int index = 0; + for (int w = 0; w < this->width_; ++w) { + for (int c = 0; c < this->channels_; ++c) { + data_index = (i*count) + (c * this->height_ + h) * this->width_ + w; + Dtype pixel = static_cast(ptr_mat[index++]); + EXPECT_EQ(static_cast(pixel), + data[data_index]); + } + } + } + } + } +} + +TYPED_TEST(MemoryDataLayerTest, TestSetBatchSize) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + MemoryDataParameter* memory_data_param = param.mutable_memory_data_param(); + memory_data_param->set_batch_size(this->batch_size_); + memory_data_param->set_channels(this->channels_); + memory_data_param->set_height(this->height_); + memory_data_param->set_width(this->width_); + MemoryDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + // first add data as usual + int num_iter = 5; + vector mat_vector(this->batch_size_ * num_iter); + vector label_vector(this->batch_size_ * num_iter); + for (int i = 0; i < this->batch_size_*num_iter; ++i) { + mat_vector[i] = cv::Mat(this->height_, this->width_, CV_8UC4); + label_vector[i] = i; + cv::randu(mat_vector[i], cv::Scalar::all(0), cv::Scalar::all(255)); + } + layer.AddMatVector(mat_vector, label_vector); + // then consume the data + int data_index; + const size_t count = this->channels_ * this->height_ * this->width_; + for (int iter = 0; iter < num_iter; ++iter) { + int offset = this->batch_size_ * iter; + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->data_blob_->cpu_data(); + for (int i = 0; i < this->batch_size_; ++i) { + EXPECT_EQ(offset + i, this->label_blob_->cpu_data()[i]); + for (int h = 0; h < this->height_; ++h) { + const unsigned char* ptr_mat = mat_vector[offset + i].ptr(h); + int index = 0; + for (int w = 0; w < this->width_; ++w) { + for (int c = 0; c < this->channels_; ++c) { + data_index = (i*count) + (c * this->height_ + h) * this->width_ + w; + Dtype pixel = static_cast(ptr_mat[index++]); + EXPECT_EQ(static_cast(pixel), data[data_index]); + } + } + } + } + } + // and then add new data with different batch_size + int new_batch_size = 16; + layer.set_batch_size(new_batch_size); + mat_vector.clear(); + mat_vector.resize(new_batch_size * num_iter); + label_vector.clear(); + label_vector.resize(new_batch_size * num_iter); + for (int i = 0; i < new_batch_size*num_iter; ++i) { + mat_vector[i] = cv::Mat(this->height_, this->width_, CV_8UC4); + label_vector[i] = i; + cv::randu(mat_vector[i], cv::Scalar::all(0), cv::Scalar::all(255)); + } + layer.AddMatVector(mat_vector, label_vector); + + // finally consume new data and check if everything is fine + for (int iter = 0; iter < num_iter; ++iter) { + int offset = new_batch_size * iter; + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(new_batch_size, this->blob_top_vec_[0]->num()); + EXPECT_EQ(new_batch_size, this->blob_top_vec_[1]->num()); + const Dtype* data = this->data_blob_->cpu_data(); + for (int i = 0; i < new_batch_size; ++i) { + EXPECT_EQ(offset + i, this->label_blob_->cpu_data()[i]); + for (int h = 0; h < this->height_; ++h) { + const unsigned char* ptr_mat = mat_vector[offset + i].ptr(h); + int index = 0; + for (int w = 0; w < this->width_; ++w) { + for (int c = 0; c < this->channels_; ++c) { + data_index = (i*count) + (c * this->height_ + h) * this->width_ + w; + Dtype pixel = static_cast(ptr_mat[index++]); + EXPECT_EQ(static_cast(pixel), data[data_index]); + } + } + } + } + } +} +#endif // USE_OPENCV +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_multinomial_logistic_loss_layer.cpp b/3rdparty/caffe/src/caffe/test/test_multinomial_logistic_loss_layer.cpp new file mode 100644 index 00000000..8cc21022 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_multinomial_logistic_loss_layer.cpp @@ -0,0 +1,58 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/multinomial_logistic_loss_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class MultinomialLogisticLossLayerTest : public CPUDeviceTest { + protected: + MultinomialLogisticLossLayerTest() + : blob_bottom_data_(new Blob(10, 5, 1, 1)), + blob_bottom_label_(new Blob(10, 1, 1, 1)), + blob_top_loss_(new Blob()) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + PositiveUnitballFiller filler(filler_param); + filler.Fill(this->blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_data_); + for (int i = 0; i < blob_bottom_label_->count(); ++i) { + blob_bottom_label_->mutable_cpu_data()[i] = caffe_rng_rand() % 5; + } + blob_bottom_vec_.push_back(blob_bottom_label_); + blob_top_vec_.push_back(blob_top_loss_); + } + virtual ~MultinomialLogisticLossLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_label_; + delete blob_top_loss_; + } + Blob* const blob_bottom_data_; + Blob* const blob_bottom_label_; + Blob* const blob_top_loss_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(MultinomialLogisticLossLayerTest, TestDtypes); + + +TYPED_TEST(MultinomialLogisticLossLayerTest, TestGradientCPU) { + LayerParameter layer_param; + MultinomialLogisticLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 2*1e-2, 1701, 0, 0.05); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_mvn_layer.cpp b/3rdparty/caffe/src/caffe/test/test_mvn_layer.cpp new file mode 100644 index 00000000..28a762d2 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_mvn_layer.cpp @@ -0,0 +1,172 @@ +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/mvn_layer.hpp" +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class MVNLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + MVNLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~MVNLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(MVNLayerTest, TestDtypesAndDevices); + +TYPED_TEST(MVNLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + MVNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Test mean + int num = this->blob_bottom_->num(); + int channels = this->blob_bottom_->channels(); + int height = this->blob_bottom_->height(); + int width = this->blob_bottom_->width(); + + for (int i = 0; i < num; ++i) { + for (int j = 0; j < channels; ++j) { + Dtype sum = 0, var = 0; + for (int k = 0; k < height; ++k) { + for (int l = 0; l < width; ++l) { + Dtype data = this->blob_top_->data_at(i, j, k, l); + sum += data; + var += data * data; + } + } + sum /= height * width; + var /= height * width; + + const Dtype kErrorBound = 0.001; + // expect zero mean + EXPECT_NEAR(0, sum, kErrorBound); + // expect unit variance + EXPECT_NEAR(1, var, kErrorBound); + } + } +} + +TYPED_TEST(MVNLayerTest, TestForwardMeanOnly) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "mvn_param{normalize_variance: false}", &layer_param)); + MVNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Test mean + int num = this->blob_bottom_->num(); + int channels = this->blob_bottom_->channels(); + int height = this->blob_bottom_->height(); + int width = this->blob_bottom_->width(); + + for (int i = 0; i < num; ++i) { + for (int j = 0; j < channels; ++j) { + Dtype sum = 0, var = 0; + for (int k = 0; k < height; ++k) { + for (int l = 0; l < width; ++l) { + Dtype data = this->blob_top_->data_at(i, j, k, l); + sum += data; + var += data * data; + } + } + sum /= height * width; + + const Dtype kErrorBound = 0.001; + // expect zero mean + EXPECT_NEAR(0, sum, kErrorBound); + } + } +} + +TYPED_TEST(MVNLayerTest, TestForwardAcrossChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "mvn_param{across_channels: true}", &layer_param)); + MVNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Test mean + int num = this->blob_bottom_->num(); + int channels = this->blob_bottom_->channels(); + int height = this->blob_bottom_->height(); + int width = this->blob_bottom_->width(); + + for (int i = 0; i < num; ++i) { + Dtype sum = 0, var = 0; + for (int j = 0; j < channels; ++j) { + for (int k = 0; k < height; ++k) { + for (int l = 0; l < width; ++l) { + Dtype data = this->blob_top_->data_at(i, j, k, l); + sum += data; + var += data * data; + } + } + } + sum /= height * width * channels; + var /= height * width * channels; + + const Dtype kErrorBound = 0.001; + // expect zero mean + EXPECT_NEAR(0, sum, kErrorBound); + // expect unit variance + EXPECT_NEAR(1, var, kErrorBound); + } +} + +TYPED_TEST(MVNLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + MVNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(MVNLayerTest, TestGradientMeanOnly) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "mvn_param{normalize_variance: false}", &layer_param)); + MVNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(MVNLayerTest, TestGradientAcrossChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "mvn_param{across_channels: true}", &layer_param)); + MVNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_net.cpp b/3rdparty/caffe/src/caffe/test/test_net.cpp new file mode 100644 index 00000000..24b957f2 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_net.cpp @@ -0,0 +1,2604 @@ +#include +#include +#include + +#include "google/protobuf/text_format.h" + +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/net.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/math_functions.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class NetTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + NetTest() : seed_(1701) {} + + virtual void InitNetFromProtoString(const string& proto) { + NetParameter param; + CHECK(google::protobuf::TextFormat::ParseFromString(proto, ¶m)); + net_.reset(new Net(param)); + } + + virtual void InitNetFromProtoFileWithState(const string& proto, + Phase phase = caffe::TRAIN, const int level = 0, + const vector* stages = NULL) { + NetParameter param; + CHECK(google::protobuf::TextFormat::ParseFromString(proto, ¶m)); + string param_file; + MakeTempFilename(¶m_file); + WriteProtoToTextFile(param, param_file); + net_.reset(new Net(param_file, phase, level, stages)); + } + + virtual void CopyNetBlobs(const bool copy_diff, + vector > >* blobs_copy) { + CHECK(net_); + const vector > >& net_blobs = net_->blobs(); + blobs_copy->clear(); + blobs_copy->resize(net_blobs.size()); + const bool kReshape = true; + for (int i = 0; i < net_blobs.size(); ++i) { + (*blobs_copy)[i].reset(new Blob()); + (*blobs_copy)[i]->CopyFrom(*net_blobs[i], copy_diff, kReshape); + } + } + + virtual void CopyNetParams(const bool copy_diff, + vector > >* params_copy) { + CHECK(net_); + const vector > >& net_params = net_->params(); + params_copy->clear(); + params_copy->resize(net_params.size()); + const bool kReshape = true; + for (int i = 0; i < net_params.size(); ++i) { + (*params_copy)[i].reset(new Blob()); + (*params_copy)[i]->CopyFrom(*net_params[i], copy_diff, kReshape); + } + } + + virtual void InitTinyNet(const bool force_backward = false, + const bool accuracy_layer = false) { + string proto = + "name: 'TinyTestNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " shape { " + " dim: 5 " + " dim: 2 " + " dim: 3 " + " dim: 4 " + " } " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " shape { " + " dim: 5 " + " } " + " data_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerproduct' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'data' " + " top: 'innerproduct' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerproduct' " + " bottom: 'label' " + " top: 'top_loss' " + "} "; + if (accuracy_layer) { + proto += + "layer { " + " name: 'loss' " + " type: 'Accuracy' " + " bottom: 'innerproduct' " + " bottom: 'label' " + " top: 'accuracy' " + "} "; + } + if (force_backward) { + proto += "force_backward: true "; + } + InitNetFromProtoString(proto); + } + + virtual void InitTinyNetEuclidean(const bool force_backward = false) { + string proto = + "name: 'TinyTestEuclidLossNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 5 " + " channels: 2 " + " height: 3 " + " width: 4 " + " num: 5 " + " channels: 1 " + " height: 1 " + " width: 1 " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerproduct' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'data' " + " top: 'innerproduct' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'innerproduct' " + " bottom: 'label' " + "} "; + if (force_backward) { + proto += "force_backward: true "; + } + InitNetFromProtoString(proto); + } + + virtual void InitTrickyNet(Dtype* loss_weight = NULL) { + ostringstream loss_weight_stream; + if (loss_weight) { + loss_weight_stream << " loss_weight: " << *loss_weight << " "; + } + const string& proto = + "name: 'TrickyTestNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 5 " + " channels: 2 " + " height: 3 " + " width: 4 " + " num: 5 " + " channels: 1 " + " height: 1 " + " width: 1 " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerproduct' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'data' " + " top: 'transformed_data' " + "} " + "layer { " + " name: 'innerproduct' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'label' " + " top: 'transformed_label' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + + loss_weight_stream.str() + + " bottom: 'transformed_data' " + " bottom: 'transformed_label' " + "} "; + InitNetFromProtoString(proto); + } + + // loss_weight is the loss weight for the 'EuclideanLoss' layer output. + // midnet_loss_weight is the loss weight for the first 'InnerProduct' layer + // output. Should both default to 0.0 if unspecified (i.e., if NULL is + // passed to this function). + virtual void InitUnsharedWeightsNet(const Dtype* loss_weight = NULL, + const Dtype* midnet_loss_weight = NULL, + const bool force_backward = false, const bool bias_term = false, + const Dtype blobs_lr_w1 = 1, const Dtype blobs_lr_b1 = 2, + const Dtype blobs_lr_w2 = 1, const Dtype blobs_lr_b2 = 2) { + string bias_str = bias_term ? "true ":"false "; + ostringstream proto; + proto << "name: 'UnsharedWeightsNetwork' "; + if (force_backward) { + proto << "force_backward: true "; + } + proto << + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 5 " + " channels: 2 " + " height: 3 " + " width: 4 " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " top: 'data' " + "} " + "layer { " + " name: 'innerproduct1' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: " << bias_str << + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { " + " name: 'unsharedweights1' " + " lr_mult: " << blobs_lr_w1 << + " } "; + if (bias_term) { + proto << " param { lr_mult: " << blobs_lr_b1 << " } "; + } + proto << + " bottom: 'data' " + " top: 'innerproduct1' "; + if (midnet_loss_weight) { + proto << " loss_weight: " << *midnet_loss_weight << " "; + } + proto << + "} " + "layer { " + " name: 'innerproduct2' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: " << bias_str << + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { " + " name: 'unsharedweights2' " + " lr_mult: " << blobs_lr_w2 << + " } "; + if (bias_term) { + proto << " param { lr_mult: " << blobs_lr_b2 << " } "; + } + proto << + " bottom: 'data' " + " top: 'innerproduct2' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' "; + if (loss_weight) { + proto << " loss_weight: " << *loss_weight << " "; + } + proto << + " bottom: 'innerproduct1' " + " bottom: 'innerproduct2' " + "} "; + InitNetFromProtoString(proto.str()); + } + + virtual void InitSharedWeightsNet() { + const string& proto = + "name: 'SharedWeightsNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 5 " + " channels: 2 " + " height: 3 " + " width: 4 " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " top: 'data' " + "} " + "layer { " + " name: 'innerproduct1' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { name: 'sharedweights' } " + " bottom: 'data' " + " top: 'innerproduct1' " + "} " + "layer { " + " name: 'innerproduct2' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { name: 'sharedweights' } " + " bottom: 'data' " + " top: 'innerproduct2' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'innerproduct1' " + " bottom: 'innerproduct2' " + "} "; + InitNetFromProtoString(proto); + } + + virtual void InitDiffDataUnsharedWeightsNet() { + const string& proto = + "name: 'DiffDataUnsharedWeightsNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 10 " + " channels: 10 " + " height: 1 " + " width: 1 " + " num: 10 " + " channels: 10 " + " height: 1 " + " width: 1 " + " data_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " top: 'data1' " + " top: 'data2' " + "} " + "layer { " + " name: 'innerproduct1' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'constant' " + " value: 0.5 " + " } " + " } " + " param { name: 'unsharedweights1' } " + " bottom: 'data1' " + " top: 'innerproduct1' " + "} " + "layer { " + " name: 'innerproduct2' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'constant' " + " value: 0.5 " + " } " + " } " + " param { name: 'unsharedweights2' } " + " bottom: 'innerproduct1' " + " top: 'innerproduct2' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'data2' " + " bottom: 'innerproduct2' " + "} "; + InitNetFromProtoString(proto); + } + + virtual void InitDiffDataSharedWeightsNet() { + const string& proto = + "name: 'DiffDataSharedWeightsNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 10 " + " channels: 10 " + " height: 1 " + " width: 1 " + " num: 10 " + " channels: 10 " + " height: 1 " + " width: 1 " + " data_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " top: 'data1' " + " top: 'data2' " + "} " + "layer { " + " name: 'innerproduct1' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'constant' " + " value: 0.5 " + " } " + " } " + " param { name: 'sharedweights' } " + " bottom: 'data1' " + " top: 'innerproduct1' " + "} " + "layer { " + " name: 'innerproduct2' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'constant' " + " value: 0.5 " + " } " + " } " + " param { name: 'sharedweights' } " + " bottom: 'innerproduct1' " + " top: 'innerproduct2' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'data2' " + " bottom: 'innerproduct2' " + "} "; + InitNetFromProtoString(proto); + } + + virtual void InitReshapableNet() { + const string& proto = + "name: 'ReshapableNetwork' " + "layer { " + " name: 'data' " + " type: 'Input' " + " top: 'data' " + " input_param { " + " shape: { dim: 1 dim: 3 dim: 100 dim: 100 } " + " } " + "} " + "layer { " + " name: 'conv1' " + " type: 'Convolution' " + " bottom: 'data' " + " top: 'conv1' " + " convolution_param { " + " num_output: 5 " + " kernel_size: 3 " + " stride: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0.2 " + " } " + " } " + "} " + "layer { " + " name: 'relu1' " + " type: 'ReLU' " + " bottom: 'conv1' " + " top: 'conv1' " + "} " + "layer { " + " name: 'pool1' " + " type: 'Pooling' " + " bottom: 'conv1' " + " top: 'pool1' " + " pooling_param { " + " pool: MAX " + " kernel_size: 2 " + " stride: 2 " + " } " + "} " + "layer { " + " name: 'norm1' " + " type: 'LRN' " + " bottom: 'pool1' " + " top: 'norm1' " + " lrn_param { " + " local_size: 3 " + " } " + "} " + "layer { " + " name: 'softmax' " + " type: 'Softmax' " + " bottom: 'norm1' " + " top: 'softmax' " + "} "; + InitNetFromProtoString(proto); + } + + virtual void InitSkipPropNet(bool test_skip_true) { + string proto = + "name: 'SkipPropTestNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " shape { " + " dim: 5 " + " dim: 2 " + " dim: 3 " + " dim: 4 " + " } " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " shape { " + " dim: 5 " + " } " + " data_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'silence' " + " bottom: 'label' " + " type: 'Silence' " + "} " + "layer { " + " name: 'innerproduct' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'data' " + " top: 'innerproduct' " + "} " + "layer { " + " name: 'ip_fake_labels' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " bottom: 'data' " + " top: 'fake_labels' " + "} " + "layer { " + " name: 'argmax' " + " bottom: 'fake_labels' " + " top: 'label_argmax' " + " type: 'ArgMax' " + "} " + "layer { " + " name: 'loss' " + " bottom: 'innerproduct' " + " bottom: 'label_argmax' "; + if (test_skip_true) + proto += " propagate_down: true " + " propagate_down: false "; + else + proto += " propagate_down: true " + " propagate_down: true "; + proto += + " top: 'cross_entropy_loss' " + " type: 'SigmoidCrossEntropyLoss' " + " loss_weight: 0.1 " + "} "; + InitNetFromProtoString(proto); + } + + virtual void InitForcePropNet(bool test_force_true) { + string proto = + "name: 'ForcePropTestNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " shape { " + " dim: 5 " + " dim: 2 " + " dim: 3 " + " dim: 4 " + " } " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " shape { " + " dim: 5 " + " } " + " data_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerproduct' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " bottom: 'data' " + " top: 'innerproduct' "; + if (test_force_true) { + proto += " propagate_down: true "; + } + proto += + "} " + "layer { " + " name: 'loss' " + " bottom: 'innerproduct' " + " bottom: 'label' " + " top: 'cross_entropy_loss' " + " type: 'SigmoidCrossEntropyLoss' " + "} "; + InitNetFromProtoString(proto); + } + + virtual void InitAllInOneNet(Phase phase = caffe::TRAIN, + const int level = 0, const vector* stages = NULL) { + string proto = + "name: 'All-in-one Network'" + "layer { " + " name: 'train-data' " + " type: 'DummyData' " + " top: 'data' " + " top: 'label' " + " dummy_data_param { " + " shape { dim: 1 dim: 10 } " + " shape { dim: 1 dim: 1 } " + " } " + " include { phase: TRAIN stage: 'train' } " + "} " + "layer { " + " name: 'val-data' " + " type: 'DummyData' " + " top: 'data' " + " top: 'label' " + " dummy_data_param { " + " shape { dim: 1 dim: 10 } " + " shape { dim: 1 dim: 1 } " + " } " + " include { phase: TEST stage: 'val' } " + "} " + "layer { " + " name: 'deploy-data' " + " type: 'Input' " + " top: 'data' " + " input_param { " + " shape { dim: 1 dim: 10 } " + " } " + " include { phase: TEST stage: 'deploy' } " + "} " + "layer { " + " name: 'ip' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'ip' " + " inner_product_param { " + " num_output: 2 " + " } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'ip' " + " bottom: 'label' " + " top: 'loss' " + " include { phase: TRAIN stage: 'train' } " + " include { phase: TEST stage: 'val' } " + "} "; + InitNetFromProtoFileWithState(proto, phase, level, stages); + } + + int seed_; + shared_ptr > net_; +}; + +TYPED_TEST_CASE(NetTest, TestDtypesAndDevices); + +TYPED_TEST(NetTest, TestHasBlob) { + this->InitTinyNet(); + EXPECT_TRUE(this->net_->has_blob("data")); + EXPECT_TRUE(this->net_->has_blob("label")); + EXPECT_TRUE(this->net_->has_blob("innerproduct")); + EXPECT_FALSE(this->net_->has_blob("loss")); + EXPECT_TRUE(this->net_->has_blob("top_loss")); +} + +TYPED_TEST(NetTest, TestGetBlob) { + this->InitTinyNet(); + EXPECT_EQ(this->net_->blob_by_name("data"), this->net_->blobs()[0]); + EXPECT_EQ(this->net_->blob_by_name("label"), this->net_->blobs()[1]); + EXPECT_EQ(this->net_->blob_by_name("innerproduct"), this->net_->blobs()[2]); + EXPECT_FALSE(this->net_->blob_by_name("loss")); + EXPECT_EQ(this->net_->blob_by_name("top_loss"), this->net_->blobs()[3]); +} + +TYPED_TEST(NetTest, TestHasLayer) { + this->InitTinyNet(); + EXPECT_TRUE(this->net_->has_layer("data")); + EXPECT_TRUE(this->net_->has_layer("innerproduct")); + EXPECT_TRUE(this->net_->has_layer("loss")); + EXPECT_FALSE(this->net_->has_layer("label")); +} + +TYPED_TEST(NetTest, TestGetLayerByName) { + this->InitTinyNet(); + EXPECT_EQ(this->net_->layer_by_name("data"), this->net_->layers()[0]); + EXPECT_EQ(this->net_->layer_by_name("innerproduct"), this->net_->layers()[1]); + EXPECT_EQ(this->net_->layer_by_name("loss"), this->net_->layers()[2]); + EXPECT_FALSE(this->net_->layer_by_name("label")); +} + +TYPED_TEST(NetTest, TestBottomNeedBackward) { + this->InitTinyNet(); + const vector >& bottom_need_backward = + this->net_->bottom_need_backward(); + EXPECT_EQ(3, bottom_need_backward.size()); + EXPECT_EQ(0, bottom_need_backward[0].size()); + EXPECT_EQ(1, bottom_need_backward[1].size()); + EXPECT_EQ(false, bottom_need_backward[1][0]); + EXPECT_EQ(2, bottom_need_backward[2].size()); + EXPECT_EQ(true, bottom_need_backward[2][0]); + EXPECT_EQ(false, bottom_need_backward[2][1]); +} + +TYPED_TEST(NetTest, TestBottomNeedBackwardForce) { + const bool force_backward = true; + this->InitTinyNet(force_backward); + const vector >& bottom_need_backward = + this->net_->bottom_need_backward(); + EXPECT_EQ(3, bottom_need_backward.size()); + EXPECT_EQ(0, bottom_need_backward[0].size()); + EXPECT_EQ(1, bottom_need_backward[1].size()); + EXPECT_EQ(true, bottom_need_backward[1][0]); + EXPECT_EQ(2, bottom_need_backward[2].size()); + EXPECT_EQ(true, bottom_need_backward[2][0]); + EXPECT_EQ(false, bottom_need_backward[2][1]); +} + +TYPED_TEST(NetTest, TestBottomNeedBackwardEuclideanForce) { + const bool force_backward = true; + this->InitTinyNetEuclidean(force_backward); + const vector >& bottom_need_backward = + this->net_->bottom_need_backward(); + EXPECT_EQ(3, bottom_need_backward.size()); + EXPECT_EQ(0, bottom_need_backward[0].size()); + EXPECT_EQ(1, bottom_need_backward[1].size()); + EXPECT_EQ(true, bottom_need_backward[1][0]); + EXPECT_EQ(2, bottom_need_backward[2].size()); + EXPECT_EQ(true, bottom_need_backward[2][0]); + EXPECT_EQ(true, bottom_need_backward[2][1]); +} + +TYPED_TEST(NetTest, TestBottomNeedBackwardTricky) { + this->InitTrickyNet(); + const vector >& bottom_need_backward = + this->net_->bottom_need_backward(); + EXPECT_EQ(4, bottom_need_backward.size()); + EXPECT_EQ(0, bottom_need_backward[0].size()); + EXPECT_EQ(1, bottom_need_backward[1].size()); + EXPECT_EQ(false, bottom_need_backward[1][0]); + EXPECT_EQ(1, bottom_need_backward[2].size()); + EXPECT_EQ(false, bottom_need_backward[2][0]); + EXPECT_EQ(2, bottom_need_backward[3].size()); + EXPECT_EQ(true, bottom_need_backward[3][0]); + // The label input to the SoftmaxLossLayer should say it "needs backward" + // since it has weights under it, even though we expect this to cause a crash + // at training/test time. + EXPECT_EQ(true, bottom_need_backward[3][1]); +} + +TYPED_TEST(NetTest, TestLossWeight) { + typedef typename TypeParam::Dtype Dtype; + // First, compute the loss and gradients with no loss_weight specified. + // In this case, the loss weight for the 'EuclideanLoss' layer should default + // to 1. + vector*> bottom; + Caffe::set_random_seed(this->seed_); + const bool kForceBackward = true; + this->InitUnsharedWeightsNet(NULL, NULL, kForceBackward); + const Dtype loss = this->net_->ForwardBackward(); + const bool kCopyDiff = true; + vector > > blob_grads; + this->CopyNetBlobs(kCopyDiff, &blob_grads); + vector > > param_grads; + this->CopyNetParams(kCopyDiff, ¶m_grads); + // Check that the loss is non-trivial, otherwise the test doesn't prove much. + const Dtype kMinLossAbsValue = 1e-2; + ASSERT_GE(fabs(loss), kMinLossAbsValue); + const Dtype kErrorMargin = 1e-4; + const int kNumLossWeights = 6; + Dtype kLossWeights[kNumLossWeights] = {2, 0, 1, -1, -2.5, 3.7}; + for (int i = 0; i < kNumLossWeights; ++i) { + Caffe::set_random_seed(this->seed_); + this->InitUnsharedWeightsNet(&kLossWeights[i], NULL, kForceBackward); + const Dtype weighted_loss = this->net_->ForwardBackward(); + const Dtype error_margin = kErrorMargin * fabs(kLossWeights[i]); + EXPECT_NEAR(loss * kLossWeights[i], weighted_loss, error_margin) + << "loss weight = " << kLossWeights[i]; + const vector > >& weighted_blobs = + this->net_->blobs(); + ASSERT_EQ(blob_grads.size(), weighted_blobs.size()); + for (int j = 0; j < blob_grads.size(); ++j) { + ASSERT_EQ(blob_grads[j]->count(), weighted_blobs[j]->count()); + for (int k = 0; k < blob_grads[j]->count(); ++k) { + EXPECT_NEAR(blob_grads[j]->cpu_diff()[k] * kLossWeights[i], + weighted_blobs[j]->cpu_diff()[k], error_margin); + } + } + const vector > >& weighted_params = + this->net_->params(); + ASSERT_EQ(param_grads.size(), weighted_params.size()); + for (int j = 0; j < param_grads.size(); ++j) { + ASSERT_EQ(param_grads[j]->count(), weighted_params[j]->count()); + for (int k = 0; k < param_grads[j]->count(); ++k) { + EXPECT_NEAR(param_grads[j]->cpu_diff()[k] * kLossWeights[i], + weighted_params[j]->cpu_diff()[k], error_margin); + } + } + } +} + +TYPED_TEST(NetTest, TestLossWeightMidNet) { + typedef typename TypeParam::Dtype Dtype; + Caffe::set_random_seed(this->seed_); + const bool kForceBackward = true; + Dtype loss_weight = 0; + Dtype midnet_loss_weight = 1; + this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, + kForceBackward); + const Dtype loss = this->net_->ForwardBackward(); + const bool kCopyDiff = true; + const bool kReshape = true; + Blob data_grad; + data_grad.CopyFrom(*this->net_->blob_by_name("data"), kCopyDiff, kReshape); + // Check that the loss is non-trivial, otherwise the test doesn't prove much. + const Dtype kMinLossAbsValue = 1e-2; + ASSERT_GE(fabs(loss), kMinLossAbsValue); + const Dtype kErrorMargin = 1e-4; + const int kNumLossWeights = 6; + Dtype kLossWeights[kNumLossWeights] = {2, 0, 1, -1, -2.5, 3.7}; + for (int i = 0; i < kNumLossWeights; ++i) { + Caffe::set_random_seed(this->seed_); + this->InitUnsharedWeightsNet(&loss_weight, &kLossWeights[i], + kForceBackward); + const Dtype weighted_loss = this->net_->ForwardBackward(); + const Dtype error_margin = kErrorMargin * fabs(kLossWeights[i]); + EXPECT_NEAR(loss * kLossWeights[i], weighted_loss, error_margin) + << "loss weight = " << kLossWeights[i]; + const shared_ptr >& weighted_blob = + this->net_->blob_by_name("data"); + ASSERT_EQ(data_grad.count(), weighted_blob->count()); + for (int j = 0; j < data_grad.count(); ++j) { + EXPECT_NEAR(data_grad.cpu_diff()[j] * kLossWeights[i], + weighted_blob->cpu_diff()[j], error_margin); + } + } +} + +TYPED_TEST(NetTest, TestComboLossWeight) { + typedef typename TypeParam::Dtype Dtype; + Dtype loss_weight; + Dtype midnet_loss_weight; + const bool kForceBackward = true; + const Dtype kErrorMargin = 1e-4; + + // Get the loss and gradients with 'EuclideanLoss' weight 1, + // 'InnerProduct' weight 1. + loss_weight = 1; + midnet_loss_weight = 1; + Caffe::set_random_seed(this->seed_); + this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, + kForceBackward); + const Dtype loss = this->net_->ForwardBackward(); + const bool kCopyDiff = true; + vector > > blob_grads; + this->CopyNetBlobs(kCopyDiff, &blob_grads); + vector > > param_grads; + this->CopyNetParams(kCopyDiff, ¶m_grads); + + loss_weight = 2; + midnet_loss_weight = 1; + Caffe::set_random_seed(this->seed_); + this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, + kForceBackward); + const Dtype loss_main_2 = this->net_->ForwardBackward(); + vector > > blob_grads_loss_2; + this->CopyNetBlobs(kCopyDiff, &blob_grads_loss_2); + vector > > param_grads_loss_2; + this->CopyNetParams(kCopyDiff, ¶m_grads_loss_2); + + loss_weight = 3; + midnet_loss_weight = 1; + Caffe::set_random_seed(this->seed_); + this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, + kForceBackward); + const Dtype loss_main_3 = this->net_->ForwardBackward(); + const vector > >& blob_grads_loss_3 = + this->net_->blobs(); + ASSERT_EQ(blob_grads.size(), blob_grads_loss_3.size()); + ASSERT_EQ(blob_grads_loss_2.size(), blob_grads_loss_3.size()); + for (int j = 0; j < blob_grads.size(); ++j) { + const string& blob_name = this->net_->blob_names()[j]; + bool grad_should_change = true; + if (blob_name == "innerproduct1_innerproduct1_0_split_0") { + grad_should_change = false; + } + ASSERT_EQ(blob_grads[j]->count(), blob_grads_loss_3[j]->count()); + ASSERT_EQ(blob_grads_loss_2[j]->count(), blob_grads_loss_3[j]->count()); + for (int k = 0; k < blob_grads[j]->count(); ++k) { + const Dtype grad_diff_2 = blob_grads_loss_2[j]->cpu_diff()[k] - + blob_grads[j]->cpu_diff()[k]; + const Dtype grad_diff_3 = blob_grads_loss_3[j]->cpu_diff()[k] - + blob_grads[j]->cpu_diff()[k]; + if (grad_should_change) { + // Test non-triviality. + const Dtype kMinGradDiffAbsValue = 1e-4; + EXPECT_GT(fabs(grad_diff_2), kMinGradDiffAbsValue) << blob_name; + EXPECT_NEAR(2 * grad_diff_2, grad_diff_3, kErrorMargin) << blob_name; + } else { + EXPECT_EQ(0, grad_diff_2) << blob_name; + EXPECT_EQ(0, grad_diff_3) << blob_name; + } + } + } + + loss_weight = 1; + midnet_loss_weight = 2; + Caffe::set_random_seed(this->seed_); + this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, + kForceBackward); + const Dtype loss_midnet_2 = this->net_->ForwardBackward(); + this->CopyNetBlobs(kCopyDiff, &blob_grads_loss_2); + this->CopyNetParams(kCopyDiff, ¶m_grads_loss_2); + + loss_weight = 1; + midnet_loss_weight = 3; + Caffe::set_random_seed(this->seed_); + this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, + kForceBackward); + const Dtype loss_midnet_3 = this->net_->ForwardBackward(); + const vector > >& blob_grads_midnet_loss_3 = + this->net_->blobs(); + ASSERT_EQ(blob_grads.size(), blob_grads_midnet_loss_3.size()); + ASSERT_EQ(blob_grads_loss_2.size(), blob_grads_midnet_loss_3.size()); + const vector& blob_names = this->net_->blob_names(); + for (int j = 0; j < blob_grads.size(); ++j) { + const string& blob_name = blob_names[j]; + bool grad_should_change = false; + if (blob_name == "innerproduct1" || + blob_name == "innerproduct1_innerproduct1_0_split_0" || + blob_name == "data_data_0_split_0" || blob_name == "data") { + grad_should_change = true; + } + ASSERT_EQ(blob_grads[j]->count(), blob_grads_midnet_loss_3[j]->count()); + ASSERT_EQ(blob_grads[j]->count(), blob_grads_loss_2[j]->count()); + for (int k = 0; k < blob_grads[j]->count(); ++k) { + const Dtype grad_diff_2 = blob_grads_loss_2[j]->cpu_diff()[k] - + blob_grads[j]->cpu_diff()[k]; + const Dtype grad_diff_3 = blob_grads_midnet_loss_3[j]->cpu_diff()[k] - + blob_grads[j]->cpu_diff()[k]; + if (grad_should_change) { + // Test non-triviality. + const Dtype kMinGradDiffAbsValue = 1e-4; + EXPECT_GT(fabs(grad_diff_2), kMinGradDiffAbsValue) << blob_name; + EXPECT_NEAR(2 * grad_diff_2, grad_diff_3, kErrorMargin) << blob_name; + } else { + EXPECT_EQ(0, grad_diff_2) << blob_name; + EXPECT_EQ(0, grad_diff_3) << blob_name; + } + } + } + + const Dtype kMinLossDiffAbsValue = 1e-4; + + Dtype loss_diff_2 = loss_main_2 - loss; + // Test non-triviality. + EXPECT_GT(fabs(loss_diff_2), kMinLossDiffAbsValue); + Dtype loss_diff_3 = loss_main_3 - loss; + EXPECT_NEAR(2 * loss_diff_2, loss_diff_3, kErrorMargin); + + loss_diff_2 = loss_midnet_2 - loss; + // Test non-triviality. + EXPECT_GT(fabs(loss_diff_2), kMinLossDiffAbsValue); + loss_diff_3 = loss_midnet_3 - loss; + EXPECT_NEAR(2 * loss_diff_2, loss_diff_3, kErrorMargin); +} + +TYPED_TEST(NetTest, TestBackwardWithAccuracyLayer) { + const bool kForceBackward = false; + const bool kAccuracyLayer = true; + this->InitTinyNet(kForceBackward, kAccuracyLayer); + EXPECT_TRUE(this->net_->has_blob("accuracy")); + // Test that we can do Backward even though we have an 'Accuracy' layer. + this->net_->ForwardBackward(); +} + +TYPED_TEST(NetTest, TestUnsharedWeightsDataNet) { + typedef typename TypeParam::Dtype Dtype; + this->InitUnsharedWeightsNet(); + Dtype loss; + this->net_->Forward(&loss); + EXPECT_GT(loss, 0); +} + +TYPED_TEST(NetTest, TestSharedWeightsDataNet) { + typedef typename TypeParam::Dtype Dtype; + this->InitSharedWeightsNet(); + Dtype loss; + this->net_->Forward(&loss); + EXPECT_FLOAT_EQ(loss, 0); +} + +TYPED_TEST(NetTest, TestUnsharedWeightsDiffNet) { + typedef typename TypeParam::Dtype Dtype; + this->InitUnsharedWeightsNet(); + Net* net = this->net_.get(); + net->Forward(); + net->Backward(); + Layer* ip1_layer = net->layer_by_name("innerproduct1").get(); + Layer* ip2_layer = net->layer_by_name("innerproduct2").get(); + const int count = ip1_layer->blobs()[0]->count(); + const Dtype* grad1 = ip1_layer->blobs()[0]->cpu_diff(); + const Dtype* grad2 = ip2_layer->blobs()[0]->cpu_diff(); + for (int i = 0; i < count; ++i) { + EXPECT_GT(fabs(grad1[i]), 0); + EXPECT_FLOAT_EQ(-1 * grad1[i], grad2[i]); + } +} + +TYPED_TEST(NetTest, TestSharedWeightsDiffNet) { + typedef typename TypeParam::Dtype Dtype; + this->InitSharedWeightsNet(); + Net* net = this->net_.get(); + Dtype loss; + net->Forward(&loss); + net->Backward(); + EXPECT_FLOAT_EQ(loss, 0); + Layer* ip1_layer = net->layer_by_name("innerproduct1").get(); + Layer* ip2_layer = net->layer_by_name("innerproduct2").get(); + const int count = ip1_layer->blobs()[0]->count(); + const Dtype* grad1 = ip1_layer->blobs()[0]->cpu_diff(); + const Dtype* grad2 = ip2_layer->blobs()[0]->cpu_diff(); + for (int i = 0; i < count; ++i) { + EXPECT_FLOAT_EQ(0, grad1[i]); + EXPECT_FLOAT_EQ(0, grad2[i]); + } +} + +TYPED_TEST(NetTest, TestSharedWeightsUpdate) { + typedef typename TypeParam::Dtype Dtype; + Caffe::set_random_seed(this->seed_); + this->InitDiffDataSharedWeightsNet(); + EXPECT_EQ(this->net_->layer_names()[1], "innerproduct1"); + EXPECT_EQ(this->net_->layer_names()[2], "innerproduct2"); + Blob* ip1_weights = this->net_->layers()[1]->blobs()[0].get(); + Blob* ip2_weights = this->net_->layers()[2]->blobs()[0].get(); + // Check that data and diff blobs of shared weights share the same memory + // locations. + EXPECT_EQ(ip1_weights->cpu_data(), ip2_weights->cpu_data()); + EXPECT_EQ(ip1_weights->cpu_diff(), ip2_weights->cpu_diff()); + this->net_->Forward(); + this->net_->Backward(); + // Compute the expected update as the data minus the two diffs. + Blob shared_params; + const bool reshape = true; + const bool copy_diff = false; + shared_params.CopyFrom(*ip1_weights, copy_diff, reshape); + shared_params.CopyFrom(*ip1_weights, !copy_diff, reshape); + const int count = ip1_weights->count(); + // Make sure the diffs are non-trivial. + for (int i = 0; i < count; ++i) { + EXPECT_NE(0, ip1_weights->cpu_diff()[i]); + } + caffe_axpy(count, Dtype(-1), shared_params.cpu_diff(), + shared_params.mutable_cpu_data()); + const Dtype* expected_updated_params = shared_params.cpu_data(); + this->net_->Update(); + const Dtype* actual_updated_params = ip1_weights->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_EQ(expected_updated_params[i], actual_updated_params[i]); + } + // Check that data blobs of shared weights STILL point to the same memory + // location (because ... who knows). + EXPECT_EQ(ip1_weights->cpu_data(), ip2_weights->cpu_data()); + + Caffe::set_random_seed(this->seed_); + this->InitDiffDataUnsharedWeightsNet(); + EXPECT_EQ(this->net_->layer_names()[1], "innerproduct1"); + EXPECT_EQ(this->net_->layer_names()[2], "innerproduct2"); + ip1_weights = this->net_->layers()[1]->blobs()[0].get(); + ip2_weights = this->net_->layers()[2]->blobs()[0].get(); + // Check that data and diff blobs of unshared weights are at different + // locations in memory. + EXPECT_NE(ip1_weights->cpu_data(), ip2_weights->cpu_data()); + EXPECT_NE(ip1_weights->cpu_diff(), ip2_weights->cpu_diff()); + this->net_->Forward(); + this->net_->Backward(); + // Compute the expected update. + Blob unshared_params1; + unshared_params1.CopyFrom(*ip1_weights, copy_diff, reshape); + unshared_params1.CopyFrom(*ip1_weights, !copy_diff, reshape); + Blob unshared_params2; + unshared_params2.CopyFrom(*ip2_weights, copy_diff, reshape); + unshared_params2.CopyFrom(*ip2_weights, !copy_diff, reshape); + // Make sure the diffs are non-trivial and sum to the diff in the shared net. + for (int i = 0; i < count; ++i) { + EXPECT_NE(0, ip1_weights->cpu_diff()[i]); + EXPECT_NE(0, ip2_weights->cpu_diff()[i]); + EXPECT_NE(ip1_weights->cpu_diff()[i], ip2_weights->cpu_diff()[i]); + EXPECT_FLOAT_EQ(ip1_weights->cpu_diff()[i] + ip2_weights->cpu_diff()[i], + shared_params.cpu_diff()[i]); + } + caffe_axpy(count, Dtype(-1), ip1_weights->cpu_diff(), + unshared_params1.mutable_cpu_data()); + caffe_axpy(count, Dtype(-1), ip2_weights->cpu_diff(), + unshared_params2.mutable_cpu_data()); + const Dtype* expected_updated_params1 = unshared_params1.cpu_data(); + const Dtype* expected_updated_params2 = unshared_params2.cpu_data(); + this->net_->Update(); + const Dtype* actual_updated_params1 = ip1_weights->cpu_data(); + const Dtype* actual_updated_params2 = ip2_weights->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_EQ(expected_updated_params1[i], actual_updated_params1[i]); + EXPECT_EQ(expected_updated_params2[i], actual_updated_params2[i]); + EXPECT_NE(actual_updated_params1[i], actual_updated_params2[i]); + EXPECT_NE(expected_updated_params, expected_updated_params1); + } +} + +TYPED_TEST(NetTest, TestSharedWeightsResume) { + typedef typename TypeParam::Dtype Dtype; + + // Create a net with weight sharing; Update it once. + Caffe::set_random_seed(this->seed_); + this->InitDiffDataSharedWeightsNet(); + EXPECT_EQ(this->net_->layer_names()[1], "innerproduct1"); + EXPECT_EQ(this->net_->layer_names()[2], "innerproduct2"); + Blob* ip1_weights = this->net_->layers()[1]->blobs()[0].get(); + Blob* ip2_weights = this->net_->layers()[2]->blobs()[0].get(); + // Check that data and diff blobs of shared weights share the same memory + // locations. + EXPECT_EQ(ip1_weights->cpu_data(), ip2_weights->cpu_data()); + EXPECT_EQ(ip1_weights->cpu_diff(), ip2_weights->cpu_diff()); + this->net_->ForwardBackward(); + this->net_->Update(); + Blob shared_params; + const bool kReshape = true; + const bool kCopyDiff = false; + shared_params.CopyFrom(*ip1_weights, kCopyDiff, kReshape); + const int count = ip1_weights->count(); + + // Write the net to a NetParameter, as in Solver::Snapshot. + NetParameter net_param; + this->net_->ToProto(&net_param); + + // Reinitialize the net and copy parameters from net_param, as in + // Solver::Restore. + Caffe::set_random_seed(this->seed_); + this->InitDiffDataSharedWeightsNet(); + this->net_->CopyTrainedLayersFrom(net_param); + ip1_weights = this->net_->layers()[1]->blobs()[0].get(); + ip2_weights = this->net_->layers()[2]->blobs()[0].get(); + ASSERT_FALSE(NULL == ip1_weights); + ASSERT_FALSE(NULL == ip2_weights); + EXPECT_NE(ip1_weights, ip2_weights); + // Check that data and diff blobs of shared weights share the same memory + // locations. + EXPECT_EQ(ip1_weights->cpu_data(), ip2_weights->cpu_data()); + EXPECT_EQ(ip1_weights->cpu_diff(), ip2_weights->cpu_diff()); + for (int i = 0; i < count; ++i) { + EXPECT_FLOAT_EQ(shared_params.cpu_data()[i], ip1_weights->cpu_data()[i]); + } +} + +TYPED_TEST(NetTest, TestParamPropagateDown) { + typedef typename TypeParam::Dtype Dtype; + const bool kBiasTerm = true, kForceBackward = false; + const Dtype* kLossWeight1 = NULL; + const Dtype* kLossWeight2 = NULL; + + // Run the net with all params learned; check that gradients are non-zero. + Caffe::set_random_seed(this->seed_); + Dtype blobs_lr_w1 = 1, blobs_lr_w2 = 1, blobs_lr_b1 = 2, blobs_lr_b2 = 2; + this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, + kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); + this->net_->Forward(); + this->net_->Backward(); + const vector > >& params = this->net_->params(); + const int num_params = params.size(); + ASSERT_EQ(4, num_params); + const Dtype kNonZeroTestMin = 1e-3; + vector param_asums(params.size()); + for (int i = 0; i < num_params; ++i) { + const Dtype param_asum = + caffe_cpu_asum(params[i]->count(), params[i]->cpu_diff()); + param_asums[i] = param_asum; + EXPECT_GT(param_asum, kNonZeroTestMin); + } + + // Change the learning rates to different non-zero values; should see same + // gradients. + Caffe::set_random_seed(this->seed_); + blobs_lr_w1 *= 2, blobs_lr_w2 *= 2, blobs_lr_b1 *= 2, blobs_lr_b2 *= 2; + this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, + kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); + this->net_->Forward(); + this->net_->Backward(); + const vector > >& params2 = this->net_->params(); + ASSERT_EQ(num_params, params2.size()); + for (int i = 0; i < num_params; ++i) { + const Dtype param_asum = + caffe_cpu_asum(params2[i]->count(), params2[i]->cpu_diff()); + EXPECT_FLOAT_EQ(param_asum, param_asums[i]); + } + + // Change a subset of the learning rates to zero; check that we see zero + // gradients for those. + Caffe::set_random_seed(this->seed_); + blobs_lr_w1 = 1, blobs_lr_w2 = 0, blobs_lr_b1 = 0, blobs_lr_b2 = 1; + this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, + kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); + this->net_->Forward(); + this->net_->Backward(); + const vector > >& params3 = this->net_->params(); + ASSERT_EQ(num_params, params3.size()); + for (int i = 0; i < num_params; ++i) { + const Dtype param_asum = + caffe_cpu_asum(params3[i]->count(), params3[i]->cpu_diff()); + if (i == 1 || i == 2) { + EXPECT_FLOAT_EQ(0, param_asum); + } else { + EXPECT_FLOAT_EQ(param_asum, param_asums[i]); + } + } + + // Change the opposite subset of the learning rates to zero. + Caffe::set_random_seed(this->seed_); + blobs_lr_w1 = 0, blobs_lr_w2 = 1, blobs_lr_b1 = 1, blobs_lr_b2 = 0; + this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, + kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); + this->net_->Forward(); + this->net_->Backward(); + const vector > >& params4 = this->net_->params(); + ASSERT_EQ(num_params, params4.size()); + for (int i = 0; i < num_params; ++i) { + const Dtype param_asum = + caffe_cpu_asum(params4[i]->count(), params4[i]->cpu_diff()); + if (i == 0 || i == 3) { + EXPECT_FLOAT_EQ(0, param_asum); + } else { + EXPECT_FLOAT_EQ(param_asum, param_asums[i]); + } + } +} + +TYPED_TEST(NetTest, TestFromTo) { + typedef typename TypeParam::Dtype Dtype; + this->InitTinyNet(); + + // Run Forward and Backward, recording the data diff and loss. + Blob data; + data.ReshapeLike(*this->net_->blob_by_name("data")); + this->net_->Forward(); + this->net_->Backward(); + data.CopyFrom(*this->net_->blob_by_name("data"), true, true); + const Dtype *loss_ptr = this->net_->output_blobs()[0]->cpu_data(); + Dtype loss = *loss_ptr; + + // Check that combining partial Forwards gives the same loss. + for (int i = 1; i < this->net_->layers().size(); ++i) { + // Note that we skip layer zero to keep the same data. + this->net_->ForwardFromTo(1, 1); + if (i < this->net_->layers().size() - 1) { + this->net_->ForwardFrom(i + 1); + } + EXPECT_EQ(loss, *loss_ptr); + } + + // Check that combining partial Backwards gives the same data diff. + for (int i = 1; i < this->net_->layers().size(); ++i) { + this->net_->BackwardTo(i); + this->net_->BackwardFrom(i - 1); + for (int j = 0; j < data.count(); ++j) { + EXPECT_EQ(data.cpu_diff()[j], + this->net_->blob_by_name("data")->cpu_diff()[j]); + } + } +} + +class FilterNetTest : public ::testing::Test { + protected: + void RunFilterNetTest( + const string& input_param_string, const string& filtered_param_string) { + NetParameter input_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + input_param_string, &input_param)); + NetParameter expected_filtered_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + filtered_param_string, &expected_filtered_param)); + NetParameter actual_filtered_param; + Net::FilterNet(input_param, &actual_filtered_param); + EXPECT_EQ(expected_filtered_param.DebugString(), + actual_filtered_param.DebugString()); + // Also test idempotence. + NetParameter double_filtered_param; + Net::FilterNet(actual_filtered_param, &double_filtered_param); + EXPECT_EQ(actual_filtered_param.DebugString(), + double_filtered_param.DebugString()); + } +}; + +TEST_F(FilterNetTest, TestNoFilter) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterLeNetTrainTest) { + const string& input_proto = + "name: 'LeNet' " + "layer { " + " name: 'mnist' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + " data_param { " + " source: 'mnist-train-leveldb' " + " batch_size: 64 " + " } " + " transform_param { " + " scale: 0.00390625 " + " } " + " include: { phase: TRAIN } " + "} " + "layer { " + " name: 'mnist' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + " data_param { " + " source: 'mnist-test-leveldb' " + " batch_size: 100 " + " } " + " transform_param { " + " scale: 0.00390625 " + " } " + " include: { phase: TEST } " + "} " + "layer { " + " name: 'conv1' " + " type: 'Convolution' " + " bottom: 'data' " + " top: 'conv1' " + " param { " + " lr_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " } " + " convolution_param { " + " num_output: 20 " + " kernel_size: 5 " + " stride: 1 " + " weight_filler { " + " type: 'xavier' " + " } " + " bias_filler { " + " type: 'constant' " + " } " + " } " + "} " + "layer { " + " name: 'ip1' " + " type: 'InnerProduct' " + " bottom: 'conv1' " + " top: 'ip1' " + " param { " + " lr_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " } " + " inner_product_param { " + " num_output: 10 " + " weight_filler { " + " type: 'xavier' " + " } " + " bias_filler { " + " type: 'constant' " + " } " + " } " + "} " + "layer { " + " name: 'accuracy' " + " type: 'Accuracy' " + " bottom: 'ip1' " + " bottom: 'label' " + " top: 'accuracy' " + " include: { phase: TEST } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'ip2' " + " bottom: 'label' " + " top: 'loss' " + "} "; + const string input_proto_train = "state: { phase: TRAIN } " + input_proto; + const string input_proto_test = "state: { phase: TEST } " + input_proto; + const string output_proto_train = + "name: 'LeNet' " + "layer { " + " name: 'mnist' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + " data_param { " + " source: 'mnist-train-leveldb' " + " batch_size: 64 " + " } " + " transform_param { " + " scale: 0.00390625 " + " } " + " include: { phase: TRAIN } " + "} " + "layer { " + " name: 'conv1' " + " type: 'Convolution' " + " bottom: 'data' " + " top: 'conv1' " + " param { " + " lr_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " } " + " convolution_param { " + " num_output: 20 " + " kernel_size: 5 " + " stride: 1 " + " weight_filler { " + " type: 'xavier' " + " } " + " bias_filler { " + " type: 'constant' " + " } " + " } " + "} " + "layer { " + " name: 'ip1' " + " type: 'InnerProduct' " + " bottom: 'conv1' " + " top: 'ip1' " + " param { " + " lr_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " } " + " inner_product_param { " + " num_output: 10 " + " weight_filler { " + " type: 'xavier' " + " } " + " bias_filler { " + " type: 'constant' " + " } " + " } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'ip2' " + " bottom: 'label' " + " top: 'loss' " + "} "; + const string& output_proto_test = + "name: 'LeNet' " + "layer { " + " name: 'mnist' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + " data_param { " + " source: 'mnist-test-leveldb' " + " batch_size: 100 " + " } " + " transform_param { " + " scale: 0.00390625 " + " } " + " include: { phase: TEST } " + "} " + "layer { " + " name: 'conv1' " + " type: 'Convolution' " + " bottom: 'data' " + " top: 'conv1' " + " param { " + " lr_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " } " + " convolution_param { " + " num_output: 20 " + " kernel_size: 5 " + " stride: 1 " + " weight_filler { " + " type: 'xavier' " + " } " + " bias_filler { " + " type: 'constant' " + " } " + " } " + "} " + "layer { " + " name: 'ip1' " + " type: 'InnerProduct' " + " bottom: 'conv1' " + " top: 'ip1' " + " param { " + " lr_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " } " + " inner_product_param { " + " num_output: 10 " + " weight_filler { " + " type: 'xavier' " + " } " + " bias_filler { " + " type: 'constant' " + " } " + " } " + "} " + "layer { " + " name: 'accuracy' " + " type: 'Accuracy' " + " bottom: 'ip1' " + " bottom: 'label' " + " top: 'accuracy' " + " include: { phase: TEST } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'ip2' " + " bottom: 'label' " + " top: 'loss' " + "} "; + const string output_proto_train_explicit = + output_proto_train + " state: { phase: TRAIN } "; + const string output_proto_test_explicit = + output_proto_test + " state: { phase: TEST } "; + this->RunFilterNetTest(input_proto_train, output_proto_train_explicit); + this->RunFilterNetTest(input_proto_test, output_proto_test_explicit); +} + +TEST_F(FilterNetTest, TestFilterOutByStage) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + " include: { stage: 'mystage' } " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + const string& output_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, output_proto); +} + +TEST_F(FilterNetTest, TestFilterOutByStage2) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { stage: 'mystage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + const string& output_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, output_proto); +} + +TEST_F(FilterNetTest, TestFilterInByStage) { + const string& input_proto = + "state: { stage: 'mystage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { stage: 'mystage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterInByStage2) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " exclude: { stage: 'mystage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterOutByMultipleStage) { + const string& input_proto = + "state: { stage: 'mystage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { stage: 'mystage' stage: 'myotherstage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { stage: 'mystage' } " + "} "; + const string& output_proto = + "state: { stage: 'mystage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { stage: 'mystage' } " + "} "; + this->RunFilterNetTest(input_proto, output_proto); +} + +TEST_F(FilterNetTest, TestFilterInByMultipleStage) { + const string& input_proto = + "state: { stage: 'mystage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { stage: 'myotherstage' } " + " include: { stage: 'mystage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { stage: 'mystage' } " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterInByMultipleStage2) { + const string& input_proto = + "state: { stage: 'mystage' stage: 'myotherstage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { stage: 'mystage' stage: 'myotherstage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { stage: 'mystage' } " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterInByNotStage) { + const string& input_proto = + "state: { stage: 'mystage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { not_stage: 'myotherstage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { not_stage: 'myotherstage' } " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterOutByNotStage) { + const string& input_proto = + "state: { stage: 'mystage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { not_stage: 'mystage' } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { not_stage: 'mystage' } " + "} "; + const string& output_proto = + "state: { stage: 'mystage' } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} "; + this->RunFilterNetTest(input_proto, output_proto); +} + +TEST_F(FilterNetTest, TestFilterOutByMinLevel) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { min_level: 3 } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + const string& output_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, output_proto); +} + +TEST_F(FilterNetTest, TestFilterOutByMaxLevel) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { max_level: -3 } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + const string& output_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, output_proto); +} + +TEST_F(FilterNetTest, TestFilterInByMinLevel) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { min_level: 0 } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterInByMinLevel2) { + const string& input_proto = + "state: { level: 7 } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { min_level: 3 } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterInByMaxLevel) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { max_level: 0 } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterInByMaxLevel2) { + const string& input_proto = + "state: { level: -7 } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { max_level: -3 } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunFilterNetTest(input_proto, input_proto); +} + +TEST_F(FilterNetTest, TestFilterInOutByIncludeMultiRule) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { min_level: 2 phase: TRAIN } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { min_level: 2 phase: TEST } " + "} "; + const string& input_proto_train = + "state: { level: 4 phase: TRAIN } " + input_proto; + const string& input_proto_test = + "state: { level: 4 phase: TEST } " + input_proto; + const string& output_proto_train = + "state: { level: 4 phase: TRAIN } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { min_level: 2 phase: TRAIN } " + "} "; + const string& output_proto_test = + "state: { level: 4 phase: TEST } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { min_level: 2 phase: TEST } " + "} "; + this->RunFilterNetTest(input_proto_train, output_proto_train); + this->RunFilterNetTest(input_proto_test, output_proto_test); +} + +TEST_F(FilterNetTest, TestFilterInByIncludeMultiRule) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " include: { min_level: 2 phase: TRAIN } " + " include: { phase: TEST } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { min_level: 2 phase: TEST } " + " include: { phase: TRAIN } " + "} "; + const string& input_proto_train = + "state: { level: 2 phase: TRAIN } " + input_proto; + const string& input_proto_test = + "state: { level: 2 phase: TEST } " + input_proto; + this->RunFilterNetTest(input_proto_train, input_proto_train); + this->RunFilterNetTest(input_proto_test, input_proto_test); +} + +TEST_F(FilterNetTest, TestFilterInOutByExcludeMultiRule) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " exclude: { min_level: 2 phase: TRAIN } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " exclude: { min_level: 2 phase: TEST } " + "} "; + const string& input_proto_train = + "state: { level: 4 phase: TRAIN } " + input_proto; + const string& input_proto_test = + "state: { level: 4 phase: TEST } " + input_proto; + const string& output_proto_train = + "state: { level: 4 phase: TRAIN } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " exclude: { min_level: 2 phase: TEST } " + "} "; + const string& output_proto_test = + "state: { level: 4 phase: TEST } " + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + " exclude: { min_level: 2 phase: TRAIN } " + "} "; + this->RunFilterNetTest(input_proto_train, output_proto_train); + this->RunFilterNetTest(input_proto_test, output_proto_test); +} + +TYPED_TEST(NetTest, TestReshape) { + typedef typename TypeParam::Dtype Dtype; + // We set up bottom blobs of two different sizes, switch between + // them, check that forward and backward both run and the results + // are the same, and check that the output shapes change. + Caffe::set_random_seed(this->seed_); + Caffe::set_mode(Caffe::CPU); + FillerParameter filler_param; + filler_param.set_std(1); + GaussianFiller filler(filler_param); + // Check smaller shape first as larger first could hide realloc failures. + Blob blob1(2, 3, 12, 10); + Blob blob2(4, 3, 9, 11); + ASSERT_LT(blob1.count(), blob2.count()); + filler.Fill(&blob1); + filler.Fill(&blob2); + + this->InitReshapableNet(); + shared_ptr > input_blob = this->net_->blob_by_name("data"); + Blob* output_blob = this->net_->output_blobs()[0]; + input_blob->Reshape(blob1.num(), blob1.channels(), blob1.height(), + blob1.width()); + caffe_copy(blob1.count(), blob1.cpu_data(), input_blob->mutable_cpu_data()); + this->net_->Forward(); + // call backward just to make sure it runs + this->net_->Backward(); + Blob output1(output_blob->num(), output_blob->channels(), + output_blob->height(), output_blob->width()); + caffe_copy(output1.count(), output_blob->cpu_data(), + output1.mutable_cpu_data()); + + input_blob->Reshape(blob2.num(), blob2.channels(), blob2.height(), + blob2.width()); + caffe_copy(blob2.count(), blob2.cpu_data(), input_blob->mutable_cpu_data()); + this->net_->Forward(); + this->net_->Backward(); + Blob output2(output_blob->num(), output_blob->channels(), + output_blob->height(), output_blob->width()); + caffe_copy(output2.count(), output_blob->cpu_data(), + output2.mutable_cpu_data()); + + input_blob->Reshape(blob1.num(), blob1.channels(), blob1.height(), + blob1.width()); + caffe_copy(blob1.count(), blob1.cpu_data(), input_blob->mutable_cpu_data()); + this->net_->Forward(); + this->net_->Backward(); + for (int i = 0; i < output1.count(); ++i) { + EXPECT_FLOAT_EQ(*(output1.cpu_data() + i), *(output_blob->cpu_data() + i)); + } + + input_blob->Reshape(blob2.num(), blob2.channels(), blob2.height(), + blob2.width()); + caffe_copy(blob2.count(), blob2.cpu_data(), input_blob->mutable_cpu_data()); + this->net_->Forward(); + this->net_->Backward(); + for (int i = 0; i < output2.count(); ++i) { + EXPECT_FLOAT_EQ(*(output2.cpu_data() + i), *(output_blob->cpu_data() + i)); + } + + EXPECT_EQ(output1.num(), blob1.num()); + EXPECT_EQ(output2.num(), blob2.num()); + bool same_spatial_shape = true; + const int kFirstSpatialAxis = 2; + for (int i = kFirstSpatialAxis; i < output1.num_axes(); ++i) { + if (output1.shape(i) != output2.shape(i)) { + same_spatial_shape = false; + break; + } + } + EXPECT_FALSE(same_spatial_shape); +} + +TYPED_TEST(NetTest, TestSkipPropagateDown) { + // check bottom_need_backward if propagate_down is true + this->InitSkipPropNet(false); + vector vec_layer_need_backward = this->net_->layer_need_backward(); + for (int layer_id = 0; layer_id < this->net_->layers().size(); ++layer_id) { + string layer_name = this->net_->layer_names()[layer_id]; + if (layer_name == "loss") { + // access to bottom_need_backward coresponding to label's blob + bool need_back = this->net_->bottom_need_backward()[layer_id][1]; + // if propagate_down is true, the loss layer will try to + // backpropagate on labels + EXPECT_TRUE(need_back) << "bottom_need_backward should be True"; + } + // layer_need_backward should be True except for data and silence layers + if (layer_name.find("data") != std::string::npos || + layer_name == "silence") { + EXPECT_FALSE(vec_layer_need_backward[layer_id]) + << "layer_need_backward for " << layer_name << " should be False"; + } else { + EXPECT_TRUE(vec_layer_need_backward[layer_id]) + << "layer_need_backward for " << layer_name << " should be True"; + } + } + // check bottom_need_backward if propagat_down is false + this->InitSkipPropNet(true); + vec_layer_need_backward.clear(); + vec_layer_need_backward = this->net_->layer_need_backward(); + for (int layer_id = 0; layer_id < this->net_->layers().size(); ++layer_id) { + string layer_name = this->net_->layer_names()[layer_id]; + if (layer_name == "loss") { + // access to bottom_need_backward coresponding to label's blob + bool need_back = this->net_->bottom_need_backward()[layer_id][1]; + // if propagate_down is false, the loss layer will not try to + // backpropagate on labels + EXPECT_FALSE(need_back) << "bottom_need_backward should be False"; + } + // layer_need_backward should be False except for innerproduct and + // loss layers + if (layer_name == "innerproduct" || layer_name == "loss") { + EXPECT_TRUE(vec_layer_need_backward[layer_id]) + << "layer_need_backward for " << layer_name << " should be True"; + } else { + EXPECT_FALSE(vec_layer_need_backward[layer_id]) + << "layer_need_backward for " << layer_name << " should be False"; + } + } +} + +TYPED_TEST(NetTest, TestForcePropagateDown) { + this->InitForcePropNet(false); + vector layer_need_backward = this->net_->layer_need_backward(); + for (int layer_id = 0; layer_id < this->net_->layers().size(); ++layer_id) { + const string& layer_name = this->net_->layer_names()[layer_id]; + const vector need_backward = + this->net_->bottom_need_backward()[layer_id]; + if (layer_name == "data") { + ASSERT_EQ(need_backward.size(), 0); + EXPECT_FALSE(layer_need_backward[layer_id]); + } else if (layer_name == "innerproduct") { + ASSERT_EQ(need_backward.size(), 1); + EXPECT_FALSE(need_backward[0]); // data + EXPECT_TRUE(layer_need_backward[layer_id]); + } else if (layer_name == "loss") { + ASSERT_EQ(need_backward.size(), 2); + EXPECT_TRUE(need_backward[0]); // innerproduct + EXPECT_FALSE(need_backward[1]); // label + EXPECT_TRUE(layer_need_backward[layer_id]); + } else { + LOG(FATAL) << "Unknown layer: " << layer_name; + } + } + this->InitForcePropNet(true); + layer_need_backward = this->net_->layer_need_backward(); + for (int layer_id = 0; layer_id < this->net_->layers().size(); ++layer_id) { + const string& layer_name = this->net_->layer_names()[layer_id]; + const vector need_backward = + this->net_->bottom_need_backward()[layer_id]; + if (layer_name == "data") { + ASSERT_EQ(need_backward.size(), 0); + EXPECT_FALSE(layer_need_backward[layer_id]); + } else if (layer_name == "innerproduct") { + ASSERT_EQ(need_backward.size(), 1); + EXPECT_TRUE(need_backward[0]); // data + EXPECT_TRUE(layer_need_backward[layer_id]); + } else if (layer_name == "loss") { + ASSERT_EQ(need_backward.size(), 2); + EXPECT_TRUE(need_backward[0]); // innerproduct + EXPECT_FALSE(need_backward[1]); // label + EXPECT_TRUE(layer_need_backward[layer_id]); + } else { + LOG(FATAL) << "Unknown layer: " << layer_name; + } + } +} + +TYPED_TEST(NetTest, TestAllInOneNetTrain) { + vector stages; + stages.push_back("train"); + this->InitAllInOneNet(caffe::TRAIN, 0, &stages); + bool found_data = false; + bool found_loss = false; + for (int i = 0; i < this->net_->layers().size(); ++i) { + const string& layer_name = this->net_->layer_names()[i]; + if (layer_name == "train-data") { + found_data = true; + } else if (layer_name == "loss") { + found_loss = true; + } else { + ASSERT_NE(layer_name, "val-data"); + ASSERT_NE(layer_name, "deploy-data"); + } + } + ASSERT_TRUE(found_data); + ASSERT_TRUE(found_loss); +} + +TYPED_TEST(NetTest, TestAllInOneNetVal) { + vector stages; + stages.push_back("val"); + this->InitAllInOneNet(caffe::TEST, 0, &stages); + bool found_data = false; + bool found_loss = false; + for (int i = 0; i < this->net_->layers().size(); ++i) { + const string& layer_name = this->net_->layer_names()[i]; + if (layer_name == "val-data") { + found_data = true; + } else if (layer_name == "loss") { + found_loss = true; + } else { + ASSERT_NE(layer_name, "train-data"); + ASSERT_NE(layer_name, "deploy-data"); + } + } + ASSERT_TRUE(found_data); + ASSERT_TRUE(found_loss); +} + +TYPED_TEST(NetTest, TestAllInOneNetDeploy) { + vector stages; + stages.push_back("deploy"); + this->InitAllInOneNet(caffe::TEST, 0, &stages); + bool found_data = false; + for (int i = 0; i < this->net_->layers().size(); ++i) { + const string& layer_name = this->net_->layer_names()[i]; + if (layer_name == "deploy-data") { + found_data = true; + } else { + ASSERT_NE(layer_name, "train-data"); + ASSERT_NE(layer_name, "val-data"); + ASSERT_NE(layer_name, "loss"); + } + } + ASSERT_TRUE(found_data); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_neuron_layer.cpp b/3rdparty/caffe/src/caffe/test/test_neuron_layer.cpp new file mode 100644 index 00000000..180871a2 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_neuron_layer.cpp @@ -0,0 +1,941 @@ +#include +#include + +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" + +#include "caffe/layers/absval_layer.hpp" +#include "caffe/layers/bnll_layer.hpp" +#include "caffe/layers/dropout_layer.hpp" +#include "caffe/layers/elu_layer.hpp" +#include "caffe/layers/exp_layer.hpp" +#include "caffe/layers/inner_product_layer.hpp" +#include "caffe/layers/log_layer.hpp" +#include "caffe/layers/power_layer.hpp" +#include "caffe/layers/prelu_layer.hpp" +#include "caffe/layers/relu_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" +#include "caffe/layers/tanh_layer.hpp" +#include "caffe/layers/threshold_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_relu_layer.hpp" +#include "caffe/layers/cudnn_sigmoid_layer.hpp" +#include "caffe/layers/cudnn_tanh_layer.hpp" +#endif + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class NeuronLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + NeuronLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~NeuronLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + + void TestDropoutForward(const float dropout_ratio) { + LayerParameter layer_param; + // Fill in the given dropout_ratio, unless it's 0.5, in which case we don't + // set it explicitly to test that 0.5 is the default. + if (dropout_ratio != 0.5) { + layer_param.mutable_dropout_param()->set_dropout_ratio(dropout_ratio); + } + DropoutLayer layer(layer_param); + layer_param.set_phase(TRAIN); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + float scale = 1. / (1. - layer_param.dropout_param().dropout_ratio()); + const int count = this->blob_bottom_->count(); + // Initialize num_kept to count the number of inputs NOT dropped out. + int num_kept = 0; + for (int i = 0; i < count; ++i) { + if (top_data[i] != 0) { + ++num_kept; + EXPECT_EQ(top_data[i], bottom_data[i] * scale); + } + } + const Dtype std_error = sqrt(dropout_ratio * (1 - dropout_ratio) / count); + // Fail if the number dropped was more than 1.96 * std_error away from the + // expected number -- requires 95% confidence that the dropout layer is not + // obeying the given dropout_ratio for test failure. + const Dtype empirical_dropout_ratio = 1 - num_kept / Dtype(count); + EXPECT_NEAR(empirical_dropout_ratio, dropout_ratio, 1.96 * std_error); + } + + void TestExpForward(const float base, const float scale, const float shift) { + LayerParameter layer_param; + layer_param.mutable_exp_param()->set_base(base); + layer_param.mutable_exp_param()->set_scale(scale); + layer_param.mutable_exp_param()->set_shift(shift); + ExpLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + layer.Forward(blob_bottom_vec_, blob_top_vec_); + const Dtype kDelta = 2e-4; + const Dtype* bottom_data = blob_bottom_->cpu_data(); + const Dtype* top_data = blob_top_->cpu_data(); + for (int i = 0; i < blob_bottom_->count(); ++i) { + const Dtype bottom_val = bottom_data[i]; + const Dtype top_val = top_data[i]; + if (base == -1) { + EXPECT_NEAR(top_val, exp(shift + scale * bottom_val), kDelta); + } else { + EXPECT_NEAR(top_val, pow(base, shift + scale * bottom_val), kDelta); + } + } + } + + void TestExpGradient(const float base, const float scale, const float shift) { + LayerParameter layer_param; + layer_param.mutable_exp_param()->set_base(base); + layer_param.mutable_exp_param()->set_scale(scale); + layer_param.mutable_exp_param()->set_shift(shift); + ExpLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, blob_bottom_vec_, blob_top_vec_); + } + + void TestPReLU(PReLULayer *layer) { + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + const Dtype* slope_data = layer->blobs()[0]->cpu_data(); + int hw = this->blob_bottom_->height() * this->blob_bottom_->width(); + int channels = this->blob_bottom_->channels(); + bool channel_shared = layer->layer_param().prelu_param().channel_shared(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + int c = channel_shared ? 0 : (i / hw) % channels; + EXPECT_EQ(top_data[i], + std::max(bottom_data[i], (Dtype)(0)) + + slope_data[c] * std::min(bottom_data[i], (Dtype)(0))); + } + } + + void LogBottomInit() { + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + Dtype* bottom_data = this->blob_bottom_->mutable_cpu_data(); + caffe_exp(this->blob_bottom_->count(), bottom_data, bottom_data); + } + + void TestLogForward(const float base, const float scale, const float shift) { + LogBottomInit(); + LayerParameter layer_param; + layer_param.mutable_log_param()->set_base(base); + layer_param.mutable_log_param()->set_scale(scale); + layer_param.mutable_log_param()->set_shift(shift); + LogLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + layer.Forward(blob_bottom_vec_, blob_top_vec_); + const Dtype kDelta = 2e-4; + const Dtype* bottom_data = blob_bottom_->cpu_data(); + const Dtype* top_data = blob_top_->cpu_data(); + for (int i = 0; i < blob_bottom_->count(); ++i) { + const Dtype bottom_val = bottom_data[i]; + const Dtype top_val = top_data[i]; + if (base == -1) { + EXPECT_NEAR(top_val, log(shift + scale * bottom_val), kDelta); + } else { + EXPECT_NEAR(top_val, log(shift + scale * bottom_val) / log(base), + kDelta); + } + } + } + + void TestLogGradient(const float base, const float scale, const float shift) { + LogBottomInit(); + LayerParameter layer_param; + layer_param.mutable_log_param()->set_base(base); + layer_param.mutable_log_param()->set_scale(scale); + layer_param.mutable_log_param()->set_shift(shift); + LogLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientEltwise(&layer, blob_bottom_vec_, blob_top_vec_); + } +}; + +TYPED_TEST_CASE(NeuronLayerTest, TestDtypesAndDevices); + +TYPED_TEST(NeuronLayerTest, TestAbsVal) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + AbsValLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + const int count = this->blob_bottom_->count(); + for (int i = 0; i < count; ++i) { + EXPECT_EQ(top_data[i], fabs(bottom_data[i])); + } +} + +TYPED_TEST(NeuronLayerTest, TestAbsGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + AbsValLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestReLU) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_GE(top_data[i], 0.); + EXPECT_TRUE(top_data[i] == 0 || top_data[i] == bottom_data[i]); + } +} + +TYPED_TEST(NeuronLayerTest, TestReLUGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ReLULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestReLUWithNegativeSlope) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "relu_param { negative_slope: 0.01 }", &layer_param)); + ReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + if (top_data[i] >= 0) { + EXPECT_FLOAT_EQ(top_data[i], bottom_data[i]); + } else { + EXPECT_FLOAT_EQ(top_data[i], bottom_data[i] * 0.01); + } + } +} + +TYPED_TEST(NeuronLayerTest, TestReLUGradientWithNegativeSlope) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "relu_param { negative_slope: 0.01 }", &layer_param)); + ReLULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestELU) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "elu_param { alpha: 0.5 }", &layer_param)); + ELULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype kDelta = 2e-4; + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + if (bottom_data[i] > 0) { + EXPECT_FLOAT_EQ(top_data[i], bottom_data[i]); + } else { + EXPECT_NEAR(top_data[i], 0.5 * (exp(bottom_data[i]) - 1), kDelta); + } + } +} + +TYPED_TEST(NeuronLayerTest, TestELUasReLU) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "elu_param { alpha: 0 }", &layer_param)); + ELULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_GE(top_data[i], 0.); + EXPECT_TRUE(top_data[i] == 0 || top_data[i] == bottom_data[i]); + } +} + +TYPED_TEST(NeuronLayerTest, TestELUGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ELULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestELUasReLUGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "elu_param { alpha: 0 }", &layer_param)); + ELULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestSigmoid) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SigmoidLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_FLOAT_EQ(top_data[i], 1. / (1 + exp(-bottom_data[i]))); + // check that we squashed the value between 0 and 1 + EXPECT_GE(top_data[i], 0.); + EXPECT_LE(top_data[i], 1.); + } +} + +TYPED_TEST(NeuronLayerTest, TestSigmoidGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SigmoidLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestTanH) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + TanHLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Test exact values + for (int i = 0; i < this->blob_bottom_->num(); ++i) { + for (int j = 0; j < this->blob_bottom_->channels(); ++j) { + for (int k = 0; k < this->blob_bottom_->height(); ++k) { + for (int l = 0; l < this->blob_bottom_->width(); ++l) { + EXPECT_GE(this->blob_top_->data_at(i, j, k, l) + 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); + EXPECT_LE(this->blob_top_->data_at(i, j, k, l) - 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); + } + } + } + } +} + +TYPED_TEST(NeuronLayerTest, TestTanHGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + TanHLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestExpLayer) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e. + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestExpForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpGradient) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e. + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestExpGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpLayerWithShift) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e, + // with a non-zero shift + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestExpForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpGradientWithShift) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e, + // with a non-zero shift + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestExpGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpLayerBase2) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestExpForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpGradientBase2) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestExpGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpLayerBase2Shift1) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestExpForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpGradientBase2Shift1) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestExpGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpLayerBase2Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 0; + this->TestExpForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpGradientBase2Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 0; + this->TestExpGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpLayerBase2Shift1Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 1; + this->TestExpForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpGradientBase2Shift1Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 1; + this->TestExpGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogLayer) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e. + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestLogForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogGradient) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e. + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestLogGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogLayerBase2) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestLogForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogGradientBase2) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 0; + this->TestLogGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogLayerBase2Shift1) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestLogForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogGradientBase2Shift1) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestLogGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogLayerBase2Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 0; + this->TestLogForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogGradientBase2Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 0; + this->TestLogGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogLayerBase2Shift1Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 1; + this->TestLogForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestLogGradientBase2Shift1Scale3) { + typedef typename TypeParam::Dtype Dtype; + const Dtype kBase = 2; + const Dtype kScale = 3; + const Dtype kShift = 1; + this->TestLogGradient(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestDropoutHalf) { + const float kDropoutRatio = 0.5; + this->TestDropoutForward(kDropoutRatio); +} + +TYPED_TEST(NeuronLayerTest, TestDropoutThreeQuarters) { + const float kDropoutRatio = 0.75; + this->TestDropoutForward(kDropoutRatio); +} + +TYPED_TEST(NeuronLayerTest, TestDropoutTestPhase) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.set_phase(TEST); + DropoutLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + if (top_data[i] != 0) { + EXPECT_EQ(top_data[i], bottom_data[i]); + } + } +} + +TYPED_TEST(NeuronLayerTest, TestDropoutGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.set_phase(TRAIN); + DropoutLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestDropoutGradientTest) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.set_phase(TEST); + DropoutLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestBNLL) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BNLLLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_GE(top_data[i], 0.); + EXPECT_GE(top_data[i], bottom_data[i]); + } +} + +TYPED_TEST(NeuronLayerTest, TestBNLLGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BNLLLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestPReLUParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* slopes = layer.blobs()[0]->cpu_data(); + int count = layer.blobs()[0]->count(); + for (int i = 0; i < count; ++i, ++slopes) { + EXPECT_EQ(*slopes, 0.25); + } +} + +TYPED_TEST(NeuronLayerTest, TestPReLUForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(layer.blobs()[0].get()); + this->TestPReLU(&layer); +} + +TYPED_TEST(NeuronLayerTest, TestPReLUForwardChannelShared) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_prelu_param()->set_channel_shared(true); + PReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + this->TestPReLU(&layer); +} + +TYPED_TEST(NeuronLayerTest, TestPReLUGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(layer.blobs()[0].get()); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestPReLUGradientChannelShared) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_prelu_param()->set_channel_shared(true); + PReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestPReLUConsistencyReLU) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter prelu_layer_param; + LayerParameter relu_layer_param; + relu_layer_param.mutable_relu_param()->set_negative_slope(0.25); + PReLULayer prelu(prelu_layer_param); + ReLULayer relu(relu_layer_param); + // Set up blobs + vector*> blob_bottom_vec_2; + vector*> blob_top_vec_2; + shared_ptr > blob_bottom_2(new Blob()); + shared_ptr > blob_top_2(new Blob()); + blob_bottom_vec_2.push_back(blob_bottom_2.get()); + blob_top_vec_2.push_back(blob_top_2.get()); + blob_bottom_2->CopyFrom(*this->blob_bottom_, false, true); + // SetUp layers + prelu.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + relu.SetUp(blob_bottom_vec_2, blob_top_vec_2); + // Check forward + prelu.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + relu.Forward(this->blob_bottom_vec_, blob_top_vec_2); + for (int s = 0; s < blob_top_2->count(); ++s) { + EXPECT_EQ(this->blob_top_->cpu_data()[s], blob_top_2->cpu_data()[s]); + } + // Check backward + shared_ptr > tmp_blob(new Blob()); + tmp_blob->ReshapeLike(*blob_top_2.get()); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(tmp_blob.get()); + caffe_copy(blob_top_2->count(), tmp_blob->cpu_data(), + this->blob_top_->mutable_cpu_diff()); + caffe_copy(blob_top_2->count(), tmp_blob->cpu_data(), + blob_top_2->mutable_cpu_diff()); + vector propagate_down; + propagate_down.push_back(true); + prelu.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + relu.Backward(blob_top_vec_2, propagate_down, blob_bottom_vec_2); + for (int s = 0; s < blob_bottom_2->count(); ++s) { + EXPECT_EQ(this->blob_bottom_->cpu_diff()[s], blob_bottom_2->cpu_diff()[s]); + } +} + +TYPED_TEST(NeuronLayerTest, TestPReLUInPlace) { + typedef typename TypeParam::Dtype Dtype; + // Set layer parameters + LayerParameter ip_layer_param; + LayerParameter prelu_layer_param; + InnerProductParameter *ip_param = + ip_layer_param.mutable_inner_product_param(); + ip_param->mutable_weight_filler()->set_type("gaussian"); + ip_param->set_num_output(3); + InnerProductLayer ip(ip_layer_param); + PReLULayer prelu(prelu_layer_param); + InnerProductLayer ip2(ip_layer_param); + PReLULayer prelu2(prelu_layer_param); + // Set up blobs + vector*> blob_bottom_vec_2; + vector*> blob_middle_vec_2; + vector*> blob_top_vec_2; + shared_ptr > blob_bottom_2(new Blob()); + shared_ptr > blob_middle_2(new Blob()); + shared_ptr > blob_top_2(new Blob()); + blob_bottom_vec_2.push_back(blob_bottom_2.get()); + blob_middle_vec_2.push_back(blob_middle_2.get()); + blob_top_vec_2.push_back(blob_top_2.get()); + blob_bottom_2->CopyFrom(*this->blob_bottom_, false, true); + // SetUp layers + ip.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + prelu.SetUp(this->blob_top_vec_, this->blob_top_vec_); + ip2.SetUp(blob_bottom_vec_2, blob_middle_vec_2); + prelu2.SetUp(blob_middle_vec_2, blob_top_vec_2); + caffe_copy(ip2.blobs()[0]->count(), ip.blobs()[0]->cpu_data(), + ip2.blobs()[0]->mutable_cpu_data()); + // Forward in-place + ip.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + prelu.Forward(this->blob_top_vec_, this->blob_top_vec_); + // Forward non-in-place + ip2.Forward(blob_bottom_vec_2, blob_middle_vec_2); + prelu2.Forward(blob_middle_vec_2, blob_top_vec_2); + // Check numbers + for (int s = 0; s < blob_top_2->count(); ++s) { + EXPECT_EQ(this->blob_top_->cpu_data()[s], blob_top_2->cpu_data()[s]); + } + // Fill top diff with random numbers + shared_ptr > tmp_blob(new Blob()); + tmp_blob->ReshapeLike(*blob_top_2.get()); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(tmp_blob.get()); + caffe_copy(blob_top_2->count(), tmp_blob->cpu_data(), + this->blob_top_->mutable_cpu_diff()); + caffe_copy(blob_top_2->count(), tmp_blob->cpu_data(), + blob_top_2->mutable_cpu_diff()); + // Backward in-place + vector propagate_down; + propagate_down.push_back(true); + prelu.Backward(this->blob_top_vec_, propagate_down, this->blob_top_vec_); + ip.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + // Backward non-in-place + prelu2.Backward(blob_top_vec_2, propagate_down, blob_middle_vec_2); + ip2.Backward(blob_middle_vec_2, propagate_down, blob_bottom_vec_2); + // Check numbers + for (int s = 0; s < blob_bottom_2->count(); ++s) { + EXPECT_FLOAT_EQ(this->blob_bottom_->cpu_diff()[s], + blob_bottom_2->cpu_diff()[s]); + } + for (int s = 0; s < ip.blobs()[0]->count(); ++s) { + EXPECT_FLOAT_EQ(ip.blobs()[0]->cpu_diff()[s], + ip2.blobs()[0]->cpu_diff()[s]); + } + for (int s = 0; s < ip.blobs()[1]->count(); ++s) { + EXPECT_FLOAT_EQ(ip.blobs()[1]->cpu_diff()[s], + ip2.blobs()[1]->cpu_diff()[s]); + } + for (int s = 0; s < prelu.blobs()[0]->count(); ++s) { + EXPECT_FLOAT_EQ(prelu.blobs()[0]->cpu_diff()[s], + prelu2.blobs()[0]->cpu_diff()[s]); + } +} + +#ifdef USE_CUDNN +template +class CuDNNNeuronLayerTest : public GPUDeviceTest { + protected: + CuDNNNeuronLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~CuDNNNeuronLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(CuDNNNeuronLayerTest, TestDtypes); + +TYPED_TEST(CuDNNNeuronLayerTest, TestReLUCuDNN) { + LayerParameter layer_param; + CuDNNReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + const TypeParam* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_GE(top_data[i], 0.); + EXPECT_TRUE(top_data[i] == 0 || top_data[i] == bottom_data[i]); + } +} + +TYPED_TEST(CuDNNNeuronLayerTest, TestReLUGradientCuDNN) { + LayerParameter layer_param; + CuDNNReLULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNNeuronLayerTest, TestReLUWithNegativeSlopeCuDNN) { + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "relu_param { negative_slope: 0.01 }", &layer_param)); + CuDNNReLULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + const TypeParam* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + if (top_data[i] >= 0) { + EXPECT_FLOAT_EQ(top_data[i], bottom_data[i]); + } else { + EXPECT_FLOAT_EQ(top_data[i], bottom_data[i] * 0.01); + } + } +} + +TYPED_TEST(CuDNNNeuronLayerTest, TestReLUGradientWithNegativeSlopeCuDNN) { + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "relu_param { negative_slope: 0.01 }", &layer_param)); + CuDNNReLULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNNeuronLayerTest, TestSigmoidCuDNN) { + LayerParameter layer_param; + CuDNNSigmoidLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + const TypeParam* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_FLOAT_EQ(top_data[i], 1. / (1 + exp(-bottom_data[i]))); + // check that we squashed the value between 0 and 1 + EXPECT_GE(top_data[i], 0.); + EXPECT_LE(top_data[i], 1.); + } +} + +TYPED_TEST(CuDNNNeuronLayerTest, TestSigmoidGradientCuDNN) { + LayerParameter layer_param; + CuDNNSigmoidLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNNeuronLayerTest, TestTanHCuDNN) { + LayerParameter layer_param; + CuDNNTanHLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Test exact values + for (int i = 0; i < this->blob_bottom_->num(); ++i) { + for (int j = 0; j < this->blob_bottom_->channels(); ++j) { + for (int k = 0; k < this->blob_bottom_->height(); ++k) { + for (int l = 0; l < this->blob_bottom_->width(); ++l) { + EXPECT_GE(this->blob_top_->data_at(i, j, k, l) + 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); + EXPECT_LE(this->blob_top_->data_at(i, j, k, l) - 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); + } + } + } + } +} + +TYPED_TEST(CuDNNNeuronLayerTest, TestTanHGradientCuDNN) { + LayerParameter layer_param; + CuDNNTanHLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_platform.cpp b/3rdparty/caffe/src/caffe/test/test_platform.cpp new file mode 100644 index 00000000..f3513e08 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_platform.cpp @@ -0,0 +1,57 @@ +#ifndef CPU_ONLY + +#include +#include + +#include "glog/logging.h" +#include "gtest/gtest.h" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; + +class PlatformTest : public ::testing::Test {}; + +TEST_F(PlatformTest, TestInitialization) { + printf("Major revision number: %d\n", CAFFE_TEST_CUDA_PROP.major); + printf("Minor revision number: %d\n", CAFFE_TEST_CUDA_PROP.minor); + printf("Name: %s\n", CAFFE_TEST_CUDA_PROP.name); + printf("Total global memory: %lu\n", + CAFFE_TEST_CUDA_PROP.totalGlobalMem); + printf("Total shared memory per block: %lu\n", + CAFFE_TEST_CUDA_PROP.sharedMemPerBlock); + printf("Total registers per block: %d\n", + CAFFE_TEST_CUDA_PROP.regsPerBlock); + printf("Warp size: %d\n", + CAFFE_TEST_CUDA_PROP.warpSize); + printf("Maximum memory pitch: %lu\n", + CAFFE_TEST_CUDA_PROP.memPitch); + printf("Maximum threads per block: %d\n", + CAFFE_TEST_CUDA_PROP.maxThreadsPerBlock); + for (int i = 0; i < 3; ++i) + printf("Maximum dimension %d of block: %d\n", i, + CAFFE_TEST_CUDA_PROP.maxThreadsDim[i]); + for (int i = 0; i < 3; ++i) + printf("Maximum dimension %d of grid: %d\n", i, + CAFFE_TEST_CUDA_PROP.maxGridSize[i]); + printf("Clock rate: %d\n", CAFFE_TEST_CUDA_PROP.clockRate); + printf("Total constant memory: %lu\n", + CAFFE_TEST_CUDA_PROP.totalConstMem); + printf("Texture alignment: %lu\n", + CAFFE_TEST_CUDA_PROP.textureAlignment); + printf("Concurrent copy and execution: %s\n", + (CAFFE_TEST_CUDA_PROP.deviceOverlap ? "Yes" : "No")); + printf("Number of multiprocessors: %d\n", + CAFFE_TEST_CUDA_PROP.multiProcessorCount); + printf("Kernel execution timeout: %s\n", + (CAFFE_TEST_CUDA_PROP.kernelExecTimeoutEnabled ? "Yes" : "No")); + printf("Unified virtual addressing: %s\n", + (CAFFE_TEST_CUDA_PROP.unifiedAddressing ? "Yes" : "No")); + EXPECT_TRUE(true); +} + +} // namespace caffe + +#endif // CPU_ONLY diff --git a/3rdparty/caffe/src/caffe/test/test_pooling_layer.cpp b/3rdparty/caffe/src/caffe/test/test_pooling_layer.cpp new file mode 100644 index 00000000..bb95cae0 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_pooling_layer.cpp @@ -0,0 +1,1185 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/pooling_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_pooling_layer.hpp" +#endif + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class PoolingLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + PoolingLayerTest() + : blob_bottom_(new Blob()), + blob_top_(new Blob()), + blob_top_mask_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1701); + blob_bottom_->Reshape(2, 3, 6, 5); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~PoolingLayerTest() { + delete blob_bottom_; + delete blob_top_; + delete blob_top_mask_; + } + Blob* const blob_bottom_; + Blob* const blob_top_; + Blob* const blob_top_mask_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + // Test for 2x 2 square pooling layer + void TestForwardSquare() { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + const int num = 2; + const int channels = 2; + blob_bottom_->Reshape(num, channels, 3, 5); + // Input: 2x 2 channels of: + // [1 2 5 2 3] + // [9 4 1 4 8] + // [1 2 5 2 3] + for (int i = 0; i < 15 * num * channels; i += 15) { + blob_bottom_->mutable_cpu_data()[i + 0] = 1; + blob_bottom_->mutable_cpu_data()[i + 1] = 2; + blob_bottom_->mutable_cpu_data()[i + 2] = 5; + blob_bottom_->mutable_cpu_data()[i + 3] = 2; + blob_bottom_->mutable_cpu_data()[i + 4] = 3; + blob_bottom_->mutable_cpu_data()[i + 5] = 9; + blob_bottom_->mutable_cpu_data()[i + 6] = 4; + blob_bottom_->mutable_cpu_data()[i + 7] = 1; + blob_bottom_->mutable_cpu_data()[i + 8] = 4; + blob_bottom_->mutable_cpu_data()[i + 9] = 8; + blob_bottom_->mutable_cpu_data()[i + 10] = 1; + blob_bottom_->mutable_cpu_data()[i + 11] = 2; + blob_bottom_->mutable_cpu_data()[i + 12] = 5; + blob_bottom_->mutable_cpu_data()[i + 13] = 2; + blob_bottom_->mutable_cpu_data()[i + 14] = 3; + } + PoolingLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), num); + EXPECT_EQ(blob_top_->channels(), channels); + EXPECT_EQ(blob_top_->height(), 2); + EXPECT_EQ(blob_top_->width(), 4); + if (blob_top_vec_.size() > 1) { + EXPECT_EQ(blob_top_mask_->num(), num); + EXPECT_EQ(blob_top_mask_->channels(), channels); + EXPECT_EQ(blob_top_mask_->height(), 2); + EXPECT_EQ(blob_top_mask_->width(), 4); + } + layer.Forward(blob_bottom_vec_, blob_top_vec_); + // Expected output: 2x 2 channels of: + // [9 5 5 8] + // [9 5 5 8] + for (int i = 0; i < 8 * num * channels; i += 8) { + EXPECT_EQ(blob_top_->cpu_data()[i + 0], 9); + EXPECT_EQ(blob_top_->cpu_data()[i + 1], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 2], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 3], 8); + EXPECT_EQ(blob_top_->cpu_data()[i + 4], 9); + EXPECT_EQ(blob_top_->cpu_data()[i + 5], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 6], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 7], 8); + } + if (blob_top_vec_.size() > 1) { + // Expected mask output: 2x 2 channels of: + // [5 2 2 9] + // [5 12 12 9] + for (int i = 0; i < 8 * num * channels; i += 8) { + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 0], 5); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 1], 2); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 2], 2); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 3], 9); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 4], 5); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 5], 12); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 6], 12); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 7], 9); + } + } + } + // Test for 3x 2 rectangular pooling layer with kernel_h > kernel_w + void TestForwardRectHigh() { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(3); + pooling_param->set_kernel_w(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + const int num = 2; + const int channels = 2; + blob_bottom_->Reshape(num, channels, 6, 6); + // Input: 2x 2 channels of: + // [35 1 6 26 19 24] + // [ 3 32 7 21 23 25] + // [31 9 2 22 27 20] + // [ 8 28 33 17 10 15] + // [30 5 34 12 14 16] + // [ 4 36 29 13 18 11] + // (this is generated by magic(6) in MATLAB) + for (int i = 0; i < 36 * num * channels; i += 36) { + blob_bottom_->mutable_cpu_data()[i + 0] = 35; + blob_bottom_->mutable_cpu_data()[i + 1] = 1; + blob_bottom_->mutable_cpu_data()[i + 2] = 6; + blob_bottom_->mutable_cpu_data()[i + 3] = 26; + blob_bottom_->mutable_cpu_data()[i + 4] = 19; + blob_bottom_->mutable_cpu_data()[i + 5] = 24; + blob_bottom_->mutable_cpu_data()[i + 6] = 3; + blob_bottom_->mutable_cpu_data()[i + 7] = 32; + blob_bottom_->mutable_cpu_data()[i + 8] = 7; + blob_bottom_->mutable_cpu_data()[i + 9] = 21; + blob_bottom_->mutable_cpu_data()[i + 10] = 23; + blob_bottom_->mutable_cpu_data()[i + 11] = 25; + blob_bottom_->mutable_cpu_data()[i + 12] = 31; + blob_bottom_->mutable_cpu_data()[i + 13] = 9; + blob_bottom_->mutable_cpu_data()[i + 14] = 2; + blob_bottom_->mutable_cpu_data()[i + 15] = 22; + blob_bottom_->mutable_cpu_data()[i + 16] = 27; + blob_bottom_->mutable_cpu_data()[i + 17] = 20; + blob_bottom_->mutable_cpu_data()[i + 18] = 8; + blob_bottom_->mutable_cpu_data()[i + 19] = 28; + blob_bottom_->mutable_cpu_data()[i + 20] = 33; + blob_bottom_->mutable_cpu_data()[i + 21] = 17; + blob_bottom_->mutable_cpu_data()[i + 22] = 10; + blob_bottom_->mutable_cpu_data()[i + 23] = 15; + blob_bottom_->mutable_cpu_data()[i + 24] = 30; + blob_bottom_->mutable_cpu_data()[i + 25] = 5; + blob_bottom_->mutable_cpu_data()[i + 26] = 34; + blob_bottom_->mutable_cpu_data()[i + 27] = 12; + blob_bottom_->mutable_cpu_data()[i + 28] = 14; + blob_bottom_->mutable_cpu_data()[i + 29] = 16; + blob_bottom_->mutable_cpu_data()[i + 30] = 4; + blob_bottom_->mutable_cpu_data()[i + 31] = 36; + blob_bottom_->mutable_cpu_data()[i + 32] = 29; + blob_bottom_->mutable_cpu_data()[i + 33] = 13; + blob_bottom_->mutable_cpu_data()[i + 34] = 18; + blob_bottom_->mutable_cpu_data()[i + 35] = 11; + } + PoolingLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), num); + EXPECT_EQ(blob_top_->channels(), channels); + EXPECT_EQ(blob_top_->height(), 4); + EXPECT_EQ(blob_top_->width(), 5); + if (blob_top_vec_.size() > 1) { + EXPECT_EQ(blob_top_mask_->num(), num); + EXPECT_EQ(blob_top_mask_->channels(), channels); + EXPECT_EQ(blob_top_mask_->height(), 4); + EXPECT_EQ(blob_top_mask_->width(), 5); + } + layer.Forward(blob_bottom_vec_, blob_top_vec_); + // Expected output: 2x 2 channels of: + // [35 32 26 27 27] + // [32 33 33 27 27] + // [31 34 34 27 27] + // [36 36 34 18 18] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_->cpu_data()[i + 0], 35); + EXPECT_EQ(blob_top_->cpu_data()[i + 1], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 2], 26); + EXPECT_EQ(blob_top_->cpu_data()[i + 3], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 4], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 5], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 6], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 7], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 8], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 9], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 10], 31); + EXPECT_EQ(blob_top_->cpu_data()[i + 11], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 12], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 13], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 14], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 15], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 16], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 17], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 18], 18); + EXPECT_EQ(blob_top_->cpu_data()[i + 19], 18); + } + if (blob_top_vec_.size() > 1) { + // [ 1 8 4 17 17] + // [ 8 21 21 17 17] + // [13 27 27 17 17] + // [32 32 27 35 35] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 0], 0); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 1], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 2], 3); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 3], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 4], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 5], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 6], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 7], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 8], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 9], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 10], 12); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 11], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 12], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 13], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 14], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 15], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 16], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 17], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 18], 34); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 19], 34); + } + } + } + // Test for rectangular pooling layer with kernel_w > kernel_h + void TestForwardRectWide() { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(2); + pooling_param->set_kernel_w(3); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + const int num = 2; + const int channels = 2; + blob_bottom_->Reshape(num, channels, 6, 6); + // Input: 2x 2 channels of: + // [35 1 6 26 19 24] + // [ 3 32 7 21 23 25] + // [31 9 2 22 27 20] + // [ 8 28 33 17 10 15] + // [30 5 34 12 14 16] + // [ 4 36 29 13 18 11] + // (this is generated by magic(6) in MATLAB) + for (int i = 0; i < 36 * num * channels; i += 36) { + blob_bottom_->mutable_cpu_data()[i + 0] = 35; + blob_bottom_->mutable_cpu_data()[i + 1] = 1; + blob_bottom_->mutable_cpu_data()[i + 2] = 6; + blob_bottom_->mutable_cpu_data()[i + 3] = 26; + blob_bottom_->mutable_cpu_data()[i + 4] = 19; + blob_bottom_->mutable_cpu_data()[i + 5] = 24; + blob_bottom_->mutable_cpu_data()[i + 6] = 3; + blob_bottom_->mutable_cpu_data()[i + 7] = 32; + blob_bottom_->mutable_cpu_data()[i + 8] = 7; + blob_bottom_->mutable_cpu_data()[i + 9] = 21; + blob_bottom_->mutable_cpu_data()[i + 10] = 23; + blob_bottom_->mutable_cpu_data()[i + 11] = 25; + blob_bottom_->mutable_cpu_data()[i + 12] = 31; + blob_bottom_->mutable_cpu_data()[i + 13] = 9; + blob_bottom_->mutable_cpu_data()[i + 14] = 2; + blob_bottom_->mutable_cpu_data()[i + 15] = 22; + blob_bottom_->mutable_cpu_data()[i + 16] = 27; + blob_bottom_->mutable_cpu_data()[i + 17] = 20; + blob_bottom_->mutable_cpu_data()[i + 18] = 8; + blob_bottom_->mutable_cpu_data()[i + 19] = 28; + blob_bottom_->mutable_cpu_data()[i + 20] = 33; + blob_bottom_->mutable_cpu_data()[i + 21] = 17; + blob_bottom_->mutable_cpu_data()[i + 22] = 10; + blob_bottom_->mutable_cpu_data()[i + 23] = 15; + blob_bottom_->mutable_cpu_data()[i + 24] = 30; + blob_bottom_->mutable_cpu_data()[i + 25] = 5; + blob_bottom_->mutable_cpu_data()[i + 26] = 34; + blob_bottom_->mutable_cpu_data()[i + 27] = 12; + blob_bottom_->mutable_cpu_data()[i + 28] = 14; + blob_bottom_->mutable_cpu_data()[i + 29] = 16; + blob_bottom_->mutable_cpu_data()[i + 30] = 4; + blob_bottom_->mutable_cpu_data()[i + 31] = 36; + blob_bottom_->mutable_cpu_data()[i + 32] = 29; + blob_bottom_->mutable_cpu_data()[i + 33] = 13; + blob_bottom_->mutable_cpu_data()[i + 34] = 18; + blob_bottom_->mutable_cpu_data()[i + 35] = 11; + } + PoolingLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), num); + EXPECT_EQ(blob_top_->channels(), channels); + EXPECT_EQ(blob_top_->height(), 5); + EXPECT_EQ(blob_top_->width(), 4); + if (blob_top_vec_.size() > 1) { + EXPECT_EQ(blob_top_mask_->num(), num); + EXPECT_EQ(blob_top_mask_->channels(), channels); + EXPECT_EQ(blob_top_mask_->height(), 5); + EXPECT_EQ(blob_top_mask_->width(), 4); + } + layer.Forward(blob_bottom_vec_, blob_top_vec_); + // Expected output: 2x 2 channels of: + // [35 32 26 26] + // [32 32 27 27] + // [33 33 33 27] + // [34 34 34 17] + // [36 36 34 18] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_->cpu_data()[i + 0], 35); + EXPECT_EQ(blob_top_->cpu_data()[i + 1], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 2], 26); + EXPECT_EQ(blob_top_->cpu_data()[i + 3], 26); + EXPECT_EQ(blob_top_->cpu_data()[i + 4], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 5], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 6], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 7], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 8], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 9], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 10], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 11], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 12], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 13], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 14], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 15], 17); + EXPECT_EQ(blob_top_->cpu_data()[i + 16], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 17], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 18], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 19], 18); + } + if (blob_top_vec_.size() > 1) { + // [ 1 8 4 4] + // [ 8 8 17 17] + // [21 21 21 17] + // [27 27 27 22] + // [32 32 27 35] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 0], 0); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 1], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 2], 3); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 3], 3); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 4], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 5], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 6], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 7], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 8], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 9], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 10], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 11], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 12], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 13], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 14], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 15], 21); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 16], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 17], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 18], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 19], 34); + } + } + } +}; + +TYPED_TEST_CASE(PoolingLayerTest, TestDtypesAndDevices); + +TYPED_TEST(PoolingLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 2); +} + +TYPED_TEST(PoolingLayerTest, TestSetupPadded) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + pooling_param->set_pad(1); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), 4); + EXPECT_EQ(this->blob_top_->width(), 3); +} + +TYPED_TEST(PoolingLayerTest, TestSetupGlobalPooling) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_global_pooling(true); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); +} + +/* +TYPED_TEST(PoolingLayerTest, PrintBackward) { + LayerParameter layer_param; + layer_param.set_kernelsize(3); + layer_param.set_stride(2); + layer_param.set_pool(LayerParameter_PoolMethod_MAX); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + cout << "bottom data " << i << " " << this->blob_bottom_->cpu_data()[i] << endl; + } + for (int i = 0; i < this->blob_top_->count(); ++i) { + cout << "top data " << i << " " << this->blob_top_->cpu_data()[i] << endl; + } + + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = i; + } + layer.Backward(this->blob_top_vec_, true, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + cout << "bottom diff " << i << " " << this->blob_bottom_->cpu_diff()[i] << endl; + } +} +*/ + +TYPED_TEST(PoolingLayerTest, TestForwardMax) { + this->TestForwardSquare(); + this->TestForwardRectHigh(); + this->TestForwardRectWide(); +} + +TYPED_TEST(PoolingLayerTest, TestForwardMaxTopMask) { + this->blob_top_vec_.push_back(this->blob_top_mask_); + this->TestForwardSquare(); + this->TestForwardRectHigh(); + this->TestForwardRectWide(); +} + +TYPED_TEST(PoolingLayerTest, TestGradientMax) { + typedef typename TypeParam::Dtype Dtype; + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + pooling_param->set_pad(1); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + PoolingLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + } +} + +TYPED_TEST(PoolingLayerTest, TestForwardMaxPadded) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + pooling_param->set_pad(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + this->blob_bottom_->Reshape(1, 1, 3, 3); + // Input: + // [ 1 2 4 ] + // [ 2 3 2 ] + // [ 4 2 1 ] + this->blob_bottom_->mutable_cpu_data()[0] = 1; + this->blob_bottom_->mutable_cpu_data()[1] = 2; + this->blob_bottom_->mutable_cpu_data()[2] = 4; + this->blob_bottom_->mutable_cpu_data()[3] = 2; + this->blob_bottom_->mutable_cpu_data()[4] = 3; + this->blob_bottom_->mutable_cpu_data()[5] = 2; + this->blob_bottom_->mutable_cpu_data()[6] = 4; + this->blob_bottom_->mutable_cpu_data()[7] = 2; + this->blob_bottom_->mutable_cpu_data()[8] = 1; + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 1); + EXPECT_EQ(this->blob_top_->channels(), 1); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 3); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Dtype epsilon = 1e-8; + // Output: + // [ 1 4 4 ] + // [ 4 4 4 ] + // [ 4 4 1 ] + EXPECT_NEAR(this->blob_top_->cpu_data()[0], 1, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[1], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[2], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[3], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[4], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[5], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[6], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[7], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[8], 1, epsilon); +} + +TYPED_TEST(PoolingLayerTest, TestGradientMaxTopMask) { + typedef typename TypeParam::Dtype Dtype; + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + this->blob_top_vec_.push_back(this->blob_top_mask_); + PoolingLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + this->blob_top_vec_.pop_back(); + } + } +} + +TYPED_TEST(PoolingLayerTest, TestForwardAve) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(1); + pooling_param->set_pad(1); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + this->blob_bottom_->Reshape(1, 1, 3, 3); + FillerParameter filler_param; + filler_param.set_value(Dtype(2)); + ConstantFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 1); + EXPECT_EQ(this->blob_top_->channels(), 1); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 3); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Dtype epsilon = 1e-5; + EXPECT_NEAR(this->blob_top_->cpu_data()[0], 8.0 / 9, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[1], 4.0 / 3, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[2], 8.0 / 9, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[3], 4.0 / 3, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[4], 2.0 , epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[5], 4.0 / 3, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[6], 8.0 / 9, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[7], 4.0 / 3, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[8], 8.0 / 9, epsilon); +} + +TYPED_TEST(PoolingLayerTest, TestGradientAve) { + typedef typename TypeParam::Dtype Dtype; + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + PoolingLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + } +} + +TYPED_TEST(PoolingLayerTest, TestGradientAvePadded) { + typedef typename TypeParam::Dtype Dtype; + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + pooling_param->set_pad(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + PoolingLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + } +} + +#ifdef USE_CUDNN +template +class CuDNNPoolingLayerTest : public GPUDeviceTest { + protected: + CuDNNPoolingLayerTest() + : blob_bottom_(new Blob()), + blob_top_(new Blob()), + blob_top_mask_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1701); + blob_bottom_->Reshape(2, 3, 6, 5); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~CuDNNPoolingLayerTest() { + delete blob_bottom_; + delete blob_top_; + delete blob_top_mask_; + } + Blob* const blob_bottom_; + Blob* const blob_top_; + Blob* const blob_top_mask_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + // Test for 2x 2 square pooling layer + void TestForwardSquare() { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + const int num = 2; + const int channels = 2; + blob_bottom_->Reshape(num, channels, 3, 5); + // Input: 2x 2 channels of: + // [1 2 5 2 3] + // [9 4 1 4 8] + // [1 2 5 2 3] + for (int i = 0; i < 15 * num * channels; i += 15) { + blob_bottom_->mutable_cpu_data()[i + 0] = 1; + blob_bottom_->mutable_cpu_data()[i + 1] = 2; + blob_bottom_->mutable_cpu_data()[i + 2] = 5; + blob_bottom_->mutable_cpu_data()[i + 3] = 2; + blob_bottom_->mutable_cpu_data()[i + 4] = 3; + blob_bottom_->mutable_cpu_data()[i + 5] = 9; + blob_bottom_->mutable_cpu_data()[i + 6] = 4; + blob_bottom_->mutable_cpu_data()[i + 7] = 1; + blob_bottom_->mutable_cpu_data()[i + 8] = 4; + blob_bottom_->mutable_cpu_data()[i + 9] = 8; + blob_bottom_->mutable_cpu_data()[i + 10] = 1; + blob_bottom_->mutable_cpu_data()[i + 11] = 2; + blob_bottom_->mutable_cpu_data()[i + 12] = 5; + blob_bottom_->mutable_cpu_data()[i + 13] = 2; + blob_bottom_->mutable_cpu_data()[i + 14] = 3; + } + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), num); + EXPECT_EQ(blob_top_->channels(), channels); + EXPECT_EQ(blob_top_->height(), 2); + EXPECT_EQ(blob_top_->width(), 4); + if (blob_top_vec_.size() > 1) { + EXPECT_EQ(blob_top_mask_->num(), num); + EXPECT_EQ(blob_top_mask_->channels(), channels); + EXPECT_EQ(blob_top_mask_->height(), 2); + EXPECT_EQ(blob_top_mask_->width(), 4); + } + layer.Forward(blob_bottom_vec_, blob_top_vec_); + // Expected output: 2x 2 channels of: + // [9 5 5 8] + // [9 5 5 8] + for (int i = 0; i < 8 * num * channels; i += 8) { + EXPECT_EQ(blob_top_->cpu_data()[i + 0], 9); + EXPECT_EQ(blob_top_->cpu_data()[i + 1], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 2], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 3], 8); + EXPECT_EQ(blob_top_->cpu_data()[i + 4], 9); + EXPECT_EQ(blob_top_->cpu_data()[i + 5], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 6], 5); + EXPECT_EQ(blob_top_->cpu_data()[i + 7], 8); + } + if (blob_top_vec_.size() > 1) { + // Expected mask output: 2x 2 channels of: + // [5 2 2 9] + // [5 12 12 9] + for (int i = 0; i < 8 * num * channels; i += 8) { + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 0], 5); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 1], 2); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 2], 2); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 3], 9); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 4], 5); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 5], 12); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 6], 12); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 7], 9); + } + } + } + // Test for 3x 2 rectangular pooling layer with kernel_h > kernel_w + void TestForwardRectHigh() { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(3); + pooling_param->set_kernel_w(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + const int num = 2; + const int channels = 2; + blob_bottom_->Reshape(num, channels, 6, 6); + // Input: 2x 2 channels of: + // [35 1 6 26 19 24] + // [ 3 32 7 21 23 25] + // [31 9 2 22 27 20] + // [ 8 28 33 17 10 15] + // [30 5 34 12 14 16] + // [ 4 36 29 13 18 11] + // (this is generated by magic(6) in MATLAB) + for (int i = 0; i < 36 * num * channels; i += 36) { + blob_bottom_->mutable_cpu_data()[i + 0] = 35; + blob_bottom_->mutable_cpu_data()[i + 1] = 1; + blob_bottom_->mutable_cpu_data()[i + 2] = 6; + blob_bottom_->mutable_cpu_data()[i + 3] = 26; + blob_bottom_->mutable_cpu_data()[i + 4] = 19; + blob_bottom_->mutable_cpu_data()[i + 5] = 24; + blob_bottom_->mutable_cpu_data()[i + 6] = 3; + blob_bottom_->mutable_cpu_data()[i + 7] = 32; + blob_bottom_->mutable_cpu_data()[i + 8] = 7; + blob_bottom_->mutable_cpu_data()[i + 9] = 21; + blob_bottom_->mutable_cpu_data()[i + 10] = 23; + blob_bottom_->mutable_cpu_data()[i + 11] = 25; + blob_bottom_->mutable_cpu_data()[i + 12] = 31; + blob_bottom_->mutable_cpu_data()[i + 13] = 9; + blob_bottom_->mutable_cpu_data()[i + 14] = 2; + blob_bottom_->mutable_cpu_data()[i + 15] = 22; + blob_bottom_->mutable_cpu_data()[i + 16] = 27; + blob_bottom_->mutable_cpu_data()[i + 17] = 20; + blob_bottom_->mutable_cpu_data()[i + 18] = 8; + blob_bottom_->mutable_cpu_data()[i + 19] = 28; + blob_bottom_->mutable_cpu_data()[i + 20] = 33; + blob_bottom_->mutable_cpu_data()[i + 21] = 17; + blob_bottom_->mutable_cpu_data()[i + 22] = 10; + blob_bottom_->mutable_cpu_data()[i + 23] = 15; + blob_bottom_->mutable_cpu_data()[i + 24] = 30; + blob_bottom_->mutable_cpu_data()[i + 25] = 5; + blob_bottom_->mutable_cpu_data()[i + 26] = 34; + blob_bottom_->mutable_cpu_data()[i + 27] = 12; + blob_bottom_->mutable_cpu_data()[i + 28] = 14; + blob_bottom_->mutable_cpu_data()[i + 29] = 16; + blob_bottom_->mutable_cpu_data()[i + 30] = 4; + blob_bottom_->mutable_cpu_data()[i + 31] = 36; + blob_bottom_->mutable_cpu_data()[i + 32] = 29; + blob_bottom_->mutable_cpu_data()[i + 33] = 13; + blob_bottom_->mutable_cpu_data()[i + 34] = 18; + blob_bottom_->mutable_cpu_data()[i + 35] = 11; + } + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), num); + EXPECT_EQ(blob_top_->channels(), channels); + EXPECT_EQ(blob_top_->height(), 4); + EXPECT_EQ(blob_top_->width(), 5); + if (blob_top_vec_.size() > 1) { + EXPECT_EQ(blob_top_mask_->num(), num); + EXPECT_EQ(blob_top_mask_->channels(), channels); + EXPECT_EQ(blob_top_mask_->height(), 4); + EXPECT_EQ(blob_top_mask_->width(), 5); + } + layer.Forward(blob_bottom_vec_, blob_top_vec_); + // Expected output: 2x 2 channels of: + // [35 32 26 27 27] + // [32 33 33 27 27] + // [31 34 34 27 27] + // [36 36 34 18 18] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_->cpu_data()[i + 0], 35); + EXPECT_EQ(blob_top_->cpu_data()[i + 1], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 2], 26); + EXPECT_EQ(blob_top_->cpu_data()[i + 3], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 4], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 5], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 6], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 7], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 8], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 9], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 10], 31); + EXPECT_EQ(blob_top_->cpu_data()[i + 11], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 12], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 13], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 14], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 15], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 16], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 17], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 18], 18); + EXPECT_EQ(blob_top_->cpu_data()[i + 19], 18); + } + if (blob_top_vec_.size() > 1) { + // [ 1 8 4 17 17] + // [ 8 21 21 17 17] + // [13 27 27 17 17] + // [32 32 27 35 35] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 0], 0); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 1], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 2], 3); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 3], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 4], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 5], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 6], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 7], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 8], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 9], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 10], 12); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 11], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 12], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 13], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 14], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 15], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 16], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 17], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 18], 34); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 19], 34); + } + } + } + // Test for rectangular pooling layer with kernel_w > kernel_h + void TestForwardRectWide() { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(2); + pooling_param->set_kernel_w(3); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + const int num = 2; + const int channels = 2; + blob_bottom_->Reshape(num, channels, 6, 6); + // Input: 2x 2 channels of: + // [35 1 6 26 19 24] + // [ 3 32 7 21 23 25] + // [31 9 2 22 27 20] + // [ 8 28 33 17 10 15] + // [30 5 34 12 14 16] + // [ 4 36 29 13 18 11] + // (this is generated by magic(6) in MATLAB) + for (int i = 0; i < 36 * num * channels; i += 36) { + blob_bottom_->mutable_cpu_data()[i + 0] = 35; + blob_bottom_->mutable_cpu_data()[i + 1] = 1; + blob_bottom_->mutable_cpu_data()[i + 2] = 6; + blob_bottom_->mutable_cpu_data()[i + 3] = 26; + blob_bottom_->mutable_cpu_data()[i + 4] = 19; + blob_bottom_->mutable_cpu_data()[i + 5] = 24; + blob_bottom_->mutable_cpu_data()[i + 6] = 3; + blob_bottom_->mutable_cpu_data()[i + 7] = 32; + blob_bottom_->mutable_cpu_data()[i + 8] = 7; + blob_bottom_->mutable_cpu_data()[i + 9] = 21; + blob_bottom_->mutable_cpu_data()[i + 10] = 23; + blob_bottom_->mutable_cpu_data()[i + 11] = 25; + blob_bottom_->mutable_cpu_data()[i + 12] = 31; + blob_bottom_->mutable_cpu_data()[i + 13] = 9; + blob_bottom_->mutable_cpu_data()[i + 14] = 2; + blob_bottom_->mutable_cpu_data()[i + 15] = 22; + blob_bottom_->mutable_cpu_data()[i + 16] = 27; + blob_bottom_->mutable_cpu_data()[i + 17] = 20; + blob_bottom_->mutable_cpu_data()[i + 18] = 8; + blob_bottom_->mutable_cpu_data()[i + 19] = 28; + blob_bottom_->mutable_cpu_data()[i + 20] = 33; + blob_bottom_->mutable_cpu_data()[i + 21] = 17; + blob_bottom_->mutable_cpu_data()[i + 22] = 10; + blob_bottom_->mutable_cpu_data()[i + 23] = 15; + blob_bottom_->mutable_cpu_data()[i + 24] = 30; + blob_bottom_->mutable_cpu_data()[i + 25] = 5; + blob_bottom_->mutable_cpu_data()[i + 26] = 34; + blob_bottom_->mutable_cpu_data()[i + 27] = 12; + blob_bottom_->mutable_cpu_data()[i + 28] = 14; + blob_bottom_->mutable_cpu_data()[i + 29] = 16; + blob_bottom_->mutable_cpu_data()[i + 30] = 4; + blob_bottom_->mutable_cpu_data()[i + 31] = 36; + blob_bottom_->mutable_cpu_data()[i + 32] = 29; + blob_bottom_->mutable_cpu_data()[i + 33] = 13; + blob_bottom_->mutable_cpu_data()[i + 34] = 18; + blob_bottom_->mutable_cpu_data()[i + 35] = 11; + } + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), num); + EXPECT_EQ(blob_top_->channels(), channels); + EXPECT_EQ(blob_top_->height(), 5); + EXPECT_EQ(blob_top_->width(), 4); + if (blob_top_vec_.size() > 1) { + EXPECT_EQ(blob_top_mask_->num(), num); + EXPECT_EQ(blob_top_mask_->channels(), channels); + EXPECT_EQ(blob_top_mask_->height(), 5); + EXPECT_EQ(blob_top_mask_->width(), 4); + } + layer.Forward(blob_bottom_vec_, blob_top_vec_); + // Expected output: 2x 2 channels of: + // [35 32 26 26] + // [32 32 27 27] + // [33 33 33 27] + // [34 34 34 17] + // [36 36 34 18] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_->cpu_data()[i + 0], 35); + EXPECT_EQ(blob_top_->cpu_data()[i + 1], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 2], 26); + EXPECT_EQ(blob_top_->cpu_data()[i + 3], 26); + EXPECT_EQ(blob_top_->cpu_data()[i + 4], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 5], 32); + EXPECT_EQ(blob_top_->cpu_data()[i + 6], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 7], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 8], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 9], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 10], 33); + EXPECT_EQ(blob_top_->cpu_data()[i + 11], 27); + EXPECT_EQ(blob_top_->cpu_data()[i + 12], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 13], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 14], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 15], 17); + EXPECT_EQ(blob_top_->cpu_data()[i + 16], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 17], 36); + EXPECT_EQ(blob_top_->cpu_data()[i + 18], 34); + EXPECT_EQ(blob_top_->cpu_data()[i + 19], 18); + } + if (blob_top_vec_.size() > 1) { + // [ 1 8 4 4] + // [ 8 8 17 17] + // [21 21 21 17] + // [27 27 27 22] + // [32 32 27 35] + for (int i = 0; i < 20 * num * channels; i += 20) { + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 0], 0); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 1], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 2], 3); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 3], 3); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 4], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 5], 7); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 6], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 7], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 8], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 9], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 10], 20); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 11], 16); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 12], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 13], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 14], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 15], 21); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 16], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 17], 31); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 18], 26); + EXPECT_EQ(blob_top_mask_->cpu_data()[i + 19], 34); + } + } + } +}; + +TYPED_TEST_CASE(CuDNNPoolingLayerTest, TestDtypes); + +TYPED_TEST(CuDNNPoolingLayerTest, TestSetupCuDNN) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 2); +} + +TYPED_TEST(CuDNNPoolingLayerTest, TestSetupPaddedCuDNN) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + pooling_param->set_pad(1); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), 4); + EXPECT_EQ(this->blob_top_->width(), 3); +} + +/* +TYPED_TEST(CuDNNPoolingLayerTest, PrintBackwardCuDNN) { + LayerParameter layer_param; + layer_param.set_kernelsize(3); + layer_param.set_stride(2); + layer_param.set_pool(LayerParameter_PoolMethod_MAX); + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + cout << "bottom data " << i << " " << this->blob_bottom_->cpu_data()[i] << endl; + } + for (int i = 0; i < this->blob_top_->count(); ++i) { + cout << "top data " << i << " " << this->blob_top_->cpu_data()[i] << endl; + } + + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = i; + } + layer.Backward(this->blob_top_vec_, true, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + cout << "bottom diff " << i << " " << this->blob_bottom_->cpu_diff()[i] << endl; + } +} +*/ + +TYPED_TEST(CuDNNPoolingLayerTest, TestForwardMaxCuDNN) { + this->TestForwardSquare(); + this->TestForwardRectHigh(); + this->TestForwardRectWide(); +} + +// Currently, cuDNN does not support a top mask, so we comment this and +// the corresponding backward test. +/* +TYPED_TEST(CuDNNPoolingLayerTest, TestForwardMaxTopMaskCuDNN) { + this->blob_top_vec_.push_back(this->blob_top_mask_); + this->TestForwardSquare(); + this->TestForwardRectHigh(); + this->TestForwardRectWide(); +} +*/ + +TYPED_TEST(CuDNNPoolingLayerTest, TestGradientMaxCuDNN) { + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + // currenty, cuDNN pooling does not support padding + pooling_param->set_pad(0); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + CuDNNPoolingLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + } +} + +TYPED_TEST(CuDNNPoolingLayerTest, TestForwardMaxPaddedCuDNN) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + pooling_param->set_pad(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + this->blob_bottom_->Reshape(1, 1, 3, 3); + // Input: + // [ 1 2 4 ] + // [ 2 3 2 ] + // [ 4 2 1 ] + this->blob_bottom_->mutable_cpu_data()[0] = 1; + this->blob_bottom_->mutable_cpu_data()[1] = 2; + this->blob_bottom_->mutable_cpu_data()[2] = 4; + this->blob_bottom_->mutable_cpu_data()[3] = 2; + this->blob_bottom_->mutable_cpu_data()[4] = 3; + this->blob_bottom_->mutable_cpu_data()[5] = 2; + this->blob_bottom_->mutable_cpu_data()[6] = 4; + this->blob_bottom_->mutable_cpu_data()[7] = 2; + this->blob_bottom_->mutable_cpu_data()[8] = 1; + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 1); + EXPECT_EQ(this->blob_top_->channels(), 1); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 3); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + TypeParam epsilon = 1e-8; + // Output: + // [ 1 4 4 ] + // [ 4 4 4 ] + // [ 4 4 1 ] + EXPECT_NEAR(this->blob_top_->cpu_data()[0], 1, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[1], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[2], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[3], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[4], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[5], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[6], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[7], 4, epsilon); + EXPECT_NEAR(this->blob_top_->cpu_data()[8], 1, epsilon); +} + +/* +TYPED_TEST(CuDNNPoolingLayerTest, TestGradientMaxTopMaskCuDNN) { + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); + this->blob_top_vec_.push_back(this->blob_top_mask_); + CuDNNPoolingLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + this->blob_top_vec_.pop_back(); + } + } +} +*/ + +TYPED_TEST(CuDNNPoolingLayerTest, TestForwardAveCuDNN) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(1); + // Currently, cuDNN pooling does not support padding, so we use + // a simplified version of this test. + pooling_param->set_pad(0); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + this->blob_bottom_->Reshape(1, 1, 3, 3); + FillerParameter filler_param; + filler_param.set_value(TypeParam(2)); + ConstantFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + CuDNNPoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 1); + EXPECT_EQ(this->blob_top_->channels(), 1); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + TypeParam epsilon = 1e-5; + EXPECT_NEAR(this->blob_top_->cpu_data()[0], 2.0, epsilon); +} + +TYPED_TEST(CuDNNPoolingLayerTest, TestGradientAveCuDNN) { + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + CuDNNPoolingLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + } +} + +TYPED_TEST(CuDNNPoolingLayerTest, TestGradientAvePaddedCuDNN) { + for (int kernel_h = 3; kernel_h <= 4; kernel_h++) { + for (int kernel_w = 3; kernel_w <= 4; kernel_w++) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_h(kernel_h); + pooling_param->set_kernel_w(kernel_w); + pooling_param->set_stride(2); + pooling_param->set_pad(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_AVE); + CuDNNPoolingLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + } +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_power_layer.cpp b/3rdparty/caffe/src/caffe/test/test_power_layer.cpp new file mode 100644 index 00000000..1aa587ac --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_power_layer.cpp @@ -0,0 +1,170 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/power_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class PowerLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + PowerLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~PowerLayerTest() { delete blob_bottom_; delete blob_top_; } + + void TestForward(Dtype power, Dtype scale, Dtype shift) { + LayerParameter layer_param; + layer_param.mutable_power_param()->set_power(power); + layer_param.mutable_power_param()->set_scale(scale); + layer_param.mutable_power_param()->set_shift(shift); + PowerLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + const Dtype min_precision = 1e-5; + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + Dtype expected_value = pow(shift + scale * bottom_data[i], power); + if (power == Dtype(0) || power == Dtype(1) || power == Dtype(2)) { + EXPECT_FALSE(isnan(top_data[i])); + } + if (isnan(expected_value)) { + EXPECT_TRUE(isnan(top_data[i])); + } else { + Dtype precision = std::max( + Dtype(std::abs(expected_value * Dtype(1e-4))), min_precision); + EXPECT_NEAR(expected_value, top_data[i], precision); + } + } + } + + void TestBackward(Dtype power, Dtype scale, Dtype shift) { + LayerParameter layer_param; + layer_param.mutable_power_param()->set_power(power); + layer_param.mutable_power_param()->set_scale(scale); + layer_param.mutable_power_param()->set_shift(shift); + PowerLayer layer(layer_param); + if (power != Dtype(0) && power != Dtype(1) && power != Dtype(2)) { + // Avoid NaNs by forcing (shift + scale * x) >= 0 + Dtype* bottom_data = this->blob_bottom_->mutable_cpu_data(); + Dtype min_value = -shift / scale; + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + if (bottom_data[i] < min_value) { + bottom_data[i] = min_value + (min_value - bottom_data[i]); + } + } + } + GradientChecker checker(1e-3, 1e-2, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(PowerLayerTest, TestDtypesAndDevices); + +TYPED_TEST(PowerLayerTest, TestPower) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 0.37; + Dtype scale = 0.83; + Dtype shift = -2.4; + this->TestForward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerGradient) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 0.37; + Dtype scale = 0.83; + Dtype shift = -2.4; + this->TestBackward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerGradientShiftZero) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 0.37; + Dtype scale = 0.83; + Dtype shift = 0.0; + this->TestBackward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerZero) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 0.0; + Dtype scale = 0.83; + Dtype shift = -2.4; + this->TestForward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerZeroGradient) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 0.0; + Dtype scale = 0.83; + Dtype shift = -2.4; + this->TestBackward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerOne) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 1.0; + Dtype scale = 0.83; + Dtype shift = -2.4; + this->TestForward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerOneGradient) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 1.0; + Dtype scale = 0.83; + Dtype shift = -2.4; + this->TestBackward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerTwo) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 2.0; + Dtype scale = 0.34; + Dtype shift = -2.4; + this->TestForward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerTwoGradient) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 2.0; + Dtype scale = 0.83; + Dtype shift = -2.4; + this->TestBackward(power, scale, shift); +} + +TYPED_TEST(PowerLayerTest, TestPowerTwoScaleHalfGradient) { + typedef typename TypeParam::Dtype Dtype; + Dtype power = 2.0; + Dtype scale = 0.5; + Dtype shift = -2.4; + this->TestBackward(power, scale, shift); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_protobuf.cpp b/3rdparty/caffe/src/caffe/test/test_protobuf.cpp new file mode 100644 index 00000000..01de461a --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_protobuf.cpp @@ -0,0 +1,29 @@ +// This is simply a script that tries serializing protocol buffer in text +// format. Nothing special here and no actual code is being tested. +#include + +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/proto/caffe.pb.h" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +class ProtoTest : public ::testing::Test {}; + +TEST_F(ProtoTest, TestSerialization) { + LayerParameter param; + param.set_name("test"); + param.set_type("Test"); + std::cout << "Printing in binary format." << std::endl; + std::cout << param.SerializeAsString() << std::endl; + std::cout << "Printing in text format." << std::endl; + std::string str; + google::protobuf::TextFormat::PrintToString(param, &str); + std::cout << str << std::endl; + EXPECT_TRUE(true); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_random_number_generator.cpp b/3rdparty/caffe/src/caffe/test/test_random_number_generator.cpp new file mode 100644 index 00000000..833b0047 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_random_number_generator.cpp @@ -0,0 +1,520 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/syncedmem.hpp" +#include "caffe/util/math_functions.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class RandomNumberGeneratorTest : public ::testing::Test { + protected: + RandomNumberGeneratorTest() + : mean_bound_multiplier_(3.8), // ~99.99% confidence for test failure. + sample_size_(10000), + seed_(1701), + data_(new SyncedMemory(sample_size_ * sizeof(Dtype))), + data_2_(new SyncedMemory(sample_size_ * sizeof(Dtype))), + int_data_(new SyncedMemory(sample_size_ * sizeof(int))), + int_data_2_(new SyncedMemory(sample_size_ * sizeof(int))) {} + + virtual void SetUp() { + Caffe::set_random_seed(this->seed_); + } + + Dtype sample_mean(const Dtype* const seqs, const int sample_size) { + Dtype sum = 0; + for (int i = 0; i < sample_size; ++i) { + sum += seqs[i]; + } + return sum / sample_size; + } + + Dtype sample_mean(const Dtype* const seqs) { + return sample_mean(seqs, sample_size_); + } + + Dtype sample_mean(const int* const seqs, const int sample_size) { + Dtype sum = 0; + for (int i = 0; i < sample_size; ++i) { + sum += Dtype(seqs[i]); + } + return sum / sample_size; + } + + Dtype sample_mean(const int* const seqs) { + return sample_mean(seqs, sample_size_); + } + + Dtype mean_bound(const Dtype std, const int sample_size) { + return mean_bound_multiplier_ * std / sqrt(static_cast(sample_size)); + } + + Dtype mean_bound(const Dtype std) { + return mean_bound(std, sample_size_); + } + + void RngGaussianFill(const Dtype mu, const Dtype sigma, void* cpu_data) { + Dtype* rng_data = static_cast(cpu_data); + caffe_rng_gaussian(sample_size_, mu, sigma, rng_data); + } + + void RngGaussianChecks(const Dtype mu, const Dtype sigma, + const void* cpu_data, const Dtype sparse_p = 0) { + const Dtype* rng_data = static_cast(cpu_data); + const Dtype true_mean = mu; + const Dtype true_std = sigma; + // Check that sample mean roughly matches true mean. + const Dtype bound = this->mean_bound(true_std); + const Dtype sample_mean = this->sample_mean( + static_cast(cpu_data)); + EXPECT_NEAR(sample_mean, true_mean, bound); + // Check that roughly half the samples are above the true mean. + int num_above_mean = 0; + int num_below_mean = 0; + int num_mean = 0; + int num_nan = 0; + for (int i = 0; i < sample_size_; ++i) { + if (rng_data[i] > true_mean) { + ++num_above_mean; + } else if (rng_data[i] < true_mean) { + ++num_below_mean; + } else if (rng_data[i] == true_mean) { + ++num_mean; + } else { + ++num_nan; + } + } + EXPECT_EQ(0, num_nan); + if (sparse_p == Dtype(0)) { + EXPECT_EQ(0, num_mean); + } + const Dtype sample_p_above_mean = + static_cast(num_above_mean) / sample_size_; + const Dtype bernoulli_p = (1 - sparse_p) * 0.5; + const Dtype bernoulli_std = sqrt(bernoulli_p * (1 - bernoulli_p)); + const Dtype bernoulli_bound = this->mean_bound(bernoulli_std); + EXPECT_NEAR(bernoulli_p, sample_p_above_mean, bernoulli_bound); + } + + void RngUniformFill(const Dtype lower, const Dtype upper, void* cpu_data) { + CHECK_GE(upper, lower); + Dtype* rng_data = static_cast(cpu_data); + caffe_rng_uniform(sample_size_, lower, upper, rng_data); + } + + void RngUniformChecks(const Dtype lower, const Dtype upper, + const void* cpu_data, const Dtype sparse_p = 0) { + const Dtype* rng_data = static_cast(cpu_data); + const Dtype true_mean = (lower + upper) / 2; + const Dtype true_std = (upper - lower) / sqrt(12); + // Check that sample mean roughly matches true mean. + const Dtype bound = this->mean_bound(true_std); + const Dtype sample_mean = this->sample_mean(rng_data); + EXPECT_NEAR(sample_mean, true_mean, bound); + // Check that roughly half the samples are above the true mean, and none are + // above upper or below lower. + int num_above_mean = 0; + int num_below_mean = 0; + int num_mean = 0; + int num_nan = 0; + int num_above_upper = 0; + int num_below_lower = 0; + for (int i = 0; i < sample_size_; ++i) { + if (rng_data[i] > true_mean) { + ++num_above_mean; + } else if (rng_data[i] < true_mean) { + ++num_below_mean; + } else if (rng_data[i] == true_mean) { + ++num_mean; + } else { + ++num_nan; + } + if (rng_data[i] > upper) { + ++num_above_upper; + } else if (rng_data[i] < lower) { + ++num_below_lower; + } + } + EXPECT_EQ(0, num_nan); + EXPECT_EQ(0, num_above_upper); + EXPECT_EQ(0, num_below_lower); + if (sparse_p == Dtype(0)) { + EXPECT_EQ(0, num_mean); + } + const Dtype sample_p_above_mean = + static_cast(num_above_mean) / sample_size_; + const Dtype bernoulli_p = (1 - sparse_p) * 0.5; + const Dtype bernoulli_std = sqrt(bernoulli_p * (1 - bernoulli_p)); + const Dtype bernoulli_bound = this->mean_bound(bernoulli_std); + EXPECT_NEAR(bernoulli_p, sample_p_above_mean, bernoulli_bound); + } + + void RngBernoulliFill(const Dtype p, void* cpu_data) { + int* rng_data = static_cast(cpu_data); + caffe_rng_bernoulli(sample_size_, p, rng_data); + } + + void RngBernoulliChecks(const Dtype p, const void* cpu_data) { + const int* rng_data = static_cast(cpu_data); + const Dtype true_mean = p; + const Dtype true_std = sqrt(p * (1 - p)); + const Dtype bound = this->mean_bound(true_std); + const Dtype sample_mean = this->sample_mean(rng_data); + EXPECT_NEAR(sample_mean, true_mean, bound); + } + +#ifndef CPU_ONLY + + void RngGaussianFillGPU(const Dtype mu, const Dtype sigma, void* gpu_data) { + Dtype* rng_data = static_cast(gpu_data); + caffe_gpu_rng_gaussian(sample_size_, mu, sigma, rng_data); + } + + void RngUniformFillGPU(const Dtype lower, const Dtype upper, void* gpu_data) { + CHECK_GE(upper, lower); + Dtype* rng_data = static_cast(gpu_data); + caffe_gpu_rng_uniform(sample_size_, lower, upper, rng_data); + } + + // Fills with uniform integers in [0, UINT_MAX] using 2 argument form of + // caffe_gpu_rng_uniform. + void RngUniformIntFillGPU(void* gpu_data) { + unsigned int* rng_data = static_cast(gpu_data); + caffe_gpu_rng_uniform(sample_size_, rng_data); + } + +#endif + + int num_above_mean; + int num_below_mean; + + Dtype mean_bound_multiplier_; + + size_t sample_size_; + uint32_t seed_; + + shared_ptr data_; + shared_ptr data_2_; + shared_ptr int_data_; + shared_ptr int_data_2_; +}; + +TYPED_TEST_CASE(RandomNumberGeneratorTest, TestDtypes); + +TYPED_TEST(RandomNumberGeneratorTest, TestRngGaussian) { + const TypeParam mu = 0; + const TypeParam sigma = 1; + void* gaussian_data = this->data_->mutable_cpu_data(); + this->RngGaussianFill(mu, sigma, gaussian_data); + this->RngGaussianChecks(mu, sigma, gaussian_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngGaussian2) { + const TypeParam mu = -2; + const TypeParam sigma = 3; + void* gaussian_data = this->data_->mutable_cpu_data(); + this->RngGaussianFill(mu, sigma, gaussian_data); + this->RngGaussianChecks(mu, sigma, gaussian_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniform) { + const TypeParam lower = 0; + const TypeParam upper = 1; + void* uniform_data = this->data_->mutable_cpu_data(); + this->RngUniformFill(lower, upper, uniform_data); + this->RngUniformChecks(lower, upper, uniform_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniform2) { + const TypeParam lower = -7.3; + const TypeParam upper = -2.3; + void* uniform_data = this->data_->mutable_cpu_data(); + this->RngUniformFill(lower, upper, uniform_data); + this->RngUniformChecks(lower, upper, uniform_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngBernoulli) { + const TypeParam p = 0.3; + void* bernoulli_data = this->int_data_->mutable_cpu_data(); + this->RngBernoulliFill(p, bernoulli_data); + this->RngBernoulliChecks(p, bernoulli_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngBernoulli2) { + const TypeParam p = 0.9; + void* bernoulli_data = this->int_data_->mutable_cpu_data(); + this->RngBernoulliFill(p, bernoulli_data); + this->RngBernoulliChecks(p, bernoulli_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngGaussianTimesGaussian) { + const TypeParam mu = 0; + const TypeParam sigma = 1; + + // Sample from 0 mean Gaussian. + TypeParam* gaussian_data_1 = + static_cast(this->data_->mutable_cpu_data()); + this->RngGaussianFill(mu, sigma, gaussian_data_1); + + // Sample from 0 mean Gaussian again. + TypeParam* gaussian_data_2 = + static_cast(this->data_2_->mutable_cpu_data()); + this->RngGaussianFill(mu, sigma, gaussian_data_2); + + // Multiply Gaussians. + for (int i = 0; i < this->sample_size_; ++i) { + gaussian_data_1[i] *= gaussian_data_2[i]; + } + + // Check that result has mean 0. + TypeParam mu_product = pow(mu, 2); + TypeParam sigma_product = sqrt(pow(sigma, 2) / 2); + this->RngGaussianChecks(mu_product, sigma_product, gaussian_data_1); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniformTimesUniform) { + // Sample from Uniform on [-2, 2]. + const TypeParam lower_1 = -2; + const TypeParam upper_1 = -lower_1; + TypeParam* uniform_data_1 = + static_cast(this->data_->mutable_cpu_data()); + this->RngUniformFill(lower_1, upper_1, uniform_data_1); + + // Sample from Uniform on [-3, 3]. + const TypeParam lower_2 = -3; + const TypeParam upper_2 = -lower_2; + TypeParam* uniform_data_2 = + static_cast(this->data_2_->mutable_cpu_data()); + this->RngUniformFill(lower_2, upper_2, uniform_data_2); + + // Multiply Uniforms. + for (int i = 0; i < this->sample_size_; ++i) { + uniform_data_1[i] *= uniform_data_2[i]; + } + + // Check that result does not violate checked properties of Uniform on [-6, 6] + // (though it is not actually uniformly distributed). + const TypeParam lower_prod = lower_1 * upper_2; + const TypeParam upper_prod = -lower_prod; + this->RngUniformChecks(lower_prod, upper_prod, uniform_data_1); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngGaussianTimesBernoulli) { + // Sample from 0 mean Gaussian. + const TypeParam mu = 0; + const TypeParam sigma = 1; + TypeParam* gaussian_data = + static_cast(this->data_->mutable_cpu_data()); + this->RngGaussianFill(mu, sigma, gaussian_data); + + // Sample from Bernoulli with p = 0.3. + const TypeParam bernoulli_p = 0.3; + int* bernoulli_data = + static_cast(this->int_data_->mutable_cpu_data()); + this->RngBernoulliFill(bernoulli_p, bernoulli_data); + + // Multiply Gaussian by Bernoulli. + for (int i = 0; i < this->sample_size_; ++i) { + gaussian_data[i] *= bernoulli_data[i]; + } + + // Check that result does not violate checked properties of sparsified + // Gaussian (though it is not actually a Gaussian). + this->RngGaussianChecks(mu, sigma, gaussian_data, 1 - bernoulli_p); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniformTimesBernoulli) { + // Sample from Uniform on [-1, 1]. + const TypeParam lower = -1; + const TypeParam upper = 1; + TypeParam* uniform_data = + static_cast(this->data_->mutable_cpu_data()); + this->RngUniformFill(lower, upper, uniform_data); + + // Sample from Bernoulli with p = 0.3. + const TypeParam bernoulli_p = 0.3; + int* bernoulli_data = + static_cast(this->int_data_->mutable_cpu_data()); + this->RngBernoulliFill(bernoulli_p, bernoulli_data); + + // Multiply Uniform by Bernoulli. + for (int i = 0; i < this->sample_size_; ++i) { + uniform_data[i] *= bernoulli_data[i]; + } + + // Check that result does not violate checked properties of sparsified + // Uniform on [-1, 1] (though it is not actually uniformly distributed). + this->RngUniformChecks(lower, upper, uniform_data, 1 - bernoulli_p); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngBernoulliTimesBernoulli) { + // Sample from Bernoulli with p = 0.5. + const TypeParam p_a = 0.5; + int* bernoulli_data_a = + static_cast(this->int_data_->mutable_cpu_data()); + this->RngBernoulliFill(p_a, bernoulli_data_a); + + // Sample from Bernoulli with p = 0.3. + const TypeParam p_b = 0.3; + int* bernoulli_data_b = + static_cast(this->int_data_2_->mutable_cpu_data()); + this->RngBernoulliFill(p_b, bernoulli_data_b); + + // Multiply Bernoullis. + for (int i = 0; i < this->sample_size_; ++i) { + bernoulli_data_a[i] *= bernoulli_data_b[i]; + } + int num_ones = 0; + for (int i = 0; i < this->sample_size_; ++i) { + if (bernoulli_data_a[i] != TypeParam(0)) { + EXPECT_EQ(TypeParam(1), bernoulli_data_a[i]); + ++num_ones; + } + } + + // Check that resulting product has roughly p_a * p_b ones. + const TypeParam sample_p = this->sample_mean(bernoulli_data_a); + const TypeParam true_mean = p_a * p_b; + const TypeParam true_std = sqrt(true_mean * (1 - true_mean)); + const TypeParam bound = this->mean_bound(true_std); + EXPECT_NEAR(true_mean, sample_p, bound); +} + +#ifndef CPU_ONLY + +TYPED_TEST(RandomNumberGeneratorTest, TestRngGaussianGPU) { + const TypeParam mu = 0; + const TypeParam sigma = 1; + void* gaussian_gpu_data = this->data_->mutable_gpu_data(); + this->RngGaussianFillGPU(mu, sigma, gaussian_gpu_data); + const void* gaussian_data = this->data_->cpu_data(); + this->RngGaussianChecks(mu, sigma, gaussian_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngGaussian2GPU) { + const TypeParam mu = -2; + const TypeParam sigma = 3; + void* gaussian_gpu_data = this->data_->mutable_gpu_data(); + this->RngGaussianFillGPU(mu, sigma, gaussian_gpu_data); + const void* gaussian_data = this->data_->cpu_data(); + this->RngGaussianChecks(mu, sigma, gaussian_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniformGPU) { + const TypeParam lower = 0; + const TypeParam upper = 1; + void* uniform_gpu_data = this->data_->mutable_gpu_data(); + this->RngUniformFillGPU(lower, upper, uniform_gpu_data); + const void* uniform_data = this->data_->cpu_data(); + this->RngUniformChecks(lower, upper, uniform_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniform2GPU) { + const TypeParam lower = -7.3; + const TypeParam upper = -2.3; + void* uniform_gpu_data = this->data_->mutable_gpu_data(); + this->RngUniformFillGPU(lower, upper, uniform_gpu_data); + const void* uniform_data = this->data_->cpu_data(); + this->RngUniformChecks(lower, upper, uniform_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniformIntGPU) { + unsigned int* uniform_uint_gpu_data = + static_cast(this->int_data_->mutable_gpu_data()); + this->RngUniformIntFillGPU(uniform_uint_gpu_data); + const unsigned int* uniform_uint_data = + static_cast(this->int_data_->cpu_data()); + TypeParam* uniform_data = + static_cast(this->data_->mutable_cpu_data()); + for (int i = 0; i < this->sample_size_; ++i) { + uniform_data[i] = static_cast(uniform_uint_data[i]); + } + const TypeParam lower = 0; + const TypeParam upper = UINT_MAX; + this->RngUniformChecks(lower, upper, uniform_data); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngGaussianTimesGaussianGPU) { + const TypeParam mu = 0; + const TypeParam sigma = 1; + + // Sample from 0 mean Gaussian. + TypeParam* gaussian_gpu_data_1 = + static_cast(this->data_->mutable_gpu_data()); + this->RngGaussianFillGPU(mu, sigma, gaussian_gpu_data_1); + + // Sample from 0 mean Gaussian again. + TypeParam* gaussian_gpu_data_2 = + static_cast(this->data_2_->mutable_gpu_data()); + this->RngGaussianFillGPU(mu, sigma, gaussian_gpu_data_2); + + // Multiply Gaussians. + TypeParam* gaussian_data_1 = + static_cast(this->data_->mutable_cpu_data()); + const TypeParam* gaussian_data_2 = + static_cast(this->data_2_->cpu_data()); + for (int i = 0; i < this->sample_size_; ++i) { + gaussian_data_1[i] *= gaussian_data_2[i]; + } + + // Check that result does not violate checked properties of Gaussian + // (though it is not actually a Gaussian). + TypeParam mu_product = pow(mu, 2); + TypeParam sigma_product = sqrt(pow(sigma, 2) / 2); + this->RngGaussianChecks(mu_product, sigma_product, gaussian_data_1); +} + + +TYPED_TEST(RandomNumberGeneratorTest, TestRngUniformTimesUniformGPU) { + // Sample from Uniform on [-2, 2]. + const TypeParam lower_1 = -2; + const TypeParam upper_1 = -lower_1; + TypeParam* uniform_gpu_data_1 = + static_cast(this->data_->mutable_gpu_data()); + this->RngUniformFillGPU(lower_1, upper_1, uniform_gpu_data_1); + + // Sample from Uniform on [-3, 3]. + const TypeParam lower_2 = -3; + const TypeParam upper_2 = -lower_2; + TypeParam* uniform_gpu_data_2 = + static_cast(this->data_2_->mutable_gpu_data()); + this->RngUniformFillGPU(lower_2, upper_2, uniform_gpu_data_2); + + // Multiply Uniforms. + TypeParam* uniform_data_1 = + static_cast(this->data_->mutable_cpu_data()); + const TypeParam* uniform_data_2 = + static_cast(this->data_2_->cpu_data()); + for (int i = 0; i < this->sample_size_; ++i) { + uniform_data_1[i] *= uniform_data_2[i]; + } + + // Check that result does not violate properties of Uniform on [-7, -3]. + const TypeParam lower_prod = lower_1 * upper_2; + const TypeParam upper_prod = -lower_prod; + this->RngUniformChecks(lower_prod, upper_prod, uniform_data_1); +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_reduction_layer.cpp b/3rdparty/caffe/src/caffe/test/test_reduction_layer.cpp new file mode 100644 index 00000000..6ed7cda6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_reduction_layer.cpp @@ -0,0 +1,296 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/reduction_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class ReductionLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ReductionLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + // fill the values + Caffe::set_random_seed(1701); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~ReductionLayerTest() { + delete blob_bottom_; + delete blob_top_; + } + + void TestForward(ReductionParameter_ReductionOp op, + float coeff = 1, int axis = 0) { + LayerParameter layer_param; + ReductionParameter* reduction_param = layer_param.mutable_reduction_param(); + reduction_param->set_operation(op); + if (coeff != 1.0) { reduction_param->set_coeff(coeff); } + if (axis != 0) { reduction_param->set_axis(axis); } + shared_ptr > layer( + new ReductionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const int num = this->blob_bottom_->count(0, axis); + const int dim = this->blob_bottom_->count(axis); + for (int n = 0; n < num; ++n) { + Dtype expected_result = 0; + for (int d = 0; d < dim; ++d) { + switch (op) { + case ReductionParameter_ReductionOp_SUM: + expected_result += *in_data; + break; + case ReductionParameter_ReductionOp_MEAN: + expected_result += *in_data / dim; + break; + case ReductionParameter_ReductionOp_ASUM: + expected_result += fabs(*in_data); + break; + case ReductionParameter_ReductionOp_SUMSQ: + expected_result += (*in_data) * (*in_data); + break; + default: + LOG(FATAL) << "Unknown reduction op: " + << ReductionParameter_ReductionOp_Name(op); + } + ++in_data; + } + expected_result *= coeff; + const Dtype computed_result = this->blob_top_->cpu_data()[n]; + EXPECT_FLOAT_EQ(expected_result, computed_result) + << "Incorrect result computed with op " + << ReductionParameter_ReductionOp_Name(op) << ", coeff " << coeff; + } + } + + void TestGradient(ReductionParameter_ReductionOp op, + float coeff = 1, int axis = 0) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ReductionParameter* reduction_param = layer_param.mutable_reduction_param(); + reduction_param->set_operation(op); + reduction_param->set_coeff(coeff); + reduction_param->set_axis(axis); + ReductionLayer layer(layer_param); + GradientChecker checker(1e-2, 2e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ReductionLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ReductionLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + shared_ptr > layer( + new ReductionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 0); +} + +TYPED_TEST(ReductionLayerTest, TestSetUpWithAxis1) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_reduction_param()->set_axis(1); + shared_ptr > layer( + new ReductionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 1); + EXPECT_EQ(this->blob_top_->shape(0), 2); +} + +TYPED_TEST(ReductionLayerTest, TestSetUpWithAxis2) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_reduction_param()->set_axis(2); + shared_ptr > layer( + new ReductionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), 2); + EXPECT_EQ(this->blob_top_->shape(0), 2); + EXPECT_EQ(this->blob_top_->shape(1), 3); +} + +TYPED_TEST(ReductionLayerTest, TestSum) { + const ReductionParameter_ReductionOp kOp = ReductionParameter_ReductionOp_SUM; + this->TestForward(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestSumCoeff) { + const ReductionParameter_ReductionOp kOp = ReductionParameter_ReductionOp_SUM; + const float kCoeff = 2.3; + this->TestForward(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestSumCoeffAxis1) { + const ReductionParameter_ReductionOp kOp = ReductionParameter_ReductionOp_SUM; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestForward(kOp, kCoeff, kAxis); +} + +TYPED_TEST(ReductionLayerTest, TestSumGradient) { + const ReductionParameter_ReductionOp kOp = ReductionParameter_ReductionOp_SUM; + this->TestGradient(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestSumCoeffGradient) { + const ReductionParameter_ReductionOp kOp = ReductionParameter_ReductionOp_SUM; + const float kCoeff = 2.3; + this->TestGradient(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestSumCoeffAxis1Gradient) { + const ReductionParameter_ReductionOp kOp = ReductionParameter_ReductionOp_SUM; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestGradient(kOp, kCoeff, kAxis); +} + +TYPED_TEST(ReductionLayerTest, TestMean) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_MEAN; + this->TestForward(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestMeanCoeff) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_MEAN; + const float kCoeff = 2.3; + this->TestForward(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestMeanCoeffAxis1) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_MEAN; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestForward(kOp, kCoeff, kAxis); +} + +TYPED_TEST(ReductionLayerTest, TestMeanGradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_MEAN; + this->TestGradient(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestMeanCoeffGradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_MEAN; + const float kCoeff = 2.3; + this->TestGradient(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestMeanCoeffGradientAxis1) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_MEAN; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestGradient(kOp, kCoeff, kAxis); +} + +TYPED_TEST(ReductionLayerTest, TestAbsSum) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_ASUM; + this->TestForward(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestAbsSumCoeff) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_ASUM; + const float kCoeff = 2.3; + this->TestForward(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestAbsSumCoeffAxis1) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_ASUM; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestForward(kOp, kCoeff, kAxis); +} + +TYPED_TEST(ReductionLayerTest, TestAbsSumGradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_ASUM; + this->TestGradient(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestAbsSumCoeffGradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_ASUM; + const float kCoeff = 2.3; + this->TestGradient(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestAbsSumCoeffAxis1Gradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_ASUM; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestGradient(kOp, kCoeff, kAxis); +} + +TYPED_TEST(ReductionLayerTest, TestSumOfSquares) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_SUMSQ; + this->TestForward(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestSumOfSquaresCoeff) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_SUMSQ; + const float kCoeff = 2.3; + this->TestForward(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestSumOfSquaresCoeffAxis1) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_SUMSQ; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestForward(kOp, kCoeff, kAxis); +} + +TYPED_TEST(ReductionLayerTest, TestSumOfSquaresGradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_SUMSQ; + this->TestGradient(kOp); +} + +TYPED_TEST(ReductionLayerTest, TestSumOfSquaresCoeffGradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_SUMSQ; + const float kCoeff = 2.3; + this->TestGradient(kOp, kCoeff); +} + +TYPED_TEST(ReductionLayerTest, TestSumOfSquaresCoeffAxis1Gradient) { + const ReductionParameter_ReductionOp kOp = + ReductionParameter_ReductionOp_SUMSQ; + const float kCoeff = 2.3; + const int kAxis = 1; + this->TestGradient(kOp, kCoeff, kAxis); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_reshape_layer.cpp b/3rdparty/caffe/src/caffe/test/test_reshape_layer.cpp new file mode 100644 index 00000000..4f261386 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_reshape_layer.cpp @@ -0,0 +1,279 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/reshape_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class ReshapeLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + ReshapeLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 5)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~ReshapeLayerTest() { delete blob_bottom_; delete blob_top_; } + + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ReshapeLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ReshapeLayerTest, TestFlattenOutputSizes) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(0); + blob_shape->add_dim(-1); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3 * 6 * 5); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); +} + +TYPED_TEST(ReshapeLayerTest, TestFlattenValues) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(0); + blob_shape->add_dim(-1); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int c = 0; c < 3 * 6 * 5; ++c) { + EXPECT_EQ(this->blob_top_->data_at(0, c, 0, 0), + this->blob_bottom_->data_at(0, c / (6 * 5), (c / 5) % 6, c % 5)); + EXPECT_EQ(this->blob_top_->data_at(1, c, 0, 0), + this->blob_bottom_->data_at(1, c / (6 * 5), (c / 5) % 6, c % 5)); + } +} + +// Test whether setting output dimensions to 0 either explicitly or implicitly +// copies the respective dimension of the input layer. +TYPED_TEST(ReshapeLayerTest, TestCopyDimensions) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(0); + blob_shape->add_dim(0); + blob_shape->add_dim(0); + blob_shape->add_dim(0); + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 6); + EXPECT_EQ(this->blob_top_->width(), 5); +} + +// When a dimension is set to -1, we should infer its value from the other +// dimensions (including those that get copied from below). +TYPED_TEST(ReshapeLayerTest, TestInferenceOfUnspecified) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(0); + blob_shape->add_dim(3); + blob_shape->add_dim(10); + blob_shape->add_dim(-1); + + // Count is 180, thus height should be 180 / (2*3*10) = 3. + + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 10); + EXPECT_EQ(this->blob_top_->width(), 3); +} + +TYPED_TEST(ReshapeLayerTest, TestInferenceOfUnspecifiedWithStartAxis) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_reshape_param()->set_axis(1); + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(3); + blob_shape->add_dim(10); + blob_shape->add_dim(-1); + + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + ASSERT_EQ(this->blob_top_->num_axes(), 4); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 10); + EXPECT_EQ(this->blob_top_->width(), 3); +} + +TYPED_TEST(ReshapeLayerTest, TestInsertSingletonAxesStart) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_reshape_param()->set_axis(0); + layer_param.mutable_reshape_param()->set_num_axes(0); + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + ASSERT_EQ(this->blob_top_->num_axes(), 7); + EXPECT_EQ(this->blob_top_->shape(0), 1); + EXPECT_EQ(this->blob_top_->shape(1), 1); + EXPECT_EQ(this->blob_top_->shape(2), 1); + EXPECT_EQ(this->blob_top_->shape(3), 2); + EXPECT_EQ(this->blob_top_->shape(4), 3); + EXPECT_EQ(this->blob_top_->shape(5), 6); + EXPECT_EQ(this->blob_top_->shape(6), 5); +} + +TYPED_TEST(ReshapeLayerTest, TestInsertSingletonAxesMiddle) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_reshape_param()->set_axis(2); + layer_param.mutable_reshape_param()->set_num_axes(0); + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + ASSERT_EQ(this->blob_top_->num_axes(), 7); + EXPECT_EQ(this->blob_top_->shape(0), 2); + EXPECT_EQ(this->blob_top_->shape(1), 3); + EXPECT_EQ(this->blob_top_->shape(2), 1); + EXPECT_EQ(this->blob_top_->shape(3), 1); + EXPECT_EQ(this->blob_top_->shape(4), 1); + EXPECT_EQ(this->blob_top_->shape(5), 6); + EXPECT_EQ(this->blob_top_->shape(6), 5); +} + +TYPED_TEST(ReshapeLayerTest, TestInsertSingletonAxesEnd) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_reshape_param()->set_axis(-1); + layer_param.mutable_reshape_param()->set_num_axes(0); + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + blob_shape->add_dim(1); + + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + ASSERT_EQ(this->blob_top_->num_axes(), 7); + EXPECT_EQ(this->blob_top_->shape(0), 2); + EXPECT_EQ(this->blob_top_->shape(1), 3); + EXPECT_EQ(this->blob_top_->shape(2), 6); + EXPECT_EQ(this->blob_top_->shape(3), 5); + EXPECT_EQ(this->blob_top_->shape(4), 1); + EXPECT_EQ(this->blob_top_->shape(5), 1); + EXPECT_EQ(this->blob_top_->shape(6), 1); +} + +TYPED_TEST(ReshapeLayerTest, TestFlattenMiddle) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_reshape_param()->set_axis(1); + layer_param.mutable_reshape_param()->set_num_axes(2); + BlobShape* blob_shape = layer_param.mutable_reshape_param()->mutable_shape(); + blob_shape->add_dim(-1); + + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + + ASSERT_EQ(this->blob_top_->num_axes(), 3); + EXPECT_EQ(this->blob_top_->shape(0), 2); + EXPECT_EQ(this->blob_top_->shape(1), 3 * 6); + EXPECT_EQ(this->blob_top_->shape(2), 5); +} + +TYPED_TEST(ReshapeLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BlobShape* shape = layer_param.mutable_reshape_param()->mutable_shape(); + shape->add_dim(6); + shape->add_dim(2); + shape->add_dim(3); + shape->add_dim(5); + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_EQ(this->blob_top_->cpu_data()[i], + this->blob_bottom_->cpu_data()[i]); + } +} + +TYPED_TEST(ReshapeLayerTest, TestForwardAfterReshape) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BlobShape* shape = layer_param.mutable_reshape_param()->mutable_shape(); + shape->add_dim(6); + shape->add_dim(2); + shape->add_dim(3); + shape->add_dim(5); + ReshapeLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // We know the above produced the correct result from TestForward. + // Reshape the bottom and call layer.Reshape, then try again. + vector new_bottom_shape(1, 2 * 3 * 6 * 5); + this->blob_bottom_->Reshape(new_bottom_shape); + layer.Reshape(this->blob_bottom_vec_, this->blob_top_vec_); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_EQ(this->blob_top_->cpu_data()[i], + this->blob_bottom_->cpu_data()[i]); + } +} + +TYPED_TEST(ReshapeLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BlobShape* shape = layer_param.mutable_reshape_param()->mutable_shape(); + shape->add_dim(6); + shape->add_dim(2); + shape->add_dim(3); + shape->add_dim(5); + ReshapeLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_rnn_layer.cpp b/3rdparty/caffe/src/caffe/test/test_rnn_layer.cpp new file mode 100644 index 00000000..dd8952d6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_rnn_layer.cpp @@ -0,0 +1,217 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/rnn_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class RNNLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + RNNLayerTest() : num_output_(7) { + blob_bottom_vec_.push_back(&blob_bottom_); + blob_bottom_vec_.push_back(&blob_bottom_cont_); + blob_top_vec_.push_back(&blob_top_); + + ReshapeBlobs(1, 3); + + layer_param_.mutable_recurrent_param()->set_num_output(num_output_); + FillerParameter* weight_filler = + layer_param_.mutable_recurrent_param()->mutable_weight_filler(); + weight_filler->set_type("gaussian"); + weight_filler->set_std(0.2); + FillerParameter* bias_filler = + layer_param_.mutable_recurrent_param()->mutable_bias_filler(); + bias_filler->set_type("gaussian"); + bias_filler->set_std(0.1); + + layer_param_.set_phase(TEST); + } + + void ReshapeBlobs(int num_timesteps, int num_instances) { + blob_bottom_.Reshape(num_timesteps, num_instances, 3, 2); + blob_bottom_static_.Reshape(num_instances, 2, 3, 4); + vector shape(2); + shape[0] = num_timesteps; + shape[1] = num_instances; + blob_bottom_cont_.Reshape(shape); + + FillerParameter filler_param; + filler_param.set_min(-1); + filler_param.set_max(1); + UniformFiller filler(filler_param); + filler.Fill(&blob_bottom_); + } + + int num_output_; + LayerParameter layer_param_; + Blob blob_bottom_; + Blob blob_bottom_cont_; + Blob blob_bottom_static_; + Blob blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(RNNLayerTest, TestDtypesAndDevices); + +TYPED_TEST(RNNLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + RNNLayer layer(this->layer_param_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + vector expected_top_shape = this->blob_bottom_.shape(); + expected_top_shape.resize(3); + expected_top_shape[2] = this->num_output_; + EXPECT_TRUE(this->blob_top_.shape() == expected_top_shape); +} + +TYPED_TEST(RNNLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + const int kNumTimesteps = 3; + const int num = this->blob_bottom_.shape(1); + this->ReshapeBlobs(kNumTimesteps, num); + + // Fill the cont blob with <0, 1, 1, ..., 1>, + // indicating a sequence that begins at the first timestep + // then continues for the rest of the sequence. + for (int t = 0; t < kNumTimesteps; ++t) { + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[t * num + n] = t > 0; + } + } + + // Process the full sequence in a single batch. + FillerParameter filler_param; + filler_param.set_mean(0); + filler_param.set_std(1); + GaussianFiller sequence_filler(filler_param); + sequence_filler.Fill(&this->blob_bottom_); + shared_ptr > layer(new RNNLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + LOG(INFO) << "Calling forward for full sequence RNN"; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Copy the inputs and outputs to reuse/check them later. + Blob bottom_copy(this->blob_bottom_.shape()); + bottom_copy.CopyFrom(this->blob_bottom_); + Blob top_copy(this->blob_top_.shape()); + top_copy.CopyFrom(this->blob_top_); + + // Process the batch one timestep at a time; + // check that we get the same result. + this->ReshapeBlobs(1, num); + layer.reset(new RNNLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const int bottom_count = this->blob_bottom_.count(); + const int top_count = this->blob_top_.count(); + const Dtype kEpsilon = 1e-5; + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = t > 0; + } + LOG(INFO) << "Calling forward for RNN timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + ASSERT_LT(t * top_count + i, top_copy.count()); + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } + } + + // Process the batch one timestep at a time with all cont blobs set to 0. + // Check that we get a different result, except in the first timestep. + Caffe::set_random_seed(1701); + layer.reset(new RNNLayer(this->layer_param_)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = 0; + } + LOG(INFO) << "Calling forward for RNN timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + if (t == 0) { + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } else { + EXPECT_NE(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i]) + << "t = " << t << "; i = " << i; + } + } + } +} + +TYPED_TEST(RNNLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(RNNLayerTest, TestGradientNonZeroCont) { + typedef typename TypeParam::Dtype Dtype; + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(RNNLayerTest, TestGradientNonZeroContBufferSize2) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + // fill the values + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(RNNLayerTest, TestGradientNonZeroContBufferSize2WithStaticInput) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + filler.Fill(&this->blob_bottom_static_); + this->blob_bottom_vec_.push_back(&this->blob_bottom_static_); + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 2); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_scale_layer.cpp b/3rdparty/caffe/src/caffe/test/test_scale_layer.cpp new file mode 100644 index 00000000..ad116795 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_scale_layer.cpp @@ -0,0 +1,507 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/scale_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class ScaleLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ScaleLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_bottom_eltwise_(new Blob(2, 3, 4, 5)), + blob_bottom_broadcast_0_(new Blob()), + blob_bottom_broadcast_1_(new Blob()), + blob_bottom_broadcast_2_(new Blob()), + blob_bottom_scale_(new Blob(vector())), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + vector broadcast_shape(2); + broadcast_shape[0] = 2; broadcast_shape[1] = 3; + this->blob_bottom_broadcast_0_->Reshape(broadcast_shape); + broadcast_shape[0] = 3; broadcast_shape[1] = 4; + this->blob_bottom_broadcast_1_->Reshape(broadcast_shape); + broadcast_shape[0] = 4; broadcast_shape[1] = 5; + this->blob_bottom_broadcast_2_->Reshape(broadcast_shape); + FillerParameter filler_param; + filler_param.set_min(1); + filler_param.set_max(10); + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_eltwise_); + filler.Fill(this->blob_bottom_broadcast_0_); + filler.Fill(this->blob_bottom_broadcast_1_); + filler.Fill(this->blob_bottom_broadcast_2_); + filler.Fill(this->blob_bottom_scale_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~ScaleLayerTest() { + delete blob_bottom_; + delete blob_bottom_eltwise_; + delete blob_bottom_broadcast_0_; + delete blob_bottom_broadcast_1_; + delete blob_bottom_broadcast_2_; + delete blob_bottom_scale_; + delete blob_top_; + } + Blob* const blob_bottom_; + Blob* const blob_bottom_eltwise_; + Blob* const blob_bottom_broadcast_0_; + Blob* const blob_bottom_broadcast_1_; + Blob* const blob_bottom_broadcast_2_; + Blob* const blob_bottom_scale_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ScaleLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ScaleLayerTest, TestForwardEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_bottom_->cpu_data(); + const int count = this->blob_bottom_->count(); + const Dtype* in_data_a = orig_bottom.cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestBackwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_scale_diff; + orig_scale_diff.CopyFrom(*this->blob_bottom_eltwise_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_eltwise_->count(); ++i) { + EXPECT_NEAR(orig_scale_diff.cpu_diff()[i], + this->blob_bottom_eltwise_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(0); + scale_param->set_num_axes(-1); + scale_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = layer->blobs()[0]->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + this->blob_bottom_broadcast_0_->data_at(n, c, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_bottom_->data_at(n, c, h, w), + orig_bottom.data_at(n, c, h, w) * + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestBackwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + shared_ptr > layer(new ScaleLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_scale_diff; + orig_scale_diff.CopyFrom(*this->blob_bottom_broadcast_1_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_broadcast_1_->count(); ++i) { + EXPECT_NEAR(orig_scale_diff.cpu_diff()[i], + this->blob_bottom_broadcast_1_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(1); + scale_param->set_num_axes(2); + scale_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + layer->blobs()[0]->data_at(c, h, 0, 0), 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddleWithParamAndBias) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(1); + scale_param->set_num_axes(2); + scale_param->mutable_filler()->set_type("gaussian"); + scale_param->set_bias_term(true); + scale_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + layer->blobs()[0]->data_at(c, h, 0, 0) + + layer->blobs()[1]->data_at(c, h, 0, 0), 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + this->blob_bottom_broadcast_2_->data_at(h, w, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardScale) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype scale = *this->blob_bottom_scale_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] * scale, 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardScaleAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype scale = *this->blob_bottom_scale_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] * scale, 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestGradientEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(0); + scale_param->set_num_axes(-1); + scale_param->mutable_filler()->set_type("gaussian"); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(1); + scale_param->set_num_axes(2); + scale_param->mutable_filler()->set_type("gaussian"); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientScale) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientScaleAndBias) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_bias_term(true); + scale_param->mutable_bias_filler()->set_type("gaussian"); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientScaleAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp b/3rdparty/caffe/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp new file mode 100644 index 00000000..1bd5f937 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp @@ -0,0 +1,148 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/sigmoid_cross_entropy_loss_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class SigmoidCrossEntropyLossLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + SigmoidCrossEntropyLossLayerTest() + : blob_bottom_data_(new Blob(10, 5, 1, 1)), + blob_bottom_targets_(new Blob(10, 5, 1, 1)), + blob_top_loss_(new Blob()) { + // Fill the data vector + FillerParameter data_filler_param; + data_filler_param.set_std(1); + GaussianFiller data_filler(data_filler_param); + data_filler.Fill(blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_data_); + // Fill the targets vector + FillerParameter targets_filler_param; + targets_filler_param.set_min(0); + targets_filler_param.set_max(1); + UniformFiller targets_filler(targets_filler_param); + targets_filler.Fill(blob_bottom_targets_); + blob_bottom_vec_.push_back(blob_bottom_targets_); + blob_top_vec_.push_back(blob_top_loss_); + } + virtual ~SigmoidCrossEntropyLossLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_targets_; + delete blob_top_loss_; + } + + Dtype SigmoidCrossEntropyLossReference(const int count, const int num, + const Dtype* input, + const Dtype* target) { + Dtype loss = 0; + for (int i = 0; i < count; ++i) { + const Dtype prediction = 1 / (1 + exp(-input[i])); + EXPECT_LE(prediction, 1); + EXPECT_GE(prediction, 0); + EXPECT_LE(target[i], 1); + EXPECT_GE(target[i], 0); + loss -= target[i] * log(prediction + (target[i] == Dtype(0))); + loss -= (1 - target[i]) * log(1 - prediction + (target[i] == Dtype(1))); + } + return loss / num; + } + + void TestForward() { + LayerParameter layer_param; + const Dtype kLossWeight = 3.7; + layer_param.add_loss_weight(kLossWeight); + FillerParameter data_filler_param; + data_filler_param.set_std(1); + GaussianFiller data_filler(data_filler_param); + FillerParameter targets_filler_param; + targets_filler_param.set_min(0.0); + targets_filler_param.set_max(1.0); + UniformFiller targets_filler(targets_filler_param); + Dtype eps = 2e-2; + for (int i = 0; i < 100; ++i) { + // Fill the data vector + data_filler.Fill(this->blob_bottom_data_); + // Fill the targets vector + targets_filler.Fill(this->blob_bottom_targets_); + SigmoidCrossEntropyLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + Dtype layer_loss = + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const int count = this->blob_bottom_data_->count(); + const int num = this->blob_bottom_data_->num(); + const Dtype* blob_bottom_data = this->blob_bottom_data_->cpu_data(); + const Dtype* blob_bottom_targets = + this->blob_bottom_targets_->cpu_data(); + Dtype reference_loss = kLossWeight * SigmoidCrossEntropyLossReference( + count, num, blob_bottom_data, blob_bottom_targets); + EXPECT_NEAR(reference_loss, layer_loss, eps) << "debug: trial #" << i; + } + } + + Blob* const blob_bottom_data_; + Blob* const blob_bottom_targets_; + Blob* const blob_top_loss_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(SigmoidCrossEntropyLossLayerTest, TestDtypesAndDevices); + +TYPED_TEST(SigmoidCrossEntropyLossLayerTest, TestSigmoidCrossEntropyLoss) { + this->TestForward(); +} + +TYPED_TEST(SigmoidCrossEntropyLossLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const Dtype kLossWeight = 3.7; + layer_param.add_loss_weight(kLossWeight); + SigmoidCrossEntropyLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 1e-2, 1701); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(SigmoidCrossEntropyLossLayerTest, TestIgnoreGradient) { + typedef typename TypeParam::Dtype Dtype; + FillerParameter data_filler_param; + data_filler_param.set_std(1); + GaussianFiller data_filler(data_filler_param); + data_filler.Fill(this->blob_bottom_data_); + LayerParameter layer_param; + LossParameter* loss_param = layer_param.mutable_loss_param(); + loss_param->set_ignore_label(-1); + Dtype* target = this->blob_bottom_targets_->mutable_cpu_data(); + const int count = this->blob_bottom_targets_->count(); + // Ignore half of targets, then check that diff of this half is zero, + // while the other half is nonzero. + caffe_set(count / 2, Dtype(-1), target); + SigmoidCrossEntropyLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + vector propagate_down(2); + propagate_down[0] = true; + propagate_down[1] = false; + layer.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const Dtype* diff = this->blob_bottom_data_->cpu_diff(); + for (int i = 0; i < count / 2; ++i) { + EXPECT_FLOAT_EQ(diff[i], 0.); + EXPECT_NE(diff[i + count / 2], 0.); + } +} + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_slice_layer.cpp b/3rdparty/caffe/src/caffe/test/test_slice_layer.cpp new file mode 100644 index 00000000..c2b231e1 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_slice_layer.cpp @@ -0,0 +1,215 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/slice_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class SliceLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + SliceLayerTest() + : blob_bottom_(new Blob(6, 12, 2, 3)), + blob_top_0_(new Blob()), + blob_top_1_(new Blob()), + blob_top_2_(new Blob()) {} + virtual void SetUp() { + // fill the values + Caffe::set_random_seed(1701); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_top_vec_0_.push_back(blob_top_0_); + blob_top_vec_0_.push_back(blob_top_1_); + blob_top_vec_1_.push_back(blob_top_0_); + blob_top_vec_1_.push_back(blob_top_1_); + blob_top_vec_1_.push_back(blob_top_2_); + blob_bottom_vec_.push_back(blob_bottom_); + } + + virtual void ReduceBottomBlobSize() { + blob_bottom_->Reshape(4, 5, 2, 2); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + } + + virtual ~SliceLayerTest() { + delete blob_top_0_; delete blob_top_1_; + delete blob_top_2_; delete blob_bottom_; + } + + Blob* const blob_bottom_; + Blob* const blob_top_0_; + Blob* const blob_top_1_; + Blob* const blob_top_2_; + vector*> blob_top_vec_0_, blob_top_vec_1_; + vector*> blob_bottom_vec_; +}; + +TYPED_TEST_CASE(SliceLayerTest, TestDtypesAndDevices); + +TYPED_TEST(SliceLayerTest, TestSetupNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_slice_param()->set_axis(0); + SliceLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_1_); + EXPECT_EQ(this->blob_bottom_->num(), 3 * this->blob_top_0_->num()); + EXPECT_EQ(this->blob_top_0_->num(), this->blob_top_1_->num()); + EXPECT_EQ(this->blob_top_0_->num(), this->blob_top_2_->num()); + EXPECT_EQ(this->blob_bottom_->channels(), this->blob_top_0_->channels()); + EXPECT_EQ(this->blob_bottom_->height(), this->blob_top_0_->height()); + EXPECT_EQ(this->blob_bottom_->width(), this->blob_top_0_->width()); +} + +TYPED_TEST(SliceLayerTest, TestSetupChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_slice_param()->add_slice_point(3); + SliceLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_0_); + EXPECT_EQ(this->blob_top_0_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_0_->channels(), 3); + EXPECT_EQ(this->blob_top_1_->channels(), 9); + EXPECT_EQ(this->blob_bottom_->channels(), + this->blob_top_0_->channels() + this->blob_top_1_->channels()); + EXPECT_EQ(this->blob_bottom_->height(), this->blob_top_0_->height()); + EXPECT_EQ(this->blob_bottom_->width(), this->blob_top_0_->width()); +} + +TYPED_TEST(SliceLayerTest, TestTrivialSlice) { + // Test the trivial (single output) "slice" operation -- + // should be the identity. + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SliceLayer layer(layer_param); + this->blob_top_vec_0_.resize(1); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_0_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_0_->shape()); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_EQ(this->blob_bottom_->cpu_data()[i], + this->blob_top_0_->cpu_data()[i]); + } +} + +TYPED_TEST(SliceLayerTest, TestSliceAcrossNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_slice_param()->set_axis(0); + SliceLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_0_); + const int top_num = this->blob_bottom_->num() / 2; + ASSERT_EQ(top_num, this->blob_top_0_->num()); + ASSERT_EQ(top_num, this->blob_top_1_->num()); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_0_); + for (int n = 0; n < top_num; ++n) { + for (int c = 0; c < this->blob_top_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_EQ(this->blob_bottom_->data_at(n, c, h, w), + this->blob_top_0_->data_at(n, c, h, w)); + } + } + } + for (int c = 0; c < this->blob_top_1_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_EQ(this->blob_bottom_->data_at(n + 3, c, h, w), + this->blob_top_1_->data_at(n, c, h, w)); + } + } + } + } +} + +TYPED_TEST(SliceLayerTest, TestSliceAcrossChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Slice at 2, 8: should produce output blobs with #channels 2, 6, 4. + const int kSlicePoint0 = 2; + const int kSlicePoint1 = 8; + layer_param.mutable_slice_param()->add_slice_point(kSlicePoint0); + layer_param.mutable_slice_param()->add_slice_point(kSlicePoint1); + SliceLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_1_); + ASSERT_EQ(kSlicePoint0, this->blob_top_0_->channels()); + ASSERT_EQ(kSlicePoint1 - kSlicePoint0, this->blob_top_1_->channels()); + ASSERT_EQ(this->blob_bottom_->channels() - kSlicePoint1, + this->blob_top_2_->channels()); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_1_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_top_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_EQ(this->blob_bottom_->data_at(n, c, h, w), + this->blob_top_0_->data_at(n, c, h, w)); + } + } + } + for (int c = 0; c < this->blob_top_1_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_EQ(this->blob_bottom_->data_at(n, c + kSlicePoint0, h, w), + this->blob_top_1_->data_at(n, c, h, w)); + } + } + } + for (int c = 0; c < this->blob_top_2_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_EQ(this->blob_bottom_->data_at(n, c + kSlicePoint1, h, w), + this->blob_top_2_->data_at(n, c, h, w)); + } + } + } + } +} + +TYPED_TEST(SliceLayerTest, TestGradientTrivial) { + // Test the trivial (single output) "slice" operation -- + // should be the identity. + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SliceLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + this->blob_top_vec_0_.resize(1); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_0_); +} + +TYPED_TEST(SliceLayerTest, TestGradientAcrossNum) { + typedef typename TypeParam::Dtype Dtype; + // Gradient checks are slow; reduce blob size. + this->ReduceBottomBlobSize(); + LayerParameter layer_param; + layer_param.mutable_slice_param()->set_axis(0); + SliceLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_0_); +} + +TYPED_TEST(SliceLayerTest, TestGradientAcrossChannels) { + typedef typename TypeParam::Dtype Dtype; + // Gradient checks are slow; reduce blob size. + this->ReduceBottomBlobSize(); + LayerParameter layer_param; + const int kSlicePoint = 4; + layer_param.mutable_slice_param()->add_slice_point(kSlicePoint); + SliceLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_0_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_softmax_layer.cpp b/3rdparty/caffe/src/caffe/test/test_softmax_layer.cpp new file mode 100644 index 00000000..94443576 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_softmax_layer.cpp @@ -0,0 +1,152 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/softmax_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_softmax_layer.hpp" +#endif + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class SoftmaxLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + SoftmaxLayerTest() + : blob_bottom_(new Blob(2, 10, 2, 3)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~SoftmaxLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(SoftmaxLayerTest, TestDtypesAndDevices); + +TYPED_TEST(SoftmaxLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SoftmaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Test sum + for (int i = 0; i < this->blob_bottom_->num(); ++i) { + for (int k = 0; k < this->blob_bottom_->height(); ++k) { + for (int l = 0; l < this->blob_bottom_->width(); ++l) { + Dtype sum = 0; + for (int j = 0; j < this->blob_top_->channels(); ++j) { + sum += this->blob_top_->data_at(i, j, k, l); + } + EXPECT_GE(sum, 0.999); + EXPECT_LE(sum, 1.001); + // Test exact values + Dtype scale = 0; + for (int j = 0; j < this->blob_bottom_->channels(); ++j) { + scale += exp(this->blob_bottom_->data_at(i, j, k, l)); + } + for (int j = 0; j < this->blob_bottom_->channels(); ++j) { + EXPECT_GE(this->blob_top_->data_at(i, j, k, l) + 1e-4, + exp(this->blob_bottom_->data_at(i, j, k, l)) / scale) + << "debug: " << i << " " << j; + EXPECT_LE(this->blob_top_->data_at(i, j, k, l) - 1e-4, + exp(this->blob_bottom_->data_at(i, j, k, l)) / scale) + << "debug: " << i << " " << j; + } + } + } + } +} + +TYPED_TEST(SoftmaxLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SoftmaxLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#ifdef USE_CUDNN +template +class CuDNNSoftmaxLayerTest : public GPUDeviceTest { + protected: + CuDNNSoftmaxLayerTest() + : blob_bottom_(new Blob(2, 10, 2, 3)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~CuDNNSoftmaxLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(CuDNNSoftmaxLayerTest, TestDtypes); + +TYPED_TEST(CuDNNSoftmaxLayerTest, TestForwardCuDNN) { + LayerParameter layer_param; + CuDNNSoftmaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Test sum + for (int i = 0; i < this->blob_bottom_->num(); ++i) { + for (int k = 0; k < this->blob_bottom_->height(); ++k) { + for (int l = 0; l < this->blob_bottom_->width(); ++l) { + TypeParam sum = 0; + for (int j = 0; j < this->blob_top_->channels(); ++j) { + sum += this->blob_top_->data_at(i, j, k, l); + } + EXPECT_GE(sum, 0.999); + EXPECT_LE(sum, 1.001); + // Test exact values + TypeParam scale = 0; + for (int j = 0; j < this->blob_bottom_->channels(); ++j) { + scale += exp(this->blob_bottom_->data_at(i, j, k, l)); + } + for (int j = 0; j < this->blob_bottom_->channels(); ++j) { + EXPECT_GE(this->blob_top_->data_at(i, j, k, l) + 1e-4, + exp(this->blob_bottom_->data_at(i, j, k, l)) / scale) + << "debug: " << i << " " << j; + EXPECT_LE(this->blob_top_->data_at(i, j, k, l) - 1e-4, + exp(this->blob_bottom_->data_at(i, j, k, l)) / scale) + << "debug: " << i << " " << j; + } + } + } + } +} + +TYPED_TEST(CuDNNSoftmaxLayerTest, TestGradientCuDNN) { + LayerParameter layer_param; + CuDNNSoftmaxLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_softmax_with_loss_layer.cpp b/3rdparty/caffe/src/caffe/test/test_softmax_with_loss_layer.cpp new file mode 100644 index 00000000..c67f3e0d --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_softmax_with_loss_layer.cpp @@ -0,0 +1,108 @@ +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/softmax_loss_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +using boost::scoped_ptr; + +namespace caffe { + +template +class SoftmaxWithLossLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + SoftmaxWithLossLayerTest() + : blob_bottom_data_(new Blob(10, 5, 2, 3)), + blob_bottom_label_(new Blob(10, 1, 2, 3)), + blob_top_loss_(new Blob()) { + // fill the values + FillerParameter filler_param; + filler_param.set_std(10); + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_data_); + blob_bottom_vec_.push_back(blob_bottom_data_); + for (int i = 0; i < blob_bottom_label_->count(); ++i) { + blob_bottom_label_->mutable_cpu_data()[i] = caffe_rng_rand() % 5; + } + blob_bottom_vec_.push_back(blob_bottom_label_); + blob_top_vec_.push_back(blob_top_loss_); + } + virtual ~SoftmaxWithLossLayerTest() { + delete blob_bottom_data_; + delete blob_bottom_label_; + delete blob_top_loss_; + } + Blob* const blob_bottom_data_; + Blob* const blob_bottom_label_; + Blob* const blob_top_loss_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(SoftmaxWithLossLayerTest, TestDtypesAndDevices); + +TYPED_TEST(SoftmaxWithLossLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.add_loss_weight(3); + SoftmaxWithLossLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2, 1701); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(SoftmaxWithLossLayerTest, TestForwardIgnoreLabel) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_loss_param()->set_normalize(false); + // First, compute the loss with all labels + scoped_ptr > layer( + new SoftmaxWithLossLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Dtype full_loss = this->blob_top_loss_->cpu_data()[0]; + // Now, accumulate the loss, ignoring each label in {0, ..., 4} in turn. + Dtype accum_loss = 0; + for (int label = 0; label < 5; ++label) { + layer_param.mutable_loss_param()->set_ignore_label(label); + layer.reset(new SoftmaxWithLossLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + accum_loss += this->blob_top_loss_->cpu_data()[0]; + } + // Check that each label was included all but once. + EXPECT_NEAR(4 * full_loss, accum_loss, 1e-4); +} + +TYPED_TEST(SoftmaxWithLossLayerTest, TestGradientIgnoreLabel) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // labels are in {0, ..., 4}, so we'll ignore about a fifth of them + layer_param.mutable_loss_param()->set_ignore_label(0); + SoftmaxWithLossLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2, 1701); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(SoftmaxWithLossLayerTest, TestGradientUnnormalized) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_loss_param()->set_normalize(false); + SoftmaxWithLossLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2, 1701); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_solver.cpp b/3rdparty/caffe/src/caffe/test/test_solver.cpp new file mode 100644 index 00000000..b1816426 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_solver.cpp @@ -0,0 +1,109 @@ +#include +#include +#include + +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/sgd_solvers.hpp" +#include "caffe/solver.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +using std::ostringstream; + +namespace caffe { + +template +class SolverTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + virtual void InitSolverFromProtoString(const string& proto) { + SolverParameter param; + CHECK(google::protobuf::TextFormat::ParseFromString(proto, ¶m)); + // Set the solver_mode according to current Caffe::mode. + switch (Caffe::mode()) { + case Caffe::CPU: + param.set_solver_mode(SolverParameter_SolverMode_CPU); + break; + case Caffe::GPU: + param.set_solver_mode(SolverParameter_SolverMode_GPU); + break; + default: + LOG(FATAL) << "Unknown Caffe mode: " << Caffe::mode(); + } + solver_.reset(new SGDSolver(param)); + } + + shared_ptr > solver_; +}; + +TYPED_TEST_CASE(SolverTest, TestDtypesAndDevices); + +TYPED_TEST(SolverTest, TestInitTrainTestNets) { + const string& proto = + "test_interval: 10 " + "test_iter: 10 " + "test_state: { stage: 'with-softmax' }" + "test_iter: 10 " + "test_state: {}" + "net_param { " + " name: 'TestNetwork' " + " layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " shape { " + " dim: 5 " + " dim: 2 " + " dim: 3 " + " dim: 4 " + " } " + " shape { " + " dim: 5 " + " } " + " } " + " top: 'data' " + " top: 'label' " + " } " + " layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " } " + " bottom: 'data' " + " top: 'innerprod' " + " } " + " layer { " + " name: 'accuracy' " + " type: 'Accuracy' " + " bottom: 'innerprod' " + " bottom: 'label' " + " top: 'accuracy' " + " exclude: { phase: TRAIN } " + " } " + " layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + " include: { phase: TRAIN } " + " include: { phase: TEST stage: 'with-softmax' } " + " } " + "} "; + this->InitSolverFromProtoString(proto); + ASSERT_TRUE(this->solver_->net() != NULL); + EXPECT_TRUE(this->solver_->net()->has_layer("loss")); + EXPECT_FALSE(this->solver_->net()->has_layer("accuracy")); + ASSERT_EQ(2, this->solver_->test_nets().size()); + EXPECT_TRUE(this->solver_->test_nets()[0]->has_layer("loss")); + EXPECT_TRUE(this->solver_->test_nets()[0]->has_layer("accuracy")); + EXPECT_FALSE(this->solver_->test_nets()[1]->has_layer("loss")); + EXPECT_TRUE(this->solver_->test_nets()[1]->has_layer("accuracy")); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_solver_factory.cpp b/3rdparty/caffe/src/caffe/test/test_solver_factory.cpp new file mode 100644 index 00000000..eef5290f --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_solver_factory.cpp @@ -0,0 +1,50 @@ +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/solver.hpp" +#include "caffe/solver_factory.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class SolverFactoryTest : public MultiDeviceTest { + protected: + SolverParameter simple_solver_param() { + const string solver_proto = + "train_net_param { " + " layer { " + " name: 'data' type: 'DummyData' top: 'data' " + " dummy_data_param { shape { dim: 1 } } " + " } " + "} "; + SolverParameter solver_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + solver_proto, &solver_param)); + return solver_param; + } +}; + +TYPED_TEST_CASE(SolverFactoryTest, TestDtypesAndDevices); + +TYPED_TEST(SolverFactoryTest, TestCreateSolver) { + typedef typename TypeParam::Dtype Dtype; + typename SolverRegistry::CreatorRegistry& registry = + SolverRegistry::Registry(); + shared_ptr > solver; + SolverParameter solver_param = this->simple_solver_param(); + for (typename SolverRegistry::CreatorRegistry::iterator iter = + registry.begin(); iter != registry.end(); ++iter) { + solver_param.set_type(iter->first); + solver.reset(SolverRegistry::CreateSolver(solver_param)); + EXPECT_EQ(iter->first, solver->type()); + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_split_layer.cpp b/3rdparty/caffe/src/caffe/test/test_split_layer.cpp new file mode 100644 index 00000000..00714212 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_split_layer.cpp @@ -0,0 +1,983 @@ +#include +#include + +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/split_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/insert_splits.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class SplitLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + SplitLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 5)), + blob_top_a_(new Blob()), + blob_top_b_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_a_); + blob_top_vec_.push_back(blob_top_b_); + } + virtual ~SplitLayerTest() { + delete blob_bottom_; + delete blob_top_a_; + delete blob_top_b_; + } + Blob* const blob_bottom_; + Blob* const blob_top_a_; + Blob* const blob_top_b_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(SplitLayerTest, TestDtypesAndDevices); + +TYPED_TEST(SplitLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SplitLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_a_->num(), 2); + EXPECT_EQ(this->blob_top_a_->channels(), 3); + EXPECT_EQ(this->blob_top_a_->height(), 6); + EXPECT_EQ(this->blob_top_a_->width(), 5); + EXPECT_EQ(this->blob_top_b_->num(), 2); + EXPECT_EQ(this->blob_top_b_->channels(), 3); + EXPECT_EQ(this->blob_top_b_->height(), 6); + EXPECT_EQ(this->blob_top_b_->width(), 5); +} + +TYPED_TEST(SplitLayerTest, Test) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SplitLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + Dtype bottom_value = this->blob_bottom_->cpu_data()[i]; + EXPECT_EQ(bottom_value, this->blob_top_a_->cpu_data()[i]); + EXPECT_EQ(bottom_value, this->blob_top_b_->cpu_data()[i]); + } +} + +TYPED_TEST(SplitLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SplitLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + + +class SplitLayerInsertionTest : public ::testing::Test { + protected: + void RunInsertionTest( + const string& input_param_string, const string& output_param_string) { + // Test that InsertSplits called on the proto specified by + // input_param_string results in the proto specified by + // output_param_string. + NetParameter input_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + input_param_string, &input_param)); + NetParameter expected_output_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + output_param_string, &expected_output_param)); + NetParameter actual_output_param; + InsertSplits(input_param, &actual_output_param); + EXPECT_EQ(expected_output_param.DebugString(), + actual_output_param.DebugString()); + // Also test idempotence. + NetParameter double_split_insert_param; + InsertSplits(actual_output_param, &double_split_insert_param); + EXPECT_EQ(actual_output_param.DebugString(), + double_split_insert_param.DebugString()); + } +}; + +TEST_F(SplitLayerInsertionTest, TestNoInsertion1) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunInsertionTest(input_proto, input_proto); +} + +TEST_F(SplitLayerInsertionTest, TestNoInsertion2) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'data_split' " + " type: 'Split' " + " bottom: 'data' " + " top: 'data_split_0' " + " top: 'data_split_1' " + "} " + "layer { " + " name: 'innerprod1' " + " type: 'InnerProduct' " + " bottom: 'data_split_0' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " bottom: 'data_split_1' " + " top: 'innerprod2' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod1' " + " bottom: 'innerprod2' " + "} "; + this->RunInsertionTest(input_proto, input_proto); +} + +TEST_F(SplitLayerInsertionTest, TestNoInsertionImageNet) { + const string& input_proto = + "name: 'CaffeNet' " + "layer { " + " name: 'data' " + " type: 'Data' " + " data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " batch_size: 256 " + " } " + " transform_param { " + " crop_size: 227 " + " mirror: true " + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'conv1' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 96 " + " kernel_size: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layer { " + " name: 'relu1' " + " type: 'ReLU' " + " bottom: 'conv1' " + " top: 'conv1' " + "} " + "layer { " + " name: 'pool1' " + " type: 'Pooling' " + " pooling_param { " + " pool: MAX " + " kernel_size: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1' " + "} " + "layer { " + " name: 'norm1' " + " type: 'LRN' " + " lrn_param { " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1' " + " top: 'norm1' " + "} " + "layer { " + " name: 'conv2' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 256 " + " group: 2 " + " kernel_size: 5 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'norm1' " + " top: 'conv2' " + "} " + "layer { " + " name: 'relu2' " + " type: 'ReLU' " + " bottom: 'conv2' " + " top: 'conv2' " + "} " + "layer { " + " name: 'pool2' " + " type: 'Pooling' " + " pooling_param { " + " pool: MAX " + " kernel_size: 3 " + " stride: 2 " + " } " + " bottom: 'conv2' " + " top: 'pool2' " + "} " + "layer { " + " name: 'norm2' " + " type: 'LRN' " + " lrn_param { " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool2' " + " top: 'norm2' " + "} " + "layer { " + " name: 'conv3' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 384 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'norm2' " + " top: 'conv3' " + "} " + "layer { " + " name: 'relu3' " + " type: 'ReLU' " + " bottom: 'conv3' " + " top: 'conv3' " + "} " + "layer { " + " name: 'conv4' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 384 " + " group: 2 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'conv3' " + " top: 'conv4' " + "} " + "layer { " + " name: 'relu4' " + " type: 'ReLU' " + " bottom: 'conv4' " + " top: 'conv4' " + "} " + "layer { " + " name: 'conv5' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 256 " + " group: 2 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'conv4' " + " top: 'conv5' " + "} " + "layer { " + " name: 'relu5' " + " type: 'ReLU' " + " bottom: 'conv5' " + " top: 'conv5' " + "} " + "layer { " + " name: 'pool5' " + " type: 'Pooling' " + " pooling_param { " + " kernel_size: 3 " + " pool: MAX " + " stride: 2 " + " } " + " bottom: 'conv5' " + " top: 'pool5' " + "} " + "layer { " + " name: 'fc6' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'pool5' " + " top: 'fc6' " + "} " + "layer { " + " name: 'relu6' " + " type: 'ReLU' " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layer { " + " name: 'drop6' " + " type: 'Dropout' " + " dropout_param { " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layer { " + " name: 'fc7' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'fc6' " + " top: 'fc7' " + "} " + "layer { " + " name: 'relu7' " + " type: 'ReLU' " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layer { " + " name: 'drop7' " + " type: 'Dropout' " + " dropout_param { " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layer { " + " name: 'fc8' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'fc7' " + " top: 'fc8' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunInsertionTest(input_proto, input_proto); +} + +TEST_F(SplitLayerInsertionTest, TestNoInsertionWithInPlace) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod' " + "} " + "layer { " + " name: 'relu' " + " type: 'ReLU' " + " bottom: 'innerprod' " + " top: 'innerprod' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'innerprod' " + " bottom: 'label' " + "} "; + this->RunInsertionTest(input_proto, input_proto); +} + +TEST_F(SplitLayerInsertionTest, TestLossInsertion) { + const string& input_proto = + "name: 'UnsharedWeightsNetwork' " + "force_backward: true " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 5 " + " channels: 2 " + " height: 3 " + " width: 4 " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " top: 'data' " + "} " + "layer { " + " name: 'innerproduct1' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { name: 'unsharedweights1' } " + " bottom: 'data' " + " top: 'innerproduct1' " + " loss_weight: 2.5 " + "} " + "layer { " + " name: 'innerproduct2' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { name: 'unsharedweights2' } " + " bottom: 'data' " + " top: 'innerproduct2' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'innerproduct1' " + " bottom: 'innerproduct2' " + "} "; + const string& expected_output_proto = + "name: 'UnsharedWeightsNetwork' " + "force_backward: true " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " num: 5 " + " channels: 2 " + " height: 3 " + " width: 4 " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " top: 'data' " + "} " + "layer { " + " name: 'data_data_0_split' " + " type: 'Split' " + " bottom: 'data' " + " top: 'data_data_0_split_0' " + " top: 'data_data_0_split_1' " + "} " + "layer { " + " name: 'innerproduct1' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { name: 'unsharedweights1' } " + " bottom: 'data_data_0_split_0' " + " top: 'innerproduct1' " + "} " + "layer { " + " name: 'innerproduct1_innerproduct1_0_split' " + " type: 'Split' " + " bottom: 'innerproduct1' " + " top: 'innerproduct1_innerproduct1_0_split_0' " + " top: 'innerproduct1_innerproduct1_0_split_1' " + " loss_weight: 2.5 " + " loss_weight: 0 " + "} " + "layer { " + " name: 'innerproduct2' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 10 " + " bias_term: false " + " weight_filler { " + " type: 'gaussian' " + " std: 10 " + " } " + " } " + " param { name: 'unsharedweights2' } " + " bottom: 'data_data_0_split_1' " + " top: 'innerproduct2' " + "} " + "layer { " + " name: 'loss' " + " type: 'EuclideanLoss' " + " bottom: 'innerproduct1_innerproduct1_0_split_1' " + " bottom: 'innerproduct2' " + "} "; + this->RunInsertionTest(input_proto, expected_output_proto); +} + +TEST_F(SplitLayerInsertionTest, TestInsertion) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod1' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod2' " + "} " + "layer { " + " name: 'innerprod3' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod3' " + "} " + "layer { " + " name: 'loss1' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod1' " + " bottom: 'innerprod2' " + "} " + "layer { " + " name: 'loss2' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod2' " + " bottom: 'innerprod3' " + "} "; + const string& expected_output_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'data_data_0_split' " + " type: 'Split' " + " bottom: 'data' " + " top: 'data_data_0_split_0' " + " top: 'data_data_0_split_1' " + " top: 'data_data_0_split_2' " + "} " + "layer { " + " name: 'innerprod1' " + " type: 'InnerProduct' " + " bottom: 'data_data_0_split_0' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " bottom: 'data_data_0_split_1' " + " top: 'innerprod2' " + "} " + "layer { " + " name: 'innerprod2_innerprod2_0_split' " + " type: 'Split' " + " bottom: 'innerprod2' " + " top: 'innerprod2_innerprod2_0_split_0' " + " top: 'innerprod2_innerprod2_0_split_1' " + "} " + "layer { " + " name: 'innerprod3' " + " type: 'InnerProduct' " + " bottom: 'data_data_0_split_2' " + " top: 'innerprod3' " + "} " + "layer { " + " name: 'loss1' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod1' " + " bottom: 'innerprod2_innerprod2_0_split_0' " + "} " + "layer { " + " name: 'loss2' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod2_innerprod2_0_split_1' " + " bottom: 'innerprod3' " + "} "; + this->RunInsertionTest(input_proto, expected_output_proto); +} + +TEST_F(SplitLayerInsertionTest, TestInsertionTwoTop) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod1' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " bottom: 'label' " + " top: 'innerprod2' " + "} " + "layer { " + " name: 'innerprod3' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod3' " + "} " + "layer { " + " name: 'innerprod4' " + " type: 'InnerProduct' " + " bottom: 'label' " + " top: 'innerprod4' " + "} " + "layer { " + " name: 'loss1' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod1' " + " bottom: 'innerprod3' " + "} " + "layer { " + " name: 'loss2' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod2' " + " bottom: 'innerprod4' " + "} "; + const string& expected_output_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'data_data_0_split' " + " type: 'Split' " + " bottom: 'data' " + " top: 'data_data_0_split_0' " + " top: 'data_data_0_split_1' " + "} " + "layer { " + " name: 'label_data_1_split' " + " type: 'Split' " + " bottom: 'label' " + " top: 'label_data_1_split_0' " + " top: 'label_data_1_split_1' " + "} " + "layer { " + " name: 'innerprod1' " + " type: 'InnerProduct' " + " bottom: 'data_data_0_split_0' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " bottom: 'label_data_1_split_0' " + " top: 'innerprod2' " + "} " + "layer { " + " name: 'innerprod3' " + " type: 'InnerProduct' " + " bottom: 'data_data_0_split_1' " + " top: 'innerprod3' " + "} " + "layer { " + " name: 'innerprod4' " + " type: 'InnerProduct' " + " bottom: 'label_data_1_split_1' " + " top: 'innerprod4' " + "} " + "layer { " + " name: 'loss1' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod1' " + " bottom: 'innerprod3' " + "} " + "layer { " + " name: 'loss2' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod2' " + " bottom: 'innerprod4' " + "} "; + this->RunInsertionTest(input_proto, expected_output_proto); +} + +TEST_F(SplitLayerInsertionTest, TestWithInPlace) { + const string& input_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerprod1' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'relu1' " + " type: 'ReLU' " + " bottom: 'innerprod1' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " bottom: 'innerprod1' " + " top: 'innerprod2' " + "} " + "layer { " + " name: 'loss1' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod1' " + " bottom: 'label' " + "} " + "layer { " + " name: 'loss2' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod2' " + " bottom: 'data' " + "} "; + const string& expected_output_proto = + "name: 'TestNetwork' " + "layer { " + " name: 'data' " + " type: 'Data' " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'data_data_0_split' " + " type: 'Split' " + " bottom: 'data' " + " top: 'data_data_0_split_0' " + " top: 'data_data_0_split_1' " + "} " + "layer { " + " name: 'innerprod1' " + " type: 'InnerProduct' " + " bottom: 'data_data_0_split_0' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'relu1' " + " type: 'ReLU' " + " bottom: 'innerprod1' " + " top: 'innerprod1' " + "} " + "layer { " + " name: 'innerprod1_relu1_0_split' " + " type: 'Split' " + " bottom: 'innerprod1' " + " top: 'innerprod1_relu1_0_split_0' " + " top: 'innerprod1_relu1_0_split_1' " + "} " + "layer { " + " name: 'innerprod2' " + " type: 'InnerProduct' " + " bottom: 'innerprod1_relu1_0_split_0' " + " top: 'innerprod2' " + "} " + "layer { " + " name: 'loss1' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod1_relu1_0_split_1' " + " bottom: 'label' " + "} " + "layer { " + " name: 'loss2' " + " type: 'EuclideanLoss' " + " bottom: 'innerprod2' " + " bottom: 'data_data_0_split_1' " + "} "; + this->RunInsertionTest(input_proto, expected_output_proto); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_spp_layer.cpp b/3rdparty/caffe/src/caffe/test/test_spp_layer.cpp new file mode 100644 index 00000000..59a3af2a --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_spp_layer.cpp @@ -0,0 +1,134 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/concat_layer.hpp" +#include "caffe/layers/flatten_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/split_layer.hpp" +#include "caffe/layers/spp_layer.hpp" + + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class SPPLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + SPPLayerTest() + : blob_bottom_(new Blob()), + blob_bottom_2_(new Blob()), + blob_bottom_3_(new Blob()), + blob_top_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1701); + blob_bottom_->Reshape(2, 3, 9, 8); + blob_bottom_2_->Reshape(4, 3, 1024, 765); + blob_bottom_3_->Reshape(10, 3, 7, 7); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_bottom_vec_2_.push_back(blob_bottom_2_); + blob_bottom_vec_3_.push_back(blob_bottom_3_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~SPPLayerTest() { delete blob_bottom_; delete blob_top_; } + + Blob* const blob_bottom_; + Blob* const blob_bottom_2_; + Blob* const blob_bottom_3_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_bottom_vec_2_; + vector*> blob_bottom_vec_3_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(SPPLayerTest, TestDtypesAndDevices); + +TYPED_TEST(SPPLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_spp_param()->set_pyramid_height(3); + SPPLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + // expected number of pool results is geometric sum + // (1 - r ** n)/(1 - r) where r = 4 and n = pyramid_height + // (1 - 4 ** 3)/(1 - 4) = 21 + // multiply bottom num_channels * expected_pool_results + // to get expected num_channels (3 * 21 = 63) + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 63); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); +} + +TYPED_TEST(SPPLayerTest, TestEqualOutputDims) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_spp_param()->set_pyramid_height(5); + SPPLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_2_, this->blob_top_vec_); + // expected number of pool results is geometric sum + // (1 - r ** n)/(1 - r) where r = 4 and n = pyramid_height + // (1 - 4 ** 5)/(1 - 4) = 341 + // multiply bottom num_channels * expected_pool_results + // to get expected num_channels (3 * 341 = 1023) + EXPECT_EQ(this->blob_top_->num(), 4); + EXPECT_EQ(this->blob_top_->channels(), 1023); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); +} + +TYPED_TEST(SPPLayerTest, TestEqualOutputDims2) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_spp_param()->set_pyramid_height(3); + SPPLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_3_, this->blob_top_vec_); + // expected number of pool results is geometric sum + // (1 - r ** n)/(1 - r) where r = 4 and n = pyramid_height + // (1 - 4 ** 3)/(1 - 4) = 21 + // multiply bottom num_channels * expected_pool_results + // to get expected num_channels (3 * 21 = 63) + EXPECT_EQ(this->blob_top_->num(), 10); + EXPECT_EQ(this->blob_top_->channels(), 63); + EXPECT_EQ(this->blob_top_->height(), 1); + EXPECT_EQ(this->blob_top_->width(), 1); +} + +TYPED_TEST(SPPLayerTest, TestForwardBackward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_spp_param()->set_pyramid_height(3); + SPPLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); +} + +TYPED_TEST(SPPLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + SPPParameter* spp_param = layer_param.mutable_spp_param(); + spp_param->set_pyramid_height(3); + SPPLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_stochastic_pooling.cpp b/3rdparty/caffe/src/caffe/test/test_stochastic_pooling.cpp new file mode 100644 index 00000000..cd5db838 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_stochastic_pooling.cpp @@ -0,0 +1,175 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/pooling_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +using std::min; + +namespace caffe { + +template +class StochasticPoolingLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + StochasticPoolingLayerTest() + : blob_bottom_(new Blob()), + blob_top_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1701); + blob_bottom_->Reshape(2, 3, 6, 5); + // fill the values + FillerParameter filler_param; + filler_param.set_min(0.1); + filler_param.set_max(1.); + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~StochasticPoolingLayerTest() { + delete blob_bottom_; delete blob_top_; + } + + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +template +class CPUStochasticPoolingLayerTest + : public StochasticPoolingLayerTest > { +}; + +TYPED_TEST_CASE(CPUStochasticPoolingLayerTest, TestDtypes); + +TYPED_TEST(CPUStochasticPoolingLayerTest, TestSetup) { + LayerParameter layer_param; + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), 3); + EXPECT_EQ(this->blob_top_->width(), 2); +} + +#ifndef CPU_ONLY + +template +class GPUStochasticPoolingLayerTest + : public StochasticPoolingLayerTest > { +}; + +TYPED_TEST_CASE(GPUStochasticPoolingLayerTest, TestDtypes); + +TYPED_TEST(GPUStochasticPoolingLayerTest, TestStochastic) { + LayerParameter layer_param; + layer_param.set_phase(TRAIN); + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_STOCHASTIC); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Check if the output is correct - it should do random sampling + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + const TypeParam* top_data = this->blob_top_->cpu_data(); + TypeParam total = 0; + for (int n = 0; n < this->blob_top_->num(); ++n) { + for (int c = 0; c < this->blob_top_->channels(); ++c) { + for (int ph = 0; ph < this->blob_top_->height(); ++ph) { + for (int pw = 0; pw < this->blob_top_->width(); ++pw) { + TypeParam pooled = top_data[this->blob_top_->offset(n, c, ph, pw)]; + total += pooled; + int hstart = ph * 2; + int hend = min(hstart + 3, this->blob_bottom_->height()); + int wstart = pw * 2; + int wend = min(wstart + 3, this->blob_bottom_->width()); + bool has_equal = false; + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + has_equal |= (pooled == bottom_data[this->blob_bottom_-> + offset(n, c, h, w)]); + } + } + EXPECT_TRUE(has_equal); + } + } + } + } + // When we are doing stochastic pooling, the average we get should be higher + // than the simple data average since we are weighting more on higher-valued + // ones. + EXPECT_GE(total / this->blob_top_->count(), 0.55); +} + +TYPED_TEST(GPUStochasticPoolingLayerTest, TestStochasticTestPhase) { + LayerParameter layer_param; + layer_param.set_phase(TEST); + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_STOCHASTIC); + PoolingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Check if the output is correct - it should do random sampling + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); + const TypeParam* top_data = this->blob_top_->cpu_data(); + for (int n = 0; n < this->blob_top_->num(); ++n) { + for (int c = 0; c < this->blob_top_->channels(); ++c) { + for (int ph = 0; ph < this->blob_top_->height(); ++ph) { + for (int pw = 0; pw < this->blob_top_->width(); ++pw) { + TypeParam pooled = top_data[this->blob_top_->offset(n, c, ph, pw)]; + int hstart = ph * 2; + int hend = min(hstart + 3, this->blob_bottom_->height()); + int wstart = pw * 2; + int wend = min(wstart + 3, this->blob_bottom_->width()); + bool smaller_than_max = false; + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + smaller_than_max |= (pooled <= bottom_data[this->blob_bottom_-> + offset(n, c, h, w)]); + } + } + EXPECT_TRUE(smaller_than_max); + } + } + } + } +} + +TYPED_TEST(GPUStochasticPoolingLayerTest, TestGradient) { + LayerParameter layer_param; + layer_param.set_phase(TRAIN); + PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); + pooling_param->set_kernel_size(3); + pooling_param->set_stride(2); + pooling_param->set_pool(PoolingParameter_PoolMethod_STOCHASTIC); + PoolingLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + // it is too expensive to call curand multiple times, so we don't do an + // exhaustive gradient check. + checker.CheckGradient(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_syncedmem.cpp b/3rdparty/caffe/src/caffe/test/test_syncedmem.cpp new file mode 100644 index 00000000..16dfb582 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_syncedmem.cpp @@ -0,0 +1,125 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/syncedmem.hpp" +#include "caffe/util/device_alternate.hpp" +#include "caffe/util/math_functions.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +class SyncedMemoryTest : public ::testing::Test {}; + +TEST_F(SyncedMemoryTest, TestInitialization) { + SyncedMemory mem(10); + EXPECT_EQ(mem.head(), SyncedMemory::UNINITIALIZED); + EXPECT_EQ(mem.size(), 10); + SyncedMemory* p_mem = new SyncedMemory(10 * sizeof(float)); + EXPECT_EQ(p_mem->size(), 10 * sizeof(float)); + delete p_mem; +} + +#ifndef CPU_ONLY // GPU test + +TEST_F(SyncedMemoryTest, TestAllocationCPUGPU) { + SyncedMemory mem(10); + EXPECT_TRUE(mem.cpu_data()); + EXPECT_TRUE(mem.gpu_data()); + EXPECT_TRUE(mem.mutable_cpu_data()); + EXPECT_TRUE(mem.mutable_gpu_data()); +} + +#endif + +TEST_F(SyncedMemoryTest, TestAllocationCPU) { + SyncedMemory mem(10); + EXPECT_TRUE(mem.cpu_data()); + EXPECT_TRUE(mem.mutable_cpu_data()); +} + +#ifndef CPU_ONLY // GPU test + +TEST_F(SyncedMemoryTest, TestAllocationGPU) { + SyncedMemory mem(10); + EXPECT_TRUE(mem.gpu_data()); + EXPECT_TRUE(mem.mutable_gpu_data()); +} + +#endif + +TEST_F(SyncedMemoryTest, TestCPUWrite) { + SyncedMemory mem(10); + void* cpu_data = mem.mutable_cpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_CPU); + caffe_memset(mem.size(), 1, cpu_data); + for (int i = 0; i < mem.size(); ++i) { + EXPECT_EQ((static_cast(cpu_data))[i], 1); + } + // do another round + cpu_data = mem.mutable_cpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_CPU); + caffe_memset(mem.size(), 2, cpu_data); + for (int i = 0; i < mem.size(); ++i) { + EXPECT_EQ((static_cast(cpu_data))[i], 2); + } +} + +#ifndef CPU_ONLY // GPU test + +TEST_F(SyncedMemoryTest, TestGPURead) { + SyncedMemory mem(10); + void* cpu_data = mem.mutable_cpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_CPU); + caffe_memset(mem.size(), 1, cpu_data); + const void* gpu_data = mem.gpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); + // check if values are the same + char* recovered_value = new char[10]; + caffe_gpu_memcpy(10, gpu_data, recovered_value); + for (int i = 0; i < mem.size(); ++i) { + EXPECT_EQ((static_cast(recovered_value))[i], 1); + } + // do another round + cpu_data = mem.mutable_cpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_CPU); + caffe_memset(mem.size(), 2, cpu_data); + for (int i = 0; i < mem.size(); ++i) { + EXPECT_EQ((static_cast(cpu_data))[i], 2); + } + gpu_data = mem.gpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); + // check if values are the same + caffe_gpu_memcpy(10, gpu_data, recovered_value); + for (int i = 0; i < mem.size(); ++i) { + EXPECT_EQ((static_cast(recovered_value))[i], 2); + } + delete[] recovered_value; +} + +TEST_F(SyncedMemoryTest, TestGPUWrite) { + SyncedMemory mem(10); + void* gpu_data = mem.mutable_gpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_GPU); + caffe_gpu_memset(mem.size(), 1, gpu_data); + const void* cpu_data = mem.cpu_data(); + for (int i = 0; i < mem.size(); ++i) { + EXPECT_EQ((static_cast(cpu_data))[i], 1); + } + EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); + + gpu_data = mem.mutable_gpu_data(); + EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_GPU); + caffe_gpu_memset(mem.size(), 2, gpu_data); + cpu_data = mem.cpu_data(); + for (int i = 0; i < mem.size(); ++i) { + EXPECT_EQ((static_cast(cpu_data))[i], 2); + } + EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); +} + +#endif + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_tanh_layer.cpp b/3rdparty/caffe/src/caffe/test/test_tanh_layer.cpp new file mode 100644 index 00000000..bb8699a8 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_tanh_layer.cpp @@ -0,0 +1,101 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/tanh_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +double tanh_naive(double x) { + if (x < -40) { + // avoid negative overflow + return -1; + } else if (x > 40) { + // avoid positive overflow + return 1; + } else { + // exact expression for tanh, which is unstable for large x + double exp2x = exp(2 * x); + return (exp2x - 1.0) / (exp2x + 1.0); + } +} + +template +class TanHLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + TanHLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + FillerParameter filler_param; + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~TanHLayerTest() { delete blob_bottom_; delete blob_top_; } + + void TestForward(Dtype filler_std) { + FillerParameter filler_param; + filler_param.set_std(filler_std); + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + + LayerParameter layer_param; + TanHLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + const Dtype min_precision = 1e-5; + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + Dtype expected_value = tanh_naive(bottom_data[i]); + Dtype precision = std::max( + Dtype(std::abs(expected_value * Dtype(1e-4))), min_precision); + EXPECT_NEAR(expected_value, top_data[i], precision); + } + } + + void TestBackward(Dtype filler_std) { + FillerParameter filler_param; + filler_param.set_std(filler_std); + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + + LayerParameter layer_param; + TanHLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2, 1701); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(TanHLayerTest, TestDtypesAndDevices); + +TYPED_TEST(TanHLayerTest, TestTanH) { + this->TestForward(1.0); +} + +TYPED_TEST(TanHLayerTest, TestTanHOverflow) { + // this will fail if tanh overflow is not properly handled + this->TestForward(10000.0); +} + +TYPED_TEST(TanHLayerTest, TestTanHGradient) { + this->TestBackward(1.0); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_threshold_layer.cpp b/3rdparty/caffe/src/caffe/test/test_threshold_layer.cpp new file mode 100644 index 00000000..1e84cc5a --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_threshold_layer.cpp @@ -0,0 +1,98 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/threshold_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class ThresholdLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + ThresholdLayerTest() + : blob_bottom_(new Blob(2, 3, 6, 5)), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~ThresholdLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ThresholdLayerTest, TestDtypesAndDevices); + + +TYPED_TEST(ThresholdLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ThresholdLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_->channels()); + EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_->height()); + EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_->width()); +} + +TYPED_TEST(ThresholdLayerTest, Test) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ThresholdLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + const Dtype threshold_ = layer_param.threshold_param().threshold(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_GE(top_data[i], 0.); + EXPECT_LE(top_data[i], 1.); + if (top_data[i] == 0) { + EXPECT_LE(bottom_data[i], threshold_); + } + if (top_data[i] == 1) { + EXPECT_GT(bottom_data[i], threshold_); + } + } +} + +TYPED_TEST(ThresholdLayerTest, Test2) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ThresholdParameter* threshold_param = + layer_param.mutable_threshold_param(); + threshold_param->set_threshold(0.5); + ThresholdLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + const Dtype threshold_ = layer_param.threshold_param().threshold(); + EXPECT_FLOAT_EQ(threshold_, 0.5); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_GE(top_data[i], 0.); + EXPECT_LE(top_data[i], 1.); + if (top_data[i] == 0) { + EXPECT_LE(bottom_data[i], threshold_); + } + if (top_data[i] == 1) { + EXPECT_GT(bottom_data[i], threshold_); + } + } +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_tile_layer.cpp b/3rdparty/caffe/src/caffe/test/test_tile_layer.cpp new file mode 100644 index 00000000..7ff75520 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_tile_layer.cpp @@ -0,0 +1,161 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/tile_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class TileLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + TileLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) {} + virtual void SetUp() { + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + FillerParameter filler_param; + filler_param.set_mean(0.0); + filler_param.set_std(1.0); + GaussianFiller filler(filler_param); + filler.Fill(blob_bottom_); + } + + virtual ~TileLayerTest() { + delete blob_bottom_; + delete blob_top_; + } + + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(TileLayerTest, TestDtypesAndDevices); + +TYPED_TEST(TileLayerTest, TestTrivialSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const int kNumTiles = 1; + layer_param.mutable_tile_param()->set_tiles(kNumTiles); + for (int i = 0; i < this->blob_bottom_->num_axes(); ++i) { + layer_param.mutable_tile_param()->set_axis(i); + TileLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), this->blob_bottom_->num_axes()); + for (int j = 0; j < this->blob_bottom_->num_axes(); ++j) { + EXPECT_EQ(this->blob_top_->shape(j), this->blob_bottom_->shape(j)); + } + } +} + +TYPED_TEST(TileLayerTest, TestSetup) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const int kNumTiles = 3; + layer_param.mutable_tile_param()->set_tiles(kNumTiles); + for (int i = 0; i < this->blob_bottom_->num_axes(); ++i) { + layer_param.mutable_tile_param()->set_axis(i); + TileLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_top_->num_axes(), this->blob_bottom_->num_axes()); + for (int j = 0; j < this->blob_bottom_->num_axes(); ++j) { + const int top_dim = + ((i == j) ? kNumTiles : 1) * this->blob_bottom_->shape(j); + EXPECT_EQ(top_dim, this->blob_top_->shape(j)); + } + } +} + +TYPED_TEST(TileLayerTest, TestForwardNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const int kTileAxis = 0; + const int kNumTiles = 3; + layer_param.mutable_tile_param()->set_axis(kTileAxis); + layer_param.mutable_tile_param()->set_tiles(kNumTiles); + TileLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_top_->num(); ++n) { + for (int c = 0; c < this->blob_top_->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + const int bottom_n = n % this->blob_bottom_->num(); + EXPECT_EQ(this->blob_bottom_->data_at(bottom_n, c, h, w), + this->blob_top_->data_at(n, c, h, w)); + } + } + } + } +} + +TYPED_TEST(TileLayerTest, TestForwardChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const int kNumTiles = 3; + layer_param.mutable_tile_param()->set_tiles(kNumTiles); + TileLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_top_->num(); ++n) { + for (int c = 0; c < this->blob_top_->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + const int bottom_c = c % this->blob_bottom_->channels(); + EXPECT_EQ(this->blob_bottom_->data_at(n, bottom_c, h, w), + this->blob_top_->data_at(n, c, h, w)); + } + } + } + } +} + +TYPED_TEST(TileLayerTest, TestTrivialGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const int kNumTiles = 1; + layer_param.mutable_tile_param()->set_tiles(kNumTiles); + TileLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(TileLayerTest, TestGradientNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const int kTileAxis = 0; + const int kNumTiles = 3; + layer_param.mutable_tile_param()->set_axis(kTileAxis); + layer_param.mutable_tile_param()->set_tiles(kNumTiles); + TileLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(TileLayerTest, TestGradientChannels) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + const int kTileAxis = 1; + const int kNumTiles = 3; + layer_param.mutable_tile_param()->set_axis(kTileAxis); + layer_param.mutable_tile_param()->set_tiles(kNumTiles); + TileLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_upgrade_proto.cpp b/3rdparty/caffe/src/caffe/test/test_upgrade_proto.cpp new file mode 100644 index 00000000..9dcc2aa5 --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_upgrade_proto.cpp @@ -0,0 +1,2989 @@ +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/util/db.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +class PaddingLayerUpgradeTest : public ::testing::Test { + protected: + void RunPaddingUpgradeTest( + const string& input_param_string, const string& output_param_string) { + // Test that UpgradeV0PaddingLayers called on the proto specified by + // input_param_string results in the proto specified by + // output_param_string. + NetParameter input_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + input_param_string, &input_param)); + NetParameter expected_output_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + output_param_string, &expected_output_param)); + NetParameter actual_output_param; + UpgradeV0PaddingLayers(input_param, &actual_output_param); + EXPECT_EQ(expected_output_param.DebugString(), + actual_output_param.DebugString()); + // Also test idempotence. + NetParameter double_pad_upgrade_param; + UpgradeV0PaddingLayers(actual_output_param, &double_pad_upgrade_param); + EXPECT_EQ(actual_output_param.DebugString(), + double_pad_upgrade_param.DebugString()); + } +}; + +TEST_F(PaddingLayerUpgradeTest, TestSimple) { + const string& input_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'pad1' " + " type: 'padding' " + " pad: 2 " + " } " + " bottom: 'data' " + " top: 'pad1' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad1' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'conv1' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + const string& expected_output_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'conv1' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunPaddingUpgradeTest(input_proto, expected_output_proto); +} + +TEST_F(PaddingLayerUpgradeTest, TestTwoTops) { + const string& input_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'pad1' " + " type: 'padding' " + " pad: 2 " + " } " + " bottom: 'data' " + " top: 'pad1' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad1' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'conv1' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'conv2' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad1' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + const string& expected_output_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'conv1' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'conv2' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'data' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunPaddingUpgradeTest(input_proto, expected_output_proto); +} + +TEST_F(PaddingLayerUpgradeTest, TestImageNet) { + const string& input_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'relu1' " + " type: 'relu' " + " } " + " bottom: 'conv1' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'pool1' " + " type: 'pool' " + " pool: MAX " + " kernelsize: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1' " + "} " + "layers { " + " layer { " + " name: 'norm1' " + " type: 'lrn' " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1' " + " top: 'norm1' " + "} " + "layers { " + " layer { " + " name: 'pad2' " + " type: 'padding' " + " pad: 2 " + " } " + " bottom: 'norm1' " + " top: 'pad2' " + "} " + "layers { " + " layer { " + " name: 'conv2' " + " type: 'conv' " + " num_output: 256 " + " group: 2 " + " kernelsize: 5 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad2' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'relu2' " + " type: 'relu' " + " } " + " bottom: 'conv2' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'pool2' " + " type: 'pool' " + " pool: MAX " + " kernelsize: 3 " + " stride: 2 " + " } " + " bottom: 'conv2' " + " top: 'pool2' " + "} " + "layers { " + " layer { " + " name: 'norm2' " + " type: 'lrn' " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool2' " + " top: 'norm2' " + "} " + "layers { " + " layer { " + " name: 'pad3' " + " type: 'padding' " + " pad: 1 " + " } " + " bottom: 'norm2' " + " top: 'pad3' " + "} " + "layers { " + " layer { " + " name: 'conv3' " + " type: 'conv' " + " num_output: 384 " + " kernelsize: 3 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad3' " + " top: 'conv3' " + "} " + "layers { " + " layer { " + " name: 'relu3' " + " type: 'relu' " + " } " + " bottom: 'conv3' " + " top: 'conv3' " + "} " + "layers { " + " layer { " + " name: 'pad4' " + " type: 'padding' " + " pad: 1 " + " } " + " bottom: 'conv3' " + " top: 'pad4' " + "} " + "layers { " + " layer { " + " name: 'conv4' " + " type: 'conv' " + " num_output: 384 " + " group: 2 " + " kernelsize: 3 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad4' " + " top: 'conv4' " + "} " + "layers { " + " layer { " + " name: 'relu4' " + " type: 'relu' " + " } " + " bottom: 'conv4' " + " top: 'conv4' " + "} " + "layers { " + " layer { " + " name: 'pad5' " + " type: 'padding' " + " pad: 1 " + " } " + " bottom: 'conv4' " + " top: 'pad5' " + "} " + "layers { " + " layer { " + " name: 'conv5' " + " type: 'conv' " + " num_output: 256 " + " group: 2 " + " kernelsize: 3 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad5' " + " top: 'conv5' " + "} " + "layers { " + " layer { " + " name: 'relu5' " + " type: 'relu' " + " } " + " bottom: 'conv5' " + " top: 'conv5' " + "} " + "layers { " + " layer { " + " name: 'pool5' " + " type: 'pool' " + " kernelsize: 3 " + " pool: MAX " + " stride: 2 " + " } " + " bottom: 'conv5' " + " top: 'pool5' " + "} " + "layers { " + " layer { " + " name: 'fc6' " + " type: 'innerproduct' " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pool5' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'relu6' " + " type: 'relu' " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'drop6' " + " type: 'dropout' " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'fc7' " + " type: 'innerproduct' " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'fc6' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'relu7' " + " type: 'relu' " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'drop7' " + " type: 'dropout' " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'fc7' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + const string& expected_output_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'relu1' " + " type: 'relu' " + " } " + " bottom: 'conv1' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'pool1' " + " type: 'pool' " + " pool: MAX " + " kernelsize: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1' " + "} " + "layers { " + " layer { " + " name: 'norm1' " + " type: 'lrn' " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1' " + " top: 'norm1' " + "} " + "layers { " + " layer { " + " name: 'conv2' " + " type: 'conv' " + " num_output: 256 " + " group: 2 " + " kernelsize: 5 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'norm1' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'relu2' " + " type: 'relu' " + " } " + " bottom: 'conv2' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'pool2' " + " type: 'pool' " + " pool: MAX " + " kernelsize: 3 " + " stride: 2 " + " } " + " bottom: 'conv2' " + " top: 'pool2' " + "} " + "layers { " + " layer { " + " name: 'norm2' " + " type: 'lrn' " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool2' " + " top: 'norm2' " + "} " + "layers { " + " layer { " + " name: 'conv3' " + " type: 'conv' " + " num_output: 384 " + " kernelsize: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'norm2' " + " top: 'conv3' " + "} " + "layers { " + " layer { " + " name: 'relu3' " + " type: 'relu' " + " } " + " bottom: 'conv3' " + " top: 'conv3' " + "} " + "layers { " + " layer { " + " name: 'conv4' " + " type: 'conv' " + " num_output: 384 " + " group: 2 " + " kernelsize: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'conv3' " + " top: 'conv4' " + "} " + "layers { " + " layer { " + " name: 'relu4' " + " type: 'relu' " + " } " + " bottom: 'conv4' " + " top: 'conv4' " + "} " + "layers { " + " layer { " + " name: 'conv5' " + " type: 'conv' " + " num_output: 256 " + " group: 2 " + " kernelsize: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'conv4' " + " top: 'conv5' " + "} " + "layers { " + " layer { " + " name: 'relu5' " + " type: 'relu' " + " } " + " bottom: 'conv5' " + " top: 'conv5' " + "} " + "layers { " + " layer { " + " name: 'pool5' " + " type: 'pool' " + " kernelsize: 3 " + " pool: MAX " + " stride: 2 " + " } " + " bottom: 'conv5' " + " top: 'pool5' " + "} " + "layers { " + " layer { " + " name: 'fc6' " + " type: 'innerproduct' " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pool5' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'relu6' " + " type: 'relu' " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'drop6' " + " type: 'dropout' " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'fc7' " + " type: 'innerproduct' " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'fc6' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'relu7' " + " type: 'relu' " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'drop7' " + " type: 'dropout' " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'fc7' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunPaddingUpgradeTest(input_proto, expected_output_proto); +} + +class NetUpgradeTest : public ::testing::Test { + protected: + void RunV0UpgradeTest( + const string& input_param_string, const string& output_param_string) { + // Test that UpgradeV0Net called on the NetParameter proto specified by + // input_param_string results in the NetParameter proto specified by + // output_param_string. + NetParameter input_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + input_param_string, &input_param)); + NetParameter expected_output_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + output_param_string, &expected_output_param)); + NetParameter actual_output_param; + UpgradeV0Net(input_param, &actual_output_param); + EXPECT_EQ(expected_output_param.DebugString(), + actual_output_param.DebugString()); + } + + void RunV1UpgradeTest( + const string& input_param_string, const string& output_param_string) { + // Test that UpgradeV0Net called on the NetParameter proto specified by + // input_param_string results in the NetParameter proto specified by + // output_param_string. + NetParameter input_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + input_param_string, &input_param)); + NetParameter expected_output_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + output_param_string, &expected_output_param)); + NetParameter actual_output_param; + UpgradeV1Net(input_param, &actual_output_param); + EXPECT_EQ(expected_output_param.DebugString(), + actual_output_param.DebugString()); + } +}; + +TEST_F(NetUpgradeTest, TestSimple) { + const string& v0_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'pad1' " + " type: 'padding' " + " pad: 2 " + " } " + " bottom: 'data' " + " top: 'pad1' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad1' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'conv1' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + const string& expected_v1_proto = + "name: 'CaffeNet' " + "layers { " + " name: 'data' " + " type: DATA " + " data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " batch_size: 256 " + " } " + " transform_param { " + " crop_size: 227 " + " mirror: true " + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " name: 'conv1' " + " type: CONVOLUTION " + " convolution_param { " + " num_output: 96 " + " kernel_size: 11 " + " stride: 4 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " name: 'fc8' " + " type: INNER_PRODUCT " + " inner_product_param { " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'conv1' " + " top: 'fc8' " + "} " + "layers { " + " name: 'loss' " + " type: SOFTMAX_LOSS " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunV0UpgradeTest(v0_proto, expected_v1_proto); + + const string& expected_v2_proto = + "name: 'CaffeNet' " + "layer { " + " name: 'data' " + " type: 'Data' " + " data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " batch_size: 256 " + " } " + " transform_param { " + " crop_size: 227 " + " mirror: true " + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'conv1' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 96 " + " kernel_size: 11 " + " stride: 4 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layer { " + " name: 'fc8' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'conv1' " + " top: 'fc8' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunV1UpgradeTest(expected_v1_proto, expected_v2_proto); +} + +// Test any layer or parameter upgrades not covered by other tests. +TEST_F(NetUpgradeTest, TestAllParams) { + const string& input_proto = + "name: 'CaffeNet' " + "input: 'input_data' " + "input_dim: 64 " + "input_dim: 3 " + "input_dim: 32 " + "input_dim: 32 " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " scale: 0.25 " + " rand_skip: 73 " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'images' " + " type: 'images' " + " source: '/home/jiayq/Data/ILSVRC12/train-images' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " scale: 0.25 " + " rand_skip: 73 " + " shuffle_images: true " + " new_height: 40 " + " new_width: 30 " + " } " + " top: 'images_data' " + " top: 'images_label' " + "} " + "layers { " + " layer { " + " name: 'window_data' " + " type: 'window_data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " det_fg_threshold: 0.25 " + " det_bg_threshold: 0.75 " + " det_fg_fraction: 0.5 " + " det_context_pad: 16 " + " det_crop_mode: 'square' " + " } " + " top: 'window_data' " + " top: 'window_label' " + "} " + "layers { " + " layer { " + " name: 'hdf5data' " + " type: 'hdf5_data' " + " source: '/my/hdf5/data' " + " batchsize: 256 " + " } " + " top: 'hdf5data' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " biasterm: false " + " pad: 4 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 3. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'pool1ave' " + " type: 'pool' " + " pool: AVE " + " kernelsize: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1ave' " + "} " + "layers { " + " layer { " + " name: 'pool1stoch' " + " type: 'pool' " + " pool: STOCHASTIC " + " kernelsize: 4 " + " stride: 5 " + " } " + " bottom: 'conv1' " + " top: 'pool1stoch' " + "} " + "layers { " + " layer { " + " name: 'concat' " + " type: 'concat' " + " concat_dim: 2 " + " } " + " bottom: 'pool1ave' " + " bottom: 'pool1stoch' " + " top: 'pool1concat' " + "} " + "layers { " + " layer { " + " name: 'norm1' " + " type: 'lrn' " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1concat' " + " top: 'norm1' " + "} " + "layers { " + " layer { " + " name: 'fc6' " + " type: 'innerproduct' " + " num_output: 4096 " + " biasterm: false " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'norm1' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'relu6' " + " type: 'relu' " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'drop6' " + " type: 'dropout' " + " dropout_ratio: 0.2 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'infogain_loss' " + " source: '/my/infogain/matrix' " + " } " + " bottom: 'fc6' " + " bottom: 'label' " + "} " + "layers { " + " layer { " + " name: 'accuracy' " + " type: 'accuracy' " + " } " + "} " + "layers { " + " layer { " + " name: 'bnll' " + " type: 'bnll' " + " } " + "} " + "layers { " + " layer { " + " name: 'euclidean_loss' " + " type: 'euclidean_loss' " + " } " + "} " + "layers { " + " layer { " + " name: 'flatten' " + " type: 'flatten' " + " } " + "} " + "layers { " + " layer { " + " name: 'hdf5_output' " + " type: 'hdf5_output' " + " hdf5_output_param { " + " file_name: '/my/hdf5/output/file' " + " } " + " } " + "} " + "layers { " + " layer { " + " name: 'im2col' " + " type: 'im2col' " + " } " + "} " + "layers { " + " layer { " + " name: 'images' " + " type: 'images' " + " } " + "} " + "layers { " + " layer { " + " name: 'multinomial_logistic_loss' " + " type: 'multinomial_logistic_loss' " + " } " + "} " + "layers { " + " layer { " + " name: 'sigmoid' " + " type: 'sigmoid' " + " } " + "} " + "layers { " + " layer { " + " name: 'softmax' " + " type: 'softmax' " + " } " + "} " + "layers { " + " layer { " + " name: 'split' " + " type: 'split' " + " } " + "} " + "layers { " + " layer { " + " name: 'tanh' " + " type: 'tanh' " + " } " + "} "; + const string& expected_output_proto = + "name: 'CaffeNet' " + "input: 'input_data' " + "input_dim: 64 " + "input_dim: 3 " + "input_dim: 32 " + "input_dim: 32 " + "layers { " + " name: 'data' " + " type: DATA " + " data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " batch_size: 256 " + " rand_skip: 73 " + " } " + " transform_param { " + " crop_size: 227 " + " mirror: true " + " scale: 0.25 " + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " name: 'images' " + " type: IMAGE_DATA " + " image_data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-images' " + " batch_size: 256 " + " rand_skip: 73 " + " shuffle: true " + " new_height: 40 " + " new_width: 30 " + " } " + " transform_param {" + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " crop_size: 227 " + " mirror: true " + " scale: 0.25 " + " } " + " top: 'images_data' " + " top: 'images_label' " + "} " + "layers { " + " name: 'window_data' " + " type: WINDOW_DATA " + " window_data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " batch_size: 256 " + " fg_threshold: 0.25 " + " bg_threshold: 0.75 " + " fg_fraction: 0.5 " + " context_pad: 16 " + " crop_mode: 'square' " + " } " + " transform_param { " + " mirror: true " + " crop_size: 227 " + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " }" + " top: 'window_data' " + " top: 'window_label' " + "} " + "layers { " + " name: 'hdf5data' " + " type: HDF5_DATA " + " hdf5_data_param { " + " source: '/my/hdf5/data' " + " batch_size: 256 " + " } " + " top: 'hdf5data' " + "} " + "layers { " + " name: 'conv1' " + " type: CONVOLUTION " + " convolution_param { " + " num_output: 96 " + " bias_term: false " + " pad: 4 " + " kernel_size: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 3. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " name: 'pool1ave' " + " type: POOLING " + " pooling_param { " + " pool: AVE " + " kernel_size: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1ave' " + "} " + "layers { " + " name: 'pool1stoch' " + " type: POOLING " + " pooling_param { " + " pool: STOCHASTIC " + " kernel_size: 4 " + " stride: 5 " + " } " + " bottom: 'conv1' " + " top: 'pool1stoch' " + "} " + "layers { " + " name: 'concat' " + " type: CONCAT " + " concat_param { " + " concat_dim: 2 " + " } " + " bottom: 'pool1ave' " + " bottom: 'pool1stoch' " + " top: 'pool1concat' " + "} " + "layers { " + " name: 'norm1' " + " type: LRN " + " lrn_param { " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1concat' " + " top: 'norm1' " + "} " + "layers { " + " name: 'fc6' " + " type: INNER_PRODUCT " + " inner_product_param { " + " num_output: 4096 " + " bias_term: false " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'norm1' " + " top: 'fc6' " + "} " + "layers { " + " name: 'relu6' " + " type: RELU " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " name: 'drop6' " + " type: DROPOUT " + " dropout_param { " + " dropout_ratio: 0.2 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " name: 'loss' " + " type: INFOGAIN_LOSS " + " infogain_loss_param { " + " source: '/my/infogain/matrix' " + " } " + " bottom: 'fc6' " + " bottom: 'label' " + "} " + "layers { " + " name: 'accuracy' " + " type: ACCURACY " + "} " + "layers { " + " name: 'bnll' " + " type: BNLL " + "} " + "layers { " + " name: 'euclidean_loss' " + " type: EUCLIDEAN_LOSS " + "} " + "layers { " + " name: 'flatten' " + " type: FLATTEN " + "} " + "layers { " + " name: 'hdf5_output' " + " type: HDF5_OUTPUT " + " hdf5_output_param { " + " file_name: '/my/hdf5/output/file' " + " } " + "} " + "layers { " + " name: 'im2col' " + " type: IM2COL " + "} " + "layers { " + " name: 'images' " + " type: IMAGE_DATA " + "} " + "layers { " + " name: 'multinomial_logistic_loss' " + " type: MULTINOMIAL_LOGISTIC_LOSS " + "} " + "layers { " + " name: 'sigmoid' " + " type: SIGMOID " + "} " + "layers { " + " name: 'softmax' " + " type: SOFTMAX " + "} " + "layers { " + " name: 'split' " + " type: SPLIT " + "} " + "layers { " + " name: 'tanh' " + " type: TANH " + "} "; + this->RunV0UpgradeTest(input_proto, expected_output_proto); +} + +TEST_F(NetUpgradeTest, TestImageNet) { + const string& v0_proto = + "name: 'CaffeNet' " + "layers { " + " layer { " + " name: 'data' " + " type: 'data' " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " meanfile: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " batchsize: 256 " + " cropsize: 227 " + " mirror: true " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " layer { " + " name: 'conv1' " + " type: 'conv' " + " num_output: 96 " + " kernelsize: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'relu1' " + " type: 'relu' " + " } " + " bottom: 'conv1' " + " top: 'conv1' " + "} " + "layers { " + " layer { " + " name: 'pool1' " + " type: 'pool' " + " pool: MAX " + " kernelsize: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1' " + "} " + "layers { " + " layer { " + " name: 'norm1' " + " type: 'lrn' " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1' " + " top: 'norm1' " + "} " + "layers { " + " layer { " + " name: 'pad2' " + " type: 'padding' " + " pad: 2 " + " } " + " bottom: 'norm1' " + " top: 'pad2' " + "} " + "layers { " + " layer { " + " name: 'conv2' " + " type: 'conv' " + " num_output: 256 " + " group: 2 " + " kernelsize: 5 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad2' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'relu2' " + " type: 'relu' " + " } " + " bottom: 'conv2' " + " top: 'conv2' " + "} " + "layers { " + " layer { " + " name: 'pool2' " + " type: 'pool' " + " pool: MAX " + " kernelsize: 3 " + " stride: 2 " + " } " + " bottom: 'conv2' " + " top: 'pool2' " + "} " + "layers { " + " layer { " + " name: 'norm2' " + " type: 'lrn' " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool2' " + " top: 'norm2' " + "} " + "layers { " + " layer { " + " name: 'pad3' " + " type: 'padding' " + " pad: 1 " + " } " + " bottom: 'norm2' " + " top: 'pad3' " + "} " + "layers { " + " layer { " + " name: 'conv3' " + " type: 'conv' " + " num_output: 384 " + " kernelsize: 3 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad3' " + " top: 'conv3' " + "} " + "layers { " + " layer { " + " name: 'relu3' " + " type: 'relu' " + " } " + " bottom: 'conv3' " + " top: 'conv3' " + "} " + "layers { " + " layer { " + " name: 'pad4' " + " type: 'padding' " + " pad: 1 " + " } " + " bottom: 'conv3' " + " top: 'pad4' " + "} " + "layers { " + " layer { " + " name: 'conv4' " + " type: 'conv' " + " num_output: 384 " + " group: 2 " + " kernelsize: 3 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad4' " + " top: 'conv4' " + "} " + "layers { " + " layer { " + " name: 'relu4' " + " type: 'relu' " + " } " + " bottom: 'conv4' " + " top: 'conv4' " + "} " + "layers { " + " layer { " + " name: 'pad5' " + " type: 'padding' " + " pad: 1 " + " } " + " bottom: 'conv4' " + " top: 'pad5' " + "} " + "layers { " + " layer { " + " name: 'conv5' " + " type: 'conv' " + " num_output: 256 " + " group: 2 " + " kernelsize: 3 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pad5' " + " top: 'conv5' " + "} " + "layers { " + " layer { " + " name: 'relu5' " + " type: 'relu' " + " } " + " bottom: 'conv5' " + " top: 'conv5' " + "} " + "layers { " + " layer { " + " name: 'pool5' " + " type: 'pool' " + " kernelsize: 3 " + " pool: MAX " + " stride: 2 " + " } " + " bottom: 'conv5' " + " top: 'pool5' " + "} " + "layers { " + " layer { " + " name: 'fc6' " + " type: 'innerproduct' " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'pool5' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'relu6' " + " type: 'relu' " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'drop6' " + " type: 'dropout' " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " layer { " + " name: 'fc7' " + " type: 'innerproduct' " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'fc6' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'relu7' " + " type: 'relu' " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'drop7' " + " type: 'dropout' " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " layer { " + " name: 'fc8' " + " type: 'innerproduct' " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " } " + " bottom: 'fc7' " + " top: 'fc8' " + "} " + "layers { " + " layer { " + " name: 'loss' " + " type: 'softmax_loss' " + " } " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + const string& expected_v1_proto = + "name: 'CaffeNet' " + "layers { " + " name: 'data' " + " type: DATA " + " data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " batch_size: 256 " + " } " + " transform_param { " + " crop_size: 227 " + " mirror: true " + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layers { " + " name: 'conv1' " + " type: CONVOLUTION " + " convolution_param { " + " num_output: 96 " + " kernel_size: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layers { " + " name: 'relu1' " + " type: RELU " + " bottom: 'conv1' " + " top: 'conv1' " + "} " + "layers { " + " name: 'pool1' " + " type: POOLING " + " pooling_param { " + " pool: MAX " + " kernel_size: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1' " + "} " + "layers { " + " name: 'norm1' " + " type: LRN " + " lrn_param { " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1' " + " top: 'norm1' " + "} " + "layers { " + " name: 'conv2' " + " type: CONVOLUTION " + " convolution_param { " + " num_output: 256 " + " group: 2 " + " kernel_size: 5 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'norm1' " + " top: 'conv2' " + "} " + "layers { " + " name: 'relu2' " + " type: RELU " + " bottom: 'conv2' " + " top: 'conv2' " + "} " + "layers { " + " name: 'pool2' " + " type: POOLING " + " pooling_param { " + " pool: MAX " + " kernel_size: 3 " + " stride: 2 " + " } " + " bottom: 'conv2' " + " top: 'pool2' " + "} " + "layers { " + " name: 'norm2' " + " type: LRN " + " lrn_param { " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool2' " + " top: 'norm2' " + "} " + "layers { " + " name: 'conv3' " + " type: CONVOLUTION " + " convolution_param { " + " num_output: 384 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'norm2' " + " top: 'conv3' " + "} " + "layers { " + " name: 'relu3' " + " type: RELU " + " bottom: 'conv3' " + " top: 'conv3' " + "} " + "layers { " + " name: 'conv4' " + " type: CONVOLUTION " + " convolution_param { " + " num_output: 384 " + " group: 2 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'conv3' " + " top: 'conv4' " + "} " + "layers { " + " name: 'relu4' " + " type: RELU " + " bottom: 'conv4' " + " top: 'conv4' " + "} " + "layers { " + " name: 'conv5' " + " type: CONVOLUTION " + " convolution_param { " + " num_output: 256 " + " group: 2 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'conv4' " + " top: 'conv5' " + "} " + "layers { " + " name: 'relu5' " + " type: RELU " + " bottom: 'conv5' " + " top: 'conv5' " + "} " + "layers { " + " name: 'pool5' " + " type: POOLING " + " pooling_param { " + " kernel_size: 3 " + " pool: MAX " + " stride: 2 " + " } " + " bottom: 'conv5' " + " top: 'pool5' " + "} " + "layers { " + " name: 'fc6' " + " type: INNER_PRODUCT " + " inner_product_param { " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'pool5' " + " top: 'fc6' " + "} " + "layers { " + " name: 'relu6' " + " type: RELU " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " name: 'drop6' " + " type: DROPOUT " + " dropout_param { " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layers { " + " name: 'fc7' " + " type: INNER_PRODUCT " + " inner_product_param { " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'fc6' " + " top: 'fc7' " + "} " + "layers { " + " name: 'relu7' " + " type: RELU " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " name: 'drop7' " + " type: DROPOUT " + " dropout_param { " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layers { " + " name: 'fc8' " + " type: INNER_PRODUCT " + " inner_product_param { " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " blobs_lr: 1. " + " blobs_lr: 2. " + " weight_decay: 1. " + " weight_decay: 0. " + " bottom: 'fc7' " + " top: 'fc8' " + "} " + "layers { " + " name: 'loss' " + " type: SOFTMAX_LOSS " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunV0UpgradeTest(v0_proto, expected_v1_proto); + + const string& expected_v2_proto = + "name: 'CaffeNet' " + "layer { " + " name: 'data' " + " type: 'Data' " + " data_param { " + " source: '/home/jiayq/Data/ILSVRC12/train-leveldb' " + " batch_size: 256 " + " } " + " transform_param { " + " crop_size: 227 " + " mirror: true " + " mean_file: '/home/jiayq/Data/ILSVRC12/image_mean.binaryproto' " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'conv1' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 96 " + " kernel_size: 11 " + " stride: 4 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'data' " + " top: 'conv1' " + "} " + "layer { " + " name: 'relu1' " + " type: 'ReLU' " + " bottom: 'conv1' " + " top: 'conv1' " + "} " + "layer { " + " name: 'pool1' " + " type: 'Pooling' " + " pooling_param { " + " pool: MAX " + " kernel_size: 3 " + " stride: 2 " + " } " + " bottom: 'conv1' " + " top: 'pool1' " + "} " + "layer { " + " name: 'norm1' " + " type: 'LRN' " + " lrn_param { " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool1' " + " top: 'norm1' " + "} " + "layer { " + " name: 'conv2' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 256 " + " group: 2 " + " kernel_size: 5 " + " pad: 2 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'norm1' " + " top: 'conv2' " + "} " + "layer { " + " name: 'relu2' " + " type: 'ReLU' " + " bottom: 'conv2' " + " top: 'conv2' " + "} " + "layer { " + " name: 'pool2' " + " type: 'Pooling' " + " pooling_param { " + " pool: MAX " + " kernel_size: 3 " + " stride: 2 " + " } " + " bottom: 'conv2' " + " top: 'pool2' " + "} " + "layer { " + " name: 'norm2' " + " type: 'LRN' " + " lrn_param { " + " local_size: 5 " + " alpha: 0.0001 " + " beta: 0.75 " + " } " + " bottom: 'pool2' " + " top: 'norm2' " + "} " + "layer { " + " name: 'conv3' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 384 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'norm2' " + " top: 'conv3' " + "} " + "layer { " + " name: 'relu3' " + " type: 'ReLU' " + " bottom: 'conv3' " + " top: 'conv3' " + "} " + "layer { " + " name: 'conv4' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 384 " + " group: 2 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'conv3' " + " top: 'conv4' " + "} " + "layer { " + " name: 'relu4' " + " type: 'ReLU' " + " bottom: 'conv4' " + " top: 'conv4' " + "} " + "layer { " + " name: 'conv5' " + " type: 'Convolution' " + " convolution_param { " + " num_output: 256 " + " group: 2 " + " kernel_size: 3 " + " pad: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'conv4' " + " top: 'conv5' " + "} " + "layer { " + " name: 'relu5' " + " type: 'ReLU' " + " bottom: 'conv5' " + " top: 'conv5' " + "} " + "layer { " + " name: 'pool5' " + " type: 'Pooling' " + " pooling_param { " + " kernel_size: 3 " + " pool: MAX " + " stride: 2 " + " } " + " bottom: 'conv5' " + " top: 'pool5' " + "} " + "layer { " + " name: 'fc6' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'pool5' " + " top: 'fc6' " + "} " + "layer { " + " name: 'relu6' " + " type: 'ReLU' " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layer { " + " name: 'drop6' " + " type: 'Dropout' " + " dropout_param { " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc6' " + " top: 'fc6' " + "} " + "layer { " + " name: 'fc7' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 4096 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.005 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 1. " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'fc6' " + " top: 'fc7' " + "} " + "layer { " + " name: 'relu7' " + " type: 'ReLU' " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layer { " + " name: 'drop7' " + " type: 'Dropout' " + " dropout_param { " + " dropout_ratio: 0.5 " + " } " + " bottom: 'fc7' " + " top: 'fc7' " + "} " + "layer { " + " name: 'fc8' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1000 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " bias_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " param { " + " lr_mult: 1 " + " decay_mult: 1 " + " } " + " param { " + " lr_mult: 2 " + " decay_mult: 0 " + " } " + " bottom: 'fc7' " + " top: 'fc8' " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'fc8' " + " bottom: 'label' " + "} "; + this->RunV1UpgradeTest(expected_v1_proto, expected_v2_proto); +} // NOLINT(readability/fn_size) + +TEST_F(NetUpgradeTest, TestUpgradeV1LayerType) { + LayerParameter layer_param; + shared_ptr > layer; + for (int i = 0; i < V1LayerParameter_LayerType_LayerType_ARRAYSIZE; ++i) { + ASSERT_TRUE(V1LayerParameter_LayerType_IsValid(i)); + V1LayerParameter_LayerType v1_type = V1LayerParameter_LayerType(i); + string v2_layer_type(UpgradeV1LayerType(v1_type)); + if (v2_layer_type == "") { + EXPECT_EQ(V1LayerParameter_LayerType_NONE, v1_type); + continue; // Empty string isn't actually a valid layer type. + } + layer_param.set_type(v2_layer_type); + // Data layers expect a DB + if (v2_layer_type == "Data") { + #ifdef USE_LEVELDB + string tmp; + MakeTempDir(&tmp); + boost::scoped_ptr db(db::GetDB(DataParameter_DB_LEVELDB)); + db->Open(tmp, db::NEW); + db->Close(); + layer_param.mutable_data_param()->set_source(tmp); + #else + continue; + #endif // USE_LEVELDB + } + #ifndef USE_OPENCV + if (v2_layer_type == "ImageData" || v2_layer_type == "WindowData") { + continue; + } + #endif // !USE_OPENCV + layer = LayerRegistry::CreateLayer(layer_param); + EXPECT_EQ(v2_layer_type, layer->type()); + } +} + +class SolverTypeUpgradeTest : public ::testing::Test { + protected: + void RunSolverTypeUpgradeTest( + const string& input_param_string, const string& output_param_string) { + // Test upgrading old solver_type field (enum) to new type field (string) + SolverParameter input_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + input_param_string, &input_param)); + SolverParameter expected_output_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + output_param_string, &expected_output_param)); + SolverParameter actual_output_param = input_param; + UpgradeSolverType(&actual_output_param); + EXPECT_EQ(expected_output_param.DebugString(), + actual_output_param.DebugString()); + } +}; + +TEST_F(SolverTypeUpgradeTest, TestSimple) { + const char* old_type_vec[6] = { "SGD", "ADAGRAD", "NESTEROV", "RMSPROP", + "ADADELTA", "ADAM" }; + const char* new_type_vec[6] = { "SGD", "AdaGrad", "Nesterov", "RMSProp", + "AdaDelta", "Adam" }; + for (int i = 0; i < 6; ++i) { + const string& input_proto = + "net: 'examples/mnist/lenet_train_test.prototxt' " + "test_iter: 100 " + "test_interval: 500 " + "base_lr: 0.01 " + "momentum: 0.0 " + "weight_decay: 0.0005 " + "lr_policy: 'inv' " + "gamma: 0.0001 " + "power: 0.75 " + "display: 100 " + "max_iter: 10000 " + "snapshot: 5000 " + "snapshot_prefix: 'examples/mnist/lenet_rmsprop' " + "solver_mode: GPU " + "solver_type: " + std::string(old_type_vec[i]) + " "; + const string& expected_output_proto = + "net: 'examples/mnist/lenet_train_test.prototxt' " + "test_iter: 100 " + "test_interval: 500 " + "base_lr: 0.01 " + "momentum: 0.0 " + "weight_decay: 0.0005 " + "lr_policy: 'inv' " + "gamma: 0.0001 " + "power: 0.75 " + "display: 100 " + "max_iter: 10000 " + "snapshot: 5000 " + "snapshot_prefix: 'examples/mnist/lenet_rmsprop' " + "solver_mode: GPU " + "type: '" + std::string(new_type_vec[i]) + "' "; + this->RunSolverTypeUpgradeTest(input_proto, expected_output_proto); + } +} + +} // NOLINT(readability/fn_size) // namespace caffe diff --git a/3rdparty/caffe/src/caffe/test/test_util_blas.cpp b/3rdparty/caffe/src/caffe/test/test_util_blas.cpp new file mode 100644 index 00000000..9ee8818f --- /dev/null +++ b/3rdparty/caffe/src/caffe/test/test_util_blas.cpp @@ -0,0 +1,132 @@ +#ifndef CPU_ONLY // CPU-GPU test + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/util/device_alternate.hpp" +#include "caffe/util/math_functions.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; + +template +class GemmTest : public ::testing::Test {}; + +TYPED_TEST_CASE(GemmTest, TestDtypes); + +TYPED_TEST(GemmTest, TestGemmCPUGPU) { + Blob A(1, 1, 2, 3); + Blob B(1, 1, 3, 4); + Blob C(1, 1, 2, 4); + TypeParam data[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + TypeParam A_reshape_data[6] = {1, 4, 2, 5, 3, 6}; + TypeParam B_reshape_data[12] = {1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12}; + TypeParam result[8] = {38, 44, 50, 56, 83, 98, 113, 128}; + caffe_copy(6, data, A.mutable_cpu_data()); + caffe_copy(12, data, B.mutable_cpu_data()); + + if (sizeof(TypeParam) == 4 || CAFFE_TEST_CUDA_PROP.major >= 2) { + // [1, 2, 3; 4 5 6] * [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]; + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, 2, 4, 3, 1., + A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, 2, 4, 3, 1., + A.gpu_data(), B.gpu_data(), 0., C.mutable_gpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + + // Test when we have a transposed A + A.Reshape(1, 1, 3, 2); + caffe_copy(6, A_reshape_data, A.mutable_cpu_data()); + caffe_cpu_gemm(CblasTrans, CblasNoTrans, 2, 4, 3, 1., + A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + caffe_gpu_gemm(CblasTrans, CblasNoTrans, 2, 4, 3, 1., + A.gpu_data(), B.gpu_data(), 0., C.mutable_gpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + + // Test when we have a transposed A and a transposed B too + B.Reshape(1, 1, 4, 3); + caffe_copy(12, B_reshape_data, B.mutable_cpu_data()); + caffe_cpu_gemm(CblasTrans, CblasTrans, 2, 4, 3, 1., + A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + caffe_gpu_gemm(CblasTrans, CblasTrans, 2, 4, 3, 1., + A.gpu_data(), B.gpu_data(), 0., C.mutable_gpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + + // Test when we have a transposed B + A.Reshape(1, 1, 2, 3); + caffe_copy(6, data, A.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasTrans, 2, 4, 3, 1., + A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + caffe_gpu_gemm(CblasNoTrans, CblasTrans, 2, 4, 3, 1., + A.gpu_data(), B.gpu_data(), 0., C.mutable_gpu_data()); + for (int i = 0; i < 8; ++i) { + EXPECT_EQ(C.cpu_data()[i], result[i]); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + + +TYPED_TEST(GemmTest, TestGemvCPUGPU) { + Blob A(1, 1, 2, 3); + Blob x(1, 1, 1, 3); + Blob y(1, 1, 1, 2); + TypeParam data[6] = {1, 2, 3, 4, 5, 6}; + TypeParam result_2[2] = {14, 32}; + TypeParam result_3[3] = {9, 12, 15}; + caffe_copy(6, data, A.mutable_cpu_data()); + caffe_copy(3, data, x.mutable_cpu_data()); + + if (sizeof(TypeParam) == 4 || CAFFE_TEST_CUDA_PROP.major >= 2) { + caffe_cpu_gemv(CblasNoTrans, 2, 3, 1., A.cpu_data(), + x.cpu_data(), 0., y.mutable_cpu_data()); + for (int i = 0; i < 2; ++i) { + EXPECT_EQ(y.cpu_data()[i], result_2[i]); + } + caffe_gpu_gemv(CblasNoTrans, 2, 3, 1., A.gpu_data(), + x.gpu_data(), 0., y.mutable_gpu_data()); + for (int i = 0; i < 2; ++i) { + EXPECT_EQ(y.cpu_data()[i], result_2[i]); + } + + // Test transpose case + caffe_copy(2, data, y.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, 2, 3, 1., A.cpu_data(), + y.cpu_data(), 0., x.mutable_cpu_data()); + for (int i = 0; i < 3; ++i) { + EXPECT_EQ(x.cpu_data()[i], result_3[i]); + } + caffe_gpu_gemv(CblasTrans, 2, 3, 1., A.gpu_data(), + y.gpu_data(), 0., x.mutable_gpu_data()); + for (int i = 0; i < 3; ++i) { + EXPECT_EQ(x.cpu_data()[i], result_3[i]); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +} // namespace caffe + +#endif // CPU_ONLY diff --git a/3rdparty/caffe/src/caffe/util/benchmark.cpp b/3rdparty/caffe/src/caffe/util/benchmark.cpp new file mode 100644 index 00000000..d994225f --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/benchmark.cpp @@ -0,0 +1,169 @@ +#include + +#include "caffe/common.hpp" +#include "caffe/util/benchmark.hpp" + +namespace caffe { + +Timer::Timer() + : initted_(false), + running_(false), + has_run_at_least_once_(false) { + Init(); +} + +Timer::~Timer() { + if (Caffe::mode() == Caffe::GPU) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaEventDestroy(start_gpu_)); + CUDA_CHECK(cudaEventDestroy(stop_gpu_)); +#else + NO_GPU; +#endif + } +} + +void Timer::Start() { + if (!running()) { + if (Caffe::mode() == Caffe::GPU) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaEventRecord(start_gpu_, 0)); +#else + NO_GPU; +#endif + } else { + start_cpu_ = boost::posix_time::microsec_clock::local_time(); + } + running_ = true; + has_run_at_least_once_ = true; + } +} + +void Timer::Stop() { + if (running()) { + if (Caffe::mode() == Caffe::GPU) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaEventRecord(stop_gpu_, 0)); +#else + NO_GPU; +#endif + } else { + stop_cpu_ = boost::posix_time::microsec_clock::local_time(); + } + running_ = false; + } +} + + +float Timer::MicroSeconds() { + if (!has_run_at_least_once()) { + LOG(WARNING) << "Timer has never been run before reading time."; + return 0; + } + if (running()) { + Stop(); + } + if (Caffe::mode() == Caffe::GPU) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaEventSynchronize(stop_gpu_)); + CUDA_CHECK(cudaEventElapsedTime(&elapsed_milliseconds_, start_gpu_, + stop_gpu_)); + // Cuda only measure milliseconds + elapsed_microseconds_ = elapsed_milliseconds_ * 1000; +#else + NO_GPU; +#endif + } else { + elapsed_microseconds_ = (stop_cpu_ - start_cpu_).total_microseconds(); + } + return elapsed_microseconds_; +} + +float Timer::MilliSeconds() { + if (!has_run_at_least_once()) { + LOG(WARNING) << "Timer has never been run before reading time."; + return 0; + } + if (running()) { + Stop(); + } + if (Caffe::mode() == Caffe::GPU) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaEventSynchronize(stop_gpu_)); + CUDA_CHECK(cudaEventElapsedTime(&elapsed_milliseconds_, start_gpu_, + stop_gpu_)); +#else + NO_GPU; +#endif + } else { + elapsed_milliseconds_ = (stop_cpu_ - start_cpu_).total_milliseconds(); + } + return elapsed_milliseconds_; +} + +float Timer::Seconds() { + return MilliSeconds() / 1000.; +} + +void Timer::Init() { + if (!initted()) { + if (Caffe::mode() == Caffe::GPU) { +#ifndef CPU_ONLY + CUDA_CHECK(cudaEventCreate(&start_gpu_)); + CUDA_CHECK(cudaEventCreate(&stop_gpu_)); +#else + NO_GPU; +#endif + } + initted_ = true; + } +} + +CPUTimer::CPUTimer() { + this->initted_ = true; + this->running_ = false; + this->has_run_at_least_once_ = false; +} + +void CPUTimer::Start() { + if (!running()) { + this->start_cpu_ = boost::posix_time::microsec_clock::local_time(); + this->running_ = true; + this->has_run_at_least_once_ = true; + } +} + +void CPUTimer::Stop() { + if (running()) { + this->stop_cpu_ = boost::posix_time::microsec_clock::local_time(); + this->running_ = false; + } +} + +float CPUTimer::MilliSeconds() { + if (!has_run_at_least_once()) { + LOG(WARNING) << "Timer has never been run before reading time."; + return 0; + } + if (running()) { + Stop(); + } + this->elapsed_milliseconds_ = (this->stop_cpu_ - + this->start_cpu_).total_milliseconds(); + return this->elapsed_milliseconds_; +} + +float CPUTimer::MicroSeconds() { + if (!has_run_at_least_once()) { + LOG(WARNING) << "Timer has never been run before reading time."; + return 0; + } + if (running()) { + Stop(); + } + this->elapsed_microseconds_ = (this->stop_cpu_ - + this->start_cpu_).total_microseconds(); + return this->elapsed_microseconds_; +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/blocking_queue.cpp b/3rdparty/caffe/src/caffe/util/blocking_queue.cpp new file mode 100644 index 00000000..f69d2104 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/blocking_queue.cpp @@ -0,0 +1,91 @@ +#include +#include + +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/parallel.hpp" +#include "caffe/util/blocking_queue.hpp" + +namespace caffe { + +template +class BlockingQueue::sync { + public: + mutable boost::mutex mutex_; + boost::condition_variable condition_; +}; + +template +BlockingQueue::BlockingQueue() + : sync_(new sync()) { +} + +template +void BlockingQueue::push(const T& t) { + boost::mutex::scoped_lock lock(sync_->mutex_); + queue_.push(t); + lock.unlock(); + sync_->condition_.notify_one(); +} + +template +bool BlockingQueue::try_pop(T* t) { + boost::mutex::scoped_lock lock(sync_->mutex_); + + if (queue_.empty()) { + return false; + } + + *t = queue_.front(); + queue_.pop(); + return true; +} + +template +T BlockingQueue::pop(const string& log_on_wait) { + boost::mutex::scoped_lock lock(sync_->mutex_); + + while (queue_.empty()) { + if (!log_on_wait.empty()) { + LOG_EVERY_N(INFO, 1000)<< log_on_wait; + } + sync_->condition_.wait(lock); + } + + T t = queue_.front(); + queue_.pop(); + return t; +} + +template +bool BlockingQueue::try_peek(T* t) { + boost::mutex::scoped_lock lock(sync_->mutex_); + + if (queue_.empty()) { + return false; + } + + *t = queue_.front(); + return true; +} + +template +T BlockingQueue::peek() { + boost::mutex::scoped_lock lock(sync_->mutex_); + + while (queue_.empty()) { + sync_->condition_.wait(lock); + } + + return queue_.front(); +} + +template +size_t BlockingQueue::size() const { + boost::mutex::scoped_lock lock(sync_->mutex_); + return queue_.size(); +} + +template class BlockingQueue*>; +template class BlockingQueue*>; + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/cudnn.cpp b/3rdparty/caffe/src/caffe/util/cudnn.cpp new file mode 100644 index 00000000..1772f009 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/cudnn.cpp @@ -0,0 +1,23 @@ +#ifdef USE_CUDNN +#include "caffe/util/cudnn.hpp" + +namespace caffe { +namespace cudnn { + +float dataType::oneval = 1.0; +float dataType::zeroval = 0.0; +const void* dataType::one = + static_cast(&dataType::oneval); +const void* dataType::zero = + static_cast(&dataType::zeroval); + +double dataType::oneval = 1.0; +double dataType::zeroval = 0.0; +const void* dataType::one = + static_cast(&dataType::oneval); +const void* dataType::zero = + static_cast(&dataType::zeroval); + +} // namespace cudnn +} // namespace caffe +#endif diff --git a/3rdparty/caffe/src/caffe/util/db.cpp b/3rdparty/caffe/src/caffe/util/db.cpp new file mode 100644 index 00000000..7f22509b --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/db.cpp @@ -0,0 +1,41 @@ +#include "caffe/util/db.hpp" +#include "caffe/util/db_leveldb.hpp" +#include "caffe/util/db_lmdb.hpp" + +#include + +namespace caffe { namespace db { + +DB* GetDB(DataParameter::DB backend) { + switch (backend) { +#ifdef USE_LEVELDB + case DataParameter_DB_LEVELDB: + return new LevelDB(); +#endif // USE_LEVELDB +#ifdef USE_LMDB + case DataParameter_DB_LMDB: + return new LMDB(); +#endif // USE_LMDB + default: + LOG(FATAL) << "Unknown database backend"; + return NULL; + } +} + +DB* GetDB(const string& backend) { +#ifdef USE_LEVELDB + if (backend == "leveldb") { + return new LevelDB(); + } +#endif // USE_LEVELDB +#ifdef USE_LMDB + if (backend == "lmdb") { + return new LMDB(); + } +#endif // USE_LMDB + LOG(FATAL) << "Unknown database backend"; + return NULL; +} + +} // namespace db +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/db_leveldb.cpp b/3rdparty/caffe/src/caffe/util/db_leveldb.cpp new file mode 100644 index 00000000..f5c4d8a6 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/db_leveldb.cpp @@ -0,0 +1,23 @@ +#ifdef USE_LEVELDB +#include "caffe/util/db_leveldb.hpp" + +#include + +namespace caffe { namespace db { + +void LevelDB::Open(const string& source, Mode mode) { + leveldb::Options options; + options.block_size = 65536; + options.write_buffer_size = 268435456; + options.max_open_files = 100; + options.error_if_exists = mode == NEW; + options.create_if_missing = mode != READ; + leveldb::Status status = leveldb::DB::Open(options, source, &db_); + CHECK(status.ok()) << "Failed to open leveldb " << source + << std::endl << status.ToString(); + LOG(INFO) << "Opened leveldb " << source; +} + +} // namespace db +} // namespace caffe +#endif // USE_LEVELDB diff --git a/3rdparty/caffe/src/caffe/util/db_lmdb.cpp b/3rdparty/caffe/src/caffe/util/db_lmdb.cpp new file mode 100644 index 00000000..491a9bd0 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/db_lmdb.cpp @@ -0,0 +1,113 @@ +#ifdef USE_LMDB +#include "caffe/util/db_lmdb.hpp" + +#include + +#include + +namespace caffe { namespace db { + +void LMDB::Open(const string& source, Mode mode) { + MDB_CHECK(mdb_env_create(&mdb_env_)); + if (mode == NEW) { + CHECK_EQ(mkdir(source.c_str(), 0744), 0) << "mkdir " << source << " failed"; + } + int flags = 0; + if (mode == READ) { + flags = MDB_RDONLY | MDB_NOTLS; + } + int rc = mdb_env_open(mdb_env_, source.c_str(), flags, 0664); +#ifndef ALLOW_LMDB_NOLOCK + MDB_CHECK(rc); +#else + if (rc == EACCES) { + LOG(WARNING) << "Permission denied. Trying with MDB_NOLOCK ..."; + // Close and re-open environment handle + mdb_env_close(mdb_env_); + MDB_CHECK(mdb_env_create(&mdb_env_)); + // Try again with MDB_NOLOCK + flags |= MDB_NOLOCK; + MDB_CHECK(mdb_env_open(mdb_env_, source.c_str(), flags, 0664)); + } else { + MDB_CHECK(rc); + } +#endif + LOG_IF(INFO, Caffe::root_solver()) << "Opened lmdb " << source; +} + +LMDBCursor* LMDB::NewCursor() { + MDB_txn* mdb_txn; + MDB_cursor* mdb_cursor; + MDB_CHECK(mdb_txn_begin(mdb_env_, NULL, MDB_RDONLY, &mdb_txn)); + MDB_CHECK(mdb_dbi_open(mdb_txn, NULL, 0, &mdb_dbi_)); + MDB_CHECK(mdb_cursor_open(mdb_txn, mdb_dbi_, &mdb_cursor)); + return new LMDBCursor(mdb_txn, mdb_cursor); +} + +LMDBTransaction* LMDB::NewTransaction() { + return new LMDBTransaction(mdb_env_); +} + +void LMDBTransaction::Put(const string& key, const string& value) { + keys.push_back(key); + values.push_back(value); +} + +void LMDBTransaction::Commit() { + MDB_dbi mdb_dbi; + MDB_val mdb_key, mdb_data; + MDB_txn *mdb_txn; + + // Initialize MDB variables + MDB_CHECK(mdb_txn_begin(mdb_env_, NULL, 0, &mdb_txn)); + MDB_CHECK(mdb_dbi_open(mdb_txn, NULL, 0, &mdb_dbi)); + + for (int i = 0; i < keys.size(); i++) { + mdb_key.mv_size = keys[i].size(); + mdb_key.mv_data = const_cast(keys[i].data()); + mdb_data.mv_size = values[i].size(); + mdb_data.mv_data = const_cast(values[i].data()); + + // Add data to the transaction + int put_rc = mdb_put(mdb_txn, mdb_dbi, &mdb_key, &mdb_data, 0); + if (put_rc == MDB_MAP_FULL) { + // Out of memory - double the map size and retry + mdb_txn_abort(mdb_txn); + mdb_dbi_close(mdb_env_, mdb_dbi); + DoubleMapSize(); + Commit(); + return; + } + // May have failed for some other reason + MDB_CHECK(put_rc); + } + + // Commit the transaction + int commit_rc = mdb_txn_commit(mdb_txn); + if (commit_rc == MDB_MAP_FULL) { + // Out of memory - double the map size and retry + mdb_dbi_close(mdb_env_, mdb_dbi); + DoubleMapSize(); + Commit(); + return; + } + // May have failed for some other reason + MDB_CHECK(commit_rc); + + // Cleanup after successful commit + mdb_dbi_close(mdb_env_, mdb_dbi); + keys.clear(); + values.clear(); +} + +void LMDBTransaction::DoubleMapSize() { + struct MDB_envinfo current_info; + MDB_CHECK(mdb_env_info(mdb_env_, ¤t_info)); + size_t new_size = current_info.me_mapsize * 2; + DLOG(INFO) << "Doubling LMDB map size to " << (new_size>>20) << "MB ..."; + MDB_CHECK(mdb_env_set_mapsize(mdb_env_, new_size)); +} + +} // namespace db +} // namespace caffe +#endif // USE_LMDB diff --git a/3rdparty/caffe/src/caffe/util/hdf5.cpp b/3rdparty/caffe/src/caffe/util/hdf5.cpp new file mode 100644 index 00000000..ed737429 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/hdf5.cpp @@ -0,0 +1,209 @@ +#include "caffe/util/hdf5.hpp" + +#include +#include + +namespace caffe { + +// Verifies format of data stored in HDF5 file and reshapes blob accordingly. +template +void hdf5_load_nd_dataset_helper( + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, + Blob* blob, bool reshape) { + // Verify that the dataset exists. + CHECK(H5LTfind_dataset(file_id, dataset_name_)) + << "Failed to find HDF5 dataset " << dataset_name_; + // Verify that the number of dimensions is in the accepted range. + herr_t status; + int ndims; + status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); + CHECK_GE(status, 0) << "Failed to get dataset ndims for " << dataset_name_; + CHECK_GE(ndims, min_dim); + CHECK_LE(ndims, max_dim); + + // Verify that the data format is what we expect: float or double. + std::vector dims(ndims); + H5T_class_t class_; + status = H5LTget_dataset_info( + file_id, dataset_name_, dims.data(), &class_, NULL); + CHECK_GE(status, 0) << "Failed to get dataset info for " << dataset_name_; + switch (class_) { + case H5T_FLOAT: + { LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_FLOAT"; } + break; + case H5T_INTEGER: + { LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_INTEGER"; } + break; + case H5T_TIME: + LOG(FATAL) << "Unsupported datatype class: H5T_TIME"; + case H5T_STRING: + LOG(FATAL) << "Unsupported datatype class: H5T_STRING"; + case H5T_BITFIELD: + LOG(FATAL) << "Unsupported datatype class: H5T_BITFIELD"; + case H5T_OPAQUE: + LOG(FATAL) << "Unsupported datatype class: H5T_OPAQUE"; + case H5T_COMPOUND: + LOG(FATAL) << "Unsupported datatype class: H5T_COMPOUND"; + case H5T_REFERENCE: + LOG(FATAL) << "Unsupported datatype class: H5T_REFERENCE"; + case H5T_ENUM: + LOG(FATAL) << "Unsupported datatype class: H5T_ENUM"; + case H5T_VLEN: + LOG(FATAL) << "Unsupported datatype class: H5T_VLEN"; + case H5T_ARRAY: + LOG(FATAL) << "Unsupported datatype class: H5T_ARRAY"; + default: + LOG(FATAL) << "Datatype class unknown"; + } + + + vector blob_dims(dims.size()); + for (int i = 0; i < dims.size(); ++i) { + blob_dims[i] = dims[i]; + } + + if (reshape) { + blob->Reshape(blob_dims); + } else { + if (blob_dims != blob->shape()) { + // create shape string for error message + ostringstream stream; + int count = 1; + for (int i = 0; i < blob_dims.size(); ++i) { + stream << blob_dims[i] << " "; + count = count * blob_dims[i]; + } + stream << "(" << count << ")"; + string source_shape_string = stream.str(); + + CHECK(blob_dims == blob->shape()) << "Cannot load blob from hdf5; shape " + << "mismatch. Source shape is " << source_shape_string + << " target shape is " << blob->shape_string(); + } + } +} + +template <> +void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, + int min_dim, int max_dim, Blob* blob, bool reshape) { + hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob, + reshape); + herr_t status = H5LTread_dataset_float( + file_id, dataset_name_, blob->mutable_cpu_data()); + CHECK_GE(status, 0) << "Failed to read float dataset " << dataset_name_; +} + +template <> +void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, + int min_dim, int max_dim, Blob* blob, bool reshape) { + hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob, + reshape); + herr_t status = H5LTread_dataset_double( + file_id, dataset_name_, blob->mutable_cpu_data()); + CHECK_GE(status, 0) << "Failed to read double dataset " << dataset_name_; +} + +template <> +void hdf5_save_nd_dataset( + const hid_t file_id, const string& dataset_name, const Blob& blob, + bool write_diff) { + int num_axes = blob.num_axes(); + hsize_t *dims = new hsize_t[num_axes]; + for (int i = 0; i < num_axes; ++i) { + dims[i] = blob.shape(i); + } + const float* data; + if (write_diff) { + data = blob.cpu_diff(); + } else { + data = blob.cpu_data(); + } + herr_t status = H5LTmake_dataset_float( + file_id, dataset_name.c_str(), num_axes, dims, data); + CHECK_GE(status, 0) << "Failed to make float dataset " << dataset_name; + delete[] dims; +} + +template <> +void hdf5_save_nd_dataset( + hid_t file_id, const string& dataset_name, const Blob& blob, + bool write_diff) { + int num_axes = blob.num_axes(); + hsize_t *dims = new hsize_t[num_axes]; + for (int i = 0; i < num_axes; ++i) { + dims[i] = blob.shape(i); + } + const double* data; + if (write_diff) { + data = blob.cpu_diff(); + } else { + data = blob.cpu_data(); + } + herr_t status = H5LTmake_dataset_double( + file_id, dataset_name.c_str(), num_axes, dims, data); + CHECK_GE(status, 0) << "Failed to make double dataset " << dataset_name; + delete[] dims; +} + +string hdf5_load_string(hid_t loc_id, const string& dataset_name) { + // Get size of dataset + size_t size; + H5T_class_t class_; + herr_t status = \ + H5LTget_dataset_info(loc_id, dataset_name.c_str(), NULL, &class_, &size); + CHECK_GE(status, 0) << "Failed to get dataset info for " << dataset_name; + char *buf = new char[size]; + status = H5LTread_dataset_string(loc_id, dataset_name.c_str(), buf); + CHECK_GE(status, 0) + << "Failed to load int dataset with name " << dataset_name; + string val(buf); + delete[] buf; + return val; +} + +void hdf5_save_string(hid_t loc_id, const string& dataset_name, + const string& s) { + herr_t status = \ + H5LTmake_dataset_string(loc_id, dataset_name.c_str(), s.c_str()); + CHECK_GE(status, 0) + << "Failed to save string dataset with name " << dataset_name; +} + +int hdf5_load_int(hid_t loc_id, const string& dataset_name) { + int val; + herr_t status = H5LTread_dataset_int(loc_id, dataset_name.c_str(), &val); + CHECK_GE(status, 0) + << "Failed to load int dataset with name " << dataset_name; + return val; +} + +void hdf5_save_int(hid_t loc_id, const string& dataset_name, int i) { + hsize_t one = 1; + herr_t status = \ + H5LTmake_dataset_int(loc_id, dataset_name.c_str(), 1, &one, &i); + CHECK_GE(status, 0) + << "Failed to save int dataset with name " << dataset_name; +} + +int hdf5_get_num_links(hid_t loc_id) { + H5G_info_t info; + herr_t status = H5Gget_info(loc_id, &info); + CHECK_GE(status, 0) << "Error while counting HDF5 links."; + return info.nlinks; +} + +string hdf5_get_name_by_idx(hid_t loc_id, int idx) { + ssize_t str_size = H5Lget_name_by_idx( + loc_id, ".", H5_INDEX_NAME, H5_ITER_NATIVE, idx, NULL, 0, H5P_DEFAULT); + CHECK_GE(str_size, 0) << "Error retrieving HDF5 dataset at index " << idx; + char *c_str = new char[str_size+1]; + ssize_t status = H5Lget_name_by_idx( + loc_id, ".", H5_INDEX_NAME, H5_ITER_NATIVE, idx, c_str, str_size+1, + H5P_DEFAULT); + CHECK_GE(status, 0) << "Error retrieving HDF5 dataset at index " << idx; + string result(c_str); + delete[] c_str; + return result; +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/im2col.cpp b/3rdparty/caffe/src/caffe/util/im2col.cpp new file mode 100644 index 00000000..114a86cb --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/im2col.cpp @@ -0,0 +1,234 @@ +#include + +#include "caffe/util/im2col.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +// Function uses casting from int to unsigned to compare if value of +// parameter a is greater or equal to zero and lower than value of +// parameter b. The b parameter is of type signed and is always positive, +// therefore its value is always lower than 0x800... where casting +// negative value of a parameter converts it to value higher than 0x800... +// The casting allows to use one condition instead of two. +inline bool is_a_ge_zero_and_a_lt_b(int a, int b) { + return static_cast(a) < static_cast(b); +} + +template +void im2col_cpu(const Dtype* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, + const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, + Dtype* data_col) { + const int output_h = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + const int output_w = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; + const int channel_size = height * width; + for (int channel = channels; channel--; data_im += channel_size) { + for (int kernel_row = 0; kernel_row < kernel_h; kernel_row++) { + for (int kernel_col = 0; kernel_col < kernel_w; kernel_col++) { + int input_row = -pad_h + kernel_row * dilation_h; + for (int output_rows = output_h; output_rows; output_rows--) { + if (!is_a_ge_zero_and_a_lt_b(input_row, height)) { + for (int output_cols = output_w; output_cols; output_cols--) { + *(data_col++) = 0; + } + } else { + int input_col = -pad_w + kernel_col * dilation_w; + for (int output_col = output_w; output_col; output_col--) { + if (is_a_ge_zero_and_a_lt_b(input_col, width)) { + *(data_col++) = data_im[input_row * width + input_col]; + } else { + *(data_col++) = 0; + } + input_col += stride_w; + } + } + input_row += stride_h; + } + } + } + } +} + +// Explicit instantiation +template void im2col_cpu(const float* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + float* data_col); +template void im2col_cpu(const double* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + double* data_col); + +template +inline void im2col_nd_core_cpu(const Dtype* data_input, const bool im2col, + const int num_spatial_axes, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_output) { + if (!im2col) { + int im_size = im_shape[0]; + for (int i = 0; i < num_spatial_axes; ++i) { + im_size *= im_shape[1 + i]; + } + caffe_set(im_size, Dtype(0), data_output); + } + int kernel_size = 1; + for (int i = 0; i < num_spatial_axes; ++i) { + kernel_size *= kernel_shape[i]; + } + const int channels_col = col_shape[0]; + vector d_offset(num_spatial_axes, 0); + vector d_iter(num_spatial_axes, 0); + for (int c_col = 0; c_col < channels_col; ++c_col) { + // Loop over spatial axes in reverse order to compute a per-axis offset. + int offset = c_col; + for (int d_i = num_spatial_axes - 1; d_i >= 0; --d_i) { + if (d_i < num_spatial_axes - 1) { + offset /= kernel_shape[d_i + 1]; + } + d_offset[d_i] = offset % kernel_shape[d_i]; + } + for (bool incremented = true; incremented; ) { + // Loop over spatial axes in forward order to compute the indices in the + // image and column, and whether the index lies in the padding. + int index_col = c_col; + int index_im = c_col / kernel_size; + bool is_padding = false; + for (int d_i = 0; d_i < num_spatial_axes; ++d_i) { + const int d = d_iter[d_i]; + const int d_im = d * stride[d_i] - pad[d_i] + + d_offset[d_i] * dilation[d_i]; + is_padding |= d_im < 0 || d_im >= im_shape[d_i + 1]; + index_col *= col_shape[d_i + 1]; + index_col += d; + index_im *= im_shape[d_i + 1]; + index_im += d_im; + } + if (im2col) { + if (is_padding) { + data_output[index_col] = 0; + } else { + data_output[index_col] = data_input[index_im]; + } + } else if (!is_padding) { // col2im + data_output[index_im] += data_input[index_col]; + } + // Loop over spatial axes in reverse order to choose an index, + // like counting. + incremented = false; + for (int d_i = num_spatial_axes - 1; d_i >= 0; --d_i) { + const int d_max = col_shape[d_i + 1]; + DCHECK_LT(d_iter[d_i], d_max); + if (d_iter[d_i] == d_max - 1) { + d_iter[d_i] = 0; + } else { // d_iter[d_i] < d_max - 1 + ++d_iter[d_i]; + incremented = true; + break; + } + } + } // while(incremented) { + } // for (int c = 0; c < channels_col; ++c) { +} + +template +void im2col_nd_cpu(const Dtype* data_im, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_col) { + const bool kIm2Col = true; + im2col_nd_core_cpu(data_im, kIm2Col, num_spatial_axes, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); +} + +// Explicit instantiation +template void im2col_nd_cpu(const float* data_im, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, float* data_col); +template void im2col_nd_cpu(const double* data_im, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, double* data_col); + +template +void col2im_cpu(const Dtype* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, + const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, + Dtype* data_im) { + caffe_set(height * width * channels, Dtype(0), data_im); + const int output_h = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + const int output_w = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; + const int channel_size = height * width; + for (int channel = channels; channel--; data_im += channel_size) { + for (int kernel_row = 0; kernel_row < kernel_h; kernel_row++) { + for (int kernel_col = 0; kernel_col < kernel_w; kernel_col++) { + int input_row = -pad_h + kernel_row * dilation_h; + for (int output_rows = output_h; output_rows; output_rows--) { + if (!is_a_ge_zero_and_a_lt_b(input_row, height)) { + data_col += output_w; + } else { + int input_col = -pad_w + kernel_col * dilation_w; + for (int output_col = output_w; output_col; output_col--) { + if (is_a_ge_zero_and_a_lt_b(input_col, width)) { + data_im[input_row * width + input_col] += *data_col; + } + data_col++; + input_col += stride_w; + } + } + input_row += stride_h; + } + } + } + } +} + +// Explicit instantiation +template void col2im_cpu(const float* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + float* data_im); +template void col2im_cpu(const double* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + double* data_im); + +template +void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_im) { + const bool kIm2Col = false; + im2col_nd_core_cpu(data_col, kIm2Col, num_spatial_axes, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); +} + +// Explicit instantiation +template void col2im_nd_cpu(const float* data_col, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, float* data_im); +template void col2im_nd_cpu(const double* data_col, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, double* data_im); + + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/im2col.cu b/3rdparty/caffe/src/caffe/util/im2col.cu new file mode 100644 index 00000000..a8f30a02 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/im2col.cu @@ -0,0 +1,512 @@ +#include + +#include "caffe/common.hpp" +#include "caffe/util/im2col.hpp" + +namespace caffe { + +template +__global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, + const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, + const int height_col, const int width_col, + Dtype* data_col) { + CUDA_KERNEL_LOOP(index, n) { + const int h_index = index / width_col; + const int h_col = h_index % height_col; + const int w_col = index % width_col; + const int c_im = h_index / height_col; + const int c_col = c_im * kernel_h * kernel_w; + const int h_offset = h_col * stride_h - pad_h; + const int w_offset = w_col * stride_w - pad_w; + Dtype* data_col_ptr = data_col; + data_col_ptr += (c_col * height_col + h_col) * width_col + w_col; + const Dtype* data_im_ptr = data_im; + data_im_ptr += (c_im * height + h_offset) * width + w_offset; + for (int i = 0; i < kernel_h; ++i) { + for (int j = 0; j < kernel_w; ++j) { + int h_im = h_offset + i * dilation_h; + int w_im = w_offset + j * dilation_w; + *data_col_ptr = + (h_im >= 0 && w_im >= 0 && h_im < height && w_im < width) ? + data_im_ptr[i * dilation_h * width + j * dilation_w] : 0; + data_col_ptr += height_col * width_col; + } + } + } +} + +template +void im2col_gpu(const Dtype* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, + const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, + Dtype* data_col) { + // We are going to launch channels * height_col * width_col kernels, each + // kernel responsible for copying a single-channel grid. + int height_col = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + int width_col = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; + int num_kernels = channels * height_col * width_col; + // NOLINT_NEXT_LINE(whitespace/operators) + im2col_gpu_kernel<<>>( + num_kernels, data_im, height, width, kernel_h, kernel_w, pad_h, + pad_w, stride_h, stride_w, dilation_h, dilation_w, height_col, + width_col, data_col); + CUDA_POST_KERNEL_CHECK; +} + +// Explicit instantiation +template void im2col_gpu(const float* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, float* data_col); +template void im2col_gpu(const double* data_im, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, double* data_col); + +template +__global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_col) { + int d_temp[num_axes]; // NOLINT(runtime/arrays) + int d_iter[num_axes]; // NOLINT(runtime/arrays) + + __shared__ int shared_dilation[num_axes]; + __shared__ int shared_kernel_shape[num_axes]; + __shared__ int shared_pad[num_axes]; + __shared__ int shared_stride[num_axes]; + __shared__ int shared_col_shape[num_axes + 1]; + __shared__ int shared_im_shape[num_axes + 1]; + + if (threadIdx.x < num_axes) { + shared_dilation[threadIdx.x] = dilation[threadIdx.x]; + shared_kernel_shape[threadIdx.x] = kernel_shape[threadIdx.x]; + shared_pad[threadIdx.x] = pad[threadIdx.x]; + shared_stride[threadIdx.x] = stride[threadIdx.x]; + } + if (threadIdx.x < num_axes + 1) { + shared_col_shape[threadIdx.x] = col_shape[threadIdx.x]; + shared_im_shape[threadIdx.x] = im_shape[threadIdx.x]; + } + __syncthreads(); + + int i; + CUDA_KERNEL_LOOP(index, n) { + // Initialize channel_in, computed in the loop below, with intermediate + // computations used to compute the spatial indices. + int channel_in = index; + int channel_out = 1; + for (i = num_axes - 1; i >= 0; --i) { + d_temp[i] = channel_in % shared_col_shape[i + 1]; + channel_in /= shared_col_shape[i + 1]; + channel_out *= shared_kernel_shape[i]; + } + channel_out *= channel_in; + int data_col_inc = 1; + for (i = 0; i < num_axes; ++i) { + channel_out *= shared_col_shape[i + 1]; + channel_out += d_temp[i]; + d_temp[i] = d_temp[i] * shared_stride[i] - shared_pad[i]; + channel_in *= shared_im_shape[i + 1]; + channel_in += d_temp[i]; + data_col_inc *= shared_col_shape[i + 1]; + d_iter[i] = 0; + } + Dtype* data_col_ptr = data_col + channel_out; + const Dtype* data_im_ptr = data_im + channel_in; + bool incremented; + do { + bool in_range = true; + for (i = 0; i < num_axes; ++i) { + const int d_iter_im = d_iter[i] * shared_dilation[i] + d_temp[i]; + in_range &= d_iter_im >= 0 && d_iter_im < shared_im_shape[i + 1]; + if (!in_range) { break; } + } + if (in_range) { + int data_im_offset = d_iter[0] * shared_dilation[0]; + for (i = 1; i < num_axes; ++i) { + data_im_offset *= shared_im_shape[i + 1]; + data_im_offset += d_iter[i] * shared_dilation[i]; + } + *data_col_ptr = data_im_ptr[data_im_offset]; + } else { + *data_col_ptr = 0; + } + data_col_ptr += data_col_inc; + incremented = false; + for (i = num_axes - 1; i >= 0; --i) { + const int d_max = shared_kernel_shape[i]; + if (d_iter[i] == d_max - 1) { + d_iter[i] = 0; + } else { // d_iter[i] < d_max - 1 + ++d_iter[i]; + incremented = true; + break; + } + } // for (int i = num_axes - 1; i >= 0; --i) + } while (incremented); // do + } // CUDA_KERNEL_LOOP(index, n) +} + +template +void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes, + const int num_kernels, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_col) { + // num_axes should be smaller than block size + DCHECK_LT(num_spatial_axes, CAFFE_CUDA_NUM_THREADS); + switch (num_spatial_axes) { + case 1: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 2: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 3: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 4: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 5: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 6: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 7: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 8: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 9: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + case 10: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_col); + break; + default: + LOG(FATAL) << "im2col_nd_gpu does not support computation with " + << num_spatial_axes << " spatial axes"; + } + CUDA_POST_KERNEL_CHECK; +} + +// Explicit instantiation +template void im2col_nd_gpu(const float* data_im, + const int num_spatial_axes, const int col_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, float* data_col); +template void im2col_nd_gpu(const double* data_im, + const int num_spatial_axes, const int col_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, double* data_col); + +template +__global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, + const int height, const int width, const int channels, + const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, + const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, + const int height_col, const int width_col, + Dtype* data_im) { + CUDA_KERNEL_LOOP(index, n) { + Dtype val = 0; + const int w_im = index % width + pad_w; + const int h_im = (index / width) % height + pad_h; + const int c_im = index / (width * height); + int kernel_extent_w = (kernel_w - 1) * dilation_w + 1; + int kernel_extent_h = (kernel_h - 1) * dilation_h + 1; + // compute the start and end of the output + const int w_col_start = + (w_im < kernel_extent_w) ? 0 : (w_im - kernel_extent_w) / stride_w + 1; + const int w_col_end = min(w_im / stride_w + 1, width_col); + const int h_col_start = + (h_im < kernel_extent_h) ? 0 : (h_im - kernel_extent_h) / stride_h + 1; + const int h_col_end = min(h_im / stride_h + 1, height_col); + // TODO: use LCM of stride and dilation to avoid unnecessary loops + for (int h_col = h_col_start; h_col < h_col_end; h_col += 1) { + for (int w_col = w_col_start; w_col < w_col_end; w_col += 1) { + int h_k = (h_im - h_col * stride_h); + int w_k = (w_im - w_col * stride_w); + if (h_k % dilation_h == 0 && w_k % dilation_w == 0) { + h_k /= dilation_h; + w_k /= dilation_w; + int data_col_index = (((c_im * kernel_h + h_k) * kernel_w + w_k) * + height_col + h_col) * width_col + w_col; + val += data_col[data_col_index]; + } + } + } + data_im[index] = val; + } +} + +template +void col2im_gpu(const Dtype* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_im) { + int height_col = (height + 2 * pad_h - (dilation_h * (kernel_h - 1) + 1)) / + stride_h + 1; + int width_col = (width + 2 * pad_w - (dilation_w * (kernel_w - 1) + 1)) / + stride_w + 1; + int num_kernels = channels * height * width; + // To avoid involving atomic operations, we will launch one kernel per + // bottom dimension, and then in the kernel add up the top dimensions. + // NOLINT_NEXT_LINE(whitespace/operators) + col2im_gpu_kernel<<>>( + num_kernels, data_col, height, width, channels, kernel_h, kernel_w, + pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w, + height_col, width_col, data_im); + CUDA_POST_KERNEL_CHECK; +} + +// Explicit instantiation +template void col2im_gpu(const float* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + float* data_im); +template void col2im_gpu(const double* data_col, const int channels, + const int height, const int width, const int kernel_h, const int kernel_w, + const int pad_h, const int pad_w, const int stride_h, + const int stride_w, const int dilation_h, const int dilation_w, + double* data_im); + +template +__global__ void col2im_nd_gpu_kernel(const int n, const Dtype* data_col, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_im) { + int d_im[num_axes]; // NOLINT(runtime/arrays) + int d_col_iter[num_axes]; // NOLINT(runtime/arrays) + int d_col_start[num_axes]; // NOLINT(runtime/arrays) + int d_col_end[num_axes]; // NOLINT(runtime/arrays) + + __shared__ int shared_dilation[num_axes]; + __shared__ int shared_kernel_shape[num_axes]; + __shared__ int shared_pad[num_axes]; + __shared__ int shared_stride[num_axes]; + __shared__ int shared_col_shape[num_axes + 1]; + __shared__ int shared_im_shape[num_axes + 1]; + + if (threadIdx.x < num_axes) { + shared_dilation[threadIdx.x] = dilation[threadIdx.x]; + shared_kernel_shape[threadIdx.x] = kernel_shape[threadIdx.x]; + shared_pad[threadIdx.x] = pad[threadIdx.x]; + shared_stride[threadIdx.x] = stride[threadIdx.x]; + } + if (threadIdx.x < num_axes + 1) { + shared_col_shape[threadIdx.x] = col_shape[threadIdx.x]; + shared_im_shape[threadIdx.x] = im_shape[threadIdx.x]; + } + __syncthreads(); + + CUDA_KERNEL_LOOP(index, n) { + // Initialize channel_in, computed in the loop below, with intermediate + // computations used to compute the spatial indices. + int c_im = index; + // Calculate d_im (image dimensions). + for (int i = num_axes - 1; i >= 0; --i) { + d_im[i] = c_im % shared_im_shape[i + 1] + shared_pad[i]; + c_im /= shared_im_shape[i + 1]; + } + // Calculate col start/end indices. + bool done = false; + for (int i = 0; i < num_axes; ++i) { + const int kernel_extent = + shared_dilation[i] * (shared_kernel_shape[i] - 1) + 1; + d_col_start[i] = d_col_iter[i] = + (d_im[i] < kernel_extent) ? 0 : + (d_im[i] - kernel_extent) / shared_stride[i] + 1; + d_col_end[i] = + min(d_im[i] / shared_stride[i] + 1, shared_col_shape[i + 1]); + if (d_col_start[i] >= d_col_end[i]) { + // Skip computation if the dimension is 0 at any spatial axis -- + // final val will be 0. + data_im[index] = 0; + done = true; + break; // for (int i = 0; i < num_axes; ++i) + } + } + if (done) { + continue; // CUDA_KERNEL_LOOP(index, n) + } + // Loop over the col to compute the output val. + Dtype val = 0; + bool incremented = true; + bool skip = false; + do { + // Compute the final offset. + int final_offset = 0; + int kernel_shape_prod = 1; + int kernel_index; + for (int i = num_axes - 1; i >= 0; --i) { + kernel_index = d_im[i] - d_col_iter[i] * shared_stride[i]; + if (kernel_index % shared_dilation[i]) { + skip = true; + break; + } else { + kernel_index /= shared_dilation[i]; + final_offset += kernel_index * kernel_shape_prod; + kernel_shape_prod *= shared_kernel_shape[i]; + } + } + if (!skip) { + final_offset += kernel_shape_prod * c_im; + for (int i = 0; i < num_axes; ++i) { + final_offset *= shared_col_shape[i + 1]; + final_offset += d_col_iter[i]; + } + val += data_col[final_offset]; + } + skip = false; + incremented = false; + for (int i = num_axes - 1; i >= 0; --i) { + const int d_max = d_col_end[i]; + if (d_col_iter[i] == d_max - 1) { + d_col_iter[i] = d_col_start[i]; + } else { // d_col_iter[i] < d_max - 1 + ++d_col_iter[i]; + incremented = true; + break; // for (int i = num_axes - 1; i >= 0; --i) + } + } // for (int i = num_axes - 1; i >= 0; --i) + } while (incremented); + data_im[index] = val; + } // CUDA_KERNEL_LOOP(index, n) +} + +template +void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, + const int im_size, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, Dtype* data_im) { + // num_axes should be smaller than block size + DCHECK_LT(num_spatial_axes, CAFFE_CUDA_NUM_THREADS); + switch (num_spatial_axes) { + case 1: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 2: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 3: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 4: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 5: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 6: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 7: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 8: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 9: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + case 10: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, dilation, data_im); + break; + default: + LOG(FATAL) << "col2im_nd_gpu does not support computation with " + << num_spatial_axes << " spatial axes"; + } + CUDA_POST_KERNEL_CHECK; +} + +// Explicit instantiation +template void col2im_nd_gpu(const float* data_col, + const int num_spatial_axes, const int im_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, float* data_im); +template void col2im_nd_gpu(const double* data_col, + const int num_spatial_axes, const int im_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + const int* dilation, double* data_im); + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/insert_splits.cpp b/3rdparty/caffe/src/caffe/util/insert_splits.cpp new file mode 100644 index 00000000..7a899c69 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/insert_splits.cpp @@ -0,0 +1,126 @@ +#include +#include +#include +#include +#include + +#include "caffe/common.hpp" +#include "caffe/util/insert_splits.hpp" + +namespace caffe { + +void InsertSplits(const NetParameter& param, NetParameter* param_split) { + // Initialize by copying from the input NetParameter. + param_split->CopyFrom(param); + param_split->clear_layer(); + map > blob_name_to_last_top_idx; + map, pair > bottom_idx_to_source_top_idx; + map, int> top_idx_to_bottom_count; + map, float> top_idx_to_loss_weight; + map, int> top_idx_to_bottom_split_idx; + map layer_idx_to_layer_name; + for (int i = 0; i < param.layer_size(); ++i) { + const LayerParameter& layer_param = param.layer(i); + layer_idx_to_layer_name[i] = layer_param.name(); + for (int j = 0; j < layer_param.bottom_size(); ++j) { + const string& blob_name = layer_param.bottom(j); + if (blob_name_to_last_top_idx.find(blob_name) == + blob_name_to_last_top_idx.end()) { + LOG(FATAL) << "Unknown bottom blob '" << blob_name << "' (layer '" + << layer_param.name() << "', bottom index " << j << ")"; + } + const pair& bottom_idx = make_pair(i, j); + const pair& top_idx = blob_name_to_last_top_idx[blob_name]; + bottom_idx_to_source_top_idx[bottom_idx] = top_idx; + ++top_idx_to_bottom_count[top_idx]; + } + for (int j = 0; j < layer_param.top_size(); ++j) { + const string& blob_name = layer_param.top(j); + blob_name_to_last_top_idx[blob_name] = make_pair(i, j); + } + // A use of a top blob as a loss should be handled similarly to the use of + // a top blob as a bottom blob to another layer. + const int last_loss = + std::min(layer_param.loss_weight_size(), layer_param.top_size()); + for (int j = 0; j < last_loss; ++j) { + const string& blob_name = layer_param.top(j); + const pair& top_idx = blob_name_to_last_top_idx[blob_name]; + top_idx_to_loss_weight[top_idx] = layer_param.loss_weight(j); + if (top_idx_to_loss_weight[top_idx]) { + ++top_idx_to_bottom_count[top_idx]; + } + } + } + for (int i = 0; i < param.layer_size(); ++i) { + LayerParameter* layer_param = param_split->add_layer(); + layer_param->CopyFrom(param.layer(i)); + // Replace any shared bottom blobs with split layer outputs. + for (int j = 0; j < layer_param->bottom_size(); ++j) { + const pair& top_idx = + bottom_idx_to_source_top_idx[make_pair(i, j)]; + const int split_count = top_idx_to_bottom_count[top_idx]; + if (split_count > 1) { + const string& layer_name = layer_idx_to_layer_name[top_idx.first]; + const string& blob_name = layer_param->bottom(j); + layer_param->set_bottom(j, SplitBlobName(layer_name, + blob_name, top_idx.second, top_idx_to_bottom_split_idx[top_idx]++)); + } + } + // Create split layer for any top blobs used by other layer as bottom + // blobs more than once. + for (int j = 0; j < layer_param->top_size(); ++j) { + const pair& top_idx = make_pair(i, j); + const int split_count = top_idx_to_bottom_count[top_idx]; + if (split_count > 1) { + const string& layer_name = layer_idx_to_layer_name[i]; + const string& blob_name = layer_param->top(j); + LayerParameter* split_layer_param = param_split->add_layer(); + const float loss_weight = top_idx_to_loss_weight[top_idx]; + ConfigureSplitLayer(layer_name, blob_name, j, split_count, + loss_weight, split_layer_param); + if (loss_weight) { + layer_param->clear_loss_weight(); + top_idx_to_bottom_split_idx[top_idx]++; + } + } + } + } +} + +void ConfigureSplitLayer(const string& layer_name, const string& blob_name, + const int blob_idx, const int split_count, const float loss_weight, + LayerParameter* split_layer_param) { + split_layer_param->Clear(); + split_layer_param->add_bottom(blob_name); + split_layer_param->set_name(SplitLayerName(layer_name, blob_name, blob_idx)); + split_layer_param->set_type("Split"); + for (int k = 0; k < split_count; ++k) { + split_layer_param->add_top( + SplitBlobName(layer_name, blob_name, blob_idx, k)); + if (loss_weight) { + if (k == 0) { + split_layer_param->add_loss_weight(loss_weight); + } else { + split_layer_param->add_loss_weight(0); + } + } + } +} + +string SplitLayerName(const string& layer_name, const string& blob_name, + const int blob_idx) { + ostringstream split_layer_name; + split_layer_name << blob_name << "_" << layer_name << "_" << blob_idx + << "_split"; + return split_layer_name.str(); +} + +string SplitBlobName(const string& layer_name, const string& blob_name, + const int blob_idx, const int split_idx) { + ostringstream split_blob_name; + split_blob_name << blob_name << "_" << layer_name << "_" << blob_idx + << "_split_" << split_idx; + return split_blob_name.str(); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/io.cpp b/3rdparty/caffe/src/caffe/util/io.cpp new file mode 100644 index 00000000..835d2d4e --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/io.cpp @@ -0,0 +1,238 @@ +#include +#include +#include +#include +#ifdef USE_OPENCV +#include +#include +#include +#include +#endif // USE_OPENCV +#include + +#include +#include // NOLINT(readability/streams) +#include +#include + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/io.hpp" + +const int kProtoReadBytesLimit = INT_MAX; // Max size of 2 GB minus 1 byte. + +namespace caffe { + +using google::protobuf::io::FileInputStream; +using google::protobuf::io::FileOutputStream; +using google::protobuf::io::ZeroCopyInputStream; +using google::protobuf::io::CodedInputStream; +using google::protobuf::io::ZeroCopyOutputStream; +using google::protobuf::io::CodedOutputStream; +using google::protobuf::Message; + +bool ReadProtoFromTextFile(const char* filename, Message* proto) { + int fd = open(filename, O_RDONLY); + CHECK_NE(fd, -1) << "File not found: " << filename; + FileInputStream* input = new FileInputStream(fd); + bool success = google::protobuf::TextFormat::Parse(input, proto); + delete input; + close(fd); + return success; +} + +void WriteProtoToTextFile(const Message& proto, const char* filename) { + int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644); + FileOutputStream* output = new FileOutputStream(fd); + CHECK(google::protobuf::TextFormat::Print(proto, output)); + delete output; + close(fd); +} + +bool ReadProtoFromBinaryFile(const char* filename, Message* proto) { + int fd = open(filename, O_RDONLY); + CHECK_NE(fd, -1) << "File not found: " << filename; + ZeroCopyInputStream* raw_input = new FileInputStream(fd); + CodedInputStream* coded_input = new CodedInputStream(raw_input); + coded_input->SetTotalBytesLimit(kProtoReadBytesLimit, 536870912); + + bool success = proto->ParseFromCodedStream(coded_input); + + delete coded_input; + delete raw_input; + close(fd); + return success; +} + +void WriteProtoToBinaryFile(const Message& proto, const char* filename) { + fstream output(filename, ios::out | ios::trunc | ios::binary); + CHECK(proto.SerializeToOstream(&output)); +} + +#ifdef USE_OPENCV +cv::Mat ReadImageToCVMat(const string& filename, + const int height, const int width, const bool is_color) { + cv::Mat cv_img; + int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR : + CV_LOAD_IMAGE_GRAYSCALE); + cv::Mat cv_img_origin = cv::imread(filename, cv_read_flag); + if (!cv_img_origin.data) { + LOG(ERROR) << "Could not open or find file " << filename; + return cv_img_origin; + } + if (height > 0 && width > 0) { + cv::resize(cv_img_origin, cv_img, cv::Size(width, height)); + } else { + cv_img = cv_img_origin; + } + return cv_img; +} + +cv::Mat ReadImageToCVMat(const string& filename, + const int height, const int width) { + return ReadImageToCVMat(filename, height, width, true); +} + +cv::Mat ReadImageToCVMat(const string& filename, + const bool is_color) { + return ReadImageToCVMat(filename, 0, 0, is_color); +} + +cv::Mat ReadImageToCVMat(const string& filename) { + return ReadImageToCVMat(filename, 0, 0, true); +} + +// Do the file extension and encoding match? +static bool matchExt(const std::string & fn, + std::string en) { + size_t p = fn.rfind('.'); + std::string ext = p != fn.npos ? fn.substr(p) : fn; + std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower); + std::transform(en.begin(), en.end(), en.begin(), ::tolower); + if ( ext == en ) + return true; + if ( en == "jpg" && ext == "jpeg" ) + return true; + return false; +} + +bool ReadImageToDatum(const string& filename, const int label, + const int height, const int width, const bool is_color, + const std::string & encoding, Datum* datum) { + cv::Mat cv_img = ReadImageToCVMat(filename, height, width, is_color); + if (cv_img.data) { + if (encoding.size()) { + if ( (cv_img.channels() == 3) == is_color && !height && !width && + matchExt(filename, encoding) ) + return ReadFileToDatum(filename, label, datum); + std::vector buf; + cv::imencode("."+encoding, cv_img, buf); + datum->set_data(std::string(reinterpret_cast(&buf[0]), + buf.size())); + datum->set_label(label); + datum->set_encoded(true); + return true; + } + CVMatToDatum(cv_img, datum); + datum->set_label(label); + return true; + } else { + return false; + } +} +#endif // USE_OPENCV + +bool ReadFileToDatum(const string& filename, const int label, + Datum* datum) { + std::streampos size; + + fstream file(filename.c_str(), ios::in|ios::binary|ios::ate); + if (file.is_open()) { + size = file.tellg(); + std::string buffer(size, ' '); + file.seekg(0, ios::beg); + file.read(&buffer[0], size); + file.close(); + datum->set_data(buffer); + datum->set_label(label); + datum->set_encoded(true); + return true; + } else { + return false; + } +} + +#ifdef USE_OPENCV +cv::Mat DecodeDatumToCVMatNative(const Datum& datum) { + cv::Mat cv_img; + CHECK(datum.encoded()) << "Datum not encoded"; + const string& data = datum.data(); + std::vector vec_data(data.c_str(), data.c_str() + data.size()); + cv_img = cv::imdecode(vec_data, -1); + if (!cv_img.data) { + LOG(ERROR) << "Could not decode datum "; + } + return cv_img; +} +cv::Mat DecodeDatumToCVMat(const Datum& datum, bool is_color) { + cv::Mat cv_img; + CHECK(datum.encoded()) << "Datum not encoded"; + const string& data = datum.data(); + std::vector vec_data(data.c_str(), data.c_str() + data.size()); + int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR : + CV_LOAD_IMAGE_GRAYSCALE); + cv_img = cv::imdecode(vec_data, cv_read_flag); + if (!cv_img.data) { + LOG(ERROR) << "Could not decode datum "; + } + return cv_img; +} + +// If Datum is encoded will decoded using DecodeDatumToCVMat and CVMatToDatum +// If Datum is not encoded will do nothing +bool DecodeDatumNative(Datum* datum) { + if (datum->encoded()) { + cv::Mat cv_img = DecodeDatumToCVMatNative((*datum)); + CVMatToDatum(cv_img, datum); + return true; + } else { + return false; + } +} +bool DecodeDatum(Datum* datum, bool is_color) { + if (datum->encoded()) { + cv::Mat cv_img = DecodeDatumToCVMat((*datum), is_color); + CVMatToDatum(cv_img, datum); + return true; + } else { + return false; + } +} + +void CVMatToDatum(const cv::Mat& cv_img, Datum* datum) { + CHECK(cv_img.depth() == CV_8U) << "Image data type must be unsigned byte"; + datum->set_channels(cv_img.channels()); + datum->set_height(cv_img.rows); + datum->set_width(cv_img.cols); + datum->clear_data(); + datum->clear_float_data(); + datum->set_encoded(false); + int datum_channels = datum->channels(); + int datum_height = datum->height(); + int datum_width = datum->width(); + int datum_size = datum_channels * datum_height * datum_width; + std::string buffer(datum_size, ' '); + for (int h = 0; h < datum_height; ++h) { + const uchar* ptr = cv_img.ptr(h); + int img_index = 0; + for (int w = 0; w < datum_width; ++w) { + for (int c = 0; c < datum_channels; ++c) { + int datum_index = (c * datum_height + h) * datum_width + w; + buffer[datum_index] = static_cast(ptr[img_index++]); + } + } + } + datum->set_data(buffer); +} +#endif // USE_OPENCV +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/math_functions.cpp b/3rdparty/caffe/src/caffe/util/math_functions.cpp new file mode 100644 index 00000000..59625bc0 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/math_functions.cpp @@ -0,0 +1,385 @@ +#include +#include + +#include + +#include "caffe/common.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/util/rng.hpp" + +namespace caffe { + +template<> +void caffe_cpu_gemm(const CBLAS_TRANSPOSE TransA, + const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, + const float alpha, const float* A, const float* B, const float beta, + float* C) { + int lda = (TransA == CblasNoTrans) ? K : M; + int ldb = (TransB == CblasNoTrans) ? N : K; + cblas_sgemm(CblasRowMajor, TransA, TransB, M, N, K, alpha, A, lda, B, + ldb, beta, C, N); +} + +template<> +void caffe_cpu_gemm(const CBLAS_TRANSPOSE TransA, + const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, + const double alpha, const double* A, const double* B, const double beta, + double* C) { + int lda = (TransA == CblasNoTrans) ? K : M; + int ldb = (TransB == CblasNoTrans) ? N : K; + cblas_dgemm(CblasRowMajor, TransA, TransB, M, N, K, alpha, A, lda, B, + ldb, beta, C, N); +} + +template <> +void caffe_cpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, + const int N, const float alpha, const float* A, const float* x, + const float beta, float* y) { + cblas_sgemv(CblasRowMajor, TransA, M, N, alpha, A, N, x, 1, beta, y, 1); +} + +template <> +void caffe_cpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, + const int N, const double alpha, const double* A, const double* x, + const double beta, double* y) { + cblas_dgemv(CblasRowMajor, TransA, M, N, alpha, A, N, x, 1, beta, y, 1); +} + +template <> +void caffe_axpy(const int N, const float alpha, const float* X, + float* Y) { cblas_saxpy(N, alpha, X, 1, Y, 1); } + +template <> +void caffe_axpy(const int N, const double alpha, const double* X, + double* Y) { cblas_daxpy(N, alpha, X, 1, Y, 1); } + +template +void caffe_set(const int N, const Dtype alpha, Dtype* Y) { + if (alpha == 0) { + memset(Y, 0, sizeof(Dtype) * N); // NOLINT(caffe/alt_fn) + return; + } + for (int i = 0; i < N; ++i) { + Y[i] = alpha; + } +} + +template void caffe_set(const int N, const int alpha, int* Y); +template void caffe_set(const int N, const float alpha, float* Y); +template void caffe_set(const int N, const double alpha, double* Y); + +template <> +void caffe_add_scalar(const int N, const float alpha, float* Y) { + for (int i = 0; i < N; ++i) { + Y[i] += alpha; + } +} + +template <> +void caffe_add_scalar(const int N, const double alpha, double* Y) { + for (int i = 0; i < N; ++i) { + Y[i] += alpha; + } +} + +template +void caffe_copy(const int N, const Dtype* X, Dtype* Y) { + if (X != Y) { + if (Caffe::mode() == Caffe::GPU) { +#ifndef CPU_ONLY + // NOLINT_NEXT_LINE(caffe/alt_fn) + CUDA_CHECK(cudaMemcpy(Y, X, sizeof(Dtype) * N, cudaMemcpyDefault)); +#else + NO_GPU; +#endif + } else { + memcpy(Y, X, sizeof(Dtype) * N); // NOLINT(caffe/alt_fn) + } + } +} + +template void caffe_copy(const int N, const int* X, int* Y); +template void caffe_copy(const int N, const unsigned int* X, + unsigned int* Y); +template void caffe_copy(const int N, const float* X, float* Y); +template void caffe_copy(const int N, const double* X, double* Y); + +template <> +void caffe_scal(const int N, const float alpha, float *X) { + cblas_sscal(N, alpha, X, 1); +} + +template <> +void caffe_scal(const int N, const double alpha, double *X) { + cblas_dscal(N, alpha, X, 1); +} + +template <> +void caffe_cpu_axpby(const int N, const float alpha, const float* X, + const float beta, float* Y) { + cblas_saxpby(N, alpha, X, 1, beta, Y, 1); +} + +template <> +void caffe_cpu_axpby(const int N, const double alpha, const double* X, + const double beta, double* Y) { + cblas_daxpby(N, alpha, X, 1, beta, Y, 1); +} + +template <> +void caffe_add(const int n, const float* a, const float* b, + float* y) { + vsAdd(n, a, b, y); +} + +template <> +void caffe_add(const int n, const double* a, const double* b, + double* y) { + vdAdd(n, a, b, y); +} + +template <> +void caffe_sub(const int n, const float* a, const float* b, + float* y) { + vsSub(n, a, b, y); +} + +template <> +void caffe_sub(const int n, const double* a, const double* b, + double* y) { + vdSub(n, a, b, y); +} + +template <> +void caffe_mul(const int n, const float* a, const float* b, + float* y) { + vsMul(n, a, b, y); +} + +template <> +void caffe_mul(const int n, const double* a, const double* b, + double* y) { + vdMul(n, a, b, y); +} + +template <> +void caffe_div(const int n, const float* a, const float* b, + float* y) { + vsDiv(n, a, b, y); +} + +template <> +void caffe_div(const int n, const double* a, const double* b, + double* y) { + vdDiv(n, a, b, y); +} + +template <> +void caffe_powx(const int n, const float* a, const float b, + float* y) { + vsPowx(n, a, b, y); +} + +template <> +void caffe_powx(const int n, const double* a, const double b, + double* y) { + vdPowx(n, a, b, y); +} + +template <> +void caffe_sqr(const int n, const float* a, float* y) { + vsSqr(n, a, y); +} + +template <> +void caffe_sqr(const int n, const double* a, double* y) { + vdSqr(n, a, y); +} + +template <> +void caffe_sqrt(const int n, const float* a, float* y) { + vsSqrt(n, a, y); +} + +template <> +void caffe_sqrt(const int n, const double* a, double* y) { + vdSqrt(n, a, y); +} + +template <> +void caffe_exp(const int n, const float* a, float* y) { + vsExp(n, a, y); +} + +template <> +void caffe_exp(const int n, const double* a, double* y) { + vdExp(n, a, y); +} + +template <> +void caffe_log(const int n, const float* a, float* y) { + vsLn(n, a, y); +} + +template <> +void caffe_log(const int n, const double* a, double* y) { + vdLn(n, a, y); +} + +template <> +void caffe_abs(const int n, const float* a, float* y) { + vsAbs(n, a, y); +} + +template <> +void caffe_abs(const int n, const double* a, double* y) { + vdAbs(n, a, y); +} + +unsigned int caffe_rng_rand() { + return (*caffe_rng())(); +} + +template +Dtype caffe_nextafter(const Dtype b) { + return boost::math::nextafter( + b, std::numeric_limits::max()); +} + +template +float caffe_nextafter(const float b); + +template +double caffe_nextafter(const double b); + +template +void caffe_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r) { + CHECK_GE(n, 0); + CHECK(r); + CHECK_LE(a, b); + boost::uniform_real random_distribution(a, caffe_nextafter(b)); + boost::variate_generator > + variate_generator(caffe_rng(), random_distribution); + for (int i = 0; i < n; ++i) { + r[i] = variate_generator(); + } +} + +template +void caffe_rng_uniform(const int n, const float a, const float b, + float* r); + +template +void caffe_rng_uniform(const int n, const double a, const double b, + double* r); + +template +void caffe_rng_gaussian(const int n, const Dtype a, + const Dtype sigma, Dtype* r) { + CHECK_GE(n, 0); + CHECK(r); + CHECK_GT(sigma, 0); + boost::normal_distribution random_distribution(a, sigma); + boost::variate_generator > + variate_generator(caffe_rng(), random_distribution); + for (int i = 0; i < n; ++i) { + r[i] = variate_generator(); + } +} + +template +void caffe_rng_gaussian(const int n, const float mu, + const float sigma, float* r); + +template +void caffe_rng_gaussian(const int n, const double mu, + const double sigma, double* r); + +template +void caffe_rng_bernoulli(const int n, const Dtype p, int* r) { + CHECK_GE(n, 0); + CHECK(r); + CHECK_GE(p, 0); + CHECK_LE(p, 1); + boost::bernoulli_distribution random_distribution(p); + boost::variate_generator > + variate_generator(caffe_rng(), random_distribution); + for (int i = 0; i < n; ++i) { + r[i] = variate_generator(); + } +} + +template +void caffe_rng_bernoulli(const int n, const double p, int* r); + +template +void caffe_rng_bernoulli(const int n, const float p, int* r); + +template +void caffe_rng_bernoulli(const int n, const Dtype p, unsigned int* r) { + CHECK_GE(n, 0); + CHECK(r); + CHECK_GE(p, 0); + CHECK_LE(p, 1); + boost::bernoulli_distribution random_distribution(p); + boost::variate_generator > + variate_generator(caffe_rng(), random_distribution); + for (int i = 0; i < n; ++i) { + r[i] = static_cast(variate_generator()); + } +} + +template +void caffe_rng_bernoulli(const int n, const double p, unsigned int* r); + +template +void caffe_rng_bernoulli(const int n, const float p, unsigned int* r); + +template <> +float caffe_cpu_strided_dot(const int n, const float* x, const int incx, + const float* y, const int incy) { + return cblas_sdot(n, x, incx, y, incy); +} + +template <> +double caffe_cpu_strided_dot(const int n, const double* x, + const int incx, const double* y, const int incy) { + return cblas_ddot(n, x, incx, y, incy); +} + +template +Dtype caffe_cpu_dot(const int n, const Dtype* x, const Dtype* y) { + return caffe_cpu_strided_dot(n, x, 1, y, 1); +} + +template +float caffe_cpu_dot(const int n, const float* x, const float* y); + +template +double caffe_cpu_dot(const int n, const double* x, const double* y); + +template <> +float caffe_cpu_asum(const int n, const float* x) { + return cblas_sasum(n, x, 1); +} + +template <> +double caffe_cpu_asum(const int n, const double* x) { + return cblas_dasum(n, x, 1); +} + +template <> +void caffe_cpu_scale(const int n, const float alpha, const float *x, + float* y) { + cblas_scopy(n, x, 1, y, 1); + cblas_sscal(n, alpha, y, 1); +} + +template <> +void caffe_cpu_scale(const int n, const double alpha, const double *x, + double* y) { + cblas_dcopy(n, x, 1, y, 1); + cblas_dscal(n, alpha, y, 1); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/math_functions.cu b/3rdparty/caffe/src/caffe/util/math_functions.cu new file mode 100644 index 00000000..314e6ba0 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/math_functions.cu @@ -0,0 +1,459 @@ +#include // CUDA's, not caffe's, for fabs, signbit +#include +#include // thrust::plus +#include + +#include + +#include "caffe/common.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template <> +void caffe_gpu_gemm(const CBLAS_TRANSPOSE TransA, + const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, + const float alpha, const float* A, const float* B, const float beta, + float* C) { + // Note that cublas follows fortran order. + int lda = (TransA == CblasNoTrans) ? K : M; + int ldb = (TransB == CblasNoTrans) ? N : K; + cublasOperation_t cuTransA = + (TransA == CblasNoTrans) ? CUBLAS_OP_N : CUBLAS_OP_T; + cublasOperation_t cuTransB = + (TransB == CblasNoTrans) ? CUBLAS_OP_N : CUBLAS_OP_T; + CUBLAS_CHECK(cublasSgemm(Caffe::cublas_handle(), cuTransB, cuTransA, + N, M, K, &alpha, B, ldb, A, lda, &beta, C, N)); +} + +template <> +void caffe_gpu_gemm(const CBLAS_TRANSPOSE TransA, + const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, + const double alpha, const double* A, const double* B, const double beta, + double* C) { + // Note that cublas follows fortran order. + int lda = (TransA == CblasNoTrans) ? K : M; + int ldb = (TransB == CblasNoTrans) ? N : K; + cublasOperation_t cuTransA = + (TransA == CblasNoTrans) ? CUBLAS_OP_N : CUBLAS_OP_T; + cublasOperation_t cuTransB = + (TransB == CblasNoTrans) ? CUBLAS_OP_N : CUBLAS_OP_T; + CUBLAS_CHECK(cublasDgemm(Caffe::cublas_handle(), cuTransB, cuTransA, + N, M, K, &alpha, B, ldb, A, lda, &beta, C, N)); +} + +template <> +void caffe_gpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, + const int N, const float alpha, const float* A, const float* x, + const float beta, float* y) { + cublasOperation_t cuTransA = + (TransA == CblasNoTrans) ? CUBLAS_OP_T : CUBLAS_OP_N; + CUBLAS_CHECK(cublasSgemv(Caffe::cublas_handle(), cuTransA, N, M, &alpha, + A, N, x, 1, &beta, y, 1)); +} + +template <> +void caffe_gpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, + const int N, const double alpha, const double* A, const double* x, + const double beta, double* y) { + cublasOperation_t cuTransA = + (TransA == CblasNoTrans) ? CUBLAS_OP_T : CUBLAS_OP_N; + CUBLAS_CHECK(cublasDgemv(Caffe::cublas_handle(), cuTransA, N, M, &alpha, + A, N, x, 1, &beta, y, 1)); +} + +template <> +void caffe_gpu_axpy(const int N, const float alpha, const float* X, + float* Y) { + CUBLAS_CHECK(cublasSaxpy(Caffe::cublas_handle(), N, &alpha, X, 1, Y, 1)); +} + +template <> +void caffe_gpu_axpy(const int N, const double alpha, const double* X, + double* Y) { + CUBLAS_CHECK(cublasDaxpy(Caffe::cublas_handle(), N, &alpha, X, 1, Y, 1)); +} + +void caffe_gpu_memcpy(const size_t N, const void* X, void* Y) { + if (X != Y) { + CUDA_CHECK(cudaMemcpy(Y, X, N, cudaMemcpyDefault)); // NOLINT(caffe/alt_fn) + } +} + +template <> +void caffe_gpu_scal(const int N, const float alpha, float *X) { + CUBLAS_CHECK(cublasSscal(Caffe::cublas_handle(), N, &alpha, X, 1)); +} + +template <> +void caffe_gpu_scal(const int N, const double alpha, double *X) { + CUBLAS_CHECK(cublasDscal(Caffe::cublas_handle(), N, &alpha, X, 1)); +} + +template <> +void caffe_gpu_scal(const int N, const float alpha, float* X, + cudaStream_t str) { + cudaStream_t initial_stream; + CUBLAS_CHECK(cublasGetStream(Caffe::cublas_handle(), &initial_stream)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), str)); + CUBLAS_CHECK(cublasSscal(Caffe::cublas_handle(), N, &alpha, X, 1)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), initial_stream)); +} + +template <> +void caffe_gpu_scal(const int N, const double alpha, double* X, + cudaStream_t str) { + cudaStream_t initial_stream; + CUBLAS_CHECK(cublasGetStream(Caffe::cublas_handle(), &initial_stream)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), str)); + CUBLAS_CHECK(cublasDscal(Caffe::cublas_handle(), N, &alpha, X, 1)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), initial_stream)); +} + +template <> +void caffe_gpu_axpby(const int N, const float alpha, const float* X, + const float beta, float* Y) { + caffe_gpu_scal(N, beta, Y); + caffe_gpu_axpy(N, alpha, X, Y); +} + +template <> +void caffe_gpu_axpby(const int N, const double alpha, const double* X, + const double beta, double* Y) { + caffe_gpu_scal(N, beta, Y); + caffe_gpu_axpy(N, alpha, X, Y); +} + +template <> +void caffe_gpu_dot(const int n, const float* x, const float* y, + float* out) { + CUBLAS_CHECK(cublasSdot(Caffe::cublas_handle(), n, x, 1, y, 1, out)); +} + +template <> +void caffe_gpu_dot(const int n, const double* x, const double* y, + double * out) { + CUBLAS_CHECK(cublasDdot(Caffe::cublas_handle(), n, x, 1, y, 1, out)); +} + +template <> +void caffe_gpu_asum(const int n, const float* x, float* y) { + CUBLAS_CHECK(cublasSasum(Caffe::cublas_handle(), n, x, 1, y)); +} + +template <> +void caffe_gpu_asum(const int n, const double* x, double* y) { + CUBLAS_CHECK(cublasDasum(Caffe::cublas_handle(), n, x, 1, y)); +} + +template <> +void caffe_gpu_scale(const int n, const float alpha, const float *x, + float* y) { + CUBLAS_CHECK(cublasScopy(Caffe::cublas_handle(), n, x, 1, y, 1)); + CUBLAS_CHECK(cublasSscal(Caffe::cublas_handle(), n, &alpha, y, 1)); +} + +template <> +void caffe_gpu_scale(const int n, const double alpha, const double *x, + double* y) { + CUBLAS_CHECK(cublasDcopy(Caffe::cublas_handle(), n, x, 1, y, 1)); + CUBLAS_CHECK(cublasDscal(Caffe::cublas_handle(), n, &alpha, y, 1)); +} + +template +__global__ void set_kernel(const int n, const Dtype alpha, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = alpha; + } +} + +template +void caffe_gpu_set(const int N, const Dtype alpha, Dtype* Y) { + if (alpha == 0) { + CUDA_CHECK(cudaMemset(Y, 0, sizeof(Dtype) * N)); // NOLINT(caffe/alt_fn) + return; + } + // NOLINT_NEXT_LINE(whitespace/operators) + set_kernel<<>>( + N, alpha, Y); +} + +template void caffe_gpu_set(const int N, const int alpha, int* Y); +template void caffe_gpu_set(const int N, const float alpha, float* Y); +template void caffe_gpu_set(const int N, const double alpha, double* Y); + +template +__global__ void add_scalar_kernel(const int n, const Dtype alpha, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] += alpha; + } +} + +template <> +void caffe_gpu_add_scalar(const int N, const float alpha, float* Y) { + // NOLINT_NEXT_LINE(whitespace/operators) + add_scalar_kernel<<>>( + N, alpha, Y); +} + +template <> +void caffe_gpu_add_scalar(const int N, const double alpha, double* Y) { + // NOLINT_NEXT_LINE(whitespace/operators) + add_scalar_kernel<<>>( + N, alpha, Y); +} + +template +__global__ void add_kernel(const int n, const Dtype* a, + const Dtype* b, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = a[index] + b[index]; + } +} + +template <> +void caffe_gpu_add(const int N, const float* a, const float* b, + float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + add_kernel<<>>( + N, a, b, y); +} + +template <> +void caffe_gpu_add(const int N, const double* a, const double* b, + double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + add_kernel<<>>( + N, a, b, y); +} + +template +__global__ void sub_kernel(const int n, const Dtype* a, + const Dtype* b, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = a[index] - b[index]; + } +} + +template <> +void caffe_gpu_sub(const int N, const float* a, const float* b, + float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + sub_kernel<<>>( + N, a, b, y); +} + +template <> +void caffe_gpu_sub(const int N, const double* a, const double* b, + double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + sub_kernel<<>>( + N, a, b, y); +} + +template +__global__ void mul_kernel(const int n, const Dtype* a, + const Dtype* b, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = a[index] * b[index]; + } +} + +template <> +void caffe_gpu_mul(const int N, const float* a, + const float* b, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + mul_kernel<<>>( + N, a, b, y); +} + +template <> +void caffe_gpu_mul(const int N, const double* a, + const double* b, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + mul_kernel<<>>( + N, a, b, y); +} + +template +__global__ void div_kernel(const int n, const Dtype* a, + const Dtype* b, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = a[index] / b[index]; + } +} + +template <> +void caffe_gpu_div(const int N, const float* a, + const float* b, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + div_kernel<<>>( + N, a, b, y); +} + +template <> +void caffe_gpu_div(const int N, const double* a, + const double* b, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + div_kernel<<>>( + N, a, b, y); +} + +template +__global__ void abs_kernel(const int n, const Dtype* a, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = abs(a[index]); + } +} + +template <> +void caffe_gpu_abs(const int N, const float* a, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + abs_kernel<<>>( + N, a, y); +} + +template <> +void caffe_gpu_abs(const int N, const double* a, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + abs_kernel<<>>( + N, a, y); +} + + +template +__global__ void exp_kernel(const int n, const Dtype* a, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = exp(a[index]); + } +} + +template <> +void caffe_gpu_exp(const int N, const float* a, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + exp_kernel<<>>( + N, a, y); +} + +template <> +void caffe_gpu_exp(const int N, const double* a, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + exp_kernel<<>>( + N, a, y); +} + +template +__global__ void log_kernel(const int n, const Dtype* a, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = log(a[index]); + } +} + +template <> +void caffe_gpu_log(const int N, const float* a, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + log_kernel<<>>( + N, a, y); +} + +template <> +void caffe_gpu_log(const int N, const double* a, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + log_kernel<<>>( + N, a, y); +} + +template +__global__ void powx_kernel(const int n, const Dtype* a, + const Dtype alpha, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = pow(a[index], alpha); + } +} + +template <> +void caffe_gpu_powx(const int N, const float* a, + const float alpha, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + powx_kernel<<>>( + N, a, alpha, y); +} + +template <> +void caffe_gpu_powx(const int N, const double* a, + const double alpha, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + powx_kernel<<>>( + N, a, alpha, y); +} + +template +__global__ void sqrt_kernel(const int n, const Dtype* a, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = sqrt(a[index]); + } +} + +template <> +void caffe_gpu_sqrt(const int N, const float* a, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + sqrt_kernel<<>>( + N, a, y); +} + +template <> +void caffe_gpu_sqrt(const int N, const double* a, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + sqrt_kernel<<>>( + N, a, y); +} + +DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(sign, y[index] = (Dtype(0) < x[index]) + - (x[index] < Dtype(0))); +DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(sgnbit, y[index] = signbit(x[index])); + +void caffe_gpu_rng_uniform(const int n, unsigned int* r) { + CURAND_CHECK(curandGenerate(Caffe::curand_generator(), r, n)); +} + +template <> +void caffe_gpu_rng_uniform(const int n, const float a, const float b, + float* r) { + CURAND_CHECK(curandGenerateUniform(Caffe::curand_generator(), r, n)); + const float range = b - a; + if (range != static_cast(1)) { + caffe_gpu_scal(n, range, r); + } + if (a != static_cast(0)) { + caffe_gpu_add_scalar(n, a, r); + } +} + +template <> +void caffe_gpu_rng_uniform(const int n, const double a, const double b, + double* r) { + CURAND_CHECK(curandGenerateUniformDouble(Caffe::curand_generator(), r, n)); + const double range = b - a; + if (range != static_cast(1)) { + caffe_gpu_scal(n, range, r); + } + if (a != static_cast(0)) { + caffe_gpu_add_scalar(n, a, r); + } +} + +template <> +void caffe_gpu_rng_gaussian(const int n, const float mu, const float sigma, + float* r) { + CURAND_CHECK( + curandGenerateNormal(Caffe::curand_generator(), r, n, mu, sigma)); +} + +template <> +void caffe_gpu_rng_gaussian(const int n, const double mu, const double sigma, + double* r) { + CURAND_CHECK( + curandGenerateNormalDouble(Caffe::curand_generator(), r, n, mu, sigma)); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/signal_handler.cpp b/3rdparty/caffe/src/caffe/util/signal_handler.cpp new file mode 100644 index 00000000..5d764ec5 --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/signal_handler.cpp @@ -0,0 +1,115 @@ +#include +#include + +#include +#include + +#include "caffe/util/signal_handler.h" + +namespace { + static volatile sig_atomic_t got_sigint = false; + static volatile sig_atomic_t got_sighup = false; + static bool already_hooked_up = false; + + void handle_signal(int signal) { + switch (signal) { + case SIGHUP: + got_sighup = true; + break; + case SIGINT: + got_sigint = true; + break; + } + } + + void HookupHandler() { + if (already_hooked_up) { + LOG(FATAL) << "Tried to hookup signal handlers more than once."; + } + already_hooked_up = true; + + struct sigaction sa; + // Setup the handler + sa.sa_handler = &handle_signal; + // Restart the system call, if at all possible + sa.sa_flags = SA_RESTART; + // Block every signal during the handler + sigfillset(&sa.sa_mask); + // Intercept SIGHUP and SIGINT + if (sigaction(SIGHUP, &sa, NULL) == -1) { + LOG(FATAL) << "Cannot install SIGHUP handler."; + } + if (sigaction(SIGINT, &sa, NULL) == -1) { + LOG(FATAL) << "Cannot install SIGINT handler."; + } + } + + // Set the signal handlers to the default. + void UnhookHandler() { + if (already_hooked_up) { + struct sigaction sa; + // Setup the sighub handler + sa.sa_handler = SIG_DFL; + // Restart the system call, if at all possible + sa.sa_flags = SA_RESTART; + // Block every signal during the handler + sigfillset(&sa.sa_mask); + // Intercept SIGHUP and SIGINT + if (sigaction(SIGHUP, &sa, NULL) == -1) { + LOG(FATAL) << "Cannot uninstall SIGHUP handler."; + } + if (sigaction(SIGINT, &sa, NULL) == -1) { + LOG(FATAL) << "Cannot uninstall SIGINT handler."; + } + + already_hooked_up = false; + } + } + + // Return true iff a SIGINT has been received since the last time this + // function was called. + bool GotSIGINT() { + bool result = got_sigint; + got_sigint = false; + return result; + } + + // Return true iff a SIGHUP has been received since the last time this + // function was called. + bool GotSIGHUP() { + bool result = got_sighup; + got_sighup = false; + return result; + } +} // namespace + +namespace caffe { + +SignalHandler::SignalHandler(SolverAction::Enum SIGINT_action, + SolverAction::Enum SIGHUP_action): + SIGINT_action_(SIGINT_action), + SIGHUP_action_(SIGHUP_action) { + HookupHandler(); +} + +SignalHandler::~SignalHandler() { + UnhookHandler(); +} + +SolverAction::Enum SignalHandler::CheckForSignals() const { + if (GotSIGHUP()) { + return SIGHUP_action_; + } + if (GotSIGINT()) { + return SIGINT_action_; + } + return SolverAction::NONE; +} + +// Return the function that the solver can use to find out if a snapshot or +// early exit is being requested. +ActionCallback SignalHandler::GetActionFunction() { + return boost::bind(&SignalHandler::CheckForSignals, this); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/caffe/util/upgrade_proto.cpp b/3rdparty/caffe/src/caffe/util/upgrade_proto.cpp new file mode 100644 index 00000000..94771c8c --- /dev/null +++ b/3rdparty/caffe/src/caffe/util/upgrade_proto.cpp @@ -0,0 +1,1106 @@ +#include +#include +#include + +#include +#include + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +namespace caffe { + +bool NetNeedsUpgrade(const NetParameter& net_param) { + return NetNeedsV0ToV1Upgrade(net_param) || NetNeedsV1ToV2Upgrade(net_param) + || NetNeedsDataUpgrade(net_param) || NetNeedsInputUpgrade(net_param) + || NetNeedsBatchNormUpgrade(net_param); +} + +bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) { + bool success = true; + if (NetNeedsV0ToV1Upgrade(*param)) { + // NetParameter was specified using the old style (V0LayerParameter); try to + // upgrade it. + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "V0LayerParameter: " << param_file; + NetParameter original_param(*param); + if (!UpgradeV0Net(original_param, param)) { + success = false; + LOG(ERROR) << "Warning: had one or more problems upgrading " + << "V0NetParameter to NetParameter (see above); continuing anyway."; + } else { + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "V0LayerParameter"; + } + LOG(WARNING) << "Note that future Caffe releases will not support " + << "V0NetParameter; use ./build/tools/upgrade_net_proto_text for " + << "prototxt and ./build/tools/upgrade_net_proto_binary for model " + << "weights upgrade this and any other net protos to the new format."; + } + // NetParameter uses old style data transformation fields; try to upgrade it. + if (NetNeedsDataUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "transformation parameters: " << param_file; + UpgradeNetDataTransformation(param); + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "data transformation parameters."; + LOG(WARNING) << "Note that future Caffe releases will only support " + << "transform_param messages for transformation fields."; + } + if (NetNeedsV1ToV2Upgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "V1LayerParameter: " << param_file; + NetParameter original_param(*param); + if (!UpgradeV1Net(original_param, param)) { + success = false; + LOG(ERROR) << "Warning: had one or more problems upgrading " + << "V1LayerParameter (see above); continuing anyway."; + } else { + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "V1LayerParameter"; + } + } + // NetParameter uses old style input fields; try to upgrade it. + if (NetNeedsInputUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "input fields: " << param_file; + UpgradeNetInput(param); + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "input fields."; + LOG(WARNING) << "Note that future Caffe releases will only support " + << "input layers and not input fields."; + } + // NetParameter uses old style batch norm layers; try to upgrade it. + if (NetNeedsBatchNormUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade batch norm layers using deprecated " + << "params: " << param_file; + UpgradeNetBatchNorm(param); + LOG(INFO) << "Successfully upgraded batch norm layers using deprecated " + << "params."; + } + return success; +} + +void ReadNetParamsFromTextFileOrDie(const string& param_file, + NetParameter* param) { + CHECK(ReadProtoFromTextFile(param_file, param)) + << "Failed to parse NetParameter file: " << param_file; + UpgradeNetAsNeeded(param_file, param); +} + +void ReadNetParamsFromBinaryFileOrDie(const string& param_file, + NetParameter* param) { + CHECK(ReadProtoFromBinaryFile(param_file, param)) + << "Failed to parse NetParameter file: " << param_file; + UpgradeNetAsNeeded(param_file, param); +} + +bool NetNeedsV0ToV1Upgrade(const NetParameter& net_param) { + for (int i = 0; i < net_param.layers_size(); ++i) { + if (net_param.layers(i).has_layer()) { + return true; + } + } + return false; +} + +bool NetNeedsV1ToV2Upgrade(const NetParameter& net_param) { + return net_param.layers_size() > 0; +} + +bool UpgradeV0Net(const NetParameter& v0_net_param_padding_layers, + NetParameter* net_param) { + // First upgrade padding layers to padded conv layers. + NetParameter v0_net_param; + UpgradeV0PaddingLayers(v0_net_param_padding_layers, &v0_net_param); + // Now upgrade layer parameters. + bool is_fully_compatible = true; + net_param->Clear(); + if (v0_net_param.has_name()) { + net_param->set_name(v0_net_param.name()); + } + for (int i = 0; i < v0_net_param.layers_size(); ++i) { + is_fully_compatible &= UpgradeV0LayerParameter(v0_net_param.layers(i), + net_param->add_layers()); + } + for (int i = 0; i < v0_net_param.input_size(); ++i) { + net_param->add_input(v0_net_param.input(i)); + } + for (int i = 0; i < v0_net_param.input_dim_size(); ++i) { + net_param->add_input_dim(v0_net_param.input_dim(i)); + } + if (v0_net_param.has_force_backward()) { + net_param->set_force_backward(v0_net_param.force_backward()); + } + return is_fully_compatible; +} + +void UpgradeV0PaddingLayers(const NetParameter& param, + NetParameter* param_upgraded_pad) { + // Copy everything other than the layers from the original param. + param_upgraded_pad->Clear(); + param_upgraded_pad->CopyFrom(param); + param_upgraded_pad->clear_layers(); + // Figure out which layer each bottom blob comes from. + map blob_name_to_last_top_idx; + for (int i = 0; i < param.input_size(); ++i) { + const string& blob_name = param.input(i); + blob_name_to_last_top_idx[blob_name] = -1; + } + for (int i = 0; i < param.layers_size(); ++i) { + const V1LayerParameter& layer_connection = param.layers(i); + const V0LayerParameter& layer_param = layer_connection.layer(); + // Add the layer to the new net, unless it's a padding layer. + if (layer_param.type() != "padding") { + param_upgraded_pad->add_layers()->CopyFrom(layer_connection); + } + for (int j = 0; j < layer_connection.bottom_size(); ++j) { + const string& blob_name = layer_connection.bottom(j); + if (blob_name_to_last_top_idx.find(blob_name) == + blob_name_to_last_top_idx.end()) { + LOG(FATAL) << "Unknown blob input " << blob_name << " to layer " << j; + } + const int top_idx = blob_name_to_last_top_idx[blob_name]; + if (top_idx == -1) { + continue; + } + const V1LayerParameter& source_layer = param.layers(top_idx); + if (source_layer.layer().type() == "padding") { + // This layer has a padding layer as input -- check that it is a conv + // layer or a pooling layer and takes only one input. Also check that + // the padding layer input has only one input and one output. Other + // cases have undefined behavior in Caffe. + CHECK((layer_param.type() == "conv") || (layer_param.type() == "pool")) + << "Padding layer input to " + "non-convolutional / non-pooling layer type " + << layer_param.type(); + CHECK_EQ(layer_connection.bottom_size(), 1) + << "Conv Layer takes a single blob as input."; + CHECK_EQ(source_layer.bottom_size(), 1) + << "Padding Layer takes a single blob as input."; + CHECK_EQ(source_layer.top_size(), 1) + << "Padding Layer produces a single blob as output."; + int layer_index = param_upgraded_pad->layers_size() - 1; + param_upgraded_pad->mutable_layers(layer_index)->mutable_layer() + ->set_pad(source_layer.layer().pad()); + param_upgraded_pad->mutable_layers(layer_index) + ->set_bottom(j, source_layer.bottom(0)); + } + } + for (int j = 0; j < layer_connection.top_size(); ++j) { + const string& blob_name = layer_connection.top(j); + blob_name_to_last_top_idx[blob_name] = i; + } + } +} + +bool UpgradeV0LayerParameter(const V1LayerParameter& v0_layer_connection, + V1LayerParameter* layer_param) { + bool is_fully_compatible = true; + layer_param->Clear(); + for (int i = 0; i < v0_layer_connection.bottom_size(); ++i) { + layer_param->add_bottom(v0_layer_connection.bottom(i)); + } + for (int i = 0; i < v0_layer_connection.top_size(); ++i) { + layer_param->add_top(v0_layer_connection.top(i)); + } + if (v0_layer_connection.has_layer()) { + const V0LayerParameter& v0_layer_param = v0_layer_connection.layer(); + if (v0_layer_param.has_name()) { + layer_param->set_name(v0_layer_param.name()); + } + const string& type = v0_layer_param.type(); + if (v0_layer_param.has_type()) { + layer_param->set_type(UpgradeV0LayerType(type)); + } + for (int i = 0; i < v0_layer_param.blobs_size(); ++i) { + layer_param->add_blobs()->CopyFrom(v0_layer_param.blobs(i)); + } + for (int i = 0; i < v0_layer_param.blobs_lr_size(); ++i) { + layer_param->add_blobs_lr(v0_layer_param.blobs_lr(i)); + } + for (int i = 0; i < v0_layer_param.weight_decay_size(); ++i) { + layer_param->add_weight_decay(v0_layer_param.weight_decay(i)); + } + if (v0_layer_param.has_num_output()) { + if (type == "conv") { + layer_param->mutable_convolution_param()->set_num_output( + v0_layer_param.num_output()); + } else if (type == "innerproduct") { + layer_param->mutable_inner_product_param()->set_num_output( + v0_layer_param.num_output()); + } else { + LOG(ERROR) << "Unknown parameter num_output for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_biasterm()) { + if (type == "conv") { + layer_param->mutable_convolution_param()->set_bias_term( + v0_layer_param.biasterm()); + } else if (type == "innerproduct") { + layer_param->mutable_inner_product_param()->set_bias_term( + v0_layer_param.biasterm()); + } else { + LOG(ERROR) << "Unknown parameter biasterm for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_weight_filler()) { + if (type == "conv") { + layer_param->mutable_convolution_param()-> + mutable_weight_filler()->CopyFrom(v0_layer_param.weight_filler()); + } else if (type == "innerproduct") { + layer_param->mutable_inner_product_param()-> + mutable_weight_filler()->CopyFrom(v0_layer_param.weight_filler()); + } else { + LOG(ERROR) << "Unknown parameter weight_filler for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_bias_filler()) { + if (type == "conv") { + layer_param->mutable_convolution_param()-> + mutable_bias_filler()->CopyFrom(v0_layer_param.bias_filler()); + } else if (type == "innerproduct") { + layer_param->mutable_inner_product_param()-> + mutable_bias_filler()->CopyFrom(v0_layer_param.bias_filler()); + } else { + LOG(ERROR) << "Unknown parameter bias_filler for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_pad()) { + if (type == "conv") { + layer_param->mutable_convolution_param()->add_pad(v0_layer_param.pad()); + } else if (type == "pool") { + layer_param->mutable_pooling_param()->set_pad(v0_layer_param.pad()); + } else { + LOG(ERROR) << "Unknown parameter pad for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_kernelsize()) { + if (type == "conv") { + layer_param->mutable_convolution_param()->add_kernel_size( + v0_layer_param.kernelsize()); + } else if (type == "pool") { + layer_param->mutable_pooling_param()->set_kernel_size( + v0_layer_param.kernelsize()); + } else { + LOG(ERROR) << "Unknown parameter kernelsize for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_group()) { + if (type == "conv") { + layer_param->mutable_convolution_param()->set_group( + v0_layer_param.group()); + } else { + LOG(ERROR) << "Unknown parameter group for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_stride()) { + if (type == "conv") { + layer_param->mutable_convolution_param()->add_stride( + v0_layer_param.stride()); + } else if (type == "pool") { + layer_param->mutable_pooling_param()->set_stride( + v0_layer_param.stride()); + } else { + LOG(ERROR) << "Unknown parameter stride for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_pool()) { + if (type == "pool") { + V0LayerParameter_PoolMethod pool = v0_layer_param.pool(); + switch (pool) { + case V0LayerParameter_PoolMethod_MAX: + layer_param->mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_MAX); + break; + case V0LayerParameter_PoolMethod_AVE: + layer_param->mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_AVE); + break; + case V0LayerParameter_PoolMethod_STOCHASTIC: + layer_param->mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_STOCHASTIC); + break; + default: + LOG(ERROR) << "Unknown pool method " << pool; + is_fully_compatible = false; + } + } else { + LOG(ERROR) << "Unknown parameter pool for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_dropout_ratio()) { + if (type == "dropout") { + layer_param->mutable_dropout_param()->set_dropout_ratio( + v0_layer_param.dropout_ratio()); + } else { + LOG(ERROR) << "Unknown parameter dropout_ratio for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_local_size()) { + if (type == "lrn") { + layer_param->mutable_lrn_param()->set_local_size( + v0_layer_param.local_size()); + } else { + LOG(ERROR) << "Unknown parameter local_size for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_alpha()) { + if (type == "lrn") { + layer_param->mutable_lrn_param()->set_alpha(v0_layer_param.alpha()); + } else { + LOG(ERROR) << "Unknown parameter alpha for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_beta()) { + if (type == "lrn") { + layer_param->mutable_lrn_param()->set_beta(v0_layer_param.beta()); + } else { + LOG(ERROR) << "Unknown parameter beta for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_k()) { + if (type == "lrn") { + layer_param->mutable_lrn_param()->set_k(v0_layer_param.k()); + } else { + LOG(ERROR) << "Unknown parameter k for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_source()) { + if (type == "data") { + layer_param->mutable_data_param()->set_source(v0_layer_param.source()); + } else if (type == "hdf5_data") { + layer_param->mutable_hdf5_data_param()->set_source( + v0_layer_param.source()); + } else if (type == "images") { + layer_param->mutable_image_data_param()->set_source( + v0_layer_param.source()); + } else if (type == "window_data") { + layer_param->mutable_window_data_param()->set_source( + v0_layer_param.source()); + } else if (type == "infogain_loss") { + layer_param->mutable_infogain_loss_param()->set_source( + v0_layer_param.source()); + } else { + LOG(ERROR) << "Unknown parameter source for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_scale()) { + layer_param->mutable_transform_param()-> + set_scale(v0_layer_param.scale()); + } + if (v0_layer_param.has_meanfile()) { + layer_param->mutable_transform_param()-> + set_mean_file(v0_layer_param.meanfile()); + } + if (v0_layer_param.has_batchsize()) { + if (type == "data") { + layer_param->mutable_data_param()->set_batch_size( + v0_layer_param.batchsize()); + } else if (type == "hdf5_data") { + layer_param->mutable_hdf5_data_param()->set_batch_size( + v0_layer_param.batchsize()); + } else if (type == "images") { + layer_param->mutable_image_data_param()->set_batch_size( + v0_layer_param.batchsize()); + } else if (type == "window_data") { + layer_param->mutable_window_data_param()->set_batch_size( + v0_layer_param.batchsize()); + } else { + LOG(ERROR) << "Unknown parameter batchsize for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_cropsize()) { + layer_param->mutable_transform_param()-> + set_crop_size(v0_layer_param.cropsize()); + } + if (v0_layer_param.has_mirror()) { + layer_param->mutable_transform_param()-> + set_mirror(v0_layer_param.mirror()); + } + if (v0_layer_param.has_rand_skip()) { + if (type == "data") { + layer_param->mutable_data_param()->set_rand_skip( + v0_layer_param.rand_skip()); + } else if (type == "images") { + layer_param->mutable_image_data_param()->set_rand_skip( + v0_layer_param.rand_skip()); + } else { + LOG(ERROR) << "Unknown parameter rand_skip for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_shuffle_images()) { + if (type == "images") { + layer_param->mutable_image_data_param()->set_shuffle( + v0_layer_param.shuffle_images()); + } else { + LOG(ERROR) << "Unknown parameter shuffle for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_new_height()) { + if (type == "images") { + layer_param->mutable_image_data_param()->set_new_height( + v0_layer_param.new_height()); + } else { + LOG(ERROR) << "Unknown parameter new_height for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_new_width()) { + if (type == "images") { + layer_param->mutable_image_data_param()->set_new_width( + v0_layer_param.new_width()); + } else { + LOG(ERROR) << "Unknown parameter new_width for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_concat_dim()) { + if (type == "concat") { + layer_param->mutable_concat_param()->set_concat_dim( + v0_layer_param.concat_dim()); + } else { + LOG(ERROR) << "Unknown parameter concat_dim for layer type " << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_det_fg_threshold()) { + if (type == "window_data") { + layer_param->mutable_window_data_param()->set_fg_threshold( + v0_layer_param.det_fg_threshold()); + } else { + LOG(ERROR) << "Unknown parameter det_fg_threshold for layer type " + << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_det_bg_threshold()) { + if (type == "window_data") { + layer_param->mutable_window_data_param()->set_bg_threshold( + v0_layer_param.det_bg_threshold()); + } else { + LOG(ERROR) << "Unknown parameter det_bg_threshold for layer type " + << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_det_fg_fraction()) { + if (type == "window_data") { + layer_param->mutable_window_data_param()->set_fg_fraction( + v0_layer_param.det_fg_fraction()); + } else { + LOG(ERROR) << "Unknown parameter det_fg_fraction for layer type " + << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_det_context_pad()) { + if (type == "window_data") { + layer_param->mutable_window_data_param()->set_context_pad( + v0_layer_param.det_context_pad()); + } else { + LOG(ERROR) << "Unknown parameter det_context_pad for layer type " + << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_det_crop_mode()) { + if (type == "window_data") { + layer_param->mutable_window_data_param()->set_crop_mode( + v0_layer_param.det_crop_mode()); + } else { + LOG(ERROR) << "Unknown parameter det_crop_mode for layer type " + << type; + is_fully_compatible = false; + } + } + if (v0_layer_param.has_hdf5_output_param()) { + if (type == "hdf5_output") { + layer_param->mutable_hdf5_output_param()->CopyFrom( + v0_layer_param.hdf5_output_param()); + } else { + LOG(ERROR) << "Unknown parameter hdf5_output_param for layer type " + << type; + is_fully_compatible = false; + } + } + } + return is_fully_compatible; +} + +V1LayerParameter_LayerType UpgradeV0LayerType(const string& type) { + if (type == "accuracy") { + return V1LayerParameter_LayerType_ACCURACY; + } else if (type == "bnll") { + return V1LayerParameter_LayerType_BNLL; + } else if (type == "concat") { + return V1LayerParameter_LayerType_CONCAT; + } else if (type == "conv") { + return V1LayerParameter_LayerType_CONVOLUTION; + } else if (type == "data") { + return V1LayerParameter_LayerType_DATA; + } else if (type == "dropout") { + return V1LayerParameter_LayerType_DROPOUT; + } else if (type == "euclidean_loss") { + return V1LayerParameter_LayerType_EUCLIDEAN_LOSS; + } else if (type == "flatten") { + return V1LayerParameter_LayerType_FLATTEN; + } else if (type == "hdf5_data") { + return V1LayerParameter_LayerType_HDF5_DATA; + } else if (type == "hdf5_output") { + return V1LayerParameter_LayerType_HDF5_OUTPUT; + } else if (type == "im2col") { + return V1LayerParameter_LayerType_IM2COL; + } else if (type == "images") { + return V1LayerParameter_LayerType_IMAGE_DATA; + } else if (type == "infogain_loss") { + return V1LayerParameter_LayerType_INFOGAIN_LOSS; + } else if (type == "innerproduct") { + return V1LayerParameter_LayerType_INNER_PRODUCT; + } else if (type == "lrn") { + return V1LayerParameter_LayerType_LRN; + } else if (type == "multinomial_logistic_loss") { + return V1LayerParameter_LayerType_MULTINOMIAL_LOGISTIC_LOSS; + } else if (type == "pool") { + return V1LayerParameter_LayerType_POOLING; + } else if (type == "relu") { + return V1LayerParameter_LayerType_RELU; + } else if (type == "sigmoid") { + return V1LayerParameter_LayerType_SIGMOID; + } else if (type == "softmax") { + return V1LayerParameter_LayerType_SOFTMAX; + } else if (type == "softmax_loss") { + return V1LayerParameter_LayerType_SOFTMAX_LOSS; + } else if (type == "split") { + return V1LayerParameter_LayerType_SPLIT; + } else if (type == "tanh") { + return V1LayerParameter_LayerType_TANH; + } else if (type == "window_data") { + return V1LayerParameter_LayerType_WINDOW_DATA; + } else { + LOG(FATAL) << "Unknown layer name: " << type; + return V1LayerParameter_LayerType_NONE; + } +} + +bool NetNeedsDataUpgrade(const NetParameter& net_param) { + for (int i = 0; i < net_param.layers_size(); ++i) { + if (net_param.layers(i).type() == V1LayerParameter_LayerType_DATA) { + DataParameter layer_param = net_param.layers(i).data_param(); + if (layer_param.has_scale()) { return true; } + if (layer_param.has_mean_file()) { return true; } + if (layer_param.has_crop_size()) { return true; } + if (layer_param.has_mirror()) { return true; } + } + if (net_param.layers(i).type() == V1LayerParameter_LayerType_IMAGE_DATA) { + ImageDataParameter layer_param = net_param.layers(i).image_data_param(); + if (layer_param.has_scale()) { return true; } + if (layer_param.has_mean_file()) { return true; } + if (layer_param.has_crop_size()) { return true; } + if (layer_param.has_mirror()) { return true; } + } + if (net_param.layers(i).type() == V1LayerParameter_LayerType_WINDOW_DATA) { + WindowDataParameter layer_param = net_param.layers(i).window_data_param(); + if (layer_param.has_scale()) { return true; } + if (layer_param.has_mean_file()) { return true; } + if (layer_param.has_crop_size()) { return true; } + if (layer_param.has_mirror()) { return true; } + } + } + return false; +} + +#define CONVERT_LAYER_TRANSFORM_PARAM(TYPE, Name, param_name) \ + do { \ + if (net_param->layers(i).type() == V1LayerParameter_LayerType_##TYPE) { \ + Name##Parameter* layer_param = \ + net_param->mutable_layers(i)->mutable_##param_name##_param(); \ + TransformationParameter* transform_param = \ + net_param->mutable_layers(i)->mutable_transform_param(); \ + if (layer_param->has_scale()) { \ + transform_param->set_scale(layer_param->scale()); \ + layer_param->clear_scale(); \ + } \ + if (layer_param->has_mean_file()) { \ + transform_param->set_mean_file(layer_param->mean_file()); \ + layer_param->clear_mean_file(); \ + } \ + if (layer_param->has_crop_size()) { \ + transform_param->set_crop_size(layer_param->crop_size()); \ + layer_param->clear_crop_size(); \ + } \ + if (layer_param->has_mirror()) { \ + transform_param->set_mirror(layer_param->mirror()); \ + layer_param->clear_mirror(); \ + } \ + } \ + } while (0) + +void UpgradeNetDataTransformation(NetParameter* net_param) { + for (int i = 0; i < net_param->layers_size(); ++i) { + CONVERT_LAYER_TRANSFORM_PARAM(DATA, Data, data); + CONVERT_LAYER_TRANSFORM_PARAM(IMAGE_DATA, ImageData, image_data); + CONVERT_LAYER_TRANSFORM_PARAM(WINDOW_DATA, WindowData, window_data); + } +} + +bool UpgradeV1Net(const NetParameter& v1_net_param, NetParameter* net_param) { + if (v1_net_param.layer_size() > 0) { + LOG(FATAL) << "Refusing to upgrade inconsistent NetParameter input; " + << "the definition includes both 'layer' and 'layers' fields. " + << "The current format defines 'layer' fields with string type like " + << "layer { type: 'Layer' ... } and not layers { type: LAYER ... }. " + << "Manually switch the definition to 'layer' format to continue."; + } + bool is_fully_compatible = true; + net_param->CopyFrom(v1_net_param); + net_param->clear_layers(); + net_param->clear_layer(); + for (int i = 0; i < v1_net_param.layers_size(); ++i) { + if (!UpgradeV1LayerParameter(v1_net_param.layers(i), + net_param->add_layer())) { + LOG(ERROR) << "Upgrade of input layer " << i << " failed."; + is_fully_compatible = false; + } + } + return is_fully_compatible; +} + +bool UpgradeV1LayerParameter(const V1LayerParameter& v1_layer_param, + LayerParameter* layer_param) { + layer_param->Clear(); + bool is_fully_compatible = true; + for (int i = 0; i < v1_layer_param.bottom_size(); ++i) { + layer_param->add_bottom(v1_layer_param.bottom(i)); + } + for (int i = 0; i < v1_layer_param.top_size(); ++i) { + layer_param->add_top(v1_layer_param.top(i)); + } + if (v1_layer_param.has_name()) { + layer_param->set_name(v1_layer_param.name()); + } + for (int i = 0; i < v1_layer_param.include_size(); ++i) { + layer_param->add_include()->CopyFrom(v1_layer_param.include(i)); + } + for (int i = 0; i < v1_layer_param.exclude_size(); ++i) { + layer_param->add_exclude()->CopyFrom(v1_layer_param.exclude(i)); + } + if (v1_layer_param.has_type()) { + layer_param->set_type(UpgradeV1LayerType(v1_layer_param.type())); + } + for (int i = 0; i < v1_layer_param.blobs_size(); ++i) { + layer_param->add_blobs()->CopyFrom(v1_layer_param.blobs(i)); + } + for (int i = 0; i < v1_layer_param.param_size(); ++i) { + while (layer_param->param_size() <= i) { layer_param->add_param(); } + layer_param->mutable_param(i)->set_name(v1_layer_param.param(i)); + } + ParamSpec_DimCheckMode mode; + for (int i = 0; i < v1_layer_param.blob_share_mode_size(); ++i) { + while (layer_param->param_size() <= i) { layer_param->add_param(); } + switch (v1_layer_param.blob_share_mode(i)) { + case V1LayerParameter_DimCheckMode_STRICT: + mode = ParamSpec_DimCheckMode_STRICT; + break; + case V1LayerParameter_DimCheckMode_PERMISSIVE: + mode = ParamSpec_DimCheckMode_PERMISSIVE; + break; + default: + LOG(FATAL) << "Unknown blob_share_mode: " + << v1_layer_param.blob_share_mode(i); + break; + } + layer_param->mutable_param(i)->set_share_mode(mode); + } + for (int i = 0; i < v1_layer_param.blobs_lr_size(); ++i) { + while (layer_param->param_size() <= i) { layer_param->add_param(); } + layer_param->mutable_param(i)->set_lr_mult(v1_layer_param.blobs_lr(i)); + } + for (int i = 0; i < v1_layer_param.weight_decay_size(); ++i) { + while (layer_param->param_size() <= i) { layer_param->add_param(); } + layer_param->mutable_param(i)->set_decay_mult( + v1_layer_param.weight_decay(i)); + } + for (int i = 0; i < v1_layer_param.loss_weight_size(); ++i) { + layer_param->add_loss_weight(v1_layer_param.loss_weight(i)); + } + if (v1_layer_param.has_accuracy_param()) { + layer_param->mutable_accuracy_param()->CopyFrom( + v1_layer_param.accuracy_param()); + } + if (v1_layer_param.has_argmax_param()) { + layer_param->mutable_argmax_param()->CopyFrom( + v1_layer_param.argmax_param()); + } + if (v1_layer_param.has_concat_param()) { + layer_param->mutable_concat_param()->CopyFrom( + v1_layer_param.concat_param()); + } + if (v1_layer_param.has_contrastive_loss_param()) { + layer_param->mutable_contrastive_loss_param()->CopyFrom( + v1_layer_param.contrastive_loss_param()); + } + if (v1_layer_param.has_convolution_param()) { + layer_param->mutable_convolution_param()->CopyFrom( + v1_layer_param.convolution_param()); + } + if (v1_layer_param.has_data_param()) { + layer_param->mutable_data_param()->CopyFrom( + v1_layer_param.data_param()); + } + if (v1_layer_param.has_dropout_param()) { + layer_param->mutable_dropout_param()->CopyFrom( + v1_layer_param.dropout_param()); + } + if (v1_layer_param.has_dummy_data_param()) { + layer_param->mutable_dummy_data_param()->CopyFrom( + v1_layer_param.dummy_data_param()); + } + if (v1_layer_param.has_eltwise_param()) { + layer_param->mutable_eltwise_param()->CopyFrom( + v1_layer_param.eltwise_param()); + } + if (v1_layer_param.has_exp_param()) { + layer_param->mutable_exp_param()->CopyFrom( + v1_layer_param.exp_param()); + } + if (v1_layer_param.has_hdf5_data_param()) { + layer_param->mutable_hdf5_data_param()->CopyFrom( + v1_layer_param.hdf5_data_param()); + } + if (v1_layer_param.has_hdf5_output_param()) { + layer_param->mutable_hdf5_output_param()->CopyFrom( + v1_layer_param.hdf5_output_param()); + } + if (v1_layer_param.has_hinge_loss_param()) { + layer_param->mutable_hinge_loss_param()->CopyFrom( + v1_layer_param.hinge_loss_param()); + } + if (v1_layer_param.has_image_data_param()) { + layer_param->mutable_image_data_param()->CopyFrom( + v1_layer_param.image_data_param()); + } + if (v1_layer_param.has_infogain_loss_param()) { + layer_param->mutable_infogain_loss_param()->CopyFrom( + v1_layer_param.infogain_loss_param()); + } + if (v1_layer_param.has_inner_product_param()) { + layer_param->mutable_inner_product_param()->CopyFrom( + v1_layer_param.inner_product_param()); + } + if (v1_layer_param.has_lrn_param()) { + layer_param->mutable_lrn_param()->CopyFrom( + v1_layer_param.lrn_param()); + } + if (v1_layer_param.has_memory_data_param()) { + layer_param->mutable_memory_data_param()->CopyFrom( + v1_layer_param.memory_data_param()); + } + if (v1_layer_param.has_mvn_param()) { + layer_param->mutable_mvn_param()->CopyFrom( + v1_layer_param.mvn_param()); + } + if (v1_layer_param.has_pooling_param()) { + layer_param->mutable_pooling_param()->CopyFrom( + v1_layer_param.pooling_param()); + } + if (v1_layer_param.has_power_param()) { + layer_param->mutable_power_param()->CopyFrom( + v1_layer_param.power_param()); + } + if (v1_layer_param.has_relu_param()) { + layer_param->mutable_relu_param()->CopyFrom( + v1_layer_param.relu_param()); + } + if (v1_layer_param.has_sigmoid_param()) { + layer_param->mutable_sigmoid_param()->CopyFrom( + v1_layer_param.sigmoid_param()); + } + if (v1_layer_param.has_softmax_param()) { + layer_param->mutable_softmax_param()->CopyFrom( + v1_layer_param.softmax_param()); + } + if (v1_layer_param.has_slice_param()) { + layer_param->mutable_slice_param()->CopyFrom( + v1_layer_param.slice_param()); + } + if (v1_layer_param.has_tanh_param()) { + layer_param->mutable_tanh_param()->CopyFrom( + v1_layer_param.tanh_param()); + } + if (v1_layer_param.has_threshold_param()) { + layer_param->mutable_threshold_param()->CopyFrom( + v1_layer_param.threshold_param()); + } + if (v1_layer_param.has_window_data_param()) { + layer_param->mutable_window_data_param()->CopyFrom( + v1_layer_param.window_data_param()); + } + if (v1_layer_param.has_transform_param()) { + layer_param->mutable_transform_param()->CopyFrom( + v1_layer_param.transform_param()); + } + if (v1_layer_param.has_loss_param()) { + layer_param->mutable_loss_param()->CopyFrom( + v1_layer_param.loss_param()); + } + if (v1_layer_param.has_layer()) { + LOG(ERROR) << "Input NetParameter has V0 layer -- ignoring."; + is_fully_compatible = false; + } + return is_fully_compatible; +} + +const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type) { + switch (type) { + case V1LayerParameter_LayerType_NONE: + return ""; + case V1LayerParameter_LayerType_ABSVAL: + return "AbsVal"; + case V1LayerParameter_LayerType_ACCURACY: + return "Accuracy"; + case V1LayerParameter_LayerType_ARGMAX: + return "ArgMax"; + case V1LayerParameter_LayerType_BNLL: + return "BNLL"; + case V1LayerParameter_LayerType_CONCAT: + return "Concat"; + case V1LayerParameter_LayerType_CONTRASTIVE_LOSS: + return "ContrastiveLoss"; + case V1LayerParameter_LayerType_CONVOLUTION: + return "Convolution"; + case V1LayerParameter_LayerType_DECONVOLUTION: + return "Deconvolution"; + case V1LayerParameter_LayerType_DATA: + return "Data"; + case V1LayerParameter_LayerType_DROPOUT: + return "Dropout"; + case V1LayerParameter_LayerType_DUMMY_DATA: + return "DummyData"; + case V1LayerParameter_LayerType_EUCLIDEAN_LOSS: + return "EuclideanLoss"; + case V1LayerParameter_LayerType_ELTWISE: + return "Eltwise"; + case V1LayerParameter_LayerType_EXP: + return "Exp"; + case V1LayerParameter_LayerType_FLATTEN: + return "Flatten"; + case V1LayerParameter_LayerType_HDF5_DATA: + return "HDF5Data"; + case V1LayerParameter_LayerType_HDF5_OUTPUT: + return "HDF5Output"; + case V1LayerParameter_LayerType_HINGE_LOSS: + return "HingeLoss"; + case V1LayerParameter_LayerType_IM2COL: + return "Im2col"; + case V1LayerParameter_LayerType_IMAGE_DATA: + return "ImageData"; + case V1LayerParameter_LayerType_INFOGAIN_LOSS: + return "InfogainLoss"; + case V1LayerParameter_LayerType_INNER_PRODUCT: + return "InnerProduct"; + case V1LayerParameter_LayerType_LRN: + return "LRN"; + case V1LayerParameter_LayerType_MEMORY_DATA: + return "MemoryData"; + case V1LayerParameter_LayerType_MULTINOMIAL_LOGISTIC_LOSS: + return "MultinomialLogisticLoss"; + case V1LayerParameter_LayerType_MVN: + return "MVN"; + case V1LayerParameter_LayerType_POOLING: + return "Pooling"; + case V1LayerParameter_LayerType_POWER: + return "Power"; + case V1LayerParameter_LayerType_RELU: + return "ReLU"; + case V1LayerParameter_LayerType_SIGMOID: + return "Sigmoid"; + case V1LayerParameter_LayerType_SIGMOID_CROSS_ENTROPY_LOSS: + return "SigmoidCrossEntropyLoss"; + case V1LayerParameter_LayerType_SILENCE: + return "Silence"; + case V1LayerParameter_LayerType_SOFTMAX: + return "Softmax"; + case V1LayerParameter_LayerType_SOFTMAX_LOSS: + return "SoftmaxWithLoss"; + case V1LayerParameter_LayerType_SPLIT: + return "Split"; + case V1LayerParameter_LayerType_SLICE: + return "Slice"; + case V1LayerParameter_LayerType_TANH: + return "TanH"; + case V1LayerParameter_LayerType_WINDOW_DATA: + return "WindowData"; + case V1LayerParameter_LayerType_THRESHOLD: + return "Threshold"; + default: + LOG(FATAL) << "Unknown V1LayerParameter layer type: " << type; + return ""; + } +} + +bool NetNeedsInputUpgrade(const NetParameter& net_param) { + return net_param.input_size() > 0; +} + +void UpgradeNetInput(NetParameter* net_param) { + // Collect inputs and convert to Input layer definitions. + // If the NetParameter holds an input alone, without shape/dim, then + // it's a legacy caffemodel and simply stripping the input field is enough. + bool has_shape = net_param->input_shape_size() > 0; + bool has_dim = net_param->input_dim_size() > 0; + if (has_shape || has_dim) { + LayerParameter* layer_param = net_param->add_layer(); + layer_param->set_name("input"); + layer_param->set_type("Input"); + InputParameter* input_param = layer_param->mutable_input_param(); + // Convert input fields into a layer. + for (int i = 0; i < net_param->input_size(); ++i) { + layer_param->add_top(net_param->input(i)); + if (has_shape) { + input_param->add_shape()->CopyFrom(net_param->input_shape(i)); + } else { + // Turn legacy input dimensions into shape. + BlobShape* shape = input_param->add_shape(); + int first_dim = i*4; + int last_dim = first_dim + 4; + for (int j = first_dim; j < last_dim; j++) { + shape->add_dim(net_param->input_dim(j)); + } + } + } + // Swap input layer to beginning of net to satisfy layer dependencies. + for (int i = net_param->layer_size() - 1; i > 0; --i) { + net_param->mutable_layer(i-1)->Swap(net_param->mutable_layer(i)); + } + } + // Clear inputs. + net_param->clear_input(); + net_param->clear_input_shape(); + net_param->clear_input_dim(); +} + +bool NetNeedsBatchNormUpgrade(const NetParameter& net_param) { + for (int i = 0; i < net_param.layer_size(); ++i) { + // Check if BatchNorm layers declare three parameters, as required by + // the previous BatchNorm layer definition. + if (net_param.layer(i).type() == "BatchNorm" + && net_param.layer(i).param_size() == 3) { + return true; + } + } + return false; +} + +void UpgradeNetBatchNorm(NetParameter* net_param) { + for (int i = 0; i < net_param->layer_size(); ++i) { + // Check if BatchNorm layers declare three parameters, as required by + // the previous BatchNorm layer definition. + if (net_param->layer(i).type() == "BatchNorm" + && net_param->layer(i).param_size() == 3) { + // set lr_mult and decay_mult to zero. leave all other param intact. + for (int ip = 0; ip < net_param->layer(i).param_size(); ip++) { + ParamSpec* fixed_param_spec = + net_param->mutable_layer(i)->mutable_param(ip); + fixed_param_spec->set_lr_mult(0.f); + fixed_param_spec->set_decay_mult(0.f); + } + } + } +} + +// Return true iff the solver contains any old solver_type specified as enums +bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param) { + if (solver_param.has_solver_type()) { + return true; + } + return false; +} + +bool UpgradeSolverType(SolverParameter* solver_param) { + CHECK(!solver_param->has_solver_type() || !solver_param->has_type()) + << "Failed to upgrade solver: old solver_type field (enum) and new type " + << "field (string) cannot be both specified in solver proto text."; + if (solver_param->has_solver_type()) { + string type; + switch (solver_param->solver_type()) { + case SolverParameter_SolverType_SGD: + type = "SGD"; + break; + case SolverParameter_SolverType_NESTEROV: + type = "Nesterov"; + break; + case SolverParameter_SolverType_ADAGRAD: + type = "AdaGrad"; + break; + case SolverParameter_SolverType_RMSPROP: + type = "RMSProp"; + break; + case SolverParameter_SolverType_ADADELTA: + type = "AdaDelta"; + break; + case SolverParameter_SolverType_ADAM: + type = "Adam"; + break; + default: + LOG(FATAL) << "Unknown SolverParameter solver_type: " << type; + } + solver_param->set_type(type); + solver_param->clear_solver_type(); + } else { + LOG(ERROR) << "Warning: solver type already up to date. "; + return false; + } + return true; +} + +// Check for deprecations and upgrade the SolverParameter as needed. +bool UpgradeSolverAsNeeded(const string& param_file, SolverParameter* param) { + bool success = true; + // Try to upgrade old style solver_type enum fields into new string type + if (SolverNeedsTypeUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "'solver_type' field (enum)': " << param_file; + if (!UpgradeSolverType(param)) { + success = false; + LOG(ERROR) << "Warning: had one or more problems upgrading " + << "SolverType (see above)."; + } else { + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "'solver_type' field (enum) to 'type' field (string)."; + LOG(WARNING) << "Note that future Caffe releases will only support " + << "'type' field (string) for a solver's type."; + } + } + return success; +} + +// Read parameters from a file into a SolverParameter proto message. +void ReadSolverParamsFromTextFileOrDie(const string& param_file, + SolverParameter* param) { + CHECK(ReadProtoFromTextFile(param_file, param)) + << "Failed to parse SolverParameter file: " << param_file; + UpgradeSolverAsNeeded(param_file, param); +} + +} // namespace caffe diff --git a/3rdparty/caffe/src/gtest/CMakeLists.txt b/3rdparty/caffe/src/gtest/CMakeLists.txt new file mode 100644 index 00000000..e98254af --- /dev/null +++ b/3rdparty/caffe/src/gtest/CMakeLists.txt @@ -0,0 +1,8 @@ +add_library(gtest STATIC EXCLUDE_FROM_ALL gtest.h gtest-all.cpp) +caffe_default_properties(gtest) +target_include_directories(gtest PUBLIC ${Caffe_SRC_DIR}) +target_compile_definitions(gtest PUBLIC -DGTEST_USE_OWN_TR1_TUPLE) + + +#add_library(gtest_main gtest_main.cc) +#target_link_libraries(gtest_main gtest) diff --git a/3rdparty/caffe/src/gtest/gtest-all.cpp b/3rdparty/caffe/src/gtest/gtest-all.cpp new file mode 100644 index 00000000..81cdb578 --- /dev/null +++ b/3rdparty/caffe/src/gtest/gtest-all.cpp @@ -0,0 +1,9117 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// Google C++ Testing Framework (Google Test) +// +// Sometimes it's desirable to build Google Test by compiling a single file. +// This file serves this purpose. + +// This line ensures that gtest.h can be compiled on its own, even +// when it's fused. +#include "gtest/gtest.h" + +// The following lines pull in the real gtest *.cc files. +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) + +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Utilities for testing Google Test itself and code that uses Google Test +// (e.g. frameworks built on top of Google Test). + +#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_ +#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_ + + +namespace testing { + +// This helper class can be used to mock out Google Test failure reporting +// so that we can test Google Test or code that builds on Google Test. +// +// An object of this class appends a TestPartResult object to the +// TestPartResultArray object given in the constructor whenever a Google Test +// failure is reported. It can either intercept only failures that are +// generated in the same thread that created this object or it can intercept +// all generated failures. The scope of this mock object can be controlled with +// the second argument to the two arguments constructor. +class GTEST_API_ ScopedFakeTestPartResultReporter + : public TestPartResultReporterInterface { + public: + // The two possible mocking modes of this object. + enum InterceptMode { + INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures. + INTERCEPT_ALL_THREADS // Intercepts all failures. + }; + + // The c'tor sets this object as the test part result reporter used + // by Google Test. The 'result' parameter specifies where to report the + // results. This reporter will only catch failures generated in the current + // thread. DEPRECATED + explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result); + + // Same as above, but you can choose the interception scope of this object. + ScopedFakeTestPartResultReporter(InterceptMode intercept_mode, + TestPartResultArray* result); + + // The d'tor restores the previous test part result reporter. + virtual ~ScopedFakeTestPartResultReporter(); + + // Appends the TestPartResult object to the TestPartResultArray + // received in the constructor. + // + // This method is from the TestPartResultReporterInterface + // interface. + virtual void ReportTestPartResult(const TestPartResult& result); + private: + void Init(); + + const InterceptMode intercept_mode_; + TestPartResultReporterInterface* old_reporter_; + TestPartResultArray* const result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter); +}; + +namespace internal { + +// A helper class for implementing EXPECT_FATAL_FAILURE() and +// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +class GTEST_API_ SingleFailureChecker { + public: + // The constructor remembers the arguments. + SingleFailureChecker(const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr); + ~SingleFailureChecker(); + private: + const TestPartResultArray* const results_; + const TestPartResult::Type type_; + const string substr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker); +}; + +} // namespace internal + +} // namespace testing + +// A set of macros for testing Google Test assertions or code that's expected +// to generate Google Test fatal failures. It verifies that the given +// statement will cause exactly one fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_FATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - 'statement' cannot reference local non-static variables or +// non-static members of the current object. +// - 'statement' cannot return a value. +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. The AcceptsMacroThatExpandsToUnprotectedComma test in +// gtest_unittest.cc will fail to compile if we do that. +#define EXPECT_FATAL_FAILURE(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ALL_THREADS, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +// A macro for testing Google Test assertions or code that's expected to +// generate Google Test non-fatal failures. It asserts that the given +// statement will cause exactly one non-fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// 'statement' is allowed to reference local variables and members of +// the current object. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. If we do that, the code won't compile when the user gives +// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that +// expands to code containing an unprotected comma. The +// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc +// catches that. +// +// For the same reason, we have to write +// if (::testing::internal::AlwaysTrue()) { statement; } +// instead of +// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) +// to avoid an MSVC warning on unreachable code. +#define EXPECT_NONFATAL_FAILURE(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS,\ + >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include // NOLINT +#include +#include + +#if GTEST_OS_LINUX + +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +# include // NOLINT +# include // NOLINT +# include // NOLINT +// Declares vsnprintf(). This header is not available on Windows. +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include + +#elif GTEST_OS_SYMBIAN +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +#elif GTEST_OS_ZOS +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +// On z/OS we additionally need strings.h for strcasecmp. +# include // NOLINT + +#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE. + +# include // NOLINT + +#elif GTEST_OS_WINDOWS // We are on Windows proper. + +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT + +# if GTEST_OS_WINDOWS_MINGW +// MinGW has gettimeofday() but not _ftime64(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +// TODO(kenton@google.com): There are other ways to get the time on +// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW +// supports these. consider using them instead. +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT +# endif // GTEST_OS_WINDOWS_MINGW + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT + +#else + +// Assume other platforms have gettimeofday(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT +# include // NOLINT + +#endif // GTEST_OS_LINUX + +#if GTEST_HAS_EXCEPTIONS +# include +#endif + +#if GTEST_CAN_STREAM_RESULTS_ +# include // NOLINT +# include // NOLINT +#endif + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Utility functions and classes used by the Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) +// +// This file contains purely Google Test's internal implementation. Please +// DO NOT #INCLUDE IT IN A USER PROGRAM. + +#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_ +#define GTEST_SRC_GTEST_INTERNAL_INL_H_ + +// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is +// part of Google Test's implementation; otherwise it's undefined. +#if !GTEST_IMPLEMENTATION_ +// A user is trying to include this from his code - just say no. +# error "gtest-internal-inl.h is part of Google Test's internal implementation." +# error "It must not be included except by Google Test itself." +#endif // GTEST_IMPLEMENTATION_ + +#ifndef _WIN32_WCE +# include +#endif // !_WIN32_WCE +#include +#include // For strtoll/_strtoul64/malloc/free. +#include // For memmove. + +#include +#include +#include + + +#if GTEST_OS_WINDOWS +# include // NOLINT +#endif // GTEST_OS_WINDOWS + + +namespace testing { + +// Declares the flags. +// +// We don't want the users to modify this flag in the code, but want +// Google Test's own unit tests to be able to access it. Therefore we +// declare it here as opposed to in gtest.h. +GTEST_DECLARE_bool_(death_test_use_fork); + +namespace internal { + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest; + +// Names of the flags (needed for parsing Google Test flags). +const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests"; +const char kBreakOnFailureFlag[] = "break_on_failure"; +const char kCatchExceptionsFlag[] = "catch_exceptions"; +const char kColorFlag[] = "color"; +const char kFilterFlag[] = "filter"; +const char kListTestsFlag[] = "list_tests"; +const char kOutputFlag[] = "output"; +const char kPrintTimeFlag[] = "print_time"; +const char kRandomSeedFlag[] = "random_seed"; +const char kRepeatFlag[] = "repeat"; +const char kShuffleFlag[] = "shuffle"; +const char kStackTraceDepthFlag[] = "stack_trace_depth"; +const char kStreamResultToFlag[] = "stream_result_to"; +const char kThrowOnFailureFlag[] = "throw_on_failure"; + +// A valid random seed must be in [1, kMaxRandomSeed]. +const int kMaxRandomSeed = 99999; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +GTEST_API_ extern bool g_help_flag; + +// Returns the current time in milliseconds. +GTEST_API_ TimeInMillis GetTimeInMillis(); + +// Returns true iff Google Test should use colors in the output. +GTEST_API_ bool ShouldUseColor(bool stdout_is_tty); + +// Formats the given time in milliseconds as seconds. +GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms); + +// Parses a string for an Int32 flag, in the form of "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +GTEST_API_ bool ParseInt32Flag( + const char* str, const char* flag, Int32* value); + +// Returns a random seed in range [1, kMaxRandomSeed] based on the +// given --gtest_random_seed flag value. +inline int GetRandomSeedFromFlag(Int32 random_seed_flag) { + const unsigned int raw_seed = (random_seed_flag == 0) ? + static_cast(GetTimeInMillis()) : + static_cast(random_seed_flag); + + // Normalizes the actual seed to range [1, kMaxRandomSeed] such that + // it's easy to type. + const int normalized_seed = + static_cast((raw_seed - 1U) % + static_cast(kMaxRandomSeed)) + 1; + return normalized_seed; +} + +// Returns the first valid random seed after 'seed'. The behavior is +// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is +// considered to be 1. +inline int GetNextRandomSeed(int seed) { + GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed) + << "Invalid random seed " << seed << " - must be in [1, " + << kMaxRandomSeed << "]."; + const int next_seed = seed + 1; + return (next_seed > kMaxRandomSeed) ? 1 : next_seed; +} + +// This class saves the values of all Google Test flags in its c'tor, and +// restores them in its d'tor. +class GTestFlagSaver { + public: + // The c'tor. + GTestFlagSaver() { + also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests); + break_on_failure_ = GTEST_FLAG(break_on_failure); + catch_exceptions_ = GTEST_FLAG(catch_exceptions); + color_ = GTEST_FLAG(color); + death_test_style_ = GTEST_FLAG(death_test_style); + death_test_use_fork_ = GTEST_FLAG(death_test_use_fork); + filter_ = GTEST_FLAG(filter); + internal_run_death_test_ = GTEST_FLAG(internal_run_death_test); + list_tests_ = GTEST_FLAG(list_tests); + output_ = GTEST_FLAG(output); + print_time_ = GTEST_FLAG(print_time); + random_seed_ = GTEST_FLAG(random_seed); + repeat_ = GTEST_FLAG(repeat); + shuffle_ = GTEST_FLAG(shuffle); + stack_trace_depth_ = GTEST_FLAG(stack_trace_depth); + stream_result_to_ = GTEST_FLAG(stream_result_to); + throw_on_failure_ = GTEST_FLAG(throw_on_failure); + } + + // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS. + ~GTestFlagSaver() { + GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_; + GTEST_FLAG(break_on_failure) = break_on_failure_; + GTEST_FLAG(catch_exceptions) = catch_exceptions_; + GTEST_FLAG(color) = color_; + GTEST_FLAG(death_test_style) = death_test_style_; + GTEST_FLAG(death_test_use_fork) = death_test_use_fork_; + GTEST_FLAG(filter) = filter_; + GTEST_FLAG(internal_run_death_test) = internal_run_death_test_; + GTEST_FLAG(list_tests) = list_tests_; + GTEST_FLAG(output) = output_; + GTEST_FLAG(print_time) = print_time_; + GTEST_FLAG(random_seed) = random_seed_; + GTEST_FLAG(repeat) = repeat_; + GTEST_FLAG(shuffle) = shuffle_; + GTEST_FLAG(stack_trace_depth) = stack_trace_depth_; + GTEST_FLAG(stream_result_to) = stream_result_to_; + GTEST_FLAG(throw_on_failure) = throw_on_failure_; + } + private: + // Fields for saving the original values of flags. + bool also_run_disabled_tests_; + bool break_on_failure_; + bool catch_exceptions_; + String color_; + String death_test_style_; + bool death_test_use_fork_; + String filter_; + String internal_run_death_test_; + bool list_tests_; + String output_; + bool print_time_; + internal::Int32 random_seed_; + internal::Int32 repeat_; + bool shuffle_; + internal::Int32 stack_trace_depth_; + String stream_result_to_; + bool throw_on_failure_; +} GTEST_ATTRIBUTE_UNUSED_; + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +GTEST_API_ char* CodePointToUtf8(UInt32 code_point, char* str); + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +GTEST_API_ String WideStringToUtf8(const wchar_t* str, int num_chars); + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded(); + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (e.g., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +GTEST_API_ bool ShouldShard(const char* total_shards_str, + const char* shard_index_str, + bool in_subprocess_for_death_test); + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error and +// and aborts. +GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val); + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +GTEST_API_ bool ShouldRunTestOnShard( + int total_shards, int shard_index, int test_id); + +// STL container utilities. + +// Returns the number of elements in the given container that satisfy +// the given predicate. +template +inline int CountIf(const Container& c, Predicate predicate) { + // Implemented as an explicit loop since std::count_if() in libCstd on + // Solaris has a non-standard signature. + int count = 0; + for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) { + if (predicate(*it)) + ++count; + } + return count; +} + +// Applies a function/functor to each element in the container. +template +void ForEach(const Container& c, Functor functor) { + std::for_each(c.begin(), c.end(), functor); +} + +// Returns the i-th element of the vector, or default_value if i is not +// in range [0, v.size()). +template +inline E GetElementOr(const std::vector& v, int i, E default_value) { + return (i < 0 || i >= static_cast(v.size())) ? default_value : v[i]; +} + +// Performs an in-place shuffle of a range of the vector's elements. +// 'begin' and 'end' are element indices as an STL-style range; +// i.e. [begin, end) are shuffled, where 'end' == size() means to +// shuffle to the end of the vector. +template +void ShuffleRange(internal::Random* random, int begin, int end, + std::vector* v) { + const int size = static_cast(v->size()); + GTEST_CHECK_(0 <= begin && begin <= size) + << "Invalid shuffle range start " << begin << ": must be in range [0, " + << size << "]."; + GTEST_CHECK_(begin <= end && end <= size) + << "Invalid shuffle range finish " << end << ": must be in range [" + << begin << ", " << size << "]."; + + // Fisher-Yates shuffle, from + // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle + for (int range_width = end - begin; range_width >= 2; range_width--) { + const int last_in_range = begin + range_width - 1; + const int selected = begin + random->Generate(range_width); + std::swap((*v)[selected], (*v)[last_in_range]); + } +} + +// Performs an in-place shuffle of the vector's elements. +template +inline void Shuffle(internal::Random* random, std::vector* v) { + ShuffleRange(random, 0, static_cast(v->size()), v); +} + +// A function for deleting an object. Handy for being used as a +// functor. +template +static void Delete(T* x) { + delete x; +} + +// A predicate that checks the key of a TestProperty against a known key. +// +// TestPropertyKeyIs is copyable. +class TestPropertyKeyIs { + public: + // Constructor. + // + // TestPropertyKeyIs has NO default constructor. + explicit TestPropertyKeyIs(const char* key) + : key_(key) {} + + // Returns true iff the test name of test property matches on key_. + bool operator()(const TestProperty& test_property) const { + return String(test_property.key()).Compare(key_) == 0; + } + + private: + String key_; +}; + +// Class UnitTestOptions. +// +// This class contains functions for processing options the user +// specifies when running the tests. It has only static members. +// +// In most cases, the user can specify an option using either an +// environment variable or a command line flag. E.g. you can set the +// test filter using either GTEST_FILTER or --gtest_filter. If both +// the variable and the flag are present, the latter overrides the +// former. +class GTEST_API_ UnitTestOptions { + public: + // Functions for processing the gtest_output flag. + + // Returns the output format, or "" for normal printed output. + static String GetOutputFormat(); + + // Returns the absolute path of the requested output file, or the + // default (test_detail.xml in the original working directory) if + // none was explicitly specified. + static String GetAbsolutePathToOutputFile(); + + // Functions for processing the gtest_filter flag. + + // Returns true iff the wildcard pattern matches the string. The + // first ':' or '\0' character in pattern marks the end of it. + // + // This recursive algorithm isn't very efficient, but is clear and + // works well enough for matching test names, which are short. + static bool PatternMatchesString(const char *pattern, const char *str); + + // Returns true iff the user-specified filter matches the test case + // name and the test name. + static bool FilterMatchesTest(const String &test_case_name, + const String &test_name); + +#if GTEST_OS_WINDOWS + // Function for supporting the gtest_catch_exception flag. + + // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the + // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. + // This function is useful as an __except condition. + static int GTestShouldProcessSEH(DWORD exception_code); +#endif // GTEST_OS_WINDOWS + + // Returns true if "name" matches the ':' separated list of glob-style + // filters in "filter". + static bool MatchesFilter(const String& name, const char* filter); +}; + +// Returns the current application's name, removing directory path if that +// is present. Used by UnitTestOptions::GetOutputFile. +GTEST_API_ FilePath GetCurrentExecutableName(); + +// The role interface for getting the OS stack trace as a string. +class OsStackTraceGetterInterface { + public: + OsStackTraceGetterInterface() {} + virtual ~OsStackTraceGetterInterface() {} + + // Returns the current OS stack trace as a String. Parameters: + // + // max_depth - the maximum number of stack frames to be included + // in the trace. + // skip_count - the number of top frames to be skipped; doesn't count + // against max_depth. + virtual String CurrentStackTrace(int max_depth, int skip_count) = 0; + + // UponLeavingGTest() should be called immediately before Google Test calls + // user code. It saves some information about the current stack that + // CurrentStackTrace() will use to find and hide Google Test stack frames. + virtual void UponLeavingGTest() = 0; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface); +}; + +// A working implementation of the OsStackTraceGetterInterface interface. +class OsStackTraceGetter : public OsStackTraceGetterInterface { + public: + OsStackTraceGetter() : caller_frame_(NULL) {} + virtual String CurrentStackTrace(int max_depth, int skip_count); + virtual void UponLeavingGTest(); + + // This string is inserted in place of stack frames that are part of + // Google Test's implementation. + static const char* const kElidedFramesMarker; + + private: + Mutex mutex_; // protects all internal state + + // We save the stack frame below the frame that calls user code. + // We do this because the address of the frame immediately below + // the user code changes between the call to UponLeavingGTest() + // and any calls to CurrentStackTrace() from within the user code. + void* caller_frame_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter); +}; + +// Information about a Google Test trace point. +struct TraceInfo { + const char* file; + int line; + String message; +}; + +// This is the default global test part result reporter used in UnitTestImpl. +// This class should only be used by UnitTestImpl. +class DefaultGlobalTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. Reports the test part + // result in the current test. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter); +}; + +// This is the default per thread test part result reporter used in +// UnitTestImpl. This class should only be used by UnitTestImpl. +class DefaultPerThreadTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. The implementation just + // delegates to the current global test part result reporter of *unit_test_. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter); +}; + +// The private implementation of the UnitTest class. We don't protect +// the methods under a mutex, as this class is not accessible by a +// user and the UnitTest class that delegates work to this class does +// proper locking. +class GTEST_API_ UnitTestImpl { + public: + explicit UnitTestImpl(UnitTest* parent); + virtual ~UnitTestImpl(); + + // There are two different ways to register your own TestPartResultReporter. + // You can register your own repoter to listen either only for test results + // from the current thread or for results from all threads. + // By default, each per-thread test result repoter just passes a new + // TestPartResult to the global test result reporter, which registers the + // test part result for the currently running test. + + // Returns the global test part result reporter. + TestPartResultReporterInterface* GetGlobalTestPartResultReporter(); + + // Sets the global test part result reporter. + void SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter); + + // Returns the test part result reporter for the current thread. + TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread(); + + // Sets the test part result reporter for the current thread. + void SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter); + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const { return !Failed(); } + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const { + return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[i]; + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i) { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[index]; + } + + // Provides access to the event listener list. + TestEventListeners* listeners() { return &listeners_; } + + // Returns the TestResult for the test that's currently running, or + // the TestResult for the ad hoc test if no test is running. + TestResult* current_test_result(); + + // Returns the TestResult for the ad hoc test. + const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } + + // Sets the OS stack trace getter. + // + // Does nothing if the input and the current OS stack trace getter + // are the same; otherwise, deletes the old getter and makes the + // input the current getter. + void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); + + // Returns the current OS stack trace getter if it is not NULL; + // otherwise, creates an OsStackTraceGetter, makes it the current + // getter, and returns it. + OsStackTraceGetterInterface* os_stack_trace_getter(); + + // Returns the current OS stack trace as a String. + // + // The maximum number of stack frames to be included is specified by + // the gtest_stack_trace_depth flag. The skip_count parameter + // specifies the number of top frames to be skipped, which doesn't + // count against the number of frames to be included. + // + // For example, if Foo() calls Bar(), which in turn calls + // CurrentOsStackTraceExceptTop(1), Foo() will be included in the + // trace but Bar() and CurrentOsStackTraceExceptTop() won't. + String CurrentOsStackTraceExceptTop(int skip_count); + + // Finds and returns a TestCase with the given name. If one doesn't + // exist, creates one and returns it. + // + // Arguments: + // + // test_case_name: name of the test case + // type_param: the name of the test's type parameter, or NULL if + // this is not a typed or a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase* GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Adds a TestInfo to the unit test. + // + // Arguments: + // + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + // test_info: the TestInfo object + void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + TestInfo* test_info) { + // In order to support thread-safe death tests, we need to + // remember the original working directory when the test program + // was first invoked. We cannot do this in RUN_ALL_TESTS(), as + // the user may have changed the current directory before calling + // RUN_ALL_TESTS(). Therefore we capture the current directory in + // AddTestInfo(), which is called to register a TEST or TEST_F + // before main() is reached. + if (original_working_dir_.IsEmpty()) { + original_working_dir_.Set(FilePath::GetCurrentDir()); + GTEST_CHECK_(!original_working_dir_.IsEmpty()) + << "Failed to get the current working directory."; + } + + GetTestCase(test_info->test_case_name(), + test_info->type_param(), + set_up_tc, + tear_down_tc)->AddTestInfo(test_info); + } + +#if GTEST_HAS_PARAM_TEST + // Returns ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() { + return parameterized_test_registry_; + } +#endif // GTEST_HAS_PARAM_TEST + + // Sets the TestCase object for the test that's currently running. + void set_current_test_case(TestCase* a_current_test_case) { + current_test_case_ = a_current_test_case; + } + + // Sets the TestInfo object for the test that's currently running. If + // current_test_info is NULL, the assertion results will be stored in + // ad_hoc_test_result_. + void set_current_test_info(TestInfo* a_current_test_info) { + current_test_info_ = a_current_test_info; + } + + // Registers all parameterized tests defined using TEST_P and + // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter + // combination. This method can be called more then once; it has guards + // protecting from registering the tests more then once. If + // value-parameterized tests are disabled, RegisterParameterizedTests is + // present but does nothing. + void RegisterParameterizedTests(); + + // Runs all tests in this UnitTest object, prints the result, and + // returns true if all tests are successful. If any exception is + // thrown during a test, this test is considered to be failed, but + // the rest of the tests will still be run. + bool RunAllTests(); + + // Clears the results of all tests, except the ad hoc tests. + void ClearNonAdHocTestResult() { + ForEach(test_cases_, TestCase::ClearTestCaseResult); + } + + // Clears the results of ad-hoc test assertions. + void ClearAdHocTestResult() { + ad_hoc_test_result_.Clear(); + } + + enum ReactionToSharding { + HONOR_SHARDING_PROTOCOL, + IGNORE_SHARDING_PROTOCOL + }; + + // Matches the full name of each test against the user-specified + // filter to decide whether the test should run, then records the + // result in each TestCase and TestInfo object. + // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests + // based on sharding variables in the environment. + // Returns the number of tests that should run. + int FilterTests(ReactionToSharding shard_tests); + + // Prints the names of the tests matching the user-specified filter flag. + void ListTestsMatchingFilter(); + + const TestCase* current_test_case() const { return current_test_case_; } + TestInfo* current_test_info() { return current_test_info_; } + const TestInfo* current_test_info() const { return current_test_info_; } + + // Returns the vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector& environments() { return environments_; } + + // Getters for the per-thread Google Test trace stack. + std::vector& gtest_trace_stack() { + return *(gtest_trace_stack_.pointer()); + } + const std::vector& gtest_trace_stack() const { + return gtest_trace_stack_.get(); + } + +#if GTEST_HAS_DEATH_TEST + void InitDeathTestSubprocessControlInfo() { + internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag()); + } + // Returns a pointer to the parsed --gtest_internal_run_death_test + // flag, or NULL if that flag was not specified. + // This information is useful only in a death test child process. + // Must not be called before a call to InitGoogleTest. + const InternalRunDeathTestFlag* internal_run_death_test_flag() const { + return internal_run_death_test_flag_.get(); + } + + // Returns a pointer to the current death test factory. + internal::DeathTestFactory* death_test_factory() { + return death_test_factory_.get(); + } + + void SuppressTestEventsIfInSubprocess(); + + friend class ReplaceDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + + // Initializes the event listener performing XML output as specified by + // UnitTestOptions. Must not be called before InitGoogleTest. + void ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Initializes the event listener for streaming test results to a socket. + // Must not be called before InitGoogleTest. + void ConfigureStreamingOutput(); +#endif + + // Performs initialization dependent upon flag values obtained in + // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to + // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest + // this function is also called from RunAllTests. Since this function can be + // called more than once, it has to be idempotent. + void PostFlagParsingInit(); + + // Gets the random seed used at the start of the current test iteration. + int random_seed() const { return random_seed_; } + + // Gets the random number generator. + internal::Random* random() { return &random_; } + + // Shuffles all test cases, and the tests within each test case, + // making sure that death tests are still run first. + void ShuffleTests(); + + // Restores the test cases and tests to their order before the first shuffle. + void UnshuffleTests(); + + // Returns the value of GTEST_FLAG(catch_exceptions) at the moment + // UnitTest::Run() starts. + bool catch_exceptions() const { return catch_exceptions_; } + + private: + friend class ::testing::UnitTest; + + // Used by UnitTest::Run() to capture the state of + // GTEST_FLAG(catch_exceptions) at the moment it starts. + void set_catch_exceptions(bool value) { catch_exceptions_ = value; } + + // The UnitTest object that owns this implementation object. + UnitTest* const parent_; + + // The working directory when the first TEST() or TEST_F() was + // executed. + internal::FilePath original_working_dir_; + + // The default test part result reporters. + DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_; + DefaultPerThreadTestPartResultReporter + default_per_thread_test_part_result_reporter_; + + // Points to (but doesn't own) the global test part result reporter. + TestPartResultReporterInterface* global_test_part_result_repoter_; + + // Protects read and write access to global_test_part_result_reporter_. + internal::Mutex global_test_part_result_reporter_mutex_; + + // Points to (but doesn't own) the per-thread test part result reporter. + internal::ThreadLocal + per_thread_test_part_result_reporter_; + + // The vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector environments_; + + // The vector of TestCases in their original order. It owns the + // elements in the vector. + std::vector test_cases_; + + // Provides a level of indirection for the test case list to allow + // easy shuffling and restoring the test case order. The i-th + // element of this vector is the index of the i-th test case in the + // shuffled order. + std::vector test_case_indices_; + +#if GTEST_HAS_PARAM_TEST + // ParameterizedTestRegistry object used to register value-parameterized + // tests. + internal::ParameterizedTestCaseRegistry parameterized_test_registry_; + + // Indicates whether RegisterParameterizedTests() has been called already. + bool parameterized_tests_registered_; +#endif // GTEST_HAS_PARAM_TEST + + // Index of the last death test case registered. Initially -1. + int last_death_test_case_; + + // This points to the TestCase for the currently running test. It + // changes as Google Test goes through one test case after another. + // When no test is running, this is set to NULL and Google Test + // stores assertion results in ad_hoc_test_result_. Initially NULL. + TestCase* current_test_case_; + + // This points to the TestInfo for the currently running test. It + // changes as Google Test goes through one test after another. When + // no test is running, this is set to NULL and Google Test stores + // assertion results in ad_hoc_test_result_. Initially NULL. + TestInfo* current_test_info_; + + // Normally, a user only writes assertions inside a TEST or TEST_F, + // or inside a function called by a TEST or TEST_F. Since Google + // Test keeps track of which test is current running, it can + // associate such an assertion with the test it belongs to. + // + // If an assertion is encountered when no TEST or TEST_F is running, + // Google Test attributes the assertion result to an imaginary "ad hoc" + // test, and records the result in ad_hoc_test_result_. + TestResult ad_hoc_test_result_; + + // The list of event listeners that can be used to track events inside + // Google Test. + TestEventListeners listeners_; + + // The OS stack trace getter. Will be deleted when the UnitTest + // object is destructed. By default, an OsStackTraceGetter is used, + // but the user can set this field to use a custom getter if that is + // desired. + OsStackTraceGetterInterface* os_stack_trace_getter_; + + // True iff PostFlagParsingInit() has been called. + bool post_flag_parse_init_performed_; + + // The random number seed used at the beginning of the test run. + int random_seed_; + + // Our random number generator. + internal::Random random_; + + // How long the test took to run, in milliseconds. + TimeInMillis elapsed_time_; + +#if GTEST_HAS_DEATH_TEST + // The decomposed components of the gtest_internal_run_death_test flag, + // parsed when RUN_ALL_TESTS is called. + internal::scoped_ptr internal_run_death_test_flag_; + internal::scoped_ptr death_test_factory_; +#endif // GTEST_HAS_DEATH_TEST + + // A per-thread stack of traces created by the SCOPED_TRACE() macro. + internal::ThreadLocal > gtest_trace_stack_; + + // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests() + // starts. + bool catch_exceptions_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl); +}; // class UnitTestImpl + +// Convenience function for accessing the global UnitTest +// implementation object. +inline UnitTestImpl* GetUnitTestImpl() { + return UnitTest::GetInstance()->impl(); +} + +#if GTEST_USES_SIMPLE_RE + +// Internal helper functions for implementing the simple regular +// expression matcher. +GTEST_API_ bool IsInSet(char ch, const char* str); +GTEST_API_ bool IsAsciiDigit(char ch); +GTEST_API_ bool IsAsciiPunct(char ch); +GTEST_API_ bool IsRepeat(char ch); +GTEST_API_ bool IsAsciiWhiteSpace(char ch); +GTEST_API_ bool IsAsciiWordChar(char ch); +GTEST_API_ bool IsValidEscape(char ch); +GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch); +GTEST_API_ bool ValidateRegex(const char* regex); +GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str); +GTEST_API_ bool MatchRepetitionAndRegexAtHead( + bool escaped, char ch, char repeat, const char* regex, const char* str); +GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str); + +#endif // GTEST_USES_SIMPLE_RE + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv); +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv); + +#if GTEST_HAS_DEATH_TEST + +// Returns the message describing the last system error, regardless of the +// platform. +GTEST_API_ String GetLastErrnoDescription(); + +# if GTEST_OS_WINDOWS +// Provides leak-safe Windows kernel handle ownership. +class AutoHandle { + public: + AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} + explicit AutoHandle(HANDLE handle) : handle_(handle) {} + + ~AutoHandle() { Reset(); } + + HANDLE Get() const { return handle_; } + void Reset() { Reset(INVALID_HANDLE_VALUE); } + void Reset(HANDLE handle) { + if (handle != handle_) { + if (handle_ != INVALID_HANDLE_VALUE) + ::CloseHandle(handle_); + handle_ = handle; + } + } + + private: + HANDLE handle_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle); +}; +# endif // GTEST_OS_WINDOWS + +// Attempts to parse a string into a positive integer pointed to by the +// number parameter. Returns true if that is possible. +// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use +// it here. +template +bool ParseNaturalNumber(const ::std::string& str, Integer* number) { + // Fail fast if the given string does not begin with a digit; + // this bypasses strtoXXX's "optional leading whitespace and plus + // or minus sign" semantics, which are undesirable here. + if (str.empty() || !IsDigit(str[0])) { + return false; + } + errno = 0; + + char* end; + // BiggestConvertible is the largest integer type that system-provided + // string-to-number conversion routines can return. + +# if GTEST_OS_WINDOWS && !defined(__GNUC__) + + // MSVC and C++ Builder define __int64 instead of the standard long long. + typedef unsigned __int64 BiggestConvertible; + const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); + +# else + + typedef unsigned long long BiggestConvertible; // NOLINT + const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); + +# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) + + const bool parse_success = *end == '\0' && errno == 0; + + // TODO(vladl@google.com): Convert this to compile time assertion when it is + // available. + GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); + + const Integer result = static_cast(parsed); + if (parse_success && static_cast(result) == parsed) { + *number = result; + return true; + } + return false; +} +#endif // GTEST_HAS_DEATH_TEST + +// TestResult contains some private methods that should be hidden from +// Google Test user but are required for testing. This class allow our tests +// to access them. +// +// This class is supplied only for the purpose of testing Google Test's own +// constructs. Do not use it in user tests, either directly or indirectly. +class TestResultAccessor { + public: + static void RecordProperty(TestResult* test_result, + const TestProperty& property) { + test_result->RecordProperty(property); + } + + static void ClearTestPartResults(TestResult* test_result) { + test_result->ClearTestPartResults(); + } + + static const std::vector& test_part_results( + const TestResult& test_result) { + return test_result.test_part_results(); + } +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_ +#undef GTEST_IMPLEMENTATION_ + +#if GTEST_OS_WINDOWS +# define vsnprintf _vsnprintf +#endif // GTEST_OS_WINDOWS + +namespace testing { + +using internal::CountIf; +using internal::ForEach; +using internal::GetElementOr; +using internal::Shuffle; + +// Constants. + +// A test whose test case name or test name matches this filter is +// disabled and not run. +static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*"; + +// A test case whose name matches this filter is considered a death +// test case and will be run before test cases whose name doesn't +// match this filter. +static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*"; + +// A test filter that matches everything. +static const char kUniversalFilter[] = "*"; + +// The default output file for XML output. +static const char kDefaultOutputFile[] = "test_detail.xml"; + +// The environment variable name for the test shard index. +static const char kTestShardIndex[] = "GTEST_SHARD_INDEX"; +// The environment variable name for the total number of test shards. +static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS"; +// The environment variable name for the test shard status file. +static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE"; + +namespace internal { + +// The text used in failure messages to indicate the start of the +// stack trace. +const char kStackTraceMarker[] = "\nStack trace:\n"; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +bool g_help_flag = false; + +} // namespace internal + +GTEST_DEFINE_bool_( + also_run_disabled_tests, + internal::BoolFromGTestEnv("also_run_disabled_tests", false), + "Run disabled tests too, in addition to the tests normally being run."); + +GTEST_DEFINE_bool_( + break_on_failure, + internal::BoolFromGTestEnv("break_on_failure", false), + "True iff a failed assertion should be a debugger break-point."); + +GTEST_DEFINE_bool_( + catch_exceptions, + internal::BoolFromGTestEnv("catch_exceptions", true), + "True iff " GTEST_NAME_ + " should catch exceptions and treat them as test failures."); + +GTEST_DEFINE_string_( + color, + internal::StringFromGTestEnv("color", "auto"), + "Whether to use colors in the output. Valid values: yes, no, " + "and auto. 'auto' means to use colors if the output is " + "being sent to a terminal and the TERM environment variable " + "is set to xterm, xterm-color, xterm-256color, linux or cygwin."); + +GTEST_DEFINE_string_( + filter, + internal::StringFromGTestEnv("filter", kUniversalFilter), + "A colon-separated list of glob (not regex) patterns " + "for filtering the tests to run, optionally followed by a " + "'-' and a : separated list of negative patterns (tests to " + "exclude). A test is run if it matches one of the positive " + "patterns and does not match any of the negative patterns."); + +GTEST_DEFINE_bool_(list_tests, false, + "List all tests without running them."); + +GTEST_DEFINE_string_( + output, + internal::StringFromGTestEnv("output", ""), + "A format (currently must be \"xml\"), optionally followed " + "by a colon and an output file name or directory. A directory " + "is indicated by a trailing pathname separator. " + "Examples: \"xml:filename.xml\", \"xml::directoryname/\". " + "If a directory is specified, output files will be created " + "within that directory, with file-names based on the test " + "executable's name and, if necessary, made unique by adding " + "digits."); + +GTEST_DEFINE_bool_( + print_time, + internal::BoolFromGTestEnv("print_time", true), + "True iff " GTEST_NAME_ + " should display elapsed time in text output."); + +GTEST_DEFINE_int32_( + random_seed, + internal::Int32FromGTestEnv("random_seed", 0), + "Random number seed to use when shuffling test orders. Must be in range " + "[1, 99999], or 0 to use a seed based on the current time."); + +GTEST_DEFINE_int32_( + repeat, + internal::Int32FromGTestEnv("repeat", 1), + "How many times to repeat each test. Specify a negative number " + "for repeating forever. Useful for shaking out flaky tests."); + +GTEST_DEFINE_bool_( + show_internal_stack_frames, false, + "True iff " GTEST_NAME_ " should include internal stack frames when " + "printing test failure stack traces."); + +GTEST_DEFINE_bool_( + shuffle, + internal::BoolFromGTestEnv("shuffle", false), + "True iff " GTEST_NAME_ + " should randomize tests' order on every run."); + +GTEST_DEFINE_int32_( + stack_trace_depth, + internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth), + "The maximum number of stack frames to print when an " + "assertion fails. The valid range is 0 through 100, inclusive."); + +GTEST_DEFINE_string_( + stream_result_to, + internal::StringFromGTestEnv("stream_result_to", ""), + "This flag specifies the host name and the port number on which to stream " + "test results. Example: \"localhost:555\". The flag is effective only on " + "Linux."); + +GTEST_DEFINE_bool_( + throw_on_failure, + internal::BoolFromGTestEnv("throw_on_failure", false), + "When this flag is specified, a failed assertion will throw an exception " + "if exceptions are enabled or exit the program with a non-zero code " + "otherwise."); + +namespace internal { + +// Generates a random number from [0, range), using a Linear +// Congruential Generator (LCG). Crashes if 'range' is 0 or greater +// than kMaxRange. +UInt32 Random::Generate(UInt32 range) { + // These constants are the same as are used in glibc's rand(3). + state_ = (1103515245U*state_ + 12345U) % kMaxRange; + + GTEST_CHECK_(range > 0) + << "Cannot generate a number in the range [0, 0)."; + GTEST_CHECK_(range <= kMaxRange) + << "Generation of a number in [0, " << range << ") was requested, " + << "but this can only generate numbers in [0, " << kMaxRange << ")."; + + // Converting via modulus introduces a bit of downward bias, but + // it's simple, and a linear congruential generator isn't too good + // to begin with. + return state_ % range; +} + +// GTestIsInitialized() returns true iff the user has initialized +// Google Test. Useful for catching the user mistake of not initializing +// Google Test before calling RUN_ALL_TESTS(). +// +// A user must call testing::InitGoogleTest() to initialize Google +// Test. g_init_gtest_count is set to the number of times +// InitGoogleTest() has been called. We don't protect this variable +// under a mutex as it is only accessed in the main thread. +int g_init_gtest_count = 0; +static bool GTestIsInitialized() { return g_init_gtest_count != 0; } + +// Iterates over a vector of TestCases, keeping a running sum of the +// results of calling a given int-returning method on each. +// Returns the sum. +static int SumOverTestCaseList(const std::vector& case_list, + int (TestCase::*method)() const) { + int sum = 0; + for (size_t i = 0; i < case_list.size(); i++) { + sum += (case_list[i]->*method)(); + } + return sum; +} + +// Returns true iff the test case passed. +static bool TestCasePassed(const TestCase* test_case) { + return test_case->should_run() && test_case->Passed(); +} + +// Returns true iff the test case failed. +static bool TestCaseFailed(const TestCase* test_case) { + return test_case->should_run() && test_case->Failed(); +} + +// Returns true iff test_case contains at least one test that should +// run. +static bool ShouldRunTestCase(const TestCase* test_case) { + return test_case->should_run(); +} + +// AssertHelper constructor. +AssertHelper::AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message) + : data_(new AssertHelperData(type, file, line, message)) { +} + +AssertHelper::~AssertHelper() { + delete data_; +} + +// Message assignment, for assertion streaming support. +void AssertHelper::operator=(const Message& message) const { + UnitTest::GetInstance()-> + AddTestPartResult(data_->type, data_->file, data_->line, + AppendUserMessage(data_->message, message), + UnitTest::GetInstance()->impl() + ->CurrentOsStackTraceExceptTop(1) + // Skips the stack frame for this function itself. + ); // NOLINT +} + +// Mutex for linked pointers. +GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// Application pathname gotten in InitGoogleTest. +String g_executable_path; + +// Returns the current application's name, removing directory path if that +// is present. +FilePath GetCurrentExecutableName() { + FilePath result; + +#if GTEST_OS_WINDOWS + result.Set(FilePath(g_executable_path).RemoveExtension("exe")); +#else + result.Set(FilePath(g_executable_path)); +#endif // GTEST_OS_WINDOWS + + return result.RemoveDirectoryName(); +} + +// Functions for processing the gtest_output flag. + +// Returns the output format, or "" for normal printed output. +String UnitTestOptions::GetOutputFormat() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) return String(""); + + const char* const colon = strchr(gtest_output_flag, ':'); + return (colon == NULL) ? + String(gtest_output_flag) : + String(gtest_output_flag, colon - gtest_output_flag); +} + +// Returns the name of the requested output file, or the default if none +// was explicitly specified. +String UnitTestOptions::GetAbsolutePathToOutputFile() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) + return String(""); + + const char* const colon = strchr(gtest_output_flag, ':'); + if (colon == NULL) + return String(internal::FilePath::ConcatPaths( + internal::FilePath( + UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(kDefaultOutputFile)).ToString() ); + + internal::FilePath output_name(colon + 1); + if (!output_name.IsAbsolutePath()) + // TODO(wan@google.com): on Windows \some\path is not an absolute + // path (as its meaning depends on the current drive), yet the + // following logic for turning it into an absolute path is wrong. + // Fix it. + output_name = internal::FilePath::ConcatPaths( + internal::FilePath(UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(colon + 1)); + + if (!output_name.IsDirectory()) + return output_name.ToString(); + + internal::FilePath result(internal::FilePath::GenerateUniqueFileName( + output_name, internal::GetCurrentExecutableName(), + GetOutputFormat().c_str())); + return result.ToString(); +} + +// Returns true iff the wildcard pattern matches the string. The +// first ':' or '\0' character in pattern marks the end of it. +// +// This recursive algorithm isn't very efficient, but is clear and +// works well enough for matching test names, which are short. +bool UnitTestOptions::PatternMatchesString(const char *pattern, + const char *str) { + switch (*pattern) { + case '\0': + case ':': // Either ':' or '\0' marks the end of the pattern. + return *str == '\0'; + case '?': // Matches any single character. + return *str != '\0' && PatternMatchesString(pattern + 1, str + 1); + case '*': // Matches any string (possibly empty) of characters. + return (*str != '\0' && PatternMatchesString(pattern, str + 1)) || + PatternMatchesString(pattern + 1, str); + default: // Non-special character. Matches itself. + return *pattern == *str && + PatternMatchesString(pattern + 1, str + 1); + } +} + +bool UnitTestOptions::MatchesFilter(const String& name, const char* filter) { + const char *cur_pattern = filter; + for (;;) { + if (PatternMatchesString(cur_pattern, name.c_str())) { + return true; + } + + // Finds the next pattern in the filter. + cur_pattern = strchr(cur_pattern, ':'); + + // Returns if no more pattern can be found. + if (cur_pattern == NULL) { + return false; + } + + // Skips the pattern separater (the ':' character). + cur_pattern++; + } +} + +// TODO(keithray): move String function implementations to gtest-string.cc. + +// Returns true iff the user-specified filter matches the test case +// name and the test name. +bool UnitTestOptions::FilterMatchesTest(const String &test_case_name, + const String &test_name) { + const String& full_name = String::Format("%s.%s", + test_case_name.c_str(), + test_name.c_str()); + + // Split --gtest_filter at '-', if there is one, to separate into + // positive filter and negative filter portions + const char* const p = GTEST_FLAG(filter).c_str(); + const char* const dash = strchr(p, '-'); + String positive; + String negative; + if (dash == NULL) { + positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter + negative = String(""); + } else { + positive = String(p, dash - p); // Everything up to the dash + negative = String(dash+1); // Everything after the dash + if (positive.empty()) { + // Treat '-test1' as the same as '*-test1' + positive = kUniversalFilter; + } + } + + // A filter is a colon-separated list of patterns. It matches a + // test if any pattern in it matches the test. + return (MatchesFilter(full_name, positive.c_str()) && + !MatchesFilter(full_name, negative.c_str())); +} + +#if GTEST_HAS_SEH +// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the +// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. +// This function is useful as an __except condition. +int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) { + // Google Test should handle a SEH exception if: + // 1. the user wants it to, AND + // 2. this is not a breakpoint exception, AND + // 3. this is not a C++ exception (VC++ implements them via SEH, + // apparently). + // + // SEH exception code for C++ exceptions. + // (see http://support.microsoft.com/kb/185294 for more information). + const DWORD kCxxExceptionCode = 0xe06d7363; + + bool should_handle = true; + + if (!GTEST_FLAG(catch_exceptions)) + should_handle = false; + else if (exception_code == EXCEPTION_BREAKPOINT) + should_handle = false; + else if (exception_code == kCxxExceptionCode) + should_handle = false; + + return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH; +} +#endif // GTEST_HAS_SEH + +} // namespace internal + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. Intercepts only failures from the current thread. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + TestPartResultArray* result) + : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD), + result_(result) { + Init(); +} + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + InterceptMode intercept_mode, TestPartResultArray* result) + : intercept_mode_(intercept_mode), + result_(result) { + Init(); +} + +void ScopedFakeTestPartResultReporter::Init() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + old_reporter_ = impl->GetGlobalTestPartResultReporter(); + impl->SetGlobalTestPartResultReporter(this); + } else { + old_reporter_ = impl->GetTestPartResultReporterForCurrentThread(); + impl->SetTestPartResultReporterForCurrentThread(this); + } +} + +// The d'tor restores the test part result reporter used by Google Test +// before. +ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + impl->SetGlobalTestPartResultReporter(old_reporter_); + } else { + impl->SetTestPartResultReporterForCurrentThread(old_reporter_); + } +} + +// Increments the test part result count and remembers the result. +// This method is from the TestPartResultReporterInterface interface. +void ScopedFakeTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + result_->Append(result); +} + +namespace internal { + +// Returns the type ID of ::testing::Test. We should always call this +// instead of GetTypeId< ::testing::Test>() to get the type ID of +// testing::Test. This is to work around a suspected linker bug when +// using Google Test as a framework on Mac OS X. The bug causes +// GetTypeId< ::testing::Test>() to return different values depending +// on whether the call is from the Google Test framework itself or +// from user test code. GetTestTypeId() is guaranteed to always +// return the same value, as it always calls GetTypeId<>() from the +// gtest.cc, which is within the Google Test framework. +TypeId GetTestTypeId() { + return GetTypeId(); +} + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); + +// This predicate-formatter checks that 'results' contains a test part +// failure of the given type and that the failure message contains the +// given substring. +AssertionResult HasOneFailure(const char* /* results_expr */, + const char* /* type_expr */, + const char* /* substr_expr */, + const TestPartResultArray& results, + TestPartResult::Type type, + const string& substr) { + const String expected(type == TestPartResult::kFatalFailure ? + "1 fatal failure" : + "1 non-fatal failure"); + Message msg; + if (results.size() != 1) { + msg << "Expected: " << expected << "\n" + << " Actual: " << results.size() << " failures"; + for (int i = 0; i < results.size(); i++) { + msg << "\n" << results.GetTestPartResult(i); + } + return AssertionFailure() << msg; + } + + const TestPartResult& r = results.GetTestPartResult(0); + if (r.type() != type) { + return AssertionFailure() << "Expected: " << expected << "\n" + << " Actual:\n" + << r; + } + + if (strstr(r.message(), substr.c_str()) == NULL) { + return AssertionFailure() << "Expected: " << expected << " containing \"" + << substr << "\"\n" + << " Actual:\n" + << r; + } + + return AssertionSuccess(); +} + +// The constructor of SingleFailureChecker remembers where to look up +// test part results, what type of failure we expect, and what +// substring the failure message should contain. +SingleFailureChecker:: SingleFailureChecker( + const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr) + : results_(results), + type_(type), + substr_(substr) {} + +// The destructor of SingleFailureChecker verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +SingleFailureChecker::~SingleFailureChecker() { + EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); +} + +DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultGlobalTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->current_test_result()->AddTestPartResult(result); + unit_test_->listeners()->repeater()->OnTestPartResult(result); +} + +DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultPerThreadTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result); +} + +// Returns the global test part result reporter. +TestPartResultReporterInterface* +UnitTestImpl::GetGlobalTestPartResultReporter() { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + return global_test_part_result_repoter_; +} + +// Sets the global test part result reporter. +void UnitTestImpl::SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter) { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + global_test_part_result_repoter_ = reporter; +} + +// Returns the test part result reporter for the current thread. +TestPartResultReporterInterface* +UnitTestImpl::GetTestPartResultReporterForCurrentThread() { + return per_thread_test_part_result_reporter_.get(); +} + +// Sets the test part result reporter for the current thread. +void UnitTestImpl::SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter) { + per_thread_test_part_result_reporter_.set(reporter); +} + +// Gets the number of successful test cases. +int UnitTestImpl::successful_test_case_count() const { + return CountIf(test_cases_, TestCasePassed); +} + +// Gets the number of failed test cases. +int UnitTestImpl::failed_test_case_count() const { + return CountIf(test_cases_, TestCaseFailed); +} + +// Gets the number of all test cases. +int UnitTestImpl::total_test_case_count() const { + return static_cast(test_cases_.size()); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTestImpl::test_case_to_run_count() const { + return CountIf(test_cases_, ShouldRunTestCase); +} + +// Gets the number of successful tests. +int UnitTestImpl::successful_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count); +} + +// Gets the number of failed tests. +int UnitTestImpl::failed_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count); +} + +// Gets the number of disabled tests. +int UnitTestImpl::disabled_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count); +} + +// Gets the number of all tests. +int UnitTestImpl::total_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::total_test_count); +} + +// Gets the number of tests that should run. +int UnitTestImpl::test_to_run_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count); +} + +// Returns the current OS stack trace as a String. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// CurrentOsStackTraceExceptTop(1), Foo() will be included in the +// trace but Bar() and CurrentOsStackTraceExceptTop() won't. +String UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) { + (void)skip_count; + return String(""); +} + +// Returns the current time in milliseconds. +TimeInMillis GetTimeInMillis() { +#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__) + // Difference between 1970-01-01 and 1601-01-01 in milliseconds. + // http://analogous.blogspot.com/2005/04/epoch.html + const TimeInMillis kJavaEpochToWinFileTimeDelta = + static_cast(116444736UL) * 100000UL; + const DWORD kTenthMicrosInMilliSecond = 10000; + + SYSTEMTIME now_systime; + FILETIME now_filetime; + ULARGE_INTEGER now_int64; + // TODO(kenton@google.com): Shouldn't this just use + // GetSystemTimeAsFileTime()? + GetSystemTime(&now_systime); + if (SystemTimeToFileTime(&now_systime, &now_filetime)) { + now_int64.LowPart = now_filetime.dwLowDateTime; + now_int64.HighPart = now_filetime.dwHighDateTime; + now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) - + kJavaEpochToWinFileTimeDelta; + return now_int64.QuadPart; + } + return 0; +#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_ + __timeb64 now; + +# ifdef _MSC_VER + + // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996 + // (deprecated function) there. + // TODO(kenton@google.com): Use GetTickCount()? Or use + // SystemTimeToFileTime() +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + _ftime64(&now); +# pragma warning(pop) // Restores the warning state. +# else + + _ftime64(&now); + +# endif // _MSC_VER + + return static_cast(now.time) * 1000 + now.millitm; +#elif GTEST_HAS_GETTIMEOFDAY_ + struct timeval now; + gettimeofday(&now, NULL); + return static_cast(now.tv_sec) * 1000 + now.tv_usec / 1000; +#else +# error "Don't know how to get the current time on your system." +#endif +} + +// Utilities + +// class String + +// Returns the input enclosed in double quotes if it's not NULL; +// otherwise returns "(null)". For example, "\"Hello\"" is returned +// for input "Hello". +// +// This is useful for printing a C string in the syntax of a literal. +// +// Known issue: escape sequences are not handled yet. +String String::ShowCStringQuoted(const char* c_str) { + return c_str ? String::Format("\"%s\"", c_str) : String("(null)"); +} + +// Copies at most length characters from str into a newly-allocated +// piece of memory of size length+1. The memory is allocated with new[]. +// A terminating null byte is written to the memory, and a pointer to it +// is returned. If str is NULL, NULL is returned. +static char* CloneString(const char* str, size_t length) { + if (str == NULL) { + return NULL; + } else { + char* const clone = new char[length + 1]; + posix::StrNCpy(clone, str, length); + clone[length] = '\0'; + return clone; + } +} + +// Clones a 0-terminated C string, allocating memory using new. The +// caller is responsible for deleting[] the return value. Returns the +// cloned string, or NULL if the input is NULL. +const char * String::CloneCString(const char* c_str) { + return (c_str == NULL) ? + NULL : CloneString(c_str, strlen(c_str)); +} + +#if GTEST_OS_WINDOWS_MOBILE +// Creates a UTF-16 wide string from the given ANSI string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the wide string, or NULL if the +// input is NULL. +LPCWSTR String::AnsiToUtf16(const char* ansi) { + if (!ansi) return NULL; + const int length = strlen(ansi); + const int unicode_length = + MultiByteToWideChar(CP_ACP, 0, ansi, length, + NULL, 0); + WCHAR* unicode = new WCHAR[unicode_length + 1]; + MultiByteToWideChar(CP_ACP, 0, ansi, length, + unicode, unicode_length); + unicode[unicode_length] = 0; + return unicode; +} + +// Creates an ANSI string from the given wide string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the ANSI string, or NULL if the +// input is NULL. +const char* String::Utf16ToAnsi(LPCWSTR utf16_str) { + if (!utf16_str) return NULL; + const int ansi_length = + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + NULL, 0, NULL, NULL); + char* ansi = new char[ansi_length + 1]; + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + ansi, ansi_length, NULL, NULL); + ansi[ansi_length] = 0; + return ansi; +} + +#endif // GTEST_OS_WINDOWS_MOBILE + +// Compares two C strings. Returns true iff they have the same content. +// +// Unlike strcmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CStringEquals(const char * lhs, const char * rhs) { + if ( lhs == NULL ) return rhs == NULL; + + if ( rhs == NULL ) return false; + + return strcmp(lhs, rhs) == 0; +} + +#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +// Converts an array of wide chars to a narrow string using the UTF-8 +// encoding, and streams the result to the given Message object. +static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length, + Message* msg) { + // TODO(wan): consider allowing a testing::String object to + // contain '\0'. This will make it behave more like std::string, + // and will allow ToUtf8String() to return the correct encoding + // for '\0' s.t. we can get rid of the conditional here (and in + // several other places). + for (size_t i = 0; i != length; ) { // NOLINT + if (wstr[i] != L'\0') { + *msg << WideStringToUtf8(wstr + i, static_cast(length - i)); + while (i != length && wstr[i] != L'\0') + i++; + } else { + *msg << '\0'; + i++; + } + } +} + +#endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +} // namespace internal + +#if GTEST_HAS_STD_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::std::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +// AssertionResult constructors. +// Used in EXPECT_TRUE/FALSE(assertion_result). +AssertionResult::AssertionResult(const AssertionResult& other) + : success_(other.success_), + message_(other.message_.get() != NULL ? + new ::std::string(*other.message_) : + static_cast< ::std::string*>(NULL)) { +} + +// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. +AssertionResult AssertionResult::operator!() const { + AssertionResult negation(!success_); + if (message_.get() != NULL) + negation << *message_; + return negation; +} + +// Makes a successful assertion result. +AssertionResult AssertionSuccess() { + return AssertionResult(true); +} + +// Makes a failed assertion result. +AssertionResult AssertionFailure() { + return AssertionResult(false); +} + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << message. +AssertionResult AssertionFailure(const Message& message) { + return AssertionFailure() << message; +} + +namespace internal { + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const String& expected_value, + const String& actual_value, + bool ignoring_case) { + Message msg; + msg << "Value of: " << actual_expression; + if (actual_value != actual_expression) { + msg << "\n Actual: " << actual_value; + } + + msg << "\nExpected: " << expected_expression; + if (ignoring_case) { + msg << " (ignoring case)"; + } + if (expected_value != expected_expression) { + msg << "\nWhich is: " << expected_value; + } + + return AssertionFailure() << msg; +} + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +String GetBoolAssertionFailureMessage(const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value) { + const char* actual_message = assertion_result.message(); + Message msg; + msg << "Value of: " << expression_text + << "\n Actual: " << actual_predicate_value; + if (actual_message[0] != '\0') + msg << " (" << actual_message << ")"; + msg << "\nExpected: " << expected_predicate_value; + return msg.GetString(); +} + +// Helper function for implementing ASSERT_NEAR. +AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error) { + const double diff = fabs(val1 - val2); + if (diff <= abs_error) return AssertionSuccess(); + + // TODO(wan): do not print the value of an expression if it's + // already a literal. + return AssertionFailure() + << "The difference between " << expr1 << " and " << expr2 + << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n" + << expr1 << " evaluates to " << val1 << ",\n" + << expr2 << " evaluates to " << val2 << ", and\n" + << abs_error_expr << " evaluates to " << abs_error << "."; +} + + +// Helper template for implementing FloatLE() and DoubleLE(). +template +AssertionResult FloatingPointLE(const char* expr1, + const char* expr2, + RawType val1, + RawType val2) { + // Returns success if val1 is less than val2, + if (val1 < val2) { + return AssertionSuccess(); + } + + // or if val1 is almost equal to val2. + const FloatingPoint lhs(val1), rhs(val2); + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + // Note that the above two checks will both fail if either val1 or + // val2 is NaN, as the IEEE floating-point standard requires that + // any predicate involving a NaN must return false. + + ::std::stringstream val1_ss; + val1_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val1; + + ::std::stringstream val2_ss; + val2_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val2; + + return AssertionFailure() + << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n" + << " Actual: " << StringStreamToString(&val1_ss) << " vs " + << StringStreamToString(&val2_ss); +} + +} // namespace internal + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +namespace internal { + +// The helper function for {ASSERT|EXPECT}_EQ with int or enum +// arguments. +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + if (expected == actual) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here +// just to avoid copy-and-paste of similar code. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + BiggestInt val1, BiggestInt val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +} + +// Implements the helper function for {ASSERT|EXPECT}_NE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(NE, !=) +// Implements the helper function for {ASSERT|EXPECT}_LE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LE, <=) +// Implements the helper function for {ASSERT|EXPECT}_LT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LT, < ) +// Implements the helper function for {ASSERT|EXPECT}_GE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GE, >=) +// Implements the helper function for {ASSERT|EXPECT}_GT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GT, > ) + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + String::ShowCStringQuoted(expected), + String::ShowCStringQuoted(actual), + false); +} + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CaseInsensitiveCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + String::ShowCStringQuoted(expected), + String::ShowCStringQuoted(actual), + true); +} + +// The helper function for {ASSERT|EXPECT}_STRNE. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CaseInsensitiveCStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() + << "Expected: (" << s1_expression << ") != (" + << s2_expression << ") (ignoring case), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +} // namespace internal + +namespace { + +// Helper functions for implementing IsSubString() and IsNotSubstring(). + +// This group of overloaded functions return true iff needle is a +// substring of haystack. NULL is considered a substring of itself +// only. + +bool IsSubstringPred(const char* needle, const char* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return strstr(haystack, needle) != NULL; +} + +bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return wcsstr(haystack, needle) != NULL; +} + +// StringType here can be either ::std::string or ::std::wstring. +template +bool IsSubstringPred(const StringType& needle, + const StringType& haystack) { + return haystack.find(needle) != StringType::npos; +} + +// This function implements either IsSubstring() or IsNotSubstring(), +// depending on the value of the expected_to_be_substring parameter. +// StringType here can be const char*, const wchar_t*, ::std::string, +// or ::std::wstring. +template +AssertionResult IsSubstringImpl( + bool expected_to_be_substring, + const char* needle_expr, const char* haystack_expr, + const StringType& needle, const StringType& haystack) { + if (IsSubstringPred(needle, haystack) == expected_to_be_substring) + return AssertionSuccess(); + + const bool is_wide_string = sizeof(needle[0]) > 1; + const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; + return AssertionFailure() + << "Value of: " << needle_expr << "\n" + << " Actual: " << begin_string_quote << needle << "\"\n" + << "Expected: " << (expected_to_be_substring ? "" : "not ") + << "a substring of " << haystack_expr << "\n" + << "Which is: " << begin_string_quote << haystack << "\""; +} + +} // namespace + +// IsSubstring() and IsNotSubstring() check whether needle is a +// substring of haystack (NULL is considered a substring of itself +// only), and return an appropriate error message when they fail. + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +#if GTEST_HAS_STD_WSTRING +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +#if GTEST_OS_WINDOWS + +namespace { + +// Helper function for IsHRESULT{SuccessFailure} predicates +AssertionResult HRESULTFailureHelper(const char* expr, + const char* expected, + long hr) { // NOLINT +# if GTEST_OS_WINDOWS_MOBILE + + // Windows CE doesn't support FormatMessage. + const char error_text[] = ""; + +# else + + // Looks up the human-readable system message for the HRESULT code + // and since we're not passing any params to FormatMessage, we don't + // want inserts expanded. + const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS; + const DWORD kBufSize = 4096; // String::Format can't exceed this length. + // Gets the system's human readable message string for this HRESULT. + char error_text[kBufSize] = { '\0' }; + DWORD message_length = ::FormatMessageA(kFlags, + 0, // no source, we're asking system + hr, // the error + 0, // no line width restrictions + error_text, // output buffer + kBufSize, // buf size + NULL); // no arguments for inserts + // Trims tailing white space (FormatMessage leaves a trailing cr-lf) + for (; message_length && IsSpace(error_text[message_length - 1]); + --message_length) { + error_text[message_length - 1] = '\0'; + } + +# endif // GTEST_OS_WINDOWS_MOBILE + + const String error_hex(String::Format("0x%08X ", hr)); + return ::testing::AssertionFailure() + << "Expected: " << expr << " " << expected << ".\n" + << " Actual: " << error_hex << error_text << "\n"; +} + +} // namespace + +AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT + if (SUCCEEDED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "succeeds", hr); +} + +AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT + if (FAILED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "fails", hr); +} + +#endif // GTEST_OS_WINDOWS + +// Utility functions for encoding Unicode text (wide strings) in +// UTF-8. + +// A Unicode code-point can have up to 21 bits, and is encoded in UTF-8 +// like this: +// +// Code-point length Encoding +// 0 - 7 bits 0xxxxxxx +// 8 - 11 bits 110xxxxx 10xxxxxx +// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx +// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + +// The maximum code-point a one-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint1 = (static_cast(1) << 7) - 1; + +// The maximum code-point a two-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint2 = (static_cast(1) << (5 + 6)) - 1; + +// The maximum code-point a three-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint3 = (static_cast(1) << (4 + 2*6)) - 1; + +// The maximum code-point a four-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint4 = (static_cast(1) << (3 + 3*6)) - 1; + +// Chops off the n lowest bits from a bit pattern. Returns the n +// lowest bits. As a side effect, the original bit pattern will be +// shifted to the right by n bits. +inline UInt32 ChopLowBits(UInt32* bits, int n) { + const UInt32 low_bits = *bits & ((static_cast(1) << n) - 1); + *bits >>= n; + return low_bits; +} + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +char* CodePointToUtf8(UInt32 code_point, char* str) { + if (code_point <= kMaxCodePoint1) { + str[1] = '\0'; + str[0] = static_cast(code_point); // 0xxxxxxx + } else if (code_point <= kMaxCodePoint2) { + str[2] = '\0'; + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xC0 | code_point); // 110xxxxx + } else if (code_point <= kMaxCodePoint3) { + str[3] = '\0'; + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xE0 | code_point); // 1110xxxx + } else if (code_point <= kMaxCodePoint4) { + str[4] = '\0'; + str[3] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xF0 | code_point); // 11110xxx + } else { + // The longest string String::Format can produce when invoked + // with these parameters is 28 character long (not including + // the terminating nul character). We are asking for 32 character + // buffer just in case. This is also enough for strncpy to + // null-terminate the destination string. + posix::StrNCpy( + str, String::Format("(Invalid Unicode 0x%X)", code_point).c_str(), 32); + str[31] = '\0'; // Makes sure no change in the format to strncpy leaves + // the result unterminated. + } + return str; +} + +// The following two functions only make sense if the the system +// uses UTF-16 for wide string encoding. All supported systems +// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. + +// Determines if the arguments constitute UTF-16 surrogate pair +// and thus should be combined into a single Unicode code point +// using CreateCodePointFromUtf16SurrogatePair. +inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) { + return sizeof(wchar_t) == 2 && + (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; +} + +// Creates a Unicode code point from UTF16 surrogate pair. +inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, + wchar_t second) { + const UInt32 mask = (1 << 10) - 1; + return (sizeof(wchar_t) == 2) ? + (((first & mask) << 10) | (second & mask)) + 0x10000 : + // This function should not be called when the condition is + // false, but we provide a sensible default in case it is. + static_cast(first); +} + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +String WideStringToUtf8(const wchar_t* str, int num_chars) { + if (num_chars == -1) + num_chars = static_cast(wcslen(str)); + + ::std::stringstream stream; + for (int i = 0; i < num_chars; ++i) { + UInt32 unicode_code_point; + + if (str[i] == L'\0') { + break; + } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) { + unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i], + str[i + 1]); + i++; + } else { + unicode_code_point = static_cast(str[i]); + } + + char buffer[32]; // CodePointToUtf8 requires a buffer this big. + stream << CodePointToUtf8(unicode_code_point, buffer); + } + return StringStreamToString(&stream); +} + +// Converts a wide C string to a String using the UTF-8 encoding. +// NULL will be converted to "(null)". +String String::ShowWideCString(const wchar_t * wide_c_str) { + if (wide_c_str == NULL) return String("(null)"); + + return String(internal::WideStringToUtf8(wide_c_str, -1).c_str()); +} + +// Similar to ShowWideCString(), except that this function encloses +// the converted string in double quotes. +String String::ShowWideCStringQuoted(const wchar_t* wide_c_str) { + if (wide_c_str == NULL) return String("(null)"); + + return String::Format("L\"%s\"", + String::ShowWideCString(wide_c_str).c_str()); +} + +// Compares two wide C strings. Returns true iff they have the same +// content. +// +// Unlike wcscmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + + return wcscmp(lhs, rhs) == 0; +} + +// Helper function for *_STREQ on wide strings. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual) { + if (String::WideCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + String::ShowWideCStringQuoted(expected), + String::ShowWideCStringQuoted(actual), + false); +} + +// Helper function for *_STRNE on wide strings. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2) { + if (!String::WideCStringEquals(s1, s2)) { + return AssertionSuccess(); + } + + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: " + << String::ShowWideCStringQuoted(s1) + << " vs " << String::ShowWideCStringQuoted(s2); +} + +// Compares two C strings, ignoring case. Returns true iff they have +// the same content. +// +// Unlike strcasecmp(), this function can handle NULL argument(s). A +// NULL C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) { + if (lhs == NULL) + return rhs == NULL; + if (rhs == NULL) + return false; + return posix::StrCaseCmp(lhs, rhs) == 0; +} + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. +bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + +#if GTEST_OS_WINDOWS + return _wcsicmp(lhs, rhs) == 0; +#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID + return wcscasecmp(lhs, rhs) == 0; +#else + // Android, Mac OS X and Cygwin don't define wcscasecmp. + // Other unknown OSes may not define it either. + wint_t left, right; + do { + left = towlower(*lhs++); + right = towlower(*rhs++); + } while (left && left == right); + return left == right; +#endif // OS selector +} + +// Compares this with another String. +// Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0 +// if this is greater than rhs. +int String::Compare(const String & rhs) const { + const char* const lhs_c_str = c_str(); + const char* const rhs_c_str = rhs.c_str(); + + if (lhs_c_str == NULL) { + return rhs_c_str == NULL ? 0 : -1; // NULL < anything except NULL + } else if (rhs_c_str == NULL) { + return 1; + } + + const size_t shorter_str_len = + length() <= rhs.length() ? length() : rhs.length(); + for (size_t i = 0; i != shorter_str_len; i++) { + if (lhs_c_str[i] < rhs_c_str[i]) { + return -1; + } else if (lhs_c_str[i] > rhs_c_str[i]) { + return 1; + } + } + return (length() < rhs.length()) ? -1 : + (length() > rhs.length()) ? 1 : 0; +} + +// Returns true iff this String ends with the given suffix. *Any* +// String is considered to end with a NULL or empty suffix. +bool String::EndsWith(const char* suffix) const { + if (suffix == NULL || CStringEquals(suffix, "")) return true; + + if (c_str() == NULL) return false; + + const size_t this_len = strlen(c_str()); + const size_t suffix_len = strlen(suffix); + return (this_len >= suffix_len) && + CStringEquals(c_str() + this_len - suffix_len, suffix); +} + +// Returns true iff this String ends with the given suffix, ignoring case. +// Any String is considered to end with a NULL or empty suffix. +bool String::EndsWithCaseInsensitive(const char* suffix) const { + if (suffix == NULL || CStringEquals(suffix, "")) return true; + + if (c_str() == NULL) return false; + + const size_t this_len = strlen(c_str()); + const size_t suffix_len = strlen(suffix); + return (this_len >= suffix_len) && + CaseInsensitiveCStringEquals(c_str() + this_len - suffix_len, suffix); +} + +// Formats a list of arguments to a String, using the same format +// spec string as for printf. +// +// We do not use the StringPrintf class as it is not universally +// available. +// +// The result is limited to 4096 characters (including the tailing 0). +// If 4096 characters are not enough to format the input, or if +// there's an error, "" is +// returned. +String String::Format(const char * format, ...) { + va_list args; + va_start(args, format); + + char buffer[4096]; + const int kBufferSize = sizeof(buffer)/sizeof(buffer[0]); + + // MSVC 8 deprecates vsnprintf(), so we want to suppress warning + // 4996 (deprecated function) there. +#ifdef _MSC_VER // We are using MSVC. +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + + const int size = vsnprintf(buffer, kBufferSize, format, args); + +# pragma warning(pop) // Restores the warning state. +#else // We are not using MSVC. + const int size = vsnprintf(buffer, kBufferSize, format, args); +#endif // _MSC_VER + va_end(args); + + // vsnprintf()'s behavior is not portable. When the buffer is not + // big enough, it returns a negative value in MSVC, and returns the + // needed buffer size on Linux. When there is an output error, it + // always returns a negative value. For simplicity, we lump the two + // error cases together. + if (size < 0 || size >= kBufferSize) { + return String(""); + } else { + return String(buffer, size); + } +} + +// Converts the buffer in a stringstream to a String, converting NUL +// bytes to "\\0" along the way. +String StringStreamToString(::std::stringstream* ss) { + const ::std::string& str = ss->str(); + const char* const start = str.c_str(); + const char* const end = start + str.length(); + + // We need to use a helper stringstream to do this transformation + // because String doesn't support push_back(). + ::std::stringstream helper; + for (const char* ch = start; ch != end; ++ch) { + if (*ch == '\0') { + helper << "\\0"; // Replaces NUL with "\\0"; + } else { + helper.put(*ch); + } + } + + return String(helper.str().c_str()); +} + +// Appends the user-supplied message to the Google-Test-generated message. +String AppendUserMessage(const String& gtest_msg, + const Message& user_msg) { + // Appends the user message if it's non-empty. + const String user_msg_string = user_msg.GetString(); + if (user_msg_string.empty()) { + return gtest_msg; + } + + Message msg; + msg << gtest_msg << "\n" << user_msg_string; + + return msg.GetString(); +} + +} // namespace internal + +// class TestResult + +// Creates an empty TestResult. +TestResult::TestResult() + : death_test_count_(0), + elapsed_time_(0) { +} + +// D'tor. +TestResult::~TestResult() { +} + +// Returns the i-th test part result among all the results. i can +// range from 0 to total_part_count() - 1. If i is not in that range, +// aborts the program. +const TestPartResult& TestResult::GetTestPartResult(int i) const { + if (i < 0 || i >= total_part_count()) + internal::posix::Abort(); + return test_part_results_.at(i); +} + +// Returns the i-th test property. i can range from 0 to +// test_property_count() - 1. If i is not in that range, aborts the +// program. +const TestProperty& TestResult::GetTestProperty(int i) const { + if (i < 0 || i >= test_property_count()) + internal::posix::Abort(); + return test_properties_.at(i); +} + +// Clears the test part results. +void TestResult::ClearTestPartResults() { + test_part_results_.clear(); +} + +// Adds a test part result to the list. +void TestResult::AddTestPartResult(const TestPartResult& test_part_result) { + test_part_results_.push_back(test_part_result); +} + +// Adds a test property to the list. If a property with the same key as the +// supplied property is already represented, the value of this test_property +// replaces the old value for that key. +void TestResult::RecordProperty(const TestProperty& test_property) { + if (!ValidateTestProperty(test_property)) { + return; + } + internal::MutexLock lock(&test_properites_mutex_); + const std::vector::iterator property_with_matching_key = + std::find_if(test_properties_.begin(), test_properties_.end(), + internal::TestPropertyKeyIs(test_property.key())); + if (property_with_matching_key == test_properties_.end()) { + test_properties_.push_back(test_property); + return; + } + property_with_matching_key->SetValue(test_property.value()); +} + +// Adds a failure if the key is a reserved attribute of Google Test +// testcase tags. Returns true if the property is valid. +bool TestResult::ValidateTestProperty(const TestProperty& test_property) { + internal::String key(test_property.key()); + if (key == "name" || key == "status" || key == "time" || key == "classname") { + ADD_FAILURE() + << "Reserved key used in RecordProperty(): " + << key + << " ('name', 'status', 'time', and 'classname' are reserved by " + << GTEST_NAME_ << ")"; + return false; + } + return true; +} + +// Clears the object. +void TestResult::Clear() { + test_part_results_.clear(); + test_properties_.clear(); + death_test_count_ = 0; + elapsed_time_ = 0; +} + +// Returns true iff the test failed. +bool TestResult::Failed() const { + for (int i = 0; i < total_part_count(); ++i) { + if (GetTestPartResult(i).failed()) + return true; + } + return false; +} + +// Returns true iff the test part fatally failed. +static bool TestPartFatallyFailed(const TestPartResult& result) { + return result.fatally_failed(); +} + +// Returns true iff the test fatally failed. +bool TestResult::HasFatalFailure() const { + return CountIf(test_part_results_, TestPartFatallyFailed) > 0; +} + +// Returns true iff the test part non-fatally failed. +static bool TestPartNonfatallyFailed(const TestPartResult& result) { + return result.nonfatally_failed(); +} + +// Returns true iff the test has a non-fatal failure. +bool TestResult::HasNonfatalFailure() const { + return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0; +} + +// Gets the number of all test parts. This is the sum of the number +// of successful test parts and the number of failed test parts. +int TestResult::total_part_count() const { + return static_cast(test_part_results_.size()); +} + +// Returns the number of the test properties. +int TestResult::test_property_count() const { + return static_cast(test_properties_.size()); +} + +// class Test + +// Creates a Test object. + +// The c'tor saves the values of all Google Test flags. +Test::Test() + : gtest_flag_saver_(new internal::GTestFlagSaver) { +} + +// The d'tor restores the values of all Google Test flags. +Test::~Test() { + delete gtest_flag_saver_; +} + +// Sets up the test fixture. +// +// A sub-class may override this. +void Test::SetUp() { +} + +// Tears down the test fixture. +// +// A sub-class may override this. +void Test::TearDown() { +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, const char* value) { + UnitTest::GetInstance()->RecordPropertyForCurrentTest(key, value); +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, int value) { + Message value_message; + value_message << value; + RecordProperty(key, value_message.GetString().c_str()); +} + +namespace internal { + +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const String& message) { + // This function is a friend of UnitTest and as such has access to + // AddTestPartResult. + UnitTest::GetInstance()->AddTestPartResult( + result_type, + NULL, // No info about the source file where the exception occurred. + -1, // We have no info on which line caused the exception. + message, + String()); // No stack trace, either. +} + +} // namespace internal + +// Google Test requires all tests in the same test case to use the same test +// fixture class. This function checks if the current test has the +// same fixture class as the first test in the current test case. If +// yes, it returns true; otherwise it generates a Google Test failure and +// returns false. +bool Test::HasSameFixtureClass() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + const TestCase* const test_case = impl->current_test_case(); + + // Info about the first test in the current test case. + const TestInfo* const first_test_info = test_case->test_info_list()[0]; + const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_; + const char* const first_test_name = first_test_info->name(); + + // Info about the current test. + const TestInfo* const this_test_info = impl->current_test_info(); + const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_; + const char* const this_test_name = this_test_info->name(); + + if (this_fixture_id != first_fixture_id) { + // Is the first test defined using TEST? + const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId(); + // Is this test defined using TEST? + const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId(); + + if (first_is_TEST || this_is_TEST) { + // The user mixed TEST and TEST_F in this test case - we'll tell + // him/her how to fix it. + + // Gets the name of the TEST and the name of the TEST_F. Note + // that first_is_TEST and this_is_TEST cannot both be true, as + // the fixture IDs are different for the two tests. + const char* const TEST_name = + first_is_TEST ? first_test_name : this_test_name; + const char* const TEST_F_name = + first_is_TEST ? this_test_name : first_test_name; + + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class, so mixing TEST_F and TEST in the same test case is\n" + << "illegal. In test case " << this_test_info->test_case_name() + << ",\n" + << "test " << TEST_F_name << " is defined using TEST_F but\n" + << "test " << TEST_name << " is defined using TEST. You probably\n" + << "want to change the TEST to TEST_F or move it to another test\n" + << "case."; + } else { + // The user defined two fixture classes with the same name in + // two namespaces - we'll tell him/her how to fix it. + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " + << this_test_info->test_case_name() << ",\n" + << "you defined test " << first_test_name + << " and test " << this_test_name << "\n" + << "using two different test fixture classes. This can happen if\n" + << "the two classes are from different namespaces or translation\n" + << "units and have the same name. You should probably rename one\n" + << "of the classes to put the tests into different test cases."; + } + return false; + } + + return true; +} + +#if GTEST_HAS_SEH + +// Adds an "exception thrown" fatal failure to the current test. This +// function returns its result via an output parameter pointer because VC++ +// prohibits creation of objects with destructors on stack in functions +// using __try (see error C2712). +static internal::String* FormatSehExceptionMessage(DWORD exception_code, + const char* location) { + Message message; + message << "SEH exception with code 0x" << std::setbase(16) << + exception_code << std::setbase(10) << " thrown in " << location << "."; + + return new internal::String(message.GetString()); +} + +#endif // GTEST_HAS_SEH + +#if GTEST_HAS_EXCEPTIONS + +// Adds an "exception thrown" fatal failure to the current test. +static internal::String FormatCxxExceptionMessage(const char* description, + const char* location) { + Message message; + if (description != NULL) { + message << "C++ exception with description \"" << description << "\""; + } else { + message << "Unknown C++ exception"; + } + message << " thrown in " << location << "."; + + return message.GetString(); +} + +static internal::String PrintTestPartResultToString( + const TestPartResult& test_part_result); + +// A failed Google Test assertion will throw an exception of this type when +// GTEST_FLAG(throw_on_failure) is true (if exceptions are enabled). We +// derive it from std::runtime_error, which is for errors presumably +// detectable only at run time. Since std::runtime_error inherits from +// std::exception, many testing frameworks know how to extract and print the +// message inside it. +class GoogleTestFailureException : public ::std::runtime_error { + public: + explicit GoogleTestFailureException(const TestPartResult& failure) + : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {} +}; +#endif // GTEST_HAS_EXCEPTIONS + +namespace internal { +// We put these helper functions in the internal namespace as IBM's xlC +// compiler rejects the code if they were declared static. + +// Runs the given method and handles SEH exceptions it throws, when +// SEH is supported; returns the 0-value for type Result in case of an +// SEH exception. (Microsoft compilers cannot handle SEH and C++ +// exceptions in the same function. Therefore, we provide a separate +// wrapper function for handling SEH exceptions.) +template +Result HandleSehExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { +#if GTEST_HAS_SEH + __try { + return (object->*method)(); + } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT + GetExceptionCode())) { + // We create the exception message on the heap because VC++ prohibits + // creation of objects with destructors on stack in functions using __try + // (see error C2712). + internal::String* exception_message = FormatSehExceptionMessage( + GetExceptionCode(), location); + internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure, + *exception_message); + delete exception_message; + return static_cast(0); + } +#else + (void)location; + return (object->*method)(); +#endif // GTEST_HAS_SEH +} + +// Runs the given method and catches and reports C++ and/or SEH-style +// exceptions, if they are supported; returns the 0-value for type +// Result in case of an SEH exception. +template +Result HandleExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { + // NOTE: The user code can affect the way in which Google Test handles + // exceptions by setting GTEST_FLAG(catch_exceptions), but only before + // RUN_ALL_TESTS() starts. It is technically possible to check the flag + // after the exception is caught and either report or re-throw the + // exception based on the flag's value: + // + // try { + // // Perform the test method. + // } catch (...) { + // if (GTEST_FLAG(catch_exceptions)) + // // Report the exception as failure. + // else + // throw; // Re-throws the original exception. + // } + // + // However, the purpose of this flag is to allow the program to drop into + // the debugger when the exception is thrown. On most platforms, once the + // control enters the catch block, the exception origin information is + // lost and the debugger will stop the program at the point of the + // re-throw in this function -- instead of at the point of the original + // throw statement in the code under test. For this reason, we perform + // the check early, sacrificing the ability to affect Google Test's + // exception handling in the method where the exception is thrown. + if (internal::GetUnitTestImpl()->catch_exceptions()) { +#if GTEST_HAS_EXCEPTIONS + try { + return HandleSehExceptionsInMethodIfSupported(object, method, location); + } catch (const GoogleTestFailureException&) { // NOLINT + // This exception doesn't originate in code under test. It makes no + // sense to report it as a test failure. + throw; + } catch (const std::exception& e) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(e.what(), location)); + } catch (...) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(NULL, location)); + } + return static_cast(0); +#else + return HandleSehExceptionsInMethodIfSupported(object, method, location); +#endif // GTEST_HAS_EXCEPTIONS + } else { + return (object->*method)(); + } +} + +} // namespace internal + +// Runs the test and updates the test result. +void Test::Run() { + if (!HasSameFixtureClass()) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()"); + // We will run the test only if SetUp() was successful. + if (!HasFatalFailure()) { + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TestBody, "the test body"); + } + + // However, we want to clean up as much as possible. Hence we will + // always call TearDown(), even if SetUp() or the test body has + // failed. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TearDown, "TearDown()"); +} + +// Returns true iff the current test has a fatal failure. +bool Test::HasFatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure(); +} + +// Returns true iff the current test has a non-fatal failure. +bool Test::HasNonfatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()-> + HasNonfatalFailure(); +} + +// class TestInfo + +// Constructs a TestInfo object. It assumes ownership of the test factory +// object. +// TODO(vladl@google.com): Make a_test_case_name and a_name const string&'s +// to signify they cannot be NULLs. +TestInfo::TestInfo(const char* a_test_case_name, + const char* a_name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory) + : test_case_name_(a_test_case_name), + name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + value_param_(a_value_param ? new std::string(a_value_param) : NULL), + fixture_class_id_(fixture_class_id), + should_run_(false), + is_disabled_(false), + matches_filter_(false), + factory_(factory), + result_() {} + +// Destructs a TestInfo object. +TestInfo::~TestInfo() { delete factory_; } + +namespace internal { + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param: the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param: text representation of the test's value parameter, +// or NULL if this is not a value-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory) { + TestInfo* const test_info = + new TestInfo(test_case_name, name, type_param, value_param, + fixture_class_id, factory); + GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info); + return test_info; +} + +#if GTEST_HAS_PARAM_TEST +void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line) { + Message errors; + errors + << "Attempted redefinition of test case " << test_case_name << ".\n" + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " << test_case_name << ", you tried\n" + << "to define a test using a fixture class different from the one\n" + << "used earlier. This can happen if the two fixture classes are\n" + << "from different namespaces and have the same name. You should\n" + << "probably rename one of the classes to put the tests into different\n" + << "test cases."; + + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors.GetString().c_str()); +} +#endif // GTEST_HAS_PARAM_TEST + +} // namespace internal + +namespace { + +// A predicate that checks the test name of a TestInfo against a known +// value. +// +// This is used for implementation of the TestCase class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestNameIs is copyable. +class TestNameIs { + public: + // Constructor. + // + // TestNameIs has NO default constructor. + explicit TestNameIs(const char* name) + : name_(name) {} + + // Returns true iff the test name of test_info matches name_. + bool operator()(const TestInfo * test_info) const { + return test_info && internal::String(test_info->name()).Compare(name_) == 0; + } + + private: + internal::String name_; +}; + +} // namespace + +namespace internal { + +// This method expands all parameterized tests registered with macros TEST_P +// and INSTANTIATE_TEST_CASE_P into regular tests and registers those. +// This will be done just once during the program runtime. +void UnitTestImpl::RegisterParameterizedTests() { +#if GTEST_HAS_PARAM_TEST + if (!parameterized_tests_registered_) { + parameterized_test_registry_.RegisterTests(); + parameterized_tests_registered_ = true; + } +#endif +} + +} // namespace internal + +// Creates the test object, runs it, records its result, and then +// deletes it. +void TestInfo::Run() { + if (!should_run_) return; + + // Tells UnitTest where to store test result. + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_info(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + // Notifies the unit test event listeners that a test is about to start. + repeater->OnTestStart(*this); + + const TimeInMillis start = internal::GetTimeInMillis(); + + impl->os_stack_trace_getter()->UponLeavingGTest(); + + // Creates the test object. + Test* const test = internal::HandleExceptionsInMethodIfSupported( + factory_, &internal::TestFactoryBase::CreateTest, + "the test fixture's constructor"); + + // Runs the test only if the test object was created and its + // constructor didn't generate a fatal failure. + if ((test != NULL) && !Test::HasFatalFailure()) { + // This doesn't throw as all user code that can throw are wrapped into + // exception handling code. + test->Run(); + } + + // Deletes the test object. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + test, &Test::DeleteSelf_, "the test fixture's destructor"); + + result_.set_elapsed_time(internal::GetTimeInMillis() - start); + + // Notifies the unit test event listener that a test has just finished. + repeater->OnTestEnd(*this); + + // Tells UnitTest to stop associating assertion results to this + // test. + impl->set_current_test_info(NULL); +} + +// class TestCase + +// Gets the number of successful tests in this test case. +int TestCase::successful_test_count() const { + return CountIf(test_info_list_, TestPassed); +} + +// Gets the number of failed tests in this test case. +int TestCase::failed_test_count() const { + return CountIf(test_info_list_, TestFailed); +} + +int TestCase::disabled_test_count() const { + return CountIf(test_info_list_, TestDisabled); +} + +// Get the number of tests in this test case that should run. +int TestCase::test_to_run_count() const { + return CountIf(test_info_list_, ShouldRunTest); +} + +// Gets the number of all tests. +int TestCase::total_test_count() const { + return static_cast(test_info_list_.size()); +} + +// Creates a TestCase with the given name. +// +// Arguments: +// +// name: name of the test case +// a_type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase::TestCase(const char* a_name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) + : name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + set_up_tc_(set_up_tc), + tear_down_tc_(tear_down_tc), + should_run_(false), + elapsed_time_(0) { +} + +// Destructor of TestCase. +TestCase::~TestCase() { + // Deletes every Test in the collection. + ForEach(test_info_list_, internal::Delete); +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +const TestInfo* TestCase::GetTestInfo(int i) const { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +TestInfo* TestCase::GetMutableTestInfo(int i) { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Adds a test to this test case. Will delete the test upon +// destruction of the TestCase object. +void TestCase::AddTestInfo(TestInfo * test_info) { + test_info_list_.push_back(test_info); + test_indices_.push_back(static_cast(test_indices_.size())); +} + +// Runs every test in this TestCase. +void TestCase::Run() { + if (!should_run_) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_case(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + repeater->OnTestCaseStart(*this); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunSetUpTestCase, "SetUpTestCase()"); + + const internal::TimeInMillis start = internal::GetTimeInMillis(); + for (int i = 0; i < total_test_count(); i++) { + GetMutableTestInfo(i)->Run(); + } + elapsed_time_ = internal::GetTimeInMillis() - start; + + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunTearDownTestCase, "TearDownTestCase()"); + + repeater->OnTestCaseEnd(*this); + impl->set_current_test_case(NULL); +} + +// Clears the results of all tests in this test case. +void TestCase::ClearResult() { + ForEach(test_info_list_, TestInfo::ClearTestResult); +} + +// Shuffles the tests in this test case. +void TestCase::ShuffleTests(internal::Random* random) { + Shuffle(random, &test_indices_); +} + +// Restores the test order to before the first shuffle. +void TestCase::UnshuffleTests() { + for (size_t i = 0; i < test_indices_.size(); i++) { + test_indices_[i] = static_cast(i); + } +} + +// Formats a countable noun. Depending on its quantity, either the +// singular form or the plural form is used. e.g. +// +// FormatCountableNoun(1, "formula", "formuli") returns "1 formula". +// FormatCountableNoun(5, "book", "books") returns "5 books". +static internal::String FormatCountableNoun(int count, + const char * singular_form, + const char * plural_form) { + return internal::String::Format("%d %s", count, + count == 1 ? singular_form : plural_form); +} + +// Formats the count of tests. +static internal::String FormatTestCount(int test_count) { + return FormatCountableNoun(test_count, "test", "tests"); +} + +// Formats the count of test cases. +static internal::String FormatTestCaseCount(int test_case_count) { + return FormatCountableNoun(test_case_count, "test case", "test cases"); +} + +// Converts a TestPartResult::Type enum to human-friendly string +// representation. Both kNonFatalFailure and kFatalFailure are translated +// to "Failure", as the user usually doesn't care about the difference +// between the two when viewing the test result. +static const char * TestPartResultTypeToString(TestPartResult::Type type) { + switch (type) { + case TestPartResult::kSuccess: + return "Success"; + + case TestPartResult::kNonFatalFailure: + case TestPartResult::kFatalFailure: +#ifdef _MSC_VER + return "error: "; +#else + return "Failure\n"; +#endif + default: + return "Unknown result type"; + } +} + +// Prints a TestPartResult to a String. +static internal::String PrintTestPartResultToString( + const TestPartResult& test_part_result) { + return (Message() + << internal::FormatFileLocation(test_part_result.file_name(), + test_part_result.line_number()) + << " " << TestPartResultTypeToString(test_part_result.type()) + << test_part_result.message()).GetString(); +} + +// Prints a TestPartResult. +static void PrintTestPartResult(const TestPartResult& test_part_result) { + const internal::String& result = + PrintTestPartResultToString(test_part_result); + printf("%s\n", result.c_str()); + fflush(stdout); + // If the test program runs in Visual Studio or a debugger, the + // following statements add the test part result message to the Output + // window such that the user can double-click on it to jump to the + // corresponding source code location; otherwise they do nothing. +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + // We don't call OutputDebugString*() on Windows Mobile, as printing + // to stdout is done by OutputDebugString() there already - we don't + // want the same message printed twice. + ::OutputDebugStringA(result.c_str()); + ::OutputDebugStringA("\n"); +#endif +} + +// class PrettyUnitTestResultPrinter + +namespace internal { + +enum GTestColor { + COLOR_DEFAULT, + COLOR_RED, + COLOR_GREEN, + COLOR_YELLOW +}; + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns the character attribute for the given color. +WORD GetColorAttribute(GTestColor color) { + switch (color) { + case COLOR_RED: return FOREGROUND_RED; + case COLOR_GREEN: return FOREGROUND_GREEN; + case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN; + default: return 0; + } +} + +#else + +// Returns the ANSI color code for the given color. COLOR_DEFAULT is +// an invalid input. +const char* GetAnsiColorCode(GTestColor color) { + switch (color) { + case COLOR_RED: return "1"; + case COLOR_GREEN: return "2"; + case COLOR_YELLOW: return "3"; + default: return NULL; + }; +} + +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns true iff Google Test should use colors in the output. +bool ShouldUseColor(bool stdout_is_tty) { + const char* const gtest_color = GTEST_FLAG(color).c_str(); + + if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) { +#if GTEST_OS_WINDOWS + // On Windows the TERM variable is usually not set, but the + // console there does support colors. + return stdout_is_tty; +#else + // On non-Windows platforms, we rely on the TERM variable. + const char* const term = posix::GetEnv("TERM"); + const bool term_supports_color = + String::CStringEquals(term, "xterm") || + String::CStringEquals(term, "xterm-color") || + String::CStringEquals(term, "xterm-256color") || + String::CStringEquals(term, "screen") || + String::CStringEquals(term, "linux") || + String::CStringEquals(term, "cygwin"); + return stdout_is_tty && term_supports_color; +#endif // GTEST_OS_WINDOWS + } + + return String::CaseInsensitiveCStringEquals(gtest_color, "yes") || + String::CaseInsensitiveCStringEquals(gtest_color, "true") || + String::CaseInsensitiveCStringEquals(gtest_color, "t") || + String::CStringEquals(gtest_color, "1"); + // We take "yes", "true", "t", and "1" as meaning "yes". If the + // value is neither one of these nor "auto", we treat it as "no" to + // be conservative. +} + +// Helpers for printing colored strings to stdout. Note that on Windows, we +// cannot simply emit special characters and have the terminal change colors. +// This routine must actually emit the characters rather than return a string +// that would be colored when printed, as can be done on Linux. +void ColoredPrintf(GTestColor color, const char* fmt, ...) { + va_list args; + va_start(args, fmt); + +#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS + const bool use_color = false; +#else + static const bool in_color_mode = + ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0); + const bool use_color = in_color_mode && (color != COLOR_DEFAULT); +#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS + // The '!= 0' comparison is necessary to satisfy MSVC 7.1. + + if (!use_color) { + vprintf(fmt, args); + va_end(args); + return; + } + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); + + // Gets the current text color. + CONSOLE_SCREEN_BUFFER_INFO buffer_info; + GetConsoleScreenBufferInfo(stdout_handle, &buffer_info); + const WORD old_color_attrs = buffer_info.wAttributes; + + // We need to flush the stream buffers into the console before each + // SetConsoleTextAttribute call lest it affect the text that is already + // printed but has not yet reached the console. + fflush(stdout); + SetConsoleTextAttribute(stdout_handle, + GetColorAttribute(color) | FOREGROUND_INTENSITY); + vprintf(fmt, args); + + fflush(stdout); + // Restores the text color. + SetConsoleTextAttribute(stdout_handle, old_color_attrs); +#else + printf("\033[0;3%sm", GetAnsiColorCode(color)); + vprintf(fmt, args); + printf("\033[m"); // Resets the terminal to default. +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + va_end(args); +} + +void PrintFullTestCommentIfPresent(const TestInfo& test_info) { + const char* const type_param = test_info.type_param(); + const char* const value_param = test_info.value_param(); + + if (type_param != NULL || value_param != NULL) { + printf(", where "); + if (type_param != NULL) { + printf("TypeParam = %s", type_param); + if (value_param != NULL) + printf(" and "); + } + if (value_param != NULL) { + printf("GetParam() = %s", value_param); + } + } +} + +// This class implements the TestEventListener interface. +// +// Class PrettyUnitTestResultPrinter is copyable. +class PrettyUnitTestResultPrinter : public TestEventListener { + public: + PrettyUnitTestResultPrinter() {} + static void PrintTestName(const char * test_case, const char * test) { + printf("%s.%s", test_case, test); + } + + // The following methods override what's in the TestEventListener class. + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} + + private: + static void PrintFailedTests(const UnitTest& unit_test); + + internal::String test_case_name_; +}; + + // Fired before each iteration of tests starts. +void PrettyUnitTestResultPrinter::OnTestIterationStart( + const UnitTest& unit_test, int iteration) { + if (GTEST_FLAG(repeat) != 1) + printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1); + + const char* const filter = GTEST_FLAG(filter).c_str(); + + // Prints the filter if it's not *. This reminds the user that some + // tests may be skipped. + if (!internal::String::CStringEquals(filter, kUniversalFilter)) { + ColoredPrintf(COLOR_YELLOW, + "Note: %s filter = %s\n", GTEST_NAME_, filter); + } + + if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) { + const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1); + ColoredPrintf(COLOR_YELLOW, + "Note: This is test shard %d of %s.\n", + static_cast(shard_index) + 1, + internal::posix::GetEnv(kTestTotalShards)); + } + + if (GTEST_FLAG(shuffle)) { + ColoredPrintf(COLOR_YELLOW, + "Note: Randomizing tests' orders with a seed of %d .\n", + unit_test.random_seed()); + } + + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("Running %s from %s.\n", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment set-up.\n"); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) { + test_case_name_ = test_case.name(); + const internal::String counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s", counts.c_str(), test_case_name_.c_str()); + if (test_case.type_param() == NULL) { + printf("\n"); + } else { + printf(", where TypeParam = %s\n", test_case.type_param()); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) { + ColoredPrintf(COLOR_GREEN, "[ RUN ] "); + PrintTestName(test_case_name_.c_str(), test_info.name()); + printf("\n"); + fflush(stdout); +} + +// Called after an assertion failure. +void PrettyUnitTestResultPrinter::OnTestPartResult( + const TestPartResult& result) { + // If the test part succeeded, we don't need to do anything. + if (result.type() == TestPartResult::kSuccess) + return; + + // Print failure message from the assertion (e.g. expected this and got that). + PrintTestPartResult(result); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) { + if (test_info.result()->Passed()) { + ColoredPrintf(COLOR_GREEN, "[ OK ] "); + } else { + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + } + PrintTestName(test_case_name_.c_str(), test_info.name()); + if (test_info.result()->Failed()) + PrintFullTestCommentIfPresent(test_info); + + if (GTEST_FLAG(print_time)) { + printf(" (%s ms)\n", internal::StreamableToString( + test_info.result()->elapsed_time()).c_str()); + } else { + printf("\n"); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) { + if (!GTEST_FLAG(print_time)) return; + + test_case_name_ = test_case.name(); + const internal::String counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s (%s ms total)\n\n", + counts.c_str(), test_case_name_.c_str(), + internal::StreamableToString(test_case.elapsed_time()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment tear-down\n"); + fflush(stdout); +} + +// Internal helper for printing the list of failed tests. +void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) { + const int failed_test_count = unit_test.failed_test_count(); + if (failed_test_count == 0) { + return; + } + + for (int i = 0; i < unit_test.total_test_case_count(); ++i) { + const TestCase& test_case = *unit_test.GetTestCase(i); + if (!test_case.should_run() || (test_case.failed_test_count() == 0)) { + continue; + } + for (int j = 0; j < test_case.total_test_count(); ++j) { + const TestInfo& test_info = *test_case.GetTestInfo(j); + if (!test_info.should_run() || test_info.result()->Passed()) { + continue; + } + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s.%s", test_case.name(), test_info.name()); + PrintFullTestCommentIfPresent(test_info); + printf("\n"); + } + } +} + +void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("%s from %s ran.", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + if (GTEST_FLAG(print_time)) { + printf(" (%s ms total)", + internal::StreamableToString(unit_test.elapsed_time()).c_str()); + } + printf("\n"); + ColoredPrintf(COLOR_GREEN, "[ PASSED ] "); + printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str()); + + int num_failures = unit_test.failed_test_count(); + if (!unit_test.Passed()) { + const int failed_test_count = unit_test.failed_test_count(); + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str()); + PrintFailedTests(unit_test); + printf("\n%2d FAILED %s\n", num_failures, + num_failures == 1 ? "TEST" : "TESTS"); + } + + int num_disabled = unit_test.disabled_test_count(); + if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) { + if (!num_failures) { + printf("\n"); // Add a spacer if no FAILURE banner is displayed. + } + ColoredPrintf(COLOR_YELLOW, + " YOU HAVE %d DISABLED %s\n\n", + num_disabled, + num_disabled == 1 ? "TEST" : "TESTS"); + } + // Ensure that Google Test output is printed before, e.g., heapchecker output. + fflush(stdout); +} + +// End PrettyUnitTestResultPrinter + +// class TestEventRepeater +// +// This class forwards events to other event listeners. +class TestEventRepeater : public TestEventListener { + public: + TestEventRepeater() : forwarding_enabled_(true) {} + virtual ~TestEventRepeater(); + void Append(TestEventListener *listener); + TestEventListener* Release(TestEventListener* listener); + + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled() const { return forwarding_enabled_; } + void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; } + + virtual void OnTestProgramStart(const UnitTest& unit_test); + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test); + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test); + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& unit_test); + + private: + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled_; + // The list of listeners that receive events. + std::vector listeners_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater); +}; + +TestEventRepeater::~TestEventRepeater() { + ForEach(listeners_, Delete); +} + +void TestEventRepeater::Append(TestEventListener *listener) { + listeners_.push_back(listener); +} + +// TODO(vladl@google.com): Factor the search functionality into Vector::Find. +TestEventListener* TestEventRepeater::Release(TestEventListener *listener) { + for (size_t i = 0; i < listeners_.size(); ++i) { + if (listeners_[i] == listener) { + listeners_.erase(listeners_.begin() + i); + return listener; + } + } + + return NULL; +} + +// Since most methods are very similar, use macros to reduce boilerplate. +// This defines a member that forwards the call to all listeners. +#define GTEST_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (size_t i = 0; i < listeners_.size(); i++) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} +// This defines a member that forwards the call to all listeners in reverse +// order. +#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} + +GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest) +GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest) +GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase) +GTEST_REPEATER_METHOD_(OnTestStart, TestInfo) +GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult) +GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo) +GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase) +GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest) + +#undef GTEST_REPEATER_METHOD_ +#undef GTEST_REVERSE_REPEATER_METHOD_ + +void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (size_t i = 0; i < listeners_.size(); i++) { + listeners_[i]->OnTestIterationStart(unit_test, iteration); + } + } +} + +void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { + listeners_[i]->OnTestIterationEnd(unit_test, iteration); + } + } +} + +// End TestEventRepeater + +// This class generates an XML output file. +class XmlUnitTestResultPrinter : public EmptyTestEventListener { + public: + explicit XmlUnitTestResultPrinter(const char* output_file); + + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + + private: + // Is c a whitespace character that is normalized to a space character + // when it appears in an XML attribute value? + static bool IsNormalizableWhitespace(char c) { + return c == 0x9 || c == 0xA || c == 0xD; + } + + // May c appear in a well-formed XML document? + static bool IsValidXmlCharacter(char c) { + return IsNormalizableWhitespace(c) || c >= 0x20; + } + + // Returns an XML-escaped copy of the input string str. If + // is_attribute is true, the text is meant to appear as an attribute + // value, and normalizable whitespace is preserved by replacing it + // with character references. + static String EscapeXml(const char* str, bool is_attribute); + + // Returns the given string with all characters invalid in XML removed. + static string RemoveInvalidXmlCharacters(const string& str); + + // Convenience wrapper around EscapeXml when str is an attribute value. + static String EscapeXmlAttribute(const char* str) { + return EscapeXml(str, true); + } + + // Convenience wrapper around EscapeXml when str is not an attribute value. + static String EscapeXmlText(const char* str) { return EscapeXml(str, false); } + + // Streams an XML CDATA section, escaping invalid CDATA sequences as needed. + static void OutputXmlCDataSection(::std::ostream* stream, const char* data); + + // Streams an XML representation of a TestInfo object. + static void OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info); + + // Prints an XML representation of a TestCase object + static void PrintXmlTestCase(FILE* out, const TestCase& test_case); + + // Prints an XML summary of unit_test to output stream out. + static void PrintXmlUnitTest(FILE* out, const UnitTest& unit_test); + + // Produces a string representing the test properties in a result as space + // delimited XML attributes based on the property key="value" pairs. + // When the String is not empty, it includes a space at the beginning, + // to delimit this attribute from prior attributes. + static String TestPropertiesAsXmlAttributes(const TestResult& result); + + // The output file. + const String output_file_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter); +}; + +// Creates a new XmlUnitTestResultPrinter. +XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file) + : output_file_(output_file) { + if (output_file_.c_str() == NULL || output_file_.empty()) { + fprintf(stderr, "XML output file may not be null\n"); + fflush(stderr); + exit(EXIT_FAILURE); + } +} + +// Called after the unit test ends. +void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + FILE* xmlout = NULL; + FilePath output_file(output_file_); + FilePath output_dir(output_file.RemoveFileName()); + + if (output_dir.CreateDirectoriesRecursively()) { + xmlout = posix::FOpen(output_file_.c_str(), "w"); + } + if (xmlout == NULL) { + // TODO(wan): report the reason of the failure. + // + // We don't do it for now as: + // + // 1. There is no urgent need for it. + // 2. It's a bit involved to make the errno variable thread-safe on + // all three operating systems (Linux, Windows, and Mac OS). + // 3. To interpret the meaning of errno in a thread-safe way, + // we need the strerror_r() function, which is not available on + // Windows. + fprintf(stderr, + "Unable to open file \"%s\"\n", + output_file_.c_str()); + fflush(stderr); + exit(EXIT_FAILURE); + } + PrintXmlUnitTest(xmlout, unit_test); + fclose(xmlout); +} + +// Returns an XML-escaped copy of the input string str. If is_attribute +// is true, the text is meant to appear as an attribute value, and +// normalizable whitespace is preserved by replacing it with character +// references. +// +// Invalid XML characters in str, if any, are stripped from the output. +// It is expected that most, if not all, of the text processed by this +// module will consist of ordinary English text. +// If this module is ever modified to produce version 1.1 XML output, +// most invalid characters can be retained using character references. +// TODO(wan): It might be nice to have a minimally invasive, human-readable +// escaping scheme for invalid characters, rather than dropping them. +String XmlUnitTestResultPrinter::EscapeXml(const char* str, bool is_attribute) { + Message m; + + if (str != NULL) { + for (const char* src = str; *src; ++src) { + switch (*src) { + case '<': + m << "<"; + break; + case '>': + m << ">"; + break; + case '&': + m << "&"; + break; + case '\'': + if (is_attribute) + m << "'"; + else + m << '\''; + break; + case '"': + if (is_attribute) + m << """; + else + m << '"'; + break; + default: + if (IsValidXmlCharacter(*src)) { + if (is_attribute && IsNormalizableWhitespace(*src)) + m << String::Format("&#x%02X;", unsigned(*src)); + else + m << *src; + } + break; + } + } + } + + return m.GetString(); +} + +// Returns the given string with all characters invalid in XML removed. +// Currently invalid characters are dropped from the string. An +// alternative is to replace them with certain characters such as . or ?. +string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const string& str) { + string output; + output.reserve(str.size()); + for (string::const_iterator it = str.begin(); it != str.end(); ++it) + if (IsValidXmlCharacter(*it)) + output.push_back(*it); + + return output; +} + +// The following routines generate an XML representation of a UnitTest +// object. +// +// This is how Google Test concepts map to the DTD: +// +// <-- corresponds to a UnitTest object +// <-- corresponds to a TestCase object +// <-- corresponds to a TestInfo object +// ... +// ... +// ... +// <-- individual assertion failures +// +// +// + +// Formats the given time in milliseconds as seconds. +std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) { + ::std::stringstream ss; + ss << ms/1000.0; + return ss.str(); +} + +// Streams an XML CDATA section, escaping invalid CDATA sequences as needed. +void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream, + const char* data) { + const char* segment = data; + *stream << ""); + if (next_segment != NULL) { + stream->write( + segment, static_cast(next_segment - segment)); + *stream << "]]>]]>"); + } else { + *stream << segment; + break; + } + } + *stream << "]]>"; +} + +// Prints an XML representation of a TestInfo object. +// TODO(wan): There is also value in printing properties with the plain printer. +void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info) { + const TestResult& result = *test_info.result(); + *stream << " \n"; + *stream << " "; + const string location = internal::FormatCompilerIndependentFileLocation( + part.file_name(), part.line_number()); + const string message = location + "\n" + part.message(); + OutputXmlCDataSection(stream, + RemoveInvalidXmlCharacters(message).c_str()); + *stream << "\n"; + } + } + + if (failures == 0) + *stream << " />\n"; + else + *stream << " \n"; +} + +// Prints an XML representation of a TestCase object +void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out, + const TestCase& test_case) { + fprintf(out, + " \n", + FormatTimeInMillisAsSeconds(test_case.elapsed_time()).c_str()); + for (int i = 0; i < test_case.total_test_count(); ++i) { + ::std::stringstream stream; + OutputXmlTestInfo(&stream, test_case.name(), *test_case.GetTestInfo(i)); + fprintf(out, "%s", StringStreamToString(&stream).c_str()); + } + fprintf(out, " \n"); +} + +// Prints an XML summary of unit_test to output stream out. +void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out, + const UnitTest& unit_test) { + fprintf(out, "\n"); + fprintf(out, + "\n"); + for (int i = 0; i < unit_test.total_test_case_count(); ++i) + PrintXmlTestCase(out, *unit_test.GetTestCase(i)); + fprintf(out, "\n"); +} + +// Produces a string representing the test properties in a result as space +// delimited XML attributes based on the property key="value" pairs. +String XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes( + const TestResult& result) { + Message attributes; + for (int i = 0; i < result.test_property_count(); ++i) { + const TestProperty& property = result.GetTestProperty(i); + attributes << " " << property.key() << "=" + << "\"" << EscapeXmlAttribute(property.value()) << "\""; + } + return attributes.GetString(); +} + +// End XmlUnitTestResultPrinter + +#if GTEST_CAN_STREAM_RESULTS_ + +// Streams test results to the given port on the given host machine. +class StreamingListener : public EmptyTestEventListener { + public: + // Escapes '=', '&', '%', and '\n' characters in str as "%xx". + static string UrlEncode(const char* str); + + StreamingListener(const string& host, const string& port) + : sockfd_(-1), host_name_(host), port_num_(port) { + MakeConnection(); + Send("gtest_streaming_protocol_version=1.0\n"); + } + + virtual ~StreamingListener() { + if (sockfd_ != -1) + CloseConnection(); + } + + void OnTestProgramStart(const UnitTest& /* unit_test */) { + Send("event=TestProgramStart\n"); + } + + void OnTestProgramEnd(const UnitTest& unit_test) { + // Note that Google Test current only report elapsed time for each + // test iteration, not for the entire test program. + Send(String::Format("event=TestProgramEnd&passed=%d\n", + unit_test.Passed())); + + // Notify the streaming server to stop. + CloseConnection(); + } + + void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) { + Send(String::Format("event=TestIterationStart&iteration=%d\n", + iteration)); + } + + void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) { + Send(String::Format("event=TestIterationEnd&passed=%d&elapsed_time=%sms\n", + unit_test.Passed(), + StreamableToString(unit_test.elapsed_time()).c_str())); + } + + void OnTestCaseStart(const TestCase& test_case) { + Send(String::Format("event=TestCaseStart&name=%s\n", test_case.name())); + } + + void OnTestCaseEnd(const TestCase& test_case) { + Send(String::Format("event=TestCaseEnd&passed=%d&elapsed_time=%sms\n", + test_case.Passed(), + StreamableToString(test_case.elapsed_time()).c_str())); + } + + void OnTestStart(const TestInfo& test_info) { + Send(String::Format("event=TestStart&name=%s\n", test_info.name())); + } + + void OnTestEnd(const TestInfo& test_info) { + Send(String::Format( + "event=TestEnd&passed=%d&elapsed_time=%sms\n", + (test_info.result())->Passed(), + StreamableToString((test_info.result())->elapsed_time()).c_str())); + } + + void OnTestPartResult(const TestPartResult& test_part_result) { + const char* file_name = test_part_result.file_name(); + if (file_name == NULL) + file_name = ""; + Send(String::Format("event=TestPartResult&file=%s&line=%d&message=", + UrlEncode(file_name).c_str(), + test_part_result.line_number())); + Send(UrlEncode(test_part_result.message()) + "\n"); + } + + private: + // Creates a client socket and connects to the server. + void MakeConnection(); + + // Closes the socket. + void CloseConnection() { + GTEST_CHECK_(sockfd_ != -1) + << "CloseConnection() can be called only when there is a connection."; + + close(sockfd_); + sockfd_ = -1; + } + + // Sends a string to the socket. + void Send(const string& message) { + GTEST_CHECK_(sockfd_ != -1) + << "Send() can be called only when there is a connection."; + + const int len = static_cast(message.length()); + if (write(sockfd_, message.c_str(), len) != len) { + GTEST_LOG_(WARNING) + << "stream_result_to: failed to stream to " + << host_name_ << ":" << port_num_; + } + } + + int sockfd_; // socket file descriptor + const string host_name_; + const string port_num_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener); +}; // class StreamingListener + +// Checks if str contains '=', '&', '%' or '\n' characters. If yes, +// replaces them by "%xx" where xx is their hexadecimal value. For +// example, replaces "=" with "%3D". This algorithm is O(strlen(str)) +// in both time and space -- important as the input str may contain an +// arbitrarily long test failure message and stack trace. +string StreamingListener::UrlEncode(const char* str) { + string result; + result.reserve(strlen(str) + 1); + for (char ch = *str; ch != '\0'; ch = *++str) { + switch (ch) { + case '%': + case '=': + case '&': + case '\n': + result.append(String::Format("%%%02x", static_cast(ch))); + break; + default: + result.push_back(ch); + break; + } + } + return result; +} + +void StreamingListener::MakeConnection() { + GTEST_CHECK_(sockfd_ == -1) + << "MakeConnection() can't be called when there is already a connection."; + + addrinfo hints; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses. + hints.ai_socktype = SOCK_STREAM; + addrinfo* servinfo = NULL; + + // Use the getaddrinfo() to get a linked list of IP addresses for + // the given host name. + const int error_num = getaddrinfo( + host_name_.c_str(), port_num_.c_str(), &hints, &servinfo); + if (error_num != 0) { + GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: " + << gai_strerror(error_num); + } + + // Loop through all the results and connect to the first we can. + for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL; + cur_addr = cur_addr->ai_next) { + sockfd_ = socket( + cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol); + if (sockfd_ != -1) { + // Connect the client socket to the server socket. + if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) { + close(sockfd_); + sockfd_ = -1; + } + } + } + + freeaddrinfo(servinfo); // all done with this structure + + if (sockfd_ == -1) { + GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to " + << host_name_ << ":" << port_num_; + } +} + +// End of class Streaming Listener +#endif // GTEST_CAN_STREAM_RESULTS__ + +// Class ScopedTrace + +// Pushes the given source file location and message onto a per-thread +// trace stack maintained by Google Test. +// L < UnitTest::mutex_ +ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) { + TraceInfo trace; + trace.file = file; + trace.line = line; + trace.message = message.GetString(); + + UnitTest::GetInstance()->PushGTestTrace(trace); +} + +// Pops the info pushed by the c'tor. +// L < UnitTest::mutex_ +ScopedTrace::~ScopedTrace() { + UnitTest::GetInstance()->PopGTestTrace(); +} + + +// class OsStackTraceGetter + +// Returns the current OS stack trace as a String. Parameters: +// +// max_depth - the maximum number of stack frames to be included +// in the trace. +// skip_count - the number of top frames to be skipped; doesn't count +// against max_depth. +// +// L < mutex_ +// We use "L < mutex_" to denote that the function may acquire mutex_. +String OsStackTraceGetter::CurrentStackTrace(int, int) { + return String(""); +} + +// L < mutex_ +void OsStackTraceGetter::UponLeavingGTest() { +} + +const char* const +OsStackTraceGetter::kElidedFramesMarker = + "... " GTEST_NAME_ " internal frames ..."; + +} // namespace internal + +// class TestEventListeners + +TestEventListeners::TestEventListeners() + : repeater_(new internal::TestEventRepeater()), + default_result_printer_(NULL), + default_xml_generator_(NULL) { +} + +TestEventListeners::~TestEventListeners() { delete repeater_; } + +// Returns the standard listener responsible for the default console +// output. Can be removed from the listeners list to shut down default +// console output. Note that removing this object from the listener list +// with Release transfers its ownership to the user. +void TestEventListeners::Append(TestEventListener* listener) { + repeater_->Append(listener); +} + +// Removes the given event listener from the list and returns it. It then +// becomes the caller's responsibility to delete the listener. Returns +// NULL if the listener is not found in the list. +TestEventListener* TestEventListeners::Release(TestEventListener* listener) { + if (listener == default_result_printer_) + default_result_printer_ = NULL; + else if (listener == default_xml_generator_) + default_xml_generator_ = NULL; + return repeater_->Release(listener); +} + +// Returns repeater that broadcasts the TestEventListener events to all +// subscribers. +TestEventListener* TestEventListeners::repeater() { return repeater_; } + +// Sets the default_result_printer attribute to the provided listener. +// The listener is also added to the listener list and previous +// default_result_printer is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) { + if (default_result_printer_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_result_printer_); + default_result_printer_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Sets the default_xml_generator attribute to the provided listener. The +// listener is also added to the listener list and previous +// default_xml_generator is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) { + if (default_xml_generator_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_xml_generator_); + default_xml_generator_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Controls whether events will be forwarded by the repeater to the +// listeners in the list. +bool TestEventListeners::EventForwardingEnabled() const { + return repeater_->forwarding_enabled(); +} + +void TestEventListeners::SuppressEventForwarding() { + repeater_->set_forwarding_enabled(false); +} + +// class UnitTest + +// Gets the singleton UnitTest object. The first time this method is +// called, a UnitTest object is constructed and returned. Consecutive +// calls will return the same object. +// +// We don't protect this under mutex_ as a user is not supposed to +// call this before main() starts, from which point on the return +// value will never change. +UnitTest * UnitTest::GetInstance() { + // When compiled with MSVC 7.1 in optimized mode, destroying the + // UnitTest object upon exiting the program messes up the exit code, + // causing successful tests to appear failed. We have to use a + // different implementation in this case to bypass the compiler bug. + // This implementation makes the compiler happy, at the cost of + // leaking the UnitTest object. + + // CodeGear C++Builder insists on a public destructor for the + // default implementation. Use this implementation to keep good OO + // design with private destructor. + +#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) + static UnitTest* const instance = new UnitTest; + return instance; +#else + static UnitTest instance; + return &instance; +#endif // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) +} + +// Gets the number of successful test cases. +int UnitTest::successful_test_case_count() const { + return impl()->successful_test_case_count(); +} + +// Gets the number of failed test cases. +int UnitTest::failed_test_case_count() const { + return impl()->failed_test_case_count(); +} + +// Gets the number of all test cases. +int UnitTest::total_test_case_count() const { + return impl()->total_test_case_count(); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTest::test_case_to_run_count() const { + return impl()->test_case_to_run_count(); +} + +// Gets the number of successful tests. +int UnitTest::successful_test_count() const { + return impl()->successful_test_count(); +} + +// Gets the number of failed tests. +int UnitTest::failed_test_count() const { return impl()->failed_test_count(); } + +// Gets the number of disabled tests. +int UnitTest::disabled_test_count() const { + return impl()->disabled_test_count(); +} + +// Gets the number of all tests. +int UnitTest::total_test_count() const { return impl()->total_test_count(); } + +// Gets the number of tests that should run. +int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); } + +// Gets the elapsed time, in milliseconds. +internal::TimeInMillis UnitTest::elapsed_time() const { + return impl()->elapsed_time(); +} + +// Returns true iff the unit test passed (i.e. all test cases passed). +bool UnitTest::Passed() const { return impl()->Passed(); } + +// Returns true iff the unit test failed (i.e. some test case failed +// or something outside of all tests failed). +bool UnitTest::Failed() const { return impl()->Failed(); } + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +const TestCase* UnitTest::GetTestCase(int i) const { + return impl()->GetTestCase(i); +} + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +TestCase* UnitTest::GetMutableTestCase(int i) { + return impl()->GetMutableTestCase(i); +} + +// Returns the list of event listeners that can be used to track events +// inside Google Test. +TestEventListeners& UnitTest::listeners() { + return *impl()->listeners(); +} + +// Registers and returns a global test environment. When a test +// program is run, all global test environments will be set-up in the +// order they were registered. After all tests in the program have +// finished, all global test environments will be torn-down in the +// *reverse* order they were registered. +// +// The UnitTest object takes ownership of the given environment. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +Environment* UnitTest::AddEnvironment(Environment* env) { + if (env == NULL) { + return NULL; + } + + impl_->environments().push_back(env); + return env; +} + +// Adds a TestPartResult to the current TestResult object. All Google Test +// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call +// this to report their results. The user code should use the +// assertion macros instead of calling this directly. +// L < mutex_ +void UnitTest::AddTestPartResult(TestPartResult::Type result_type, + const char* file_name, + int line_number, + const internal::String& message, + const internal::String& os_stack_trace) { + Message msg; + msg << message; + + internal::MutexLock lock(&mutex_); + if (impl_->gtest_trace_stack().size() > 0) { + msg << "\n" << GTEST_NAME_ << " trace:"; + + for (int i = static_cast(impl_->gtest_trace_stack().size()); + i > 0; --i) { + const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; + msg << "\n" << internal::FormatFileLocation(trace.file, trace.line) + << " " << trace.message; + } + } + + if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) { + msg << internal::kStackTraceMarker << os_stack_trace; + } + + const TestPartResult result = + TestPartResult(result_type, file_name, line_number, + msg.GetString().c_str()); + impl_->GetTestPartResultReporterForCurrentThread()-> + ReportTestPartResult(result); + + if (result_type != TestPartResult::kSuccess) { + // gtest_break_on_failure takes precedence over + // gtest_throw_on_failure. This allows a user to set the latter + // in the code (perhaps in order to use Google Test assertions + // with another testing framework) and specify the former on the + // command line for debugging. + if (GTEST_FLAG(break_on_failure)) { +#if GTEST_OS_WINDOWS + // Using DebugBreak on Windows allows gtest to still break into a debugger + // when a failure happens and both the --gtest_break_on_failure and + // the --gtest_catch_exceptions flags are specified. + DebugBreak(); +#else + // Dereference NULL through a volatile pointer to prevent the compiler + // from removing. We use this rather than abort() or __builtin_trap() for + // portability: Symbian doesn't implement abort() well, and some debuggers + // don't correctly trap abort(). + *static_cast(NULL) = 1; +#endif // GTEST_OS_WINDOWS + } else if (GTEST_FLAG(throw_on_failure)) { +#if GTEST_HAS_EXCEPTIONS + throw GoogleTestFailureException(result); +#else + // We cannot call abort() as it generates a pop-up in debug mode + // that cannot be suppressed in VC 7.1 or below. + exit(1); +#endif + } + } +} + +// Creates and adds a property to the current TestResult. If a property matching +// the supplied value already exists, updates its value instead. +void UnitTest::RecordPropertyForCurrentTest(const char* key, + const char* value) { + const TestProperty test_property(key, value); + impl_->current_test_result()->RecordProperty(test_property); +} + +// Runs all tests in this UnitTest object and prints the result. +// Returns 0 if successful, or 1 otherwise. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +int UnitTest::Run() { + // Captures the value of GTEST_FLAG(catch_exceptions). This value will be + // used for the duration of the program. + impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions)); + +#if GTEST_HAS_SEH + const bool in_death_test_child_process = + internal::GTEST_FLAG(internal_run_death_test).length() > 0; + + // Either the user wants Google Test to catch exceptions thrown by the + // tests or this is executing in the context of death test child + // process. In either case the user does not want to see pop-up dialogs + // about crashes - they are expected. + if (impl()->catch_exceptions() || in_death_test_child_process) { + +# if !GTEST_OS_WINDOWS_MOBILE + // SetErrorMode doesn't exist on CE. + SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT | + SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); +# endif // !GTEST_OS_WINDOWS_MOBILE + +# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE + // Death test children can be terminated with _abort(). On Windows, + // _abort() can show a dialog with a warning message. This forces the + // abort message to go to stderr instead. + _set_error_mode(_OUT_TO_STDERR); +# endif + +# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE + // In the debug version, Visual Studio pops up a separate dialog + // offering a choice to debug the aborted program. We need to suppress + // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement + // executed. Google Test will notify the user of any unexpected + // failure via stderr. + // + // VC++ doesn't define _set_abort_behavior() prior to the version 8.0. + // Users of prior VC versions shall suffer the agony and pain of + // clicking through the countless debug dialogs. + // TODO(vladl@google.com): find a way to suppress the abort dialog() in the + // debug mode when compiled with VC 7.1 or lower. + if (!GTEST_FLAG(break_on_failure)) + _set_abort_behavior( + 0x0, // Clear the following flags: + _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump. +# endif + + } +#endif // GTEST_HAS_SEH + + return internal::HandleExceptionsInMethodIfSupported( + impl(), + &internal::UnitTestImpl::RunAllTests, + "auxiliary test code (environments or event listeners)") ? 0 : 1; +} + +// Returns the working directory when the first TEST() or TEST_F() was +// executed. +const char* UnitTest::original_working_dir() const { + return impl_->original_working_dir_.c_str(); +} + +// Returns the TestCase object for the test that's currently running, +// or NULL if no test is running. +// L < mutex_ +const TestCase* UnitTest::current_test_case() const { + internal::MutexLock lock(&mutex_); + return impl_->current_test_case(); +} + +// Returns the TestInfo object for the test that's currently running, +// or NULL if no test is running. +// L < mutex_ +const TestInfo* UnitTest::current_test_info() const { + internal::MutexLock lock(&mutex_); + return impl_->current_test_info(); +} + +// Returns the random seed used at the start of the current test run. +int UnitTest::random_seed() const { return impl_->random_seed(); } + +#if GTEST_HAS_PARAM_TEST +// Returns ParameterizedTestCaseRegistry object used to keep track of +// value-parameterized tests and instantiate and register them. +// L < mutex_ +internal::ParameterizedTestCaseRegistry& + UnitTest::parameterized_test_registry() { + return impl_->parameterized_test_registry(); +} +#endif // GTEST_HAS_PARAM_TEST + +// Creates an empty UnitTest. +UnitTest::UnitTest() { + impl_ = new internal::UnitTestImpl(this); +} + +// Destructor of UnitTest. +UnitTest::~UnitTest() { + delete impl_; +} + +// Pushes a trace defined by SCOPED_TRACE() on to the per-thread +// Google Test trace stack. +// L < mutex_ +void UnitTest::PushGTestTrace(const internal::TraceInfo& trace) { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().push_back(trace); +} + +// Pops a trace from the per-thread Google Test trace stack. +// L < mutex_ +void UnitTest::PopGTestTrace() { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().pop_back(); +} + +namespace internal { + +UnitTestImpl::UnitTestImpl(UnitTest* parent) + : parent_(parent), +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4355) // Temporarily disables warning 4355 + // (using this in initializer). + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +# pragma warning(pop) // Restores the warning state again. +#else + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +#endif // _MSC_VER + global_test_part_result_repoter_( + &default_global_test_part_result_reporter_), + per_thread_test_part_result_reporter_( + &default_per_thread_test_part_result_reporter_), +#if GTEST_HAS_PARAM_TEST + parameterized_test_registry_(), + parameterized_tests_registered_(false), +#endif // GTEST_HAS_PARAM_TEST + last_death_test_case_(-1), + current_test_case_(NULL), + current_test_info_(NULL), + ad_hoc_test_result_(), + os_stack_trace_getter_(NULL), + post_flag_parse_init_performed_(false), + random_seed_(0), // Will be overridden by the flag before first use. + random_(0), // Will be reseeded before first use. + elapsed_time_(0), +#if GTEST_HAS_DEATH_TEST + internal_run_death_test_flag_(NULL), + death_test_factory_(new DefaultDeathTestFactory), +#endif + // Will be overridden by the flag before first use. + catch_exceptions_(false) { + listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter); +} + +UnitTestImpl::~UnitTestImpl() { + // Deletes every TestCase. + ForEach(test_cases_, internal::Delete); + + // Deletes every Environment. + ForEach(environments_, internal::Delete); + + delete os_stack_trace_getter_; +} + +#if GTEST_HAS_DEATH_TEST +// Disables event forwarding if the control is currently in a death test +// subprocess. Must not be called before InitGoogleTest. +void UnitTestImpl::SuppressTestEventsIfInSubprocess() { + if (internal_run_death_test_flag_.get() != NULL) + listeners()->SuppressEventForwarding(); +} +#endif // GTEST_HAS_DEATH_TEST + +// Initializes event listeners performing XML output as specified by +// UnitTestOptions. Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureXmlOutput() { + const String& output_format = UnitTestOptions::GetOutputFormat(); + if (output_format == "xml") { + listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter( + UnitTestOptions::GetAbsolutePathToOutputFile().c_str())); + } else if (output_format != "") { + printf("WARNING: unrecognized output format \"%s\" ignored.\n", + output_format.c_str()); + fflush(stdout); + } +} + +#if GTEST_CAN_STREAM_RESULTS_ +// Initializes event listeners for streaming test results in String form. +// Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureStreamingOutput() { + const string& target = GTEST_FLAG(stream_result_to); + if (!target.empty()) { + const size_t pos = target.find(':'); + if (pos != string::npos) { + listeners()->Append(new StreamingListener(target.substr(0, pos), + target.substr(pos+1))); + } else { + printf("WARNING: unrecognized streaming target \"%s\" ignored.\n", + target.c_str()); + fflush(stdout); + } + } +} +#endif // GTEST_CAN_STREAM_RESULTS_ + +// Performs initialization dependent upon flag values obtained in +// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to +// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest +// this function is also called from RunAllTests. Since this function can be +// called more than once, it has to be idempotent. +void UnitTestImpl::PostFlagParsingInit() { + // Ensures that this function does not execute more than once. + if (!post_flag_parse_init_performed_) { + post_flag_parse_init_performed_ = true; + +#if GTEST_HAS_DEATH_TEST + InitDeathTestSubprocessControlInfo(); + SuppressTestEventsIfInSubprocess(); +#endif // GTEST_HAS_DEATH_TEST + + // Registers parameterized tests. This makes parameterized tests + // available to the UnitTest reflection API without running + // RUN_ALL_TESTS. + RegisterParameterizedTests(); + + // Configures listeners for XML output. This makes it possible for users + // to shut down the default XML output before invoking RUN_ALL_TESTS. + ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Configures listeners for streaming test results to the specified server. + ConfigureStreamingOutput(); +#endif // GTEST_CAN_STREAM_RESULTS_ + } +} + +// A predicate that checks the name of a TestCase against a known +// value. +// +// This is used for implementation of the UnitTest class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestCaseNameIs is copyable. +class TestCaseNameIs { + public: + // Constructor. + explicit TestCaseNameIs(const String& name) + : name_(name) {} + + // Returns true iff the name of test_case matches name_. + bool operator()(const TestCase* test_case) const { + return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0; + } + + private: + String name_; +}; + +// Finds and returns a TestCase with the given name. If one doesn't +// exist, creates one and returns it. It's the CALLER'S +// RESPONSIBILITY to ensure that this function is only called WHEN THE +// TESTS ARE NOT SHUFFLED. +// +// Arguments: +// +// test_case_name: name of the test case +// type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase* UnitTestImpl::GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) { + // Can we find a TestCase with the given name? + const std::vector::const_iterator test_case = + std::find_if(test_cases_.begin(), test_cases_.end(), + TestCaseNameIs(test_case_name)); + + if (test_case != test_cases_.end()) + return *test_case; + + // No. Let's create one. + TestCase* const new_test_case = + new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc); + + // Is this a death test case? + if (internal::UnitTestOptions::MatchesFilter(String(test_case_name), + kDeathTestCaseFilter)) { + // Yes. Inserts the test case after the last death test case + // defined so far. This only works when the test cases haven't + // been shuffled. Otherwise we may end up running a death test + // after a non-death test. + ++last_death_test_case_; + test_cases_.insert(test_cases_.begin() + last_death_test_case_, + new_test_case); + } else { + // No. Appends to the end of the list. + test_cases_.push_back(new_test_case); + } + + test_case_indices_.push_back(static_cast(test_case_indices_.size())); + return new_test_case; +} + +// Helpers for setting up / tearing down the given environment. They +// are for use in the ForEach() function. +static void SetUpEnvironment(Environment* env) { env->SetUp(); } +static void TearDownEnvironment(Environment* env) { env->TearDown(); } + +// Runs all tests in this UnitTest object, prints the result, and +// returns true if all tests are successful. If any exception is +// thrown during a test, the test is considered to be failed, but the +// rest of the tests will still be run. +// +// When parameterized tests are enabled, it expands and registers +// parameterized tests first in RegisterParameterizedTests(). +// All other functions called from RunAllTests() may safely assume that +// parameterized tests are ready to be counted and run. +bool UnitTestImpl::RunAllTests() { + // Makes sure InitGoogleTest() was called. + if (!GTestIsInitialized()) { + printf("%s", + "\nThis test program did NOT call ::testing::InitGoogleTest " + "before calling RUN_ALL_TESTS(). Please fix it.\n"); + return false; + } + + // Do not run any test if the --help flag was specified. + if (g_help_flag) + return true; + + // Repeats the call to the post-flag parsing initialization in case the + // user didn't call InitGoogleTest. + PostFlagParsingInit(); + + // Even if sharding is not on, test runners may want to use the + // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding + // protocol. + internal::WriteToShardStatusFileIfNeeded(); + + // True iff we are in a subprocess for running a thread-safe-style + // death test. + bool in_subprocess_for_death_test = false; + +#if GTEST_HAS_DEATH_TEST + in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL); +#endif // GTEST_HAS_DEATH_TEST + + const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex, + in_subprocess_for_death_test); + + // Compares the full test names with the filter to decide which + // tests to run. + const bool has_tests_to_run = FilterTests(should_shard + ? HONOR_SHARDING_PROTOCOL + : IGNORE_SHARDING_PROTOCOL) > 0; + + // Lists the tests and exits if the --gtest_list_tests flag was specified. + if (GTEST_FLAG(list_tests)) { + // This must be called *after* FilterTests() has been called. + ListTestsMatchingFilter(); + return true; + } + + random_seed_ = GTEST_FLAG(shuffle) ? + GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0; + + // True iff at least one test has failed. + bool failed = false; + + TestEventListener* repeater = listeners()->repeater(); + + repeater->OnTestProgramStart(*parent_); + + // How many times to repeat the tests? We don't want to repeat them + // when we are inside the subprocess of a death test. + const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat); + // Repeats forever if the repeat count is negative. + const bool forever = repeat < 0; + for (int i = 0; forever || i != repeat; i++) { + // We want to preserve failures generated by ad-hoc test + // assertions executed before RUN_ALL_TESTS(). + ClearNonAdHocTestResult(); + + const TimeInMillis start = GetTimeInMillis(); + + // Shuffles test cases and tests if requested. + if (has_tests_to_run && GTEST_FLAG(shuffle)) { + random()->Reseed(random_seed_); + // This should be done before calling OnTestIterationStart(), + // such that a test event listener can see the actual test order + // in the event. + ShuffleTests(); + } + + // Tells the unit test event listeners that the tests are about to start. + repeater->OnTestIterationStart(*parent_, i); + + // Runs each test case if there is at least one test to run. + if (has_tests_to_run) { + // Sets up all environments beforehand. + repeater->OnEnvironmentsSetUpStart(*parent_); + ForEach(environments_, SetUpEnvironment); + repeater->OnEnvironmentsSetUpEnd(*parent_); + + // Runs the tests only if there was no fatal failure during global + // set-up. + if (!Test::HasFatalFailure()) { + for (int test_index = 0; test_index < total_test_case_count(); + test_index++) { + GetMutableTestCase(test_index)->Run(); + } + } + + // Tears down all environments in reverse order afterwards. + repeater->OnEnvironmentsTearDownStart(*parent_); + std::for_each(environments_.rbegin(), environments_.rend(), + TearDownEnvironment); + repeater->OnEnvironmentsTearDownEnd(*parent_); + } + + elapsed_time_ = GetTimeInMillis() - start; + + // Tells the unit test event listener that the tests have just finished. + repeater->OnTestIterationEnd(*parent_, i); + + // Gets the result and clears it. + if (!Passed()) { + failed = true; + } + + // Restores the original test order after the iteration. This + // allows the user to quickly repro a failure that happens in the + // N-th iteration without repeating the first (N - 1) iterations. + // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in + // case the user somehow changes the value of the flag somewhere + // (it's always safe to unshuffle the tests). + UnshuffleTests(); + + if (GTEST_FLAG(shuffle)) { + // Picks a new random seed for each iteration. + random_seed_ = GetNextRandomSeed(random_seed_); + } + } + + repeater->OnTestProgramEnd(*parent_); + + return !failed; +} + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded() { + const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); + if (test_shard_file != NULL) { + FILE* const file = posix::FOpen(test_shard_file, "w"); + if (file == NULL) { + ColoredPrintf(COLOR_RED, + "Could not write to the test shard status file \"%s\" " + "specified by the %s environment variable.\n", + test_shard_file, kTestShardStatusFile); + fflush(stdout); + exit(EXIT_FAILURE); + } + fclose(file); + } +} + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (i.e., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +bool ShouldShard(const char* total_shards_env, + const char* shard_index_env, + bool in_subprocess_for_death_test) { + if (in_subprocess_for_death_test) { + return false; + } + + const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1); + const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1); + + if (total_shards == -1 && shard_index == -1) { + return false; + } else if (total_shards == -1 && shard_index != -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestShardIndex << " = " << shard_index + << ", but have left " << kTestTotalShards << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (total_shards != -1 && shard_index == -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestTotalShards << " = " << total_shards + << ", but have left " << kTestShardIndex << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (shard_index < 0 || shard_index >= total_shards) { + const Message msg = Message() + << "Invalid environment variables: we require 0 <= " + << kTestShardIndex << " < " << kTestTotalShards + << ", but you have " << kTestShardIndex << "=" << shard_index + << ", " << kTestTotalShards << "=" << total_shards << ".\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } + + return total_shards > 1; +} + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error +// and aborts. +Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) { + const char* str_val = posix::GetEnv(var); + if (str_val == NULL) { + return default_val; + } + + Int32 result; + if (!ParseInt32(Message() << "The value of environment variable " << var, + str_val, &result)) { + exit(EXIT_FAILURE); + } + return result; +} + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) { + return (test_id % total_shards) == shard_index; +} + +// Compares the name of each test with the user-specified filter to +// decide whether the test should be run, then records the result in +// each TestCase and TestInfo object. +// If shard_tests == true, further filters tests based on sharding +// variables in the environment - see +// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. +// Returns the number of tests that should run. +int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { + const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestTotalShards, -1) : -1; + const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestShardIndex, -1) : -1; + + // num_runnable_tests are the number of tests that will + // run across all shards (i.e., match filter and are not disabled). + // num_selected_tests are the number of tests to be run on + // this shard. + int num_runnable_tests = 0; + int num_selected_tests = 0; + for (size_t i = 0; i < test_cases_.size(); i++) { + TestCase* const test_case = test_cases_[i]; + const String &test_case_name = test_case->name(); + test_case->set_should_run(false); + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + TestInfo* const test_info = test_case->test_info_list()[j]; + const String test_name(test_info->name()); + // A test is disabled if test case name or test name matches + // kDisableTestFilter. + const bool is_disabled = + internal::UnitTestOptions::MatchesFilter(test_case_name, + kDisableTestFilter) || + internal::UnitTestOptions::MatchesFilter(test_name, + kDisableTestFilter); + test_info->is_disabled_ = is_disabled; + + const bool matches_filter = + internal::UnitTestOptions::FilterMatchesTest(test_case_name, + test_name); + test_info->matches_filter_ = matches_filter; + + const bool is_runnable = + (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) && + matches_filter; + + const bool is_selected = is_runnable && + (shard_tests == IGNORE_SHARDING_PROTOCOL || + ShouldRunTestOnShard(total_shards, shard_index, + num_runnable_tests)); + + num_runnable_tests += is_runnable; + num_selected_tests += is_selected; + + test_info->should_run_ = is_selected; + test_case->set_should_run(test_case->should_run() || is_selected); + } + } + return num_selected_tests; +} + +// Prints the names of the tests matching the user-specified filter flag. +void UnitTestImpl::ListTestsMatchingFilter() { + for (size_t i = 0; i < test_cases_.size(); i++) { + const TestCase* const test_case = test_cases_[i]; + bool printed_test_case_name = false; + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + const TestInfo* const test_info = + test_case->test_info_list()[j]; + if (test_info->matches_filter_) { + if (!printed_test_case_name) { + printed_test_case_name = true; + printf("%s.\n", test_case->name()); + } + printf(" %s\n", test_info->name()); + } + } + } + fflush(stdout); +} + +// Sets the OS stack trace getter. +// +// Does nothing if the input and the current OS stack trace getter are +// the same; otherwise, deletes the old getter and makes the input the +// current getter. +void UnitTestImpl::set_os_stack_trace_getter( + OsStackTraceGetterInterface* getter) { + if (os_stack_trace_getter_ != getter) { + delete os_stack_trace_getter_; + os_stack_trace_getter_ = getter; + } +} + +// Returns the current OS stack trace getter if it is not NULL; +// otherwise, creates an OsStackTraceGetter, makes it the current +// getter, and returns it. +OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() { + if (os_stack_trace_getter_ == NULL) { + os_stack_trace_getter_ = new OsStackTraceGetter; + } + + return os_stack_trace_getter_; +} + +// Returns the TestResult for the test that's currently running, or +// the TestResult for the ad hoc test if no test is running. +TestResult* UnitTestImpl::current_test_result() { + return current_test_info_ ? + &(current_test_info_->result_) : &ad_hoc_test_result_; +} + +// Shuffles all test cases, and the tests within each test case, +// making sure that death tests are still run first. +void UnitTestImpl::ShuffleTests() { + // Shuffles the death test cases. + ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_); + + // Shuffles the non-death test cases. + ShuffleRange(random(), last_death_test_case_ + 1, + static_cast(test_cases_.size()), &test_case_indices_); + + // Shuffles the tests inside each test case. + for (size_t i = 0; i < test_cases_.size(); i++) { + test_cases_[i]->ShuffleTests(random()); + } +} + +// Restores the test cases and tests to their order before the first shuffle. +void UnitTestImpl::UnshuffleTests() { + for (size_t i = 0; i < test_cases_.size(); i++) { + // Unshuffles the tests in each test case. + test_cases_[i]->UnshuffleTests(); + // Resets the index of each test case. + test_case_indices_[i] = static_cast(i); + } +} + +// Returns the current OS stack trace as a String. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +String GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/, + int skip_count) { + // We pass skip_count + 1 to skip this wrapper function in addition + // to what the user really wants to skip. + return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1); +} + +// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to +// suppress unreachable code warnings. +namespace { +class ClassUniqueToAlwaysTrue {}; +} + +bool IsTrue(bool condition) { return condition; } + +bool AlwaysTrue() { +#if GTEST_HAS_EXCEPTIONS + // This condition is always false so AlwaysTrue() never actually throws, + // but it makes the compiler think that it may throw. + if (IsTrue(false)) + throw ClassUniqueToAlwaysTrue(); +#endif // GTEST_HAS_EXCEPTIONS + return true; +} + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +bool SkipPrefix(const char* prefix, const char** pstr) { + const size_t prefix_len = strlen(prefix); + if (strncmp(*pstr, prefix, prefix_len) == 0) { + *pstr += prefix_len; + return true; + } + return false; +} + +// Parses a string as a command line flag. The string should have +// the format "--flag=value". When def_optional is true, the "=value" +// part can be omitted. +// +// Returns the value of the flag, or NULL if the parsing failed. +const char* ParseFlagValue(const char* str, + const char* flag, + bool def_optional) { + // str and flag must not be NULL. + if (str == NULL || flag == NULL) return NULL; + + // The flag must start with "--" followed by GTEST_FLAG_PREFIX_. + const String flag_str = String::Format("--%s%s", GTEST_FLAG_PREFIX_, flag); + const size_t flag_len = flag_str.length(); + if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL; + + // Skips the flag name. + const char* flag_end = str + flag_len; + + // When def_optional is true, it's OK to not have a "=value" part. + if (def_optional && (flag_end[0] == '\0')) { + return flag_end; + } + + // If def_optional is true and there are more characters after the + // flag name, or if def_optional is false, there must be a '=' after + // the flag name. + if (flag_end[0] != '=') return NULL; + + // Returns the string after "=". + return flag_end + 1; +} + +// Parses a string for a bool flag, in the form of either +// "--flag=value" or "--flag". +// +// In the former case, the value is taken as true as long as it does +// not start with '0', 'f', or 'F'. +// +// In the latter case, the value is taken as true. +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseBoolFlag(const char* str, const char* flag, bool* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, true); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Converts the string value to a bool. + *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F'); + return true; +} + +// Parses a string for an Int32 flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseInt32Flag(const char* str, const char* flag, Int32* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + return ParseInt32(Message() << "The value of flag --" << flag, + value_str, value); +} + +// Parses a string for a string flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseStringFlag(const char* str, const char* flag, String* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + *value = value_str; + return true; +} + +// Determines whether a string has a prefix that Google Test uses for its +// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_. +// If Google Test detects that a command line flag has its prefix but is not +// recognized, it will print its help message. Flags starting with +// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test +// internal flags and do not trigger the help message. +static bool HasGoogleTestFlagPrefix(const char* str) { + return (SkipPrefix("--", &str) || + SkipPrefix("-", &str) || + SkipPrefix("/", &str)) && + !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) && + (SkipPrefix(GTEST_FLAG_PREFIX_, &str) || + SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str)); +} + +// Prints a string containing code-encoded text. The following escape +// sequences can be used in the string to control the text color: +// +// @@ prints a single '@' character. +// @R changes the color to red. +// @G changes the color to green. +// @Y changes the color to yellow. +// @D changes to the default terminal text color. +// +// TODO(wan@google.com): Write tests for this once we add stdout +// capturing to Google Test. +static void PrintColorEncoded(const char* str) { + GTestColor color = COLOR_DEFAULT; // The current color. + + // Conceptually, we split the string into segments divided by escape + // sequences. Then we print one segment at a time. At the end of + // each iteration, the str pointer advances to the beginning of the + // next segment. + for (;;) { + const char* p = strchr(str, '@'); + if (p == NULL) { + ColoredPrintf(color, "%s", str); + return; + } + + ColoredPrintf(color, "%s", String(str, p - str).c_str()); + + const char ch = p[1]; + str = p + 2; + if (ch == '@') { + ColoredPrintf(color, "@"); + } else if (ch == 'D') { + color = COLOR_DEFAULT; + } else if (ch == 'R') { + color = COLOR_RED; + } else if (ch == 'G') { + color = COLOR_GREEN; + } else if (ch == 'Y') { + color = COLOR_YELLOW; + } else { + --str; + } + } +} + +static const char kColorEncodedHelpMessage[] = +"This program contains tests written using " GTEST_NAME_ ". You can use the\n" +"following command line flags to control its behavior:\n" +"\n" +"Test Selection:\n" +" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n" +" List the names of all tests instead of running them. The name of\n" +" TEST(Foo, Bar) is \"Foo.Bar\".\n" +" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS" + "[@G-@YNEGATIVE_PATTERNS]@D\n" +" Run only the tests whose name matches one of the positive patterns but\n" +" none of the negative patterns. '?' matches any single character; '*'\n" +" matches any substring; ':' separates two patterns.\n" +" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n" +" Run all disabled tests too.\n" +"\n" +"Test Execution:\n" +" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n" +" Run the tests repeatedly; use a negative count to repeat forever.\n" +" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n" +" Randomize tests' orders on every iteration.\n" +" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n" +" Random number seed to use for shuffling test orders (between 1 and\n" +" 99999, or 0 to use a seed based on the current time).\n" +"\n" +"Test Output:\n" +" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n" +" Enable/disable colored output. The default is @Gauto@D.\n" +" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n" +" Don't print the elapsed time of each test.\n" +" @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G" + GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n" +" Generate an XML report in the given directory or with the given file\n" +" name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n" +#if GTEST_CAN_STREAM_RESULTS_ +" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n" +" Stream test results to the given server.\n" +#endif // GTEST_CAN_STREAM_RESULTS_ +"\n" +"Assertion Behavior:\n" +#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n" +" Set the default death test style.\n" +#endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n" +" Turn assertion failures into debugger break-points.\n" +" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n" +" Turn assertion failures into C++ exceptions.\n" +" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n" +" Do not report exceptions as test failures. Instead, allow them\n" +" to crash the program or throw a pop-up (on Windows).\n" +"\n" +"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set " + "the corresponding\n" +"environment variable of a flag (all letters in upper-case). For example, to\n" +"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_ + "color=no@D or set\n" +"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n" +"\n" +"For more information, please read the " GTEST_NAME_ " documentation at\n" +"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n" +"(not one in your own code or tests), please report it to\n" +"@G<" GTEST_DEV_EMAIL_ ">@D.\n"; + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. The type parameter CharType can be +// instantiated to either char or wchar_t. +template +void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { + for (int i = 1; i < *argc; i++) { + const String arg_string = StreamableToString(argv[i]); + const char* const arg = arg_string.c_str(); + + using internal::ParseBoolFlag; + using internal::ParseInt32Flag; + using internal::ParseStringFlag; + + // Do we see a Google Test flag? + if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag, + >EST_FLAG(also_run_disabled_tests)) || + ParseBoolFlag(arg, kBreakOnFailureFlag, + >EST_FLAG(break_on_failure)) || + ParseBoolFlag(arg, kCatchExceptionsFlag, + >EST_FLAG(catch_exceptions)) || + ParseStringFlag(arg, kColorFlag, >EST_FLAG(color)) || + ParseStringFlag(arg, kDeathTestStyleFlag, + >EST_FLAG(death_test_style)) || + ParseBoolFlag(arg, kDeathTestUseFork, + >EST_FLAG(death_test_use_fork)) || + ParseStringFlag(arg, kFilterFlag, >EST_FLAG(filter)) || + ParseStringFlag(arg, kInternalRunDeathTestFlag, + >EST_FLAG(internal_run_death_test)) || + ParseBoolFlag(arg, kListTestsFlag, >EST_FLAG(list_tests)) || + ParseStringFlag(arg, kOutputFlag, >EST_FLAG(output)) || + ParseBoolFlag(arg, kPrintTimeFlag, >EST_FLAG(print_time)) || + ParseInt32Flag(arg, kRandomSeedFlag, >EST_FLAG(random_seed)) || + ParseInt32Flag(arg, kRepeatFlag, >EST_FLAG(repeat)) || + ParseBoolFlag(arg, kShuffleFlag, >EST_FLAG(shuffle)) || + ParseInt32Flag(arg, kStackTraceDepthFlag, + >EST_FLAG(stack_trace_depth)) || + ParseStringFlag(arg, kStreamResultToFlag, + >EST_FLAG(stream_result_to)) || + ParseBoolFlag(arg, kThrowOnFailureFlag, + >EST_FLAG(throw_on_failure)) + ) { + // Yes. Shift the remainder of the argv list left by one. Note + // that argv has (*argc + 1) elements, the last one always being + // NULL. The following loop moves the trailing NULL element as + // well. + for (int j = i; j != *argc; j++) { + argv[j] = argv[j + 1]; + } + + // Decrements the argument count. + (*argc)--; + + // We also need to decrement the iterator as we just removed + // an element. + i--; + } else if (arg_string == "--help" || arg_string == "-h" || + arg_string == "-?" || arg_string == "/?" || + HasGoogleTestFlagPrefix(arg)) { + // Both help flag and unrecognized Google Test flags (excluding + // internal ones) trigger help display. + g_help_flag = true; + } + } + + if (g_help_flag) { + // We print the help here instead of in RUN_ALL_TESTS(), as the + // latter may not be called at all if the user is using Google + // Test with another testing framework. + PrintColorEncoded(kColorEncodedHelpMessage); + } +} + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +void ParseGoogleTestFlagsOnly(int* argc, char** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} +void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} + +// The internal implementation of InitGoogleTest(). +// +// The type parameter CharType can be instantiated to either char or +// wchar_t. +template +void InitGoogleTestImpl(int* argc, CharType** argv) { + g_init_gtest_count++; + + // We don't want to run the initialization code twice. + if (g_init_gtest_count != 1) return; + + if (*argc <= 0) return; + + internal::g_executable_path = internal::StreamableToString(argv[0]); + +#if GTEST_HAS_DEATH_TEST + + g_argvs.clear(); + for (int i = 0; i != *argc; i++) { + g_argvs.push_back(StreamableToString(argv[i])); + } + +#endif // GTEST_HAS_DEATH_TEST + + ParseGoogleTestFlagsOnly(argc, argv); + GetUnitTestImpl()->PostFlagParsingInit(); +} + +} // namespace internal + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +void InitGoogleTest(int* argc, char** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +void InitGoogleTest(int* argc, wchar_t** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +} // namespace testing +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev) +// +// This file implements death tests. + + +#if GTEST_HAS_DEATH_TEST + +# if GTEST_OS_MAC +# include +# endif // GTEST_OS_MAC + +# include +# include +# include +# include + +# if GTEST_OS_WINDOWS +# include +# else +# include +# include +# endif // GTEST_OS_WINDOWS + +#endif // GTEST_HAS_DEATH_TEST + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +// Constants. + +// The default death test style. +static const char kDefaultDeathTestStyle[] = "fast"; + +GTEST_DEFINE_string_( + death_test_style, + internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), + "Indicates how to run a death test in a forked child process: " + "\"threadsafe\" (child process re-executes the test binary " + "from the beginning, running only the specific death test) or " + "\"fast\" (child process runs the death test immediately " + "after forking)."); + +GTEST_DEFINE_bool_( + death_test_use_fork, + internal::BoolFromGTestEnv("death_test_use_fork", false), + "Instructs to use fork()/_exit() instead of clone() in death tests. " + "Ignored and always uses fork() on POSIX systems where clone() is not " + "implemented. Useful when running under valgrind or similar tools if " + "those do not support clone(). Valgrind 3.3.1 will just fail if " + "it sees an unsupported combination of clone() flags. " + "It is not recommended to use this flag w/o valgrind though it will " + "work in 99% of the cases. Once valgrind is fixed, this flag will " + "most likely be removed."); + +namespace internal { +GTEST_DEFINE_string_( + internal_run_death_test, "", + "Indicates the file, line number, temporal index of " + "the single death test to run, and a file descriptor to " + "which a success code may be sent, all separated by " + "colons. This flag is specified if and only if the current " + "process is a sub-process launched for running a thread-safe " + "death test. FOR INTERNAL USE ONLY."); +} // namespace internal + +#if GTEST_HAS_DEATH_TEST + +// ExitedWithCode constructor. +ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) { +} + +// ExitedWithCode function-call operator. +bool ExitedWithCode::operator()(int exit_status) const { +# if GTEST_OS_WINDOWS + + return exit_status == exit_code_; + +# else + + return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_; + +# endif // GTEST_OS_WINDOWS +} + +# if !GTEST_OS_WINDOWS +// KilledBySignal constructor. +KilledBySignal::KilledBySignal(int signum) : signum_(signum) { +} + +// KilledBySignal function-call operator. +bool KilledBySignal::operator()(int exit_status) const { + return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_; +} +# endif // !GTEST_OS_WINDOWS + +namespace internal { + +// Utilities needed for death tests. + +// Generates a textual description of a given exit code, in the format +// specified by wait(2). +static String ExitSummary(int exit_code) { + Message m; + +# if GTEST_OS_WINDOWS + + m << "Exited with exit status " << exit_code; + +# else + + if (WIFEXITED(exit_code)) { + m << "Exited with exit status " << WEXITSTATUS(exit_code); + } else if (WIFSIGNALED(exit_code)) { + m << "Terminated by signal " << WTERMSIG(exit_code); + } +# ifdef WCOREDUMP + if (WCOREDUMP(exit_code)) { + m << " (core dumped)"; + } +# endif +# endif // GTEST_OS_WINDOWS + + return m.GetString(); +} + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +bool ExitedUnsuccessfully(int exit_status) { + return !ExitedWithCode(0)(exit_status); +} + +# if !GTEST_OS_WINDOWS +// Generates a textual failure message when a death test finds more than +// one thread running, or cannot determine the number of threads, prior +// to executing the given statement. It is the responsibility of the +// caller not to pass a thread_count of 1. +static String DeathTestThreadWarning(size_t thread_count) { + Message msg; + msg << "Death tests use fork(), which is unsafe particularly" + << " in a threaded context. For this test, " << GTEST_NAME_ << " "; + if (thread_count == 0) + msg << "couldn't detect the number of threads."; + else + msg << "detected " << thread_count << " threads."; + return msg.GetString(); +} +# endif // !GTEST_OS_WINDOWS + +// Flag characters for reporting a death test that did not die. +static const char kDeathTestLived = 'L'; +static const char kDeathTestReturned = 'R'; +static const char kDeathTestThrew = 'T'; +static const char kDeathTestInternalError = 'I'; + +// An enumeration describing all of the possible ways that a death test can +// conclude. DIED means that the process died while executing the test +// code; LIVED means that process lived beyond the end of the test code; +// RETURNED means that the test statement attempted to execute a return +// statement, which is not allowed; THREW means that the test statement +// returned control by throwing an exception. IN_PROGRESS means the test +// has not yet concluded. +// TODO(vladl@google.com): Unify names and possibly values for +// AbortReason, DeathTestOutcome, and flag characters above. +enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW }; + +// Routine for aborting the program which is safe to call from an +// exec-style death test child process, in which case the error +// message is propagated back to the parent process. Otherwise, the +// message is simply printed to stderr. In either case, the program +// then exits with status 1. +void DeathTestAbort(const String& message) { + // On a POSIX system, this function may be called from a threadsafe-style + // death test child process, which operates on a very small stack. Use + // the heap for any additional non-minuscule memory requirements. + const InternalRunDeathTestFlag* const flag = + GetUnitTestImpl()->internal_run_death_test_flag(); + if (flag != NULL) { + FILE* parent = posix::FDOpen(flag->write_fd(), "w"); + fputc(kDeathTestInternalError, parent); + fprintf(parent, "%s", message.c_str()); + fflush(parent); + _exit(1); + } else { + fprintf(stderr, "%s", message.c_str()); + fflush(stderr); + posix::Abort(); + } +} + +// A replacement for CHECK that calls DeathTestAbort if the assertion +// fails. +# define GTEST_DEATH_TEST_CHECK_(expression) \ + do { \ + if (!::testing::internal::IsTrue(expression)) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for +// evaluating any system call that fulfills two conditions: it must return +// -1 on failure, and set errno to EINTR when it is interrupted and +// should be tried again. The macro expands to a loop that repeatedly +// evaluates the expression as long as it evaluates to -1 and sets +// errno to EINTR. If the expression evaluates to -1 but errno is +// something other than EINTR, DeathTestAbort is called. +# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \ + do { \ + int gtest_retval; \ + do { \ + gtest_retval = (expression); \ + } while (gtest_retval == -1 && errno == EINTR); \ + if (gtest_retval == -1) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s != -1", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// Returns the message describing the last system error in errno. +String GetLastErrnoDescription() { + return String(errno == 0 ? "" : posix::StrError(errno)); +} + +// This is called from a death test parent process to read a failure +// message from the death test child process and log it with the FATAL +// severity. On Windows, the message is read from a pipe handle. On other +// platforms, it is read from a file descriptor. +static void FailFromInternalError(int fd) { + Message error; + char buffer[256]; + int num_read; + + do { + while ((num_read = posix::Read(fd, buffer, 255)) > 0) { + buffer[num_read] = '\0'; + error << buffer; + } + } while (num_read == -1 && errno == EINTR); + + if (num_read == 0) { + GTEST_LOG_(FATAL) << error.GetString(); + } else { + const int last_error = errno; + GTEST_LOG_(FATAL) << "Error while reading death test internal: " + << GetLastErrnoDescription() << " [" << last_error << "]"; + } +} + +// Death test constructor. Increments the running death test count +// for the current test. +DeathTest::DeathTest() { + TestInfo* const info = GetUnitTestImpl()->current_test_info(); + if (info == NULL) { + DeathTestAbort("Cannot run a death test outside of a TEST or " + "TEST_F construct"); + } +} + +// Creates and returns a death test by dispatching to the current +// death test factory. +bool DeathTest::Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) { + return GetUnitTestImpl()->death_test_factory()->Create( + statement, regex, file, line, test); +} + +const char* DeathTest::LastMessage() { + return last_death_test_message_.c_str(); +} + +void DeathTest::set_last_death_test_message(const String& message) { + last_death_test_message_ = message; +} + +String DeathTest::last_death_test_message_; + +// Provides cross platform implementation for some death functionality. +class DeathTestImpl : public DeathTest { + protected: + DeathTestImpl(const char* a_statement, const RE* a_regex) + : statement_(a_statement), + regex_(a_regex), + spawned_(false), + status_(-1), + outcome_(IN_PROGRESS), + read_fd_(-1), + write_fd_(-1) {} + + // read_fd_ is expected to be closed and cleared by a derived class. + ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } + + void Abort(AbortReason reason); + virtual bool Passed(bool status_ok); + + const char* statement() const { return statement_; } + const RE* regex() const { return regex_; } + bool spawned() const { return spawned_; } + void set_spawned(bool is_spawned) { spawned_ = is_spawned; } + int status() const { return status_; } + void set_status(int a_status) { status_ = a_status; } + DeathTestOutcome outcome() const { return outcome_; } + void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } + int read_fd() const { return read_fd_; } + void set_read_fd(int fd) { read_fd_ = fd; } + int write_fd() const { return write_fd_; } + void set_write_fd(int fd) { write_fd_ = fd; } + + // Called in the parent process only. Reads the result code of the death + // test child process via a pipe, interprets it to set the outcome_ + // member, and closes read_fd_. Outputs diagnostics and terminates in + // case of unexpected codes. + void ReadAndInterpretStatusByte(); + + private: + // The textual content of the code this object is testing. This class + // doesn't own this string and should not attempt to delete it. + const char* const statement_; + // The regular expression which test output must match. DeathTestImpl + // doesn't own this object and should not attempt to delete it. + const RE* const regex_; + // True if the death test child process has been successfully spawned. + bool spawned_; + // The exit status of the child process. + int status_; + // How the death test concluded. + DeathTestOutcome outcome_; + // Descriptor to the read end of the pipe to the child process. It is + // always -1 in the child process. The child keeps its write end of the + // pipe in write_fd_. + int read_fd_; + // Descriptor to the child's write end of the pipe to the parent process. + // It is always -1 in the parent process. The parent keeps its end of the + // pipe in read_fd_. + int write_fd_; +}; + +// Called in the parent process only. Reads the result code of the death +// test child process via a pipe, interprets it to set the outcome_ +// member, and closes read_fd_. Outputs diagnostics and terminates in +// case of unexpected codes. +void DeathTestImpl::ReadAndInterpretStatusByte() { + char flag; + int bytes_read; + + // The read() here blocks until data is available (signifying the + // failure of the death test) or until the pipe is closed (signifying + // its success), so it's okay to call this in the parent before + // the child process has exited. + do { + bytes_read = posix::Read(read_fd(), &flag, 1); + } while (bytes_read == -1 && errno == EINTR); + + if (bytes_read == 0) { + set_outcome(DIED); + } else if (bytes_read == 1) { + switch (flag) { + case kDeathTestReturned: + set_outcome(RETURNED); + break; + case kDeathTestThrew: + set_outcome(THREW); + break; + case kDeathTestLived: + set_outcome(LIVED); + break; + case kDeathTestInternalError: + FailFromInternalError(read_fd()); // Does not return. + break; + default: + GTEST_LOG_(FATAL) << "Death test child process reported " + << "unexpected status byte (" + << static_cast(flag) << ")"; + } + } else { + GTEST_LOG_(FATAL) << "Read from death test child process failed: " + << GetLastErrnoDescription(); + } + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd())); + set_read_fd(-1); +} + +// Signals that the death test code which should have exited, didn't. +// Should be called only in a death test child process. +// Writes a status byte to the child's status file descriptor, then +// calls _exit(1). +void DeathTestImpl::Abort(AbortReason reason) { + // The parent process considers the death test to be a failure if + // it finds any data in our pipe. So, here we write a single flag byte + // to the pipe, then exit. + const char status_ch = + reason == TEST_DID_NOT_DIE ? kDeathTestLived : + reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned; + + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1)); + // We are leaking the descriptor here because on some platforms (i.e., + // when built as Windows DLL), destructors of global objects will still + // run after calling _exit(). On such systems, write_fd_ will be + // indirectly closed from the destructor of UnitTestImpl, causing double + // close if it is also closed here. On debug configurations, double close + // may assert. As there are no in-process buffers to flush here, we are + // relying on the OS to close the descriptor after the process terminates + // when the destructors are not run. + _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash) +} + +// Returns an indented copy of stderr output for a death test. +// This makes distinguishing death test output lines from regular log lines +// much easier. +static ::std::string FormatDeathTestOutput(const ::std::string& output) { + ::std::string ret; + for (size_t at = 0; ; ) { + const size_t line_end = output.find('\n', at); + ret += "[ DEATH ] "; + if (line_end == ::std::string::npos) { + ret += output.substr(at); + break; + } + ret += output.substr(at, line_end + 1 - at); + at = line_end + 1; + } + return ret; +} + +// Assesses the success or failure of a death test, using both private +// members which have previously been set, and one argument: +// +// Private data members: +// outcome: An enumeration describing how the death test +// concluded: DIED, LIVED, THREW, or RETURNED. The death test +// fails in the latter three cases. +// status: The exit status of the child process. On *nix, it is in the +// in the format specified by wait(2). On Windows, this is the +// value supplied to the ExitProcess() API or a numeric code +// of the exception that terminated the program. +// regex: A regular expression object to be applied to +// the test's captured standard error output; the death test +// fails if it does not match. +// +// Argument: +// status_ok: true if exit_status is acceptable in the context of +// this particular death test, which fails if it is false +// +// Returns true iff all of the above conditions are met. Otherwise, the +// first failing condition, in the order given above, is the one that is +// reported. Also sets the last death test message string. +bool DeathTestImpl::Passed(bool status_ok) { + if (!spawned()) + return false; + + const String error_message = GetCapturedStderr(); + + bool success = false; + Message buffer; + + buffer << "Death test: " << statement() << "\n"; + switch (outcome()) { + case LIVED: + buffer << " Result: failed to die.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case THREW: + buffer << " Result: threw an exception.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case RETURNED: + buffer << " Result: illegal return in test statement.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case DIED: + if (status_ok) { + const bool matched = RE::PartialMatch(error_message.c_str(), *regex()); + if (matched) { + success = true; + } else { + buffer << " Result: died but not with expected error.\n" + << " Expected: " << regex()->pattern() << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + } else { + buffer << " Result: died but not with expected exit code:\n" + << " " << ExitSummary(status()) << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + break; + case IN_PROGRESS: + default: + GTEST_LOG_(FATAL) + << "DeathTest::Passed somehow called before conclusion of test"; + } + + DeathTest::set_last_death_test_message(buffer.GetString()); + return success; +} + +# if GTEST_OS_WINDOWS +// WindowsDeathTest implements death tests on Windows. Due to the +// specifics of starting new processes on Windows, death tests there are +// always threadsafe, and Google Test considers the +// --gtest_death_test_style=fast setting to be equivalent to +// --gtest_death_test_style=threadsafe there. +// +// A few implementation notes: Like the Linux version, the Windows +// implementation uses pipes for child-to-parent communication. But due to +// the specifics of pipes on Windows, some extra steps are required: +// +// 1. The parent creates a communication pipe and stores handles to both +// ends of it. +// 2. The parent starts the child and provides it with the information +// necessary to acquire the handle to the write end of the pipe. +// 3. The child acquires the write end of the pipe and signals the parent +// using a Windows event. +// 4. Now the parent can release the write end of the pipe on its side. If +// this is done before step 3, the object's reference count goes down to +// 0 and it is destroyed, preventing the child from acquiring it. The +// parent now has to release it, or read operations on the read end of +// the pipe will not return when the child terminates. +// 5. The parent reads child's output through the pipe (outcome code and +// any possible error messages) from the pipe, and its stderr and then +// determines whether to fail the test. +// +// Note: to distinguish Win32 API calls from the local method and function +// calls, the former are explicitly resolved in the global namespace. +// +class WindowsDeathTest : public DeathTestImpl { + public: + WindowsDeathTest(const char* a_statement, + const RE* a_regex, + const char* file, + int line) + : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {} + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + virtual TestRole AssumeRole(); + + private: + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; + // Handle to the write end of the pipe to the child process. + AutoHandle write_handle_; + // Child process handle. + AutoHandle child_handle_; + // Event the child process uses to signal the parent that it has + // acquired the handle to the write end of the pipe. After seeing this + // event the parent can release its own handles to make sure its + // ReadFile() calls return when the child terminates. + AutoHandle event_handle_; +}; + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int WindowsDeathTest::Wait() { + if (!spawned()) + return 0; + + // Wait until the child either signals that it has acquired the write end + // of the pipe or it dies. + const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() }; + switch (::WaitForMultipleObjects(2, + wait_handles, + FALSE, // Waits for any of the handles. + INFINITE)) { + case WAIT_OBJECT_0: + case WAIT_OBJECT_0 + 1: + break; + default: + GTEST_DEATH_TEST_CHECK_(false); // Should not get here. + } + + // The child has acquired the write end of the pipe or exited. + // We release the handle on our side and continue. + write_handle_.Reset(); + event_handle_.Reset(); + + ReadAndInterpretStatusByte(); + + // Waits for the child process to exit if it haven't already. This + // returns immediately if the child has already exited, regardless of + // whether previous calls to WaitForMultipleObjects synchronized on this + // handle or not. + GTEST_DEATH_TEST_CHECK_( + WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(), + INFINITE)); + DWORD status_code; + GTEST_DEATH_TEST_CHECK_( + ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE); + child_handle_.Reset(); + set_status(static_cast(status_code)); + return status(); +} + +// The AssumeRole process for a Windows death test. It creates a child +// process with the same executable as the current process to run the +// death test. The child process is given the --gtest_filter and +// --gtest_internal_run_death_test flags such that it knows to run the +// current death test only. +DeathTest::TestRole WindowsDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + // ParseInternalRunDeathTestFlag() has performed all the necessary + // processing. + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + // WindowsDeathTest uses an anonymous pipe to communicate results of + // a death test. + SECURITY_ATTRIBUTES handles_are_inheritable = { + sizeof(SECURITY_ATTRIBUTES), NULL, TRUE }; + HANDLE read_handle, write_handle; + GTEST_DEATH_TEST_CHECK_( + ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable, + 0) // Default buffer size. + != FALSE); + set_read_fd(::_open_osfhandle(reinterpret_cast(read_handle), + O_RDONLY)); + write_handle_.Reset(write_handle); + event_handle_.Reset(::CreateEvent( + &handles_are_inheritable, + TRUE, // The event will automatically reset to non-signaled state. + FALSE, // The initial state is non-signalled. + NULL)); // The even is unnamed. + GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL); + const String filter_flag = String::Format("--%s%s=%s.%s", + GTEST_FLAG_PREFIX_, kFilterFlag, + info->test_case_name(), + info->name()); + const String internal_flag = String::Format( + "--%s%s=%s|%d|%d|%u|%Iu|%Iu", + GTEST_FLAG_PREFIX_, + kInternalRunDeathTestFlag, + file_, line_, + death_test_index, + static_cast(::GetCurrentProcessId()), + // size_t has the same with as pointers on both 32-bit and 64-bit + // Windows platforms. + // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx. + reinterpret_cast(write_handle), + reinterpret_cast(event_handle_.Get())); + + char executable_path[_MAX_PATH + 1]; // NOLINT + GTEST_DEATH_TEST_CHECK_( + _MAX_PATH + 1 != ::GetModuleFileNameA(NULL, + executable_path, + _MAX_PATH)); + + String command_line = String::Format("%s %s \"%s\"", + ::GetCommandLineA(), + filter_flag.c_str(), + internal_flag.c_str()); + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // Flush the log buffers since the log streams are shared with the child. + FlushInfoLog(); + + // The child process will share the standard handles with the parent. + STARTUPINFOA startup_info; + memset(&startup_info, 0, sizeof(STARTUPINFO)); + startup_info.dwFlags = STARTF_USESTDHANDLES; + startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE); + startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE); + startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE); + + PROCESS_INFORMATION process_info; + GTEST_DEATH_TEST_CHECK_(::CreateProcessA( + executable_path, + const_cast(command_line.c_str()), + NULL, // Retuned process handle is not inheritable. + NULL, // Retuned thread handle is not inheritable. + TRUE, // Child inherits all inheritable handles (for write_handle_). + 0x0, // Default creation flags. + NULL, // Inherit the parent's environment. + UnitTest::GetInstance()->original_working_dir(), + &startup_info, + &process_info) != FALSE); + child_handle_.Reset(process_info.hProcess); + ::CloseHandle(process_info.hThread); + set_spawned(true); + return OVERSEE_TEST; +} +# else // We are not on Windows. + +// ForkingDeathTest provides implementations for most of the abstract +// methods of the DeathTest interface. Only the AssumeRole method is +// left undefined. +class ForkingDeathTest : public DeathTestImpl { + public: + ForkingDeathTest(const char* statement, const RE* regex); + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + + protected: + void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; } + + private: + // PID of child process during death test; 0 in the child process itself. + pid_t child_pid_; +}; + +// Constructs a ForkingDeathTest. +ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex) + : DeathTestImpl(a_statement, a_regex), + child_pid_(-1) {} + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int ForkingDeathTest::Wait() { + if (!spawned()) + return 0; + + ReadAndInterpretStatusByte(); + + int status_value; + GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0)); + set_status(status_value); + return status_value; +} + +// A concrete death test class that forks, then immediately runs the test +// in the child process. +class NoExecDeathTest : public ForkingDeathTest { + public: + NoExecDeathTest(const char* a_statement, const RE* a_regex) : + ForkingDeathTest(a_statement, a_regex) { } + virtual TestRole AssumeRole(); +}; + +// The AssumeRole process for a fork-and-run death test. It implements a +// straightforward fork, with a simple pipe to transmit the status byte. +DeathTest::TestRole NoExecDeathTest::AssumeRole() { + const size_t thread_count = GetThreadCount(); + if (thread_count != 1) { + GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count); + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + + DeathTest::set_last_death_test_message(""); + CaptureStderr(); + // When we fork the process below, the log file buffers are copied, but the + // file descriptors are shared. We flush all log files here so that closing + // the file descriptors in the child process doesn't throw off the + // synchronization between descriptors and buffers in the parent process. + // This is as close to the fork as possible to avoid a race condition in case + // there are multiple threads running before the death test, and another + // thread writes to the log file. + FlushInfoLog(); + + const pid_t child_pid = fork(); + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + set_child_pid(child_pid); + if (child_pid == 0) { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0])); + set_write_fd(pipe_fd[1]); + // Redirects all logging to stderr in the child process to prevent + // concurrent writes to the log files. We capture stderr in the parent + // process and append the child process' output to a log. + LogToStderr(); + // Event forwarding to the listeners of event listener API mush be shut + // down in death test subprocesses. + GetUnitTestImpl()->listeners()->SuppressEventForwarding(); + return EXECUTE_TEST; + } else { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; + } +} + +// A concrete death test class that forks and re-executes the main +// program from the beginning, with command-line flags set that cause +// only this specific death test to be run. +class ExecDeathTest : public ForkingDeathTest { + public: + ExecDeathTest(const char* a_statement, const RE* a_regex, + const char* file, int line) : + ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { } + virtual TestRole AssumeRole(); + private: + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; +}; + +// Utility class for accumulating command-line arguments. +class Arguments { + public: + Arguments() { + args_.push_back(NULL); + } + + ~Arguments() { + for (std::vector::iterator i = args_.begin(); i != args_.end(); + ++i) { + free(*i); + } + } + void AddArgument(const char* argument) { + args_.insert(args_.end() - 1, posix::StrDup(argument)); + } + + template + void AddArguments(const ::std::vector& arguments) { + for (typename ::std::vector::const_iterator i = arguments.begin(); + i != arguments.end(); + ++i) { + args_.insert(args_.end() - 1, posix::StrDup(i->c_str())); + } + } + char* const* Argv() { + return &args_[0]; + } + private: + std::vector args_; +}; + +// A struct that encompasses the arguments to the child process of a +// threadsafe-style death test process. +struct ExecDeathTestArgs { + char* const* argv; // Command-line arguments for the child's call to exec + int close_fd; // File descriptor to close; the read end of a pipe +}; + +# if GTEST_OS_MAC +inline char** GetEnviron() { + // When Google Test is built as a framework on MacOS X, the environ variable + // is unavailable. Apple's documentation (man environ) recommends using + // _NSGetEnviron() instead. + return *_NSGetEnviron(); +} +# else +// Some POSIX platforms expect you to declare environ. extern "C" makes +// it reside in the global namespace. +extern "C" char** environ; +inline char** GetEnviron() { return environ; } +# endif // GTEST_OS_MAC + +// The main function for a threadsafe-style death test child process. +// This function is called in a clone()-ed process and thus must avoid +// any potentially unsafe operations like malloc or libc functions. +static int ExecDeathTestChildMain(void* child_arg) { + ExecDeathTestArgs* const args = static_cast(child_arg); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd)); + + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(String::Format("chdir(\"%s\") failed: %s", + original_dir, + GetLastErrnoDescription().c_str())); + return EXIT_FAILURE; + } + + // We can safely call execve() as it's a direct system call. We + // cannot use execvp() as it's a libc function and thus potentially + // unsafe. Since execve() doesn't search the PATH, the user must + // invoke the test program via a valid path that contains at least + // one path separator. + execve(args->argv[0], args->argv, GetEnviron()); + DeathTestAbort(String::Format("execve(%s, ...) in %s failed: %s", + args->argv[0], + original_dir, + GetLastErrnoDescription().c_str())); + return EXIT_FAILURE; +} + +// Two utility routines that together determine the direction the stack +// grows. +// This could be accomplished more elegantly by a single recursive +// function, but we want to guard against the unlikely possibility of +// a smart compiler optimizing the recursion away. +// +// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining +// StackLowerThanAddress into StackGrowsDown, which then doesn't give +// correct answer. +bool StackLowerThanAddress(const void* ptr) GTEST_NO_INLINE_; +bool StackLowerThanAddress(const void* ptr) { + int dummy; + return &dummy < ptr; +} + +bool StackGrowsDown() { + int dummy; + return StackLowerThanAddress(&dummy); +} + +// A threadsafe implementation of fork(2) for threadsafe-style death tests +// that uses clone(2). It dies with an error message if anything goes +// wrong. +static pid_t ExecDeathTestFork(char* const* argv, int close_fd) { + ExecDeathTestArgs args = { argv, close_fd }; + pid_t child_pid = -1; + +# if GTEST_HAS_CLONE + const bool use_fork = GTEST_FLAG(death_test_use_fork); + + if (!use_fork) { + static const bool stack_grows_down = StackGrowsDown(); + const size_t stack_size = getpagesize(); + // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead. + void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE, -1, 0); + GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED); + void* const stack_top = + static_cast(stack) + (stack_grows_down ? stack_size : 0); + + child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args); + + GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1); + } +# else + const bool use_fork = true; +# endif // GTEST_HAS_CLONE + + if (use_fork && (child_pid = fork()) == 0) { + ExecDeathTestChildMain(&args); + _exit(0); + } + + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + return child_pid; +} + +// The AssumeRole process for a fork-and-exec death test. It re-executes the +// main program from the beginning, setting the --gtest_filter +// and --gtest_internal_run_death_test flags to cause only the current +// death test to be re-run. +DeathTest::TestRole ExecDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + // Clear the close-on-exec flag on the write end of the pipe, lest + // it be closed when the child process does an exec: + GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1); + + const String filter_flag = + String::Format("--%s%s=%s.%s", + GTEST_FLAG_PREFIX_, kFilterFlag, + info->test_case_name(), info->name()); + const String internal_flag = + String::Format("--%s%s=%s|%d|%d|%d", + GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag, + file_, line_, death_test_index, pipe_fd[1]); + Arguments args; + args.AddArguments(GetArgvs()); + args.AddArgument(filter_flag.c_str()); + args.AddArgument(internal_flag.c_str()); + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // See the comment in NoExecDeathTest::AssumeRole for why the next line + // is necessary. + FlushInfoLog(); + + const pid_t child_pid = ExecDeathTestFork(args.Argv(), pipe_fd[0]); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_child_pid(child_pid); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; +} + +# endif // !GTEST_OS_WINDOWS + +// Creates a concrete DeathTest-derived class that depends on the +// --gtest_death_test_style flag, and sets the pointer pointed to +// by the "test" argument to its address. If the test should be +// skipped, sets that pointer to NULL. Returns true, unless the +// flag is set to an invalid value. +bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex, + const char* file, int line, + DeathTest** test) { + UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const int death_test_index = impl->current_test_info() + ->increment_death_test_count(); + + if (flag != NULL) { + if (death_test_index > flag->index()) { + DeathTest::set_last_death_test_message(String::Format( + "Death test count (%d) somehow exceeded expected maximum (%d)", + death_test_index, flag->index())); + return false; + } + + if (!(flag->file() == file && flag->line() == line && + flag->index() == death_test_index)) { + *test = NULL; + return true; + } + } + +# if GTEST_OS_WINDOWS + + if (GTEST_FLAG(death_test_style) == "threadsafe" || + GTEST_FLAG(death_test_style) == "fast") { + *test = new WindowsDeathTest(statement, regex, file, line); + } + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") { + *test = new ExecDeathTest(statement, regex, file, line); + } else if (GTEST_FLAG(death_test_style) == "fast") { + *test = new NoExecDeathTest(statement, regex); + } + +# endif // GTEST_OS_WINDOWS + + else { // NOLINT - this is more readable than unbalanced brackets inside #if. + DeathTest::set_last_death_test_message(String::Format( + "Unknown death test style \"%s\" encountered", + GTEST_FLAG(death_test_style).c_str())); + return false; + } + + return true; +} + +// Splits a given string on a given delimiter, populating a given +// vector with the fields. GTEST_HAS_DEATH_TEST implies that we have +// ::std::string, so we can use it here. +static void SplitString(const ::std::string& str, char delimiter, + ::std::vector< ::std::string>* dest) { + ::std::vector< ::std::string> parsed; + ::std::string::size_type pos = 0; + while (::testing::internal::AlwaysTrue()) { + const ::std::string::size_type colon = str.find(delimiter, pos); + if (colon == ::std::string::npos) { + parsed.push_back(str.substr(pos)); + break; + } else { + parsed.push_back(str.substr(pos, colon - pos)); + pos = colon + 1; + } + } + dest->swap(parsed); +} + +# if GTEST_OS_WINDOWS +// Recreates the pipe and event handles from the provided parameters, +// signals the event, and returns a file descriptor wrapped around the pipe +// handle. This function is called in the child process only. +int GetStatusFileDescriptor(unsigned int parent_process_id, + size_t write_handle_as_size_t, + size_t event_handle_as_size_t) { + AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE, + FALSE, // Non-inheritable. + parent_process_id)); + if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) { + DeathTestAbort(String::Format("Unable to open parent process %u", + parent_process_id)); + } + + // TODO(vladl@google.com): Replace the following check with a + // compile-time assertion when available. + GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t)); + + const HANDLE write_handle = + reinterpret_cast(write_handle_as_size_t); + HANDLE dup_write_handle; + + // The newly initialized handle is accessible only in in the parent + // process. To obtain one accessible within the child, we need to use + // DuplicateHandle. + if (!::DuplicateHandle(parent_process_handle.Get(), write_handle, + ::GetCurrentProcess(), &dup_write_handle, + 0x0, // Requested privileges ignored since + // DUPLICATE_SAME_ACCESS is used. + FALSE, // Request non-inheritable handler. + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the pipe handle %Iu from the parent process %u", + write_handle_as_size_t, parent_process_id)); + } + + const HANDLE event_handle = reinterpret_cast(event_handle_as_size_t); + HANDLE dup_event_handle; + + if (!::DuplicateHandle(parent_process_handle.Get(), event_handle, + ::GetCurrentProcess(), &dup_event_handle, + 0x0, + FALSE, + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the event handle %Iu from the parent process %u", + event_handle_as_size_t, parent_process_id)); + } + + const int write_fd = + ::_open_osfhandle(reinterpret_cast(dup_write_handle), O_APPEND); + if (write_fd == -1) { + DeathTestAbort(String::Format( + "Unable to convert pipe handle %Iu to a file descriptor", + write_handle_as_size_t)); + } + + // Signals the parent that the write end of the pipe has been acquired + // so the parent can release its own write end. + ::SetEvent(dup_event_handle); + + return write_fd; +} +# endif // GTEST_OS_WINDOWS + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { + if (GTEST_FLAG(internal_run_death_test) == "") return NULL; + + // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we + // can use it here. + int line = -1; + int index = -1; + ::std::vector< ::std::string> fields; + SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields); + int write_fd = -1; + +# if GTEST_OS_WINDOWS + + unsigned int parent_process_id = 0; + size_t write_handle_as_size_t = 0; + size_t event_handle_as_size_t = 0; + + if (fields.size() != 6 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &parent_process_id) + || !ParseNaturalNumber(fields[4], &write_handle_as_size_t) + || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + write_fd = GetStatusFileDescriptor(parent_process_id, + write_handle_as_size_t, + event_handle_as_size_t); +# else + + if (fields.size() != 4 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &write_fd)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + +# endif // GTEST_OS_WINDOWS + + return new InternalRunDeathTestFlag(fields[0], line, index, write_fd); +} + +} // namespace internal + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: keith.ray@gmail.com (Keith Ray) + + +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include +#elif GTEST_OS_WINDOWS +# include +# include +#elif GTEST_OS_SYMBIAN || GTEST_OS_NACL +// Symbian OpenC and NaCl have PATH_MAX in sys/syslimits.h +# include +#else +# include +# include // Some Linux distributions define PATH_MAX here. +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_MAX_ _MAX_PATH +#elif defined(PATH_MAX) +# define GTEST_PATH_MAX_ PATH_MAX +#elif defined(_XOPEN_PATH_MAX) +# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX +#else +# define GTEST_PATH_MAX_ _POSIX_PATH_MAX +#endif // GTEST_OS_WINDOWS + + +namespace testing { +namespace internal { + +#if GTEST_OS_WINDOWS +// On Windows, '\\' is the standard path separator, but many tools and the +// Windows API also accept '/' as an alternate path separator. Unless otherwise +// noted, a file path can contain either kind of path separators, or a mixture +// of them. +const char kPathSeparator = '\\'; +const char kAlternatePathSeparator = '/'; +const char kPathSeparatorString[] = "\\"; +const char kAlternatePathSeparatorString[] = "/"; +# if GTEST_OS_WINDOWS_MOBILE +// Windows CE doesn't have a current directory. You should not use +// the current directory in tests on Windows CE, but this at least +// provides a reasonable fallback. +const char kCurrentDirectoryString[] = "\\"; +// Windows CE doesn't define INVALID_FILE_ATTRIBUTES +const DWORD kInvalidFileAttributes = 0xffffffff; +# else +const char kCurrentDirectoryString[] = ".\\"; +# endif // GTEST_OS_WINDOWS_MOBILE +#else +const char kPathSeparator = '/'; +const char kPathSeparatorString[] = "/"; +const char kCurrentDirectoryString[] = "./"; +#endif // GTEST_OS_WINDOWS + +// Returns whether the given character is a valid path separator. +static bool IsPathSeparator(char c) { +#if GTEST_HAS_ALT_PATH_SEP_ + return (c == kPathSeparator) || (c == kAlternatePathSeparator); +#else + return c == kPathSeparator; +#endif +} + +// Returns the current working directory, or "" if unsuccessful. +FilePath FilePath::GetCurrentDir() { +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE doesn't have a current directory, so we just return + // something reasonable. + return FilePath(kCurrentDirectoryString); +#elif GTEST_OS_WINDOWS + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#else + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns a copy of the FilePath with the case-insensitive extension removed. +// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns +// FilePath("dir/file"). If a case-insensitive extension is not +// found, returns a copy of the original FilePath. +FilePath FilePath::RemoveExtension(const char* extension) const { + String dot_extension(String::Format(".%s", extension)); + if (pathname_.EndsWithCaseInsensitive(dot_extension.c_str())) { + return FilePath(String(pathname_.c_str(), pathname_.length() - 4)); + } + return *this; +} + +// Returns a pointer to the last occurrence of a valid path separator in +// the FilePath. On Windows, for example, both '/' and '\' are valid path +// separators. Returns NULL if no path separator was found. +const char* FilePath::FindLastPathSeparator() const { + const char* const last_sep = strrchr(c_str(), kPathSeparator); +#if GTEST_HAS_ALT_PATH_SEP_ + const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator); + // Comparing two pointers of which only one is NULL is undefined. + if (last_alt_sep != NULL && + (last_sep == NULL || last_alt_sep > last_sep)) { + return last_alt_sep; + } +#endif + return last_sep; +} + +// Returns a copy of the FilePath with the directory part removed. +// Example: FilePath("path/to/file").RemoveDirectoryName() returns +// FilePath("file"). If there is no directory part ("just_a_file"), it returns +// the FilePath unmodified. If there is no file part ("just_a_dir/") it +// returns an empty FilePath (""). +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveDirectoryName() const { + const char* const last_sep = FindLastPathSeparator(); + return last_sep ? FilePath(String(last_sep + 1)) : *this; +} + +// RemoveFileName returns the directory path with the filename removed. +// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". +// If the FilePath is "a_file" or "/a_file", RemoveFileName returns +// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does +// not have a file, like "just/a/dir/", it returns the FilePath unmodified. +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveFileName() const { + const char* const last_sep = FindLastPathSeparator(); + String dir; + if (last_sep) { + dir = String(c_str(), last_sep + 1 - c_str()); + } else { + dir = kCurrentDirectoryString; + } + return FilePath(dir); +} + +// Helper functions for naming files in a directory for xml output. + +// Given directory = "dir", base_name = "test", number = 0, +// extension = "xml", returns "dir/test.xml". If number is greater +// than zero (e.g., 12), returns "dir/test_12.xml". +// On Windows platform, uses \ as the separator rather than /. +FilePath FilePath::MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension) { + String file; + if (number == 0) { + file = String::Format("%s.%s", base_name.c_str(), extension); + } else { + file = String::Format("%s_%d.%s", base_name.c_str(), number, extension); + } + return ConcatPaths(directory, FilePath(file)); +} + +// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml". +// On Windows, uses \ as the separator rather than /. +FilePath FilePath::ConcatPaths(const FilePath& directory, + const FilePath& relative_path) { + if (directory.IsEmpty()) + return relative_path; + const FilePath dir(directory.RemoveTrailingPathSeparator()); + return FilePath(String::Format("%s%c%s", dir.c_str(), kPathSeparator, + relative_path.c_str())); +} + +// Returns true if pathname describes something findable in the file-system, +// either a file, directory, or whatever. +bool FilePath::FileOrDirectoryExists() const { +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + return attributes != kInvalidFileAttributes; +#else + posix::StatStruct file_stat; + return posix::Stat(pathname_.c_str(), &file_stat) == 0; +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns true if pathname describes a directory in the file-system +// that exists. +bool FilePath::DirectoryExists() const { + bool result = false; +#if GTEST_OS_WINDOWS + // Don't strip off trailing separator if path is a root directory on + // Windows (like "C:\\"). + const FilePath& path(IsRootDirectory() ? *this : + RemoveTrailingPathSeparator()); +#else + const FilePath& path(*this); +#endif + +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(path.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + if ((attributes != kInvalidFileAttributes) && + (attributes & FILE_ATTRIBUTE_DIRECTORY)) { + result = true; + } +#else + posix::StatStruct file_stat; + result = posix::Stat(path.c_str(), &file_stat) == 0 && + posix::IsDir(file_stat); +#endif // GTEST_OS_WINDOWS_MOBILE + + return result; +} + +// Returns true if pathname describes a root directory. (Windows has one +// root directory per disk drive.) +bool FilePath::IsRootDirectory() const { +#if GTEST_OS_WINDOWS + // TODO(wan@google.com): on Windows a network share like + // \\server\share can be a root directory, although it cannot be the + // current directory. Handle this properly. + return pathname_.length() == 3 && IsAbsolutePath(); +#else + return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]); +#endif +} + +// Returns true if pathname describes an absolute path. +bool FilePath::IsAbsolutePath() const { + const char* const name = pathname_.c_str(); +#if GTEST_OS_WINDOWS + return pathname_.length() >= 3 && + ((name[0] >= 'a' && name[0] <= 'z') || + (name[0] >= 'A' && name[0] <= 'Z')) && + name[1] == ':' && + IsPathSeparator(name[2]); +#else + return IsPathSeparator(name[0]); +#endif +} + +// Returns a pathname for a file that does not currently exist. The pathname +// will be directory/base_name.extension or +// directory/base_name_.extension if directory/base_name.extension +// already exists. The number will be incremented until a pathname is found +// that does not already exist. +// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. +// There could be a race condition if two or more processes are calling this +// function at the same time -- they could both pick the same filename. +FilePath FilePath::GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension) { + FilePath full_pathname; + int number = 0; + do { + full_pathname.Set(MakeFileName(directory, base_name, number++, extension)); + } while (full_pathname.FileOrDirectoryExists()); + return full_pathname; +} + +// Returns true if FilePath ends with a path separator, which indicates that +// it is intended to represent a directory. Returns false otherwise. +// This does NOT check that a directory (or file) actually exists. +bool FilePath::IsDirectory() const { + return !pathname_.empty() && + IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]); +} + +// Create directories so that path exists. Returns true if successful or if +// the directories already exist; returns false if unable to create directories +// for any reason. +bool FilePath::CreateDirectoriesRecursively() const { + if (!this->IsDirectory()) { + return false; + } + + if (pathname_.length() == 0 || this->DirectoryExists()) { + return true; + } + + const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName()); + return parent.CreateDirectoriesRecursively() && this->CreateFolder(); +} + +// Create the directory so that path exists. Returns true if successful or +// if the directory already exists; returns false if unable to create the +// directory for any reason, including if the parent directory does not +// exist. Not named "CreateDirectory" because that's a macro on Windows. +bool FilePath::CreateFolder() const { +#if GTEST_OS_WINDOWS_MOBILE + FilePath removed_sep(this->RemoveTrailingPathSeparator()); + LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str()); + int result = CreateDirectory(unicode, NULL) ? 0 : -1; + delete [] unicode; +#elif GTEST_OS_WINDOWS + int result = _mkdir(pathname_.c_str()); +#else + int result = mkdir(pathname_.c_str(), 0777); +#endif // GTEST_OS_WINDOWS_MOBILE + + if (result == -1) { + return this->DirectoryExists(); // An error is OK if the directory exists. + } + return true; // No error. +} + +// If input name has a trailing separator character, remove it and return the +// name, otherwise return the name string unmodified. +// On Windows platform, uses \ as the separator, other platforms use /. +FilePath FilePath::RemoveTrailingPathSeparator() const { + return IsDirectory() + ? FilePath(String(pathname_.c_str(), pathname_.length() - 1)) + : *this; +} + +// Removes any redundant separators that might be in the pathname. +// For example, "bar///foo" becomes "bar/foo". Does not eliminate other +// redundancies that might be in a pathname involving "." or "..". +// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share). +void FilePath::Normalize() { + if (pathname_.c_str() == NULL) { + pathname_ = ""; + return; + } + const char* src = pathname_.c_str(); + char* const dest = new char[pathname_.length() + 1]; + char* dest_ptr = dest; + memset(dest_ptr, 0, pathname_.length() + 1); + + while (*src != '\0') { + *dest_ptr = *src; + if (!IsPathSeparator(*src)) { + src++; + } else { +#if GTEST_HAS_ALT_PATH_SEP_ + if (*dest_ptr == kAlternatePathSeparator) { + *dest_ptr = kPathSeparator; + } +#endif + while (IsPathSeparator(*src)) + src++; + } + dest_ptr++; + } + *dest_ptr = '\0'; + pathname_ = dest; + delete[] dest; +} + +} // namespace internal +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + + +#include +#include +#include +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include // For TerminateProcess() +#elif GTEST_OS_WINDOWS +# include +# include +#else +# include +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_MAC +# include +# include +# include +#endif // GTEST_OS_MAC + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +namespace internal { + +#if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC and C++Builder do not provide a definition of STDERR_FILENO. +const int kStdOutFileno = 1; +const int kStdErrFileno = 2; +#else +const int kStdOutFileno = STDOUT_FILENO; +const int kStdErrFileno = STDERR_FILENO; +#endif // _MSC_VER + +#if GTEST_OS_MAC + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const task_t task = mach_task_self(); + mach_msg_type_number_t thread_count; + thread_act_array_t thread_list; + const kern_return_t status = task_threads(task, &thread_list, &thread_count); + if (status == KERN_SUCCESS) { + // task_threads allocates resources in thread_list and we need to free them + // to avoid leaks. + vm_deallocate(task, + reinterpret_cast(thread_list), + sizeof(thread_t) * thread_count); + return static_cast(thread_count); + } else { + return 0; + } +} + +#else + +size_t GetThreadCount() { + // There's no portable way to detect the number of threads, so we just + // return 0 to indicate that we cannot detect it. + return 0; +} + +#endif // GTEST_OS_MAC + +#if GTEST_USES_POSIX_RE + +// Implements RE. Currently only needed for death tests. + +RE::~RE() { + if (is_valid_) { + // regfree'ing an invalid regex might crash because the content + // of the regex is undefined. Since the regex's are essentially + // the same, one cannot be valid (or invalid) without the other + // being so too. + regfree(&partial_regex_); + regfree(&full_regex_); + } + free(const_cast(pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.full_regex_, str, 1, &match, 0) == 0; +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.partial_regex_, str, 1, &match, 0) == 0; +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = posix::StrDup(regex); + + // Reserves enough bytes to hold the regular expression used for a + // full match. + const size_t full_regex_len = strlen(regex) + 10; + char* const full_pattern = new char[full_regex_len]; + + snprintf(full_pattern, full_regex_len, "^(%s)$", regex); + is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0; + // We want to call regcomp(&partial_regex_, ...) even if the + // previous expression returns false. Otherwise partial_regex_ may + // not be properly initialized can may cause trouble when it's + // freed. + // + // Some implementation of POSIX regex (e.g. on at least some + // versions of Cygwin) doesn't accept the empty string as a valid + // regex. We change it to an equivalent form "()" to be safe. + if (is_valid_) { + const char* const partial_regex = (*regex == '\0') ? "()" : regex; + is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0; + } + EXPECT_TRUE(is_valid_) + << "Regular expression \"" << regex + << "\" is not a valid POSIX Extended regular expression."; + + delete[] full_pattern; +} + +#elif GTEST_USES_SIMPLE_RE + +// Returns true iff ch appears anywhere in str (excluding the +// terminating '\0' character). +bool IsInSet(char ch, const char* str) { + return ch != '\0' && strchr(str, ch) != NULL; +} + +// Returns true iff ch belongs to the given classification. Unlike +// similar functions in , these aren't affected by the +// current locale. +bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; } +bool IsAsciiPunct(char ch) { + return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"); +} +bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); } +bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); } +bool IsAsciiWordChar(char ch) { + return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || + ('0' <= ch && ch <= '9') || ch == '_'; +} + +// Returns true iff "\\c" is a supported escape sequence. +bool IsValidEscape(char c) { + return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW")); +} + +// Returns true iff the given atom (specified by escaped and pattern) +// matches ch. The result is undefined if the atom is invalid. +bool AtomMatchesChar(bool escaped, char pattern_char, char ch) { + if (escaped) { // "\\p" where p is pattern_char. + switch (pattern_char) { + case 'd': return IsAsciiDigit(ch); + case 'D': return !IsAsciiDigit(ch); + case 'f': return ch == '\f'; + case 'n': return ch == '\n'; + case 'r': return ch == '\r'; + case 's': return IsAsciiWhiteSpace(ch); + case 'S': return !IsAsciiWhiteSpace(ch); + case 't': return ch == '\t'; + case 'v': return ch == '\v'; + case 'w': return IsAsciiWordChar(ch); + case 'W': return !IsAsciiWordChar(ch); + } + return IsAsciiPunct(pattern_char) && pattern_char == ch; + } + + return (pattern_char == '.' && ch != '\n') || pattern_char == ch; +} + +// Helper function used by ValidateRegex() to format error messages. +String FormatRegexSyntaxError(const char* regex, int index) { + return (Message() << "Syntax error at index " << index + << " in simple regular expression \"" << regex << "\": ").GetString(); +} + +// Generates non-fatal failures and returns false if regex is invalid; +// otherwise returns true. +bool ValidateRegex(const char* regex) { + if (regex == NULL) { + // TODO(wan@google.com): fix the source file location in the + // assertion failures to match where the regex is used in user + // code. + ADD_FAILURE() << "NULL is not a valid simple regular expression."; + return false; + } + + bool is_valid = true; + + // True iff ?, *, or + can follow the previous atom. + bool prev_repeatable = false; + for (int i = 0; regex[i]; i++) { + if (regex[i] == '\\') { // An escape sequence + i++; + if (regex[i] == '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "'\\' cannot appear at the end."; + return false; + } + + if (!IsValidEscape(regex[i])) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "invalid escape sequence \"\\" << regex[i] << "\"."; + is_valid = false; + } + prev_repeatable = true; + } else { // Not an escape sequence. + const char ch = regex[i]; + + if (ch == '^' && i > 0) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'^' can only appear at the beginning."; + is_valid = false; + } else if (ch == '$' && regex[i + 1] != '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'$' can only appear at the end."; + is_valid = false; + } else if (IsInSet(ch, "()[]{}|")) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' is unsupported."; + is_valid = false; + } else if (IsRepeat(ch) && !prev_repeatable) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' can only follow a repeatable token."; + is_valid = false; + } + + prev_repeatable = !IsInSet(ch, "^$?*+"); + } + } + + return is_valid; +} + +// Matches a repeated regex atom followed by a valid simple regular +// expression. The regex atom is defined as c if escaped is false, +// or \c otherwise. repeat is the repetition meta character (?, *, +// or +). The behavior is undefined if str contains too many +// characters to be indexable by size_t, in which case the test will +// probably time out anyway. We are fine with this limitation as +// std::string has it too. +bool MatchRepetitionAndRegexAtHead( + bool escaped, char c, char repeat, const char* regex, + const char* str) { + const size_t min_count = (repeat == '+') ? 1 : 0; + const size_t max_count = (repeat == '?') ? 1 : + static_cast(-1) - 1; + // We cannot call numeric_limits::max() as it conflicts with the + // max() macro on Windows. + + for (size_t i = 0; i <= max_count; ++i) { + // We know that the atom matches each of the first i characters in str. + if (i >= min_count && MatchRegexAtHead(regex, str + i)) { + // We have enough matches at the head, and the tail matches too. + // Since we only care about *whether* the pattern matches str + // (as opposed to *how* it matches), there is no need to find a + // greedy match. + return true; + } + if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i])) + return false; + } + return false; +} + +// Returns true iff regex matches a prefix of str. regex must be a +// valid simple regular expression and not start with "^", or the +// result is undefined. +bool MatchRegexAtHead(const char* regex, const char* str) { + if (*regex == '\0') // An empty regex matches a prefix of anything. + return true; + + // "$" only matches the end of a string. Note that regex being + // valid guarantees that there's nothing after "$" in it. + if (*regex == '$') + return *str == '\0'; + + // Is the first thing in regex an escape sequence? + const bool escaped = *regex == '\\'; + if (escaped) + ++regex; + if (IsRepeat(regex[1])) { + // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so + // here's an indirect recursion. It terminates as the regex gets + // shorter in each recursion. + return MatchRepetitionAndRegexAtHead( + escaped, regex[0], regex[1], regex + 2, str); + } else { + // regex isn't empty, isn't "$", and doesn't start with a + // repetition. We match the first atom of regex with the first + // character of str and recurse. + return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) && + MatchRegexAtHead(regex + 1, str + 1); + } +} + +// Returns true iff regex matches any substring of str. regex must be +// a valid simple regular expression, or the result is undefined. +// +// The algorithm is recursive, but the recursion depth doesn't exceed +// the regex length, so we won't need to worry about running out of +// stack space normally. In rare cases the time complexity can be +// exponential with respect to the regex length + the string length, +// but usually it's must faster (often close to linear). +bool MatchRegexAnywhere(const char* regex, const char* str) { + if (regex == NULL || str == NULL) + return false; + + if (*regex == '^') + return MatchRegexAtHead(regex + 1, str); + + // A successful match can be anywhere in str. + do { + if (MatchRegexAtHead(regex, str)) + return true; + } while (*str++ != '\0'); + return false; +} + +// Implements the RE class. + +RE::~RE() { + free(const_cast(pattern_)); + free(const_cast(full_pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str); +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str); +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = full_pattern_ = NULL; + if (regex != NULL) { + pattern_ = posix::StrDup(regex); + } + + is_valid_ = ValidateRegex(regex); + if (!is_valid_) { + // No need to calculate the full pattern when the regex is invalid. + return; + } + + const size_t len = strlen(regex); + // Reserves enough bytes to hold the regular expression used for a + // full match: we need space to prepend a '^', append a '$', and + // terminate the string with '\0'. + char* buffer = static_cast(malloc(len + 3)); + full_pattern_ = buffer; + + if (*regex != '^') + *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'. + + // We don't use snprintf or strncpy, as they trigger a warning when + // compiled with VC++ 8.0. + memcpy(buffer, regex, len); + buffer += len; + + if (len == 0 || regex[len - 1] != '$') + *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'. + + *buffer = '\0'; +} + +#endif // GTEST_USES_POSIX_RE + +const char kUnknownFile[] = "unknown file"; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) { + return String::Format("%s:", file_name).c_str(); + } +#ifdef _MSC_VER + return String::Format("%s(%d):", file_name, line).c_str(); +#else + return String::Format("%s:%d:", file_name, line).c_str(); +#endif // _MSC_VER +} + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +// Note that FormatCompilerIndependentFileLocation() does NOT append colon +// to the file location it produces, unlike FormatFileLocation(). +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation( + const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) + return file_name; + else + return String::Format("%s:%d", file_name, line).c_str(); +} + + +GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line) + : severity_(severity) { + const char* const marker = + severity == GTEST_INFO ? "[ INFO ]" : + severity == GTEST_WARNING ? "[WARNING]" : + severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]"; + GetStream() << ::std::endl << marker << " " + << FormatFileLocation(file, line).c_str() << ": "; +} + +// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. +GTestLog::~GTestLog() { + GetStream() << ::std::endl; + if (severity_ == GTEST_FATAL) { + fflush(stderr); + posix::Abort(); + } +} +// Disable Microsoft deprecation warnings for POSIX functions called from +// this class (creat, dup, dup2, and close) +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4996) +#endif // _MSC_VER + +#if GTEST_HAS_STREAM_REDIRECTION + +// Object that captures an output stream (stdout/stderr). +class CapturedStream { + public: + // The ctor redirects the stream to a temporary file. + CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) { + +# if GTEST_OS_WINDOWS + char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT + char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT + + ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path); + const UINT success = ::GetTempFileNameA(temp_dir_path, + "gtest_redir", + 0, // Generate unique file name. + temp_file_path); + GTEST_CHECK_(success != 0) + << "Unable to create a temporary file in " << temp_dir_path; + const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE); + GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file " + << temp_file_path; + filename_ = temp_file_path; +# else + // There's no guarantee that a test has write access to the + // current directory, so we create the temporary file in the /tmp + // directory instead. + char name_template[] = "/tmp/captured_stream.XXXXXX"; + const int captured_fd = mkstemp(name_template); + filename_ = name_template; +# endif // GTEST_OS_WINDOWS + fflush(NULL); + dup2(captured_fd, fd_); + close(captured_fd); + } + + ~CapturedStream() { + remove(filename_.c_str()); + } + + String GetCapturedString() { + if (uncaptured_fd_ != -1) { + // Restores the original stream. + fflush(NULL); + dup2(uncaptured_fd_, fd_); + close(uncaptured_fd_); + uncaptured_fd_ = -1; + } + + FILE* const file = posix::FOpen(filename_.c_str(), "r"); + const String content = ReadEntireFile(file); + posix::FClose(file); + return content; + } + + private: + // Reads the entire content of a file as a String. + static String ReadEntireFile(FILE* file); + + // Returns the size (in bytes) of a file. + static size_t GetFileSize(FILE* file); + + const int fd_; // A stream to capture. + int uncaptured_fd_; + // Name of the temporary file holding the stderr output. + ::std::string filename_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); +}; + +// Returns the size (in bytes) of a file. +size_t CapturedStream::GetFileSize(FILE* file) { + fseek(file, 0, SEEK_END); + return static_cast(ftell(file)); +} + +// Reads the entire content of a file as a string. +String CapturedStream::ReadEntireFile(FILE* file) { + const size_t file_size = GetFileSize(file); + char* const buffer = new char[file_size]; + + size_t bytes_last_read = 0; // # of bytes read in the last fread() + size_t bytes_read = 0; // # of bytes read so far + + fseek(file, 0, SEEK_SET); + + // Keeps reading the file until we cannot read further or the + // pre-determined file size is reached. + do { + bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file); + bytes_read += bytes_last_read; + } while (bytes_last_read > 0 && bytes_read < file_size); + + const String content(buffer, bytes_read); + delete[] buffer; + + return content; +} + +# ifdef _MSC_VER +# pragma warning(pop) +# endif // _MSC_VER + +static CapturedStream* g_captured_stderr = NULL; +static CapturedStream* g_captured_stdout = NULL; + +// Starts capturing an output stream (stdout/stderr). +void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { + if (*stream != NULL) { + GTEST_LOG_(FATAL) << "Only one " << stream_name + << " capturer can exist at a time."; + } + *stream = new CapturedStream(fd); +} + +// Stops capturing the output stream and returns the captured string. +String GetCapturedStream(CapturedStream** captured_stream) { + const String content = (*captured_stream)->GetCapturedString(); + + delete *captured_stream; + *captured_stream = NULL; + + return content; +} + +// Starts capturing stdout. +void CaptureStdout() { + CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout); +} + +// Starts capturing stderr. +void CaptureStderr() { + CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr); +} + +// Stops capturing stdout and returns the captured string. +String GetCapturedStdout() { return GetCapturedStream(&g_captured_stdout); } + +// Stops capturing stderr and returns the captured string. +String GetCapturedStderr() { return GetCapturedStream(&g_captured_stderr); } + +#endif // GTEST_HAS_STREAM_REDIRECTION + +#if GTEST_HAS_DEATH_TEST + +// A copy of all command line arguments. Set by InitGoogleTest(). +::std::vector g_argvs; + +// Returns the command line as a vector of strings. +const ::std::vector& GetArgvs() { return g_argvs; } + +#endif // GTEST_HAS_DEATH_TEST + +#if GTEST_OS_WINDOWS_MOBILE +namespace posix { +void Abort() { + DebugBreak(); + TerminateProcess(GetCurrentProcess(), 1); +} +} // namespace posix +#endif // GTEST_OS_WINDOWS_MOBILE + +// Returns the name of the environment variable corresponding to the +// given flag. For example, FlagToEnvVar("foo") will return +// "GTEST_FOO" in the open-source version. +static String FlagToEnvVar(const char* flag) { + const String full_flag = + (Message() << GTEST_FLAG_PREFIX_ << flag).GetString(); + + Message env_var; + for (size_t i = 0; i != full_flag.length(); i++) { + env_var << ToUpper(full_flag.c_str()[i]); + } + + return env_var.GetString(); +} + +// Parses 'str' for a 32-bit signed integer. If successful, writes +// the result to *value and returns true; otherwise leaves *value +// unchanged and returns false. +bool ParseInt32(const Message& src_text, const char* str, Int32* value) { + // Parses the environment variable as a decimal integer. + char* end = NULL; + const long long_value = strtol(str, &end, 10); // NOLINT + + // Has strtol() consumed all characters in the string? + if (*end != '\0') { + // No - an invalid character was encountered. + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value \"" << str << "\".\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + // Is the parsed value in the range of an Int32? + const Int32 result = static_cast(long_value); + if (long_value == LONG_MAX || long_value == LONG_MIN || + // The parsed value overflows as a long. (strtol() returns + // LONG_MAX or LONG_MIN when the input overflows.) + result != long_value + // The parsed value overflows as an Int32. + ) { + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value " << str << ", which overflows.\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + *value = result; + return true; +} + +// Reads and returns the Boolean environment variable corresponding to +// the given flag; if it's not set, returns default_value. +// +// The value is considered true iff it's not "0". +bool BoolFromGTestEnv(const char* flag, bool default_value) { + const String env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + return string_value == NULL ? + default_value : strcmp(string_value, "0") != 0; +} + +// Reads and returns a 32-bit integer stored in the environment +// variable corresponding to the given flag; if it isn't set or +// doesn't represent a valid 32-bit integer, returns default_value. +Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) { + const String env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + if (string_value == NULL) { + // The environment variable is not set. + return default_value; + } + + Int32 result = default_value; + if (!ParseInt32(Message() << "Environment variable " << env_var, + string_value, &result)) { + printf("The default value %s is used.\n", + (Message() << default_value).GetString().c_str()); + fflush(stdout); + return default_value; + } + + return result; +} + +// Reads and returns the string environment variable corresponding to +// the given flag; if it's not set, returns default_value. +const char* StringFromGTestEnv(const char* flag, const char* default_value) { + const String env_var = FlagToEnvVar(flag); + const char* const value = posix::GetEnv(env_var.c_str()); + return value == NULL ? default_value : value; +} + +} // namespace internal +} // namespace testing +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// It uses the << operator when possible, and prints the bytes in the +// object otherwise. A user can override its behavior for a class +// type Foo by defining either operator<<(::std::ostream&, const Foo&) +// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that +// defines Foo. + +#include +#include +#include // NOLINT +#include + +namespace testing { + +namespace { + +using ::std::ostream; + +#if GTEST_OS_WINDOWS_MOBILE // Windows CE does not define _snprintf_s. +# define snprintf _snprintf +#elif _MSC_VER >= 1400 // VC 8.0 and later deprecate snprintf and _snprintf. +# define snprintf _snprintf_s +#elif _MSC_VER +# define snprintf _snprintf +#endif // GTEST_OS_WINDOWS_MOBILE + +// Prints a segment of bytes in the given object. +void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start, + size_t count, ostream* os) { + char text[5] = ""; + for (size_t i = 0; i != count; i++) { + const size_t j = start + i; + if (i != 0) { + // Organizes the bytes into groups of 2 for easy parsing by + // human. + if ((j % 2) == 0) + *os << ' '; + else + *os << '-'; + } + snprintf(text, sizeof(text), "%02X", obj_bytes[j]); + *os << text; + } +} + +// Prints the bytes in the given value to the given ostream. +void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count, + ostream* os) { + // Tells the user how big the object is. + *os << count << "-byte object <"; + + const size_t kThreshold = 132; + const size_t kChunkSize = 64; + // If the object size is bigger than kThreshold, we'll have to omit + // some details by printing only the first and the last kChunkSize + // bytes. + // TODO(wan): let the user control the threshold using a flag. + if (count < kThreshold) { + PrintByteSegmentInObjectTo(obj_bytes, 0, count, os); + } else { + PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os); + *os << " ... "; + // Rounds up to 2-byte boundary. + const size_t resume_pos = (count - kChunkSize + 1)/2*2; + PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os); + } + *os << ">"; +} + +} // namespace + +namespace internal2 { + +// Delegates to PrintBytesInObjectToImpl() to print the bytes in the +// given object. The delegation simplifies the implementation, which +// uses the << operator and thus is easier done outside of the +// ::testing::internal namespace, which contains a << operator that +// sometimes conflicts with the one in STL. +void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count, + ostream* os) { + PrintBytesInObjectToImpl(obj_bytes, count, os); +} + +} // namespace internal2 + +namespace internal { + +// Depending on the value of a char (or wchar_t), we print it in one +// of three formats: +// - as is if it's a printable ASCII (e.g. 'a', '2', ' '), +// - as a hexidecimal escape sequence (e.g. '\x7F'), or +// - as a special escape sequence (e.g. '\r', '\n'). +enum CharFormat { + kAsIs, + kHexEscape, + kSpecialEscape +}; + +// Returns true if c is a printable ASCII character. We test the +// value of c directly instead of calling isprint(), which is buggy on +// Windows Mobile. +inline bool IsPrintableAscii(wchar_t c) { + return 0x20 <= c && c <= 0x7E; +} + +// Prints a wide or narrow char c as a character literal without the +// quotes, escaping it when necessary; returns how c was formatted. +// The template argument UnsignedChar is the unsigned version of Char, +// which is the type of c. +template +static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) { + switch (static_cast(c)) { + case L'\0': + *os << "\\0"; + break; + case L'\'': + *os << "\\'"; + break; + case L'\\': + *os << "\\\\"; + break; + case L'\a': + *os << "\\a"; + break; + case L'\b': + *os << "\\b"; + break; + case L'\f': + *os << "\\f"; + break; + case L'\n': + *os << "\\n"; + break; + case L'\r': + *os << "\\r"; + break; + case L'\t': + *os << "\\t"; + break; + case L'\v': + *os << "\\v"; + break; + default: + if (IsPrintableAscii(c)) { + *os << static_cast(c); + return kAsIs; + } else { + *os << String::Format("\\x%X", static_cast(c)); + return kHexEscape; + } + } + return kSpecialEscape; +} + +// Prints a char c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsWideStringLiteralTo(wchar_t c, ostream* os) { + switch (c) { + case L'\'': + *os << "'"; + return kAsIs; + case L'"': + *os << "\\\""; + return kSpecialEscape; + default: + return PrintAsCharLiteralTo(c, os); + } +} + +// Prints a char c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsNarrowStringLiteralTo(char c, ostream* os) { + return PrintAsWideStringLiteralTo(static_cast(c), os); +} + +// Prints a wide or narrow character c and its code. '\0' is printed +// as "'\\0'", other unprintable characters are also properly escaped +// using the standard C++ escape sequence. The template argument +// UnsignedChar is the unsigned version of Char, which is the type of c. +template +void PrintCharAndCodeTo(Char c, ostream* os) { + // First, print c as a literal in the most readable form we can find. + *os << ((sizeof(c) > 1) ? "L'" : "'"); + const CharFormat format = PrintAsCharLiteralTo(c, os); + *os << "'"; + + // To aid user debugging, we also print c's code in decimal, unless + // it's 0 (in which case c was printed as '\\0', making the code + // obvious). + if (c == 0) + return; + *os << " (" << String::Format("%d", c).c_str(); + + // For more convenience, we print c's code again in hexidecimal, + // unless c was already printed in the form '\x##' or the code is in + // [1, 9]. + if (format == kHexEscape || (1 <= c && c <= 9)) { + // Do nothing. + } else { + *os << String::Format(", 0x%X", + static_cast(c)).c_str(); + } + *os << ")"; +} + +void PrintTo(unsigned char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} +void PrintTo(signed char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} + +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its code. L'\0' is printed as "L'\\0'". +void PrintTo(wchar_t wc, ostream* os) { + PrintCharAndCodeTo(wc, os); +} + +// Prints the given array of characters to the ostream. +// The array starts at *begin, the length is len, it may include '\0' characters +// and may not be null-terminated. +static void PrintCharsAsStringTo(const char* begin, size_t len, ostream* os) { + *os << "\""; + bool is_previous_hex = false; + for (size_t index = 0; index < len; ++index) { + const char cur = begin[index]; + if (is_previous_hex && IsXDigit(cur)) { + // Previous character is of '\x..' form and this character can be + // interpreted as another hexadecimal digit in its number. Break string to + // disambiguate. + *os << "\" \""; + } + is_previous_hex = PrintAsNarrowStringLiteralTo(cur, os) == kHexEscape; + } + *os << "\""; +} + +// Prints a (const) char array of 'len' elements, starting at address 'begin'. +void UniversalPrintArray(const char* begin, size_t len, ostream* os) { + PrintCharsAsStringTo(begin, len, os); +} + +// Prints the given array of wide characters to the ostream. +// The array starts at *begin, the length is len, it may include L'\0' +// characters and may not be null-terminated. +static void PrintWideCharsAsStringTo(const wchar_t* begin, size_t len, + ostream* os) { + *os << "L\""; + bool is_previous_hex = false; + for (size_t index = 0; index < len; ++index) { + const wchar_t cur = begin[index]; + if (is_previous_hex && isascii(cur) && IsXDigit(static_cast(cur))) { + // Previous character is of '\x..' form and this character can be + // interpreted as another hexadecimal digit in its number. Break string to + // disambiguate. + *os << "\" L\""; + } + is_previous_hex = PrintAsWideStringLiteralTo(cur, os) == kHexEscape; + } + *os << "\""; +} + +// Prints the given C string to the ostream. +void PrintTo(const char* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, strlen(s), os); + } +} + +// MSVC compiler can be configured to define whar_t as a typedef +// of unsigned short. Defining an overload for const wchar_t* in that case +// would cause pointers to unsigned shorts be printed as wide strings, +// possibly accessing more memory than intended and causing invalid +// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when +// wchar_t is implemented as a native type. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Prints the given wide C string to the ostream. +void PrintTo(const wchar_t* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintWideCharsAsStringTo(s, wcslen(s), os); + } +} +#endif // wchar_t is native + +// Prints a ::string object. +#if GTEST_HAS_GLOBAL_STRING +void PrintStringTo(const ::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +void PrintStringTo(const ::std::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} + +// Prints a ::wstring object. +#if GTEST_HAS_GLOBAL_WSTRING +void PrintWideStringTo(const ::wstring& s, ostream* os) { + PrintWideCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +void PrintWideStringTo(const ::std::wstring& s, ostream* os) { + PrintWideCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_STD_WSTRING + +} // namespace internal + +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// The Google C++ Testing Framework (Google Test) + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +using internal::GetUnitTestImpl; + +// Gets the summary of the failure message by omitting the stack trace +// in it. +internal::String TestPartResult::ExtractSummary(const char* message) { + const char* const stack_trace = strstr(message, internal::kStackTraceMarker); + return stack_trace == NULL ? internal::String(message) : + internal::String(message, stack_trace - message); +} + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result) { + return os + << result.file_name() << ":" << result.line_number() << ": " + << (result.type() == TestPartResult::kSuccess ? "Success" : + result.type() == TestPartResult::kFatalFailure ? "Fatal failure" : + "Non-fatal failure") << ":\n" + << result.message() << std::endl; +} + +// Appends a TestPartResult to the array. +void TestPartResultArray::Append(const TestPartResult& result) { + array_.push_back(result); +} + +// Returns the TestPartResult at the given index (0-based). +const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const { + if (index < 0 || index >= size()) { + printf("\nInvalid index (%d) into TestPartResultArray.\n", index); + internal::posix::Abort(); + } + + return array_[index]; +} + +// Returns the number of TestPartResult objects in the array. +int TestPartResultArray::size() const { + return static_cast(array_.size()); +} + +namespace internal { + +HasNewFatalFailureHelper::HasNewFatalFailureHelper() + : has_new_fatal_failure_(false), + original_reporter_(GetUnitTestImpl()-> + GetTestPartResultReporterForCurrentThread()) { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this); +} + +HasNewFatalFailureHelper::~HasNewFatalFailureHelper() { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread( + original_reporter_); +} + +void HasNewFatalFailureHelper::ReportTestPartResult( + const TestPartResult& result) { + if (result.fatally_failed()) + has_new_fatal_failure_ = true; + original_reporter_->ReportTestPartResult(result); +} + +} // namespace internal + +} // namespace testing +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + + +namespace testing { +namespace internal { + +#if GTEST_HAS_TYPED_TEST_P + +// Skips to the first non-space char in str. Returns an empty string if str +// contains only whitespace characters. +static const char* SkipSpaces(const char* str) { + while (IsSpace(*str)) + str++; + return str; +} + +// Verifies that registered_tests match the test names in +// defined_test_names_; returns registered_tests if successful, or +// aborts the program otherwise. +const char* TypedTestCasePState::VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests) { + typedef ::std::set::const_iterator DefinedTestIter; + registered_ = true; + + // Skip initial whitespace in registered_tests since some + // preprocessors prefix stringizied literals with whitespace. + registered_tests = SkipSpaces(registered_tests); + + Message errors; + ::std::set tests; + for (const char* names = registered_tests; names != NULL; + names = SkipComma(names)) { + const String name = GetPrefixUntilComma(names); + if (tests.count(name) != 0) { + errors << "Test " << name << " is listed more than once.\n"; + continue; + } + + bool found = false; + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (name == *it) { + found = true; + break; + } + } + + if (found) { + tests.insert(name); + } else { + errors << "No test named " << name + << " can be found in this test case.\n"; + } + } + + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (tests.count(*it) == 0) { + errors << "You forgot to list test " << *it << ".\n"; + } + } + + const String& errors_str = errors.GetString(); + if (errors_str != "") { + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors_str.c_str()); + fflush(stderr); + posix::Abort(); + } + + return registered_tests; +} + +#endif // GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing diff --git a/3rdparty/caffe/src/gtest/gtest.h b/3rdparty/caffe/src/gtest/gtest.h new file mode 100644 index 00000000..124fb232 --- /dev/null +++ b/3rdparty/caffe/src/gtest/gtest.h @@ -0,0 +1,19537 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for Google Test. It should be +// included by any test program that uses Google Test. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! +// +// Acknowledgment: Google Test borrowed the idea of automatic test +// registration from Barthelemy Dagenais' (barthelemy@prologique.com) +// easyUnit framework. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_H_ + +#include +#include + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares functions and macros used internally by +// Google Test. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan) +// +// Low-level types and utilities for porting Google Test to various +// platforms. They are subject to change without notice. DO NOT USE +// THEM IN USER CODE. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +// The user can define the following macros in the build script to +// control Google Test's behavior. If the user doesn't define a macro +// in this list, Google Test will define it. +// +// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2) +// is/isn't available. +// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions +// are enabled. +// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::string, which is different to std::string). +// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::wstring, which is different to std::wstring). +// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular +// expressions are/aren't available. +// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that +// is/isn't available. +// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't +// enabled. +// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that +// std::wstring does/doesn't work (Google Test can +// be used where std::wstring is unavailable). +// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple +// is/isn't available. +// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the +// compiler supports Microsoft's "Structured +// Exception Handling". +// GTEST_HAS_STREAM_REDIRECTION +// - Define it to 1/0 to indicate whether the +// platform supports I/O stream redirection using +// dup() and dup2(). +// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google +// Test's own tr1 tuple implementation should be +// used. Unused when the user sets +// GTEST_HAS_TR1_TUPLE to 0. +// GTEST_LINKED_AS_SHARED_LIBRARY +// - Define to 1 when compiling tests that use +// Google Test as a shared library (known as +// DLL on Windows). +// GTEST_CREATE_SHARED_LIBRARY +// - Define to 1 when compiling Google Test itself +// as a shared library. + +// This header defines the following utilities: +// +// Macros indicating the current platform (defined to 1 if compiled on +// the given platform; otherwise undefined): +// GTEST_OS_AIX - IBM AIX +// GTEST_OS_CYGWIN - Cygwin +// GTEST_OS_HPUX - HP-UX +// GTEST_OS_LINUX - Linux +// GTEST_OS_LINUX_ANDROID - Google Android +// GTEST_OS_MAC - Mac OS X +// GTEST_OS_NACL - Google Native Client (NaCl) +// GTEST_OS_SOLARIS - Sun Solaris +// GTEST_OS_SYMBIAN - Symbian +// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile) +// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop +// GTEST_OS_WINDOWS_MINGW - MinGW +// GTEST_OS_WINDOWS_MOBILE - Windows Mobile +// GTEST_OS_ZOS - z/OS +// +// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the +// most stable support. Since core members of the Google Test project +// don't have access to other platforms, support for them may be less +// stable. If you notice any problems on your platform, please notify +// googletestframework@googlegroups.com (patches for fixing them are +// even more welcome!). +// +// Note that it is possible that none of the GTEST_OS_* macros are defined. +// +// Macros indicating available Google Test features (defined to 1 if +// the corresponding feature is supported; otherwise undefined): +// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized +// tests) +// GTEST_HAS_DEATH_TEST - death tests +// GTEST_HAS_PARAM_TEST - value-parameterized tests +// GTEST_HAS_TYPED_TEST - typed tests +// GTEST_HAS_TYPED_TEST_P - type-parameterized tests +// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with +// GTEST_HAS_POSIX_RE (see above) which users can +// define themselves. +// GTEST_USES_SIMPLE_RE - our own simple regex is used; +// the above two are mutually exclusive. +// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ(). +// +// Macros for basic C++ coding: +// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning. +// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a +// variable don't have to be used. +// GTEST_DISALLOW_ASSIGN_ - disables operator=. +// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=. +// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used. +// +// Synchronization: +// Mutex, MutexLock, ThreadLocal, GetThreadCount() +// - synchronization primitives. +// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above +// synchronization primitives have real implementations +// and Google Test is thread-safe; or 0 otherwise. +// +// Template meta programming: +// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only. +// IteratorTraits - partial implementation of std::iterator_traits, which +// is not available in libCstd when compiled with Sun C++. +// +// Smart pointers: +// scoped_ptr - as in TR2. +// +// Regular expressions: +// RE - a simple regular expression class using the POSIX +// Extended Regular Expression syntax on UNIX-like +// platforms, or a reduced regular exception syntax on +// other platforms, including Windows. +// +// Logging: +// GTEST_LOG_() - logs messages at the specified severity level. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. +// +// Stdout and stderr capturing: +// CaptureStdout() - starts capturing stdout. +// GetCapturedStdout() - stops capturing stdout and returns the captured +// string. +// CaptureStderr() - starts capturing stderr. +// GetCapturedStderr() - stops capturing stderr and returns the captured +// string. +// +// Integer types: +// TypeWithSize - maps an integer to a int type. +// Int32, UInt32, Int64, UInt64, TimeInMillis +// - integers of known sizes. +// BiggestInt - the biggest signed integer type. +// +// Command-line utilities: +// GTEST_FLAG() - references a flag. +// GTEST_DECLARE_*() - declares a flag. +// GTEST_DEFINE_*() - defines a flag. +// GetArgvs() - returns the command line as a vector of strings. +// +// Environment variable utilities: +// GetEnv() - gets the value of an environment variable. +// BoolFromGTestEnv() - parses a bool environment variable. +// Int32FromGTestEnv() - parses an Int32 environment variable. +// StringFromGTestEnv() - parses a string environment variable. + +#include // for isspace, etc +#include // for ptrdiff_t +#include +#include +#include +#ifndef _WIN32_WCE +# include +# include +#endif // !_WIN32_WCE + +#include // NOLINT +#include // NOLINT +#include // NOLINT + +#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" +#define GTEST_FLAG_PREFIX_ "gtest_" +#define GTEST_FLAG_PREFIX_DASH_ "gtest-" +#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_" +#define GTEST_NAME_ "Google Test" +#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/" + +// Determines the version of gcc that is used to compile this. +#ifdef __GNUC__ +// 40302 means version 4.3.2. +# define GTEST_GCC_VER_ \ + (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) +#endif // __GNUC__ + +// Determines the platform on which Google Test is compiled. +#ifdef __CYGWIN__ +# define GTEST_OS_CYGWIN 1 +#elif defined __SYMBIAN32__ +# define GTEST_OS_SYMBIAN 1 +#elif defined _WIN32 +# define GTEST_OS_WINDOWS 1 +# ifdef _WIN32_WCE +# define GTEST_OS_WINDOWS_MOBILE 1 +# elif defined(__MINGW__) || defined(__MINGW32__) +# define GTEST_OS_WINDOWS_MINGW 1 +# else +# define GTEST_OS_WINDOWS_DESKTOP 1 +# endif // _WIN32_WCE +#elif defined __APPLE__ +# define GTEST_OS_MAC 1 +#elif defined __linux__ +# define GTEST_OS_LINUX 1 +# ifdef ANDROID +# define GTEST_OS_LINUX_ANDROID 1 +# endif // ANDROID +#elif defined __MVS__ +# define GTEST_OS_ZOS 1 +#elif defined(__sun) && defined(__SVR4) +# define GTEST_OS_SOLARIS 1 +#elif defined(_AIX) +# define GTEST_OS_AIX 1 +#elif defined(__hpux) +# define GTEST_OS_HPUX 1 +#elif defined __native_client__ +# define GTEST_OS_NACL 1 +#endif // __CYGWIN__ + +// Brings in definitions for functions used in the testing::internal::posix +// namespace (read, write, close, chdir, isatty, stat). We do not currently +// use them on Windows Mobile. +#if !GTEST_OS_WINDOWS +// This assumes that non-Windows OSes provide unistd.h. For OSes where this +// is not the case, we need to include headers that provide the functions +// mentioned above. +# include +# if !GTEST_OS_NACL +// TODO(vladl@google.com): Remove this condition when Native Client SDK adds +// strings.h (tracked in +// http://code.google.com/p/nativeclient/issues/detail?id=1175). +# include // Native Client doesn't provide strings.h. +# endif +#elif !GTEST_OS_WINDOWS_MOBILE +# include +# include +#endif + +// Defines this to true iff Google Test can use POSIX regular expressions. +#ifndef GTEST_HAS_POSIX_RE +# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) +#endif + +#if GTEST_HAS_POSIX_RE + +// On some platforms, needs someone to define size_t, and +// won't compile otherwise. We can #include it here as we already +// included , which is guaranteed to define size_t through +// . +# include // NOLINT + +# define GTEST_USES_POSIX_RE 1 + +#elif GTEST_OS_WINDOWS + +// is not available on Windows. Use our own simple regex +// implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#else + +// may not be available on this platform. Use our own +// simple regex implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#endif // GTEST_HAS_POSIX_RE + +#ifndef GTEST_HAS_EXCEPTIONS +// The user didn't tell us whether exceptions are enabled, so we need +// to figure it out. +# if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS +// macro to enable exceptions, so we'll do the same. +// Assumes that exceptions are enabled by default. +# ifndef _HAS_EXCEPTIONS +# define _HAS_EXCEPTIONS 1 +# endif // _HAS_EXCEPTIONS +# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS +# elif defined(__GNUC__) && __EXCEPTIONS +// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__SUNPRO_CC) +// Sun Pro CC supports exceptions. However, there is no compile-time way of +// detecting whether they are enabled or not. Therefore, we assume that +// they are enabled unless the user tells us otherwise. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__IBMCPP__) && __EXCEPTIONS +// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__HP_aCC) +// Exception handling is in effect by default in HP aCC compiler. It has to +// be turned of by +noeh compiler option if desired. +# define GTEST_HAS_EXCEPTIONS 1 +# else +// For other compilers, we assume exceptions are disabled to be +// conservative. +# define GTEST_HAS_EXCEPTIONS 0 +# endif // defined(_MSC_VER) || defined(__BORLANDC__) +#endif // GTEST_HAS_EXCEPTIONS + +#if !defined(GTEST_HAS_STD_STRING) +// Even though we don't use this macro any longer, we keep it in case +// some clients still depend on it. +# define GTEST_HAS_STD_STRING 1 +#elif !GTEST_HAS_STD_STRING +// The user told us that ::std::string isn't available. +# error "Google Test cannot be used where ::std::string isn't available." +#endif // !defined(GTEST_HAS_STD_STRING) + +#ifndef GTEST_HAS_GLOBAL_STRING +// The user didn't tell us whether ::string is available, so we need +// to figure it out. + +# define GTEST_HAS_GLOBAL_STRING 0 + +#endif // GTEST_HAS_GLOBAL_STRING + +#ifndef GTEST_HAS_STD_WSTRING +// The user didn't tell us whether ::std::wstring is available, so we need +// to figure it out. +// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring +// is available. + +// Cygwin 1.7 and below doesn't support ::std::wstring. +// Solaris' libc++ doesn't support it either. Android has +// no support for it at least as recent as Froyo (2.2). +# define GTEST_HAS_STD_WSTRING \ + (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) + +#endif // GTEST_HAS_STD_WSTRING + +#ifndef GTEST_HAS_GLOBAL_WSTRING +// The user didn't tell us whether ::wstring is available, so we need +// to figure it out. +# define GTEST_HAS_GLOBAL_WSTRING \ + (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) +#endif // GTEST_HAS_GLOBAL_WSTRING + +// Determines whether RTTI is available. +#ifndef GTEST_HAS_RTTI +// The user didn't tell us whether RTTI is enabled, so we need to +// figure it out. + +# ifdef _MSC_VER + +# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) + +# ifdef __GXX_RTTI +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif // __GXX_RTTI + +// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if +// both the typeid and dynamic_cast features are present. +# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) + +# ifdef __RTTI_ALL__ +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +# else + +// For all other compilers, we assume RTTI is enabled. +# define GTEST_HAS_RTTI 1 + +# endif // _MSC_VER + +#endif // GTEST_HAS_RTTI + +// It's this header's responsibility to #include when RTTI +// is enabled. +#if GTEST_HAS_RTTI +# include +#endif + +// Determines whether Google Test can use the pthreads library. +#ifndef GTEST_HAS_PTHREAD +// The user didn't tell us explicitly, so we assume pthreads support is +// available on Linux and Mac. +// +// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0 +// to your compiler flags. +# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX) +#endif // GTEST_HAS_PTHREAD + +#if GTEST_HAS_PTHREAD +// gtest-port.h guarantees to #include when GTEST_HAS_PTHREAD is +// true. +# include // NOLINT + +// For timespec and nanosleep, used below. +# include // NOLINT +#endif + +// Determines whether Google Test can use tr1/tuple. You can define +// this macro to 0 to prevent Google Test from using tuple (any +// feature depending on tuple with be disabled in this mode). +#ifndef GTEST_HAS_TR1_TUPLE +// The user didn't tell us not to do it, so we assume it's OK. +# define GTEST_HAS_TR1_TUPLE 1 +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether Google Test's own tr1 tuple implementation +// should be used. +#ifndef GTEST_USE_OWN_TR1_TUPLE +// The user didn't tell us, so we need to figure it out. + +// We use our own TR1 tuple if we aren't sure the user has an +// implementation of it already. At this time, GCC 4.0.0+ and MSVC +// 2010 are the only mainstream compilers that come with a TR1 tuple +// implementation. NVIDIA's CUDA NVCC compiler pretends to be GCC by +// defining __GNUC__ and friends, but cannot compile GCC's tuple +// implementation. MSVC 2008 (9.0) provides TR1 tuple in a 323 MB +// Feature Pack download, which we cannot assume the user has. +# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000)) \ + || _MSC_VER >= 1600 +# define GTEST_USE_OWN_TR1_TUPLE 0 +# else +# define GTEST_USE_OWN_TR1_TUPLE 1 +# endif + +#endif // GTEST_USE_OWN_TR1_TUPLE + +// To avoid conditional compilation everywhere, we make it +// gtest-port.h's responsibility to #include the header implementing +// tr1/tuple. +#if GTEST_HAS_TR1_TUPLE + +# if GTEST_USE_OWN_TR1_TUPLE +// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! + +// Copyright 2009 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Implements a subset of TR1 tuple needed by Google Test and Google Mock. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ + +#include // For ::std::pair. + +// The compiler used in Symbian has a bug that prevents us from declaring the +// tuple template as a friend (it complains that tuple is redefined). This +// hack bypasses the bug by declaring the members that should otherwise be +// private as public. +// Sun Studio versions < 12 also have the above bug. +#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +#else +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ + template friend class tuple; \ + private: +#endif + +// GTEST_n_TUPLE_(T) is the type of an n-tuple. +#define GTEST_0_TUPLE_(T) tuple<> +#define GTEST_1_TUPLE_(T) tuple +#define GTEST_2_TUPLE_(T) tuple +#define GTEST_3_TUPLE_(T) tuple +#define GTEST_4_TUPLE_(T) tuple +#define GTEST_5_TUPLE_(T) tuple +#define GTEST_6_TUPLE_(T) tuple +#define GTEST_7_TUPLE_(T) tuple +#define GTEST_8_TUPLE_(T) tuple +#define GTEST_9_TUPLE_(T) tuple +#define GTEST_10_TUPLE_(T) tuple + +// GTEST_n_TYPENAMES_(T) declares a list of n typenames. +#define GTEST_0_TYPENAMES_(T) +#define GTEST_1_TYPENAMES_(T) typename T##0 +#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 +#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 +#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3 +#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4 +#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5 +#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6 +#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 +#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8 +#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8, typename T##9 + +// In theory, defining stuff in the ::std namespace is undefined +// behavior. We can do this as we are playing the role of a standard +// library vendor. +namespace std { +namespace tr1 { + +template +class tuple; + +// Anything in namespace gtest_internal is Google Test's INTERNAL +// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. +namespace gtest_internal { + +// ByRef::type is T if T is a reference; otherwise it's const T&. +template +struct ByRef { typedef const T& type; }; // NOLINT +template +struct ByRef { typedef T& type; }; // NOLINT + +// A handy wrapper for ByRef. +#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef::type + +// AddRef::type is T if T is a reference; otherwise it's T&. This +// is the same as tr1::add_reference::type. +template +struct AddRef { typedef T& type; }; // NOLINT +template +struct AddRef { typedef T& type; }; // NOLINT + +// A handy wrapper for AddRef. +#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef::type + +// A helper for implementing get(). +template class Get; + +// A helper for implementing tuple_element. kIndexValid is true +// iff k < the number of fields in tuple type T. +template +struct TupleElement; + +template +struct TupleElement { typedef T0 type; }; + +template +struct TupleElement { typedef T1 type; }; + +template +struct TupleElement { typedef T2 type; }; + +template +struct TupleElement { typedef T3 type; }; + +template +struct TupleElement { typedef T4 type; }; + +template +struct TupleElement { typedef T5 type; }; + +template +struct TupleElement { typedef T6 type; }; + +template +struct TupleElement { typedef T7 type; }; + +template +struct TupleElement { typedef T8 type; }; + +template +struct TupleElement { typedef T9 type; }; + +} // namespace gtest_internal + +template <> +class tuple<> { + public: + tuple() {} + tuple(const tuple& /* t */) {} + tuple& operator=(const tuple& /* t */) { return *this; } +}; + +template +class GTEST_1_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} + + tuple(const tuple& t) : f0_(t.f0_) {} + + template + tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_1_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { + f0_ = t.f0_; + return *this; + } + + T0 f0_; +}; + +template +class GTEST_2_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), + f1_(f1) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} + + template + tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} + template + tuple(const ::std::pair& p) : f0_(p.first), f1_(p.second) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_2_TUPLE_(U)& t) { + return CopyFrom(t); + } + template + tuple& operator=(const ::std::pair& p) { + f0_ = p.first; + f1_ = p.second; + return *this; + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + return *this; + } + + T0 f0_; + T1 f1_; +}; + +template +class GTEST_3_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + template + tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_3_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; +}; + +template +class GTEST_4_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} + + template + tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_4_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; +}; + +template +class GTEST_5_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_) {} + + template + tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_5_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; +}; + +template +class GTEST_6_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_) {} + + template + tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_6_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; +}; + +template +class GTEST_7_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + template + tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_7_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; +}; + +template +class GTEST_8_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, + GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + template + tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_8_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; +}; + +template +class GTEST_9_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + template + tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_9_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; +}; + +template +class tuple { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), + f9_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} + + template + tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), + f9_(t.f9_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_10_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + f9_ = t.f9_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; + T9 f9_; +}; + +// 6.1.3.2 Tuple creation functions. + +// Known limitations: we don't support passing an +// std::tr1::reference_wrapper to make_tuple(). And we don't +// implement tie(). + +inline tuple<> make_tuple() { return tuple<>(); } + +template +inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { + return GTEST_1_TUPLE_(T)(f0); +} + +template +inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { + return GTEST_2_TUPLE_(T)(f0, f1); +} + +template +inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { + return GTEST_3_TUPLE_(T)(f0, f1, f2); +} + +template +inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3) { + return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); +} + +template +inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4) { + return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); +} + +template +inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5) { + return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); +} + +template +inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6) { + return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); +} + +template +inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { + return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); +} + +template +inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8) { + return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); +} + +template +inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8, const T9& f9) { + return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); +} + +// 6.1.3.3 Tuple helper classes. + +template struct tuple_size; + +template +struct tuple_size { static const int value = 0; }; + +template +struct tuple_size { static const int value = 1; }; + +template +struct tuple_size { static const int value = 2; }; + +template +struct tuple_size { static const int value = 3; }; + +template +struct tuple_size { static const int value = 4; }; + +template +struct tuple_size { static const int value = 5; }; + +template +struct tuple_size { static const int value = 6; }; + +template +struct tuple_size { static const int value = 7; }; + +template +struct tuple_size { static const int value = 8; }; + +template +struct tuple_size { static const int value = 9; }; + +template +struct tuple_size { static const int value = 10; }; + +template +struct tuple_element { + typedef typename gtest_internal::TupleElement< + k < (tuple_size::value), k, Tuple>::type type; +}; + +#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element::type + +// 6.1.3.4 Element access. + +namespace gtest_internal { + +template <> +class Get<0> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + Field(Tuple& t) { return t.f0_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + ConstField(const Tuple& t) { return t.f0_; } +}; + +template <> +class Get<1> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + Field(Tuple& t) { return t.f1_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + ConstField(const Tuple& t) { return t.f1_; } +}; + +template <> +class Get<2> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + Field(Tuple& t) { return t.f2_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + ConstField(const Tuple& t) { return t.f2_; } +}; + +template <> +class Get<3> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + Field(Tuple& t) { return t.f3_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + ConstField(const Tuple& t) { return t.f3_; } +}; + +template <> +class Get<4> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + Field(Tuple& t) { return t.f4_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + ConstField(const Tuple& t) { return t.f4_; } +}; + +template <> +class Get<5> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + Field(Tuple& t) { return t.f5_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + ConstField(const Tuple& t) { return t.f5_; } +}; + +template <> +class Get<6> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + Field(Tuple& t) { return t.f6_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + ConstField(const Tuple& t) { return t.f6_; } +}; + +template <> +class Get<7> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + Field(Tuple& t) { return t.f7_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + ConstField(const Tuple& t) { return t.f7_; } +}; + +template <> +class Get<8> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + Field(Tuple& t) { return t.f8_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + ConstField(const Tuple& t) { return t.f8_; } +}; + +template <> +class Get<9> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + Field(Tuple& t) { return t.f9_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + ConstField(const Tuple& t) { return t.f9_; } +}; + +} // namespace gtest_internal + +template +GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::Field(t); +} + +template +GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(const GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::ConstField(t); +} + +// 6.1.3.5 Relational operators + +// We only implement == and !=, as we don't have a need for the rest yet. + +namespace gtest_internal { + +// SameSizeTuplePrefixComparator::Eq(t1, t2) returns true if the +// first k fields of t1 equals the first k fields of t2. +// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if +// k1 != k2. +template +struct SameSizeTuplePrefixComparator; + +template <> +struct SameSizeTuplePrefixComparator<0, 0> { + template + static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { + return true; + } +}; + +template +struct SameSizeTuplePrefixComparator { + template + static bool Eq(const Tuple1& t1, const Tuple2& t2) { + return SameSizeTuplePrefixComparator::Eq(t1, t2) && + ::std::tr1::get(t1) == ::std::tr1::get(t2); + } +}; + +} // namespace gtest_internal + +template +inline bool operator==(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { + return gtest_internal::SameSizeTuplePrefixComparator< + tuple_size::value, + tuple_size::value>::Eq(t, u); +} + +template +inline bool operator!=(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { return !(t == u); } + +// 6.1.4 Pairs. +// Unimplemented. + +} // namespace tr1 +} // namespace std + +#undef GTEST_0_TUPLE_ +#undef GTEST_1_TUPLE_ +#undef GTEST_2_TUPLE_ +#undef GTEST_3_TUPLE_ +#undef GTEST_4_TUPLE_ +#undef GTEST_5_TUPLE_ +#undef GTEST_6_TUPLE_ +#undef GTEST_7_TUPLE_ +#undef GTEST_8_TUPLE_ +#undef GTEST_9_TUPLE_ +#undef GTEST_10_TUPLE_ + +#undef GTEST_0_TYPENAMES_ +#undef GTEST_1_TYPENAMES_ +#undef GTEST_2_TYPENAMES_ +#undef GTEST_3_TYPENAMES_ +#undef GTEST_4_TYPENAMES_ +#undef GTEST_5_TYPENAMES_ +#undef GTEST_6_TYPENAMES_ +#undef GTEST_7_TYPENAMES_ +#undef GTEST_8_TYPENAMES_ +#undef GTEST_9_TYPENAMES_ +#undef GTEST_10_TYPENAMES_ + +#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ +#undef GTEST_BY_REF_ +#undef GTEST_ADD_REF_ +#undef GTEST_TUPLE_ELEMENT_ + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +# elif GTEST_OS_SYMBIAN + +// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to +// use STLport's tuple implementation, which unfortunately doesn't +// work as the copy of STLport distributed with Symbian is incomplete. +// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to +// use its own tuple implementation. +# ifdef BOOST_HAS_TR1_TUPLE +# undef BOOST_HAS_TR1_TUPLE +# endif // BOOST_HAS_TR1_TUPLE + +// This prevents , which defines +// BOOST_HAS_TR1_TUPLE, from being #included by Boost's . +# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED +# include + +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) +// GCC 4.0+ implements tr1/tuple in the header. This does +// not conform to the TR1 spec, which requires the header to be . + +# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 +// Until version 4.3.2, gcc has a bug that causes , +// which is #included by , to not compile when RTTI is +// disabled. _TR1_FUNCTIONAL is the header guard for +// . Hence the following #define is a hack to prevent +// from being included. +# define _TR1_FUNCTIONAL 1 +# include +# undef _TR1_FUNCTIONAL // Allows the user to #include + // if he chooses to. +# else +# include // NOLINT +# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 + +# else +// If the compiler is not GCC 4.0+, we assume the user is using a +// spec-conforming TR1 implementation. +# include // NOLINT +# endif // GTEST_USE_OWN_TR1_TUPLE + +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether clone(2) is supported. +// Usually it will only be available on Linux, excluding +// Linux on the Itanium architecture. +// Also see http://linux.die.net/man/2/clone. +#ifndef GTEST_HAS_CLONE +// The user didn't tell us, so we need to figure it out. + +# if GTEST_OS_LINUX && !defined(__ia64__) +# define GTEST_HAS_CLONE 1 +# else +# define GTEST_HAS_CLONE 0 +# endif // GTEST_OS_LINUX && !defined(__ia64__) + +#endif // GTEST_HAS_CLONE + +// Determines whether to support stream redirection. This is used to test +// output correctness and to implement death tests. +#ifndef GTEST_HAS_STREAM_REDIRECTION +// By default, we assume that stream redirection is supported on all +// platforms except known mobile ones. +# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN +# define GTEST_HAS_STREAM_REDIRECTION 0 +# else +# define GTEST_HAS_STREAM_REDIRECTION 1 +# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN +#endif // GTEST_HAS_STREAM_REDIRECTION + +// Determines whether to support death tests. +// Google Test does not support death tests for VC 7.1 and earlier as +// abort() in a VC 7.1 application compiled as GUI in debug config +// pops up a dialog window that cannot be suppressed programmatically. +#if (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ + (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ + GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX) +# define GTEST_HAS_DEATH_TEST 1 +# include // NOLINT +#endif + +// We don't support MSVC 7.1 with exceptions disabled now. Therefore +// all the compilers we care about are adequate for supporting +// value-parameterized tests. +#define GTEST_HAS_PARAM_TEST 1 + +// Determines whether to support type-driven tests. + +// Typed tests need and variadic macros, which GCC, VC++ 8.0, +// Sun Pro CC, IBM Visual Age, and HP aCC support. +#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \ + defined(__IBMCPP__) || defined(__HP_aCC) +# define GTEST_HAS_TYPED_TEST 1 +# define GTEST_HAS_TYPED_TEST_P 1 +#endif + +// Determines whether to support Combine(). This only makes sense when +// value-parameterized tests are enabled. The implementation doesn't +// work on Sun Studio since it doesn't understand templated conversion +// operators. +#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) +# define GTEST_HAS_COMBINE 1 +#endif + +// Determines whether the system compiler uses UTF-16 for encoding wide strings. +#define GTEST_WIDE_STRING_USES_UTF16_ \ + (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) + +// Determines whether test results can be streamed to a socket. +#if GTEST_OS_LINUX +# define GTEST_CAN_STREAM_RESULTS_ 1 +#endif + +// Defines some utility macros. + +// The GNU compiler emits a warning if nested "if" statements are followed by +// an "else" statement and braces are not used to explicitly disambiguate the +// "else" binding. This leads to problems with code like: +// +// if (gate) +// ASSERT_*(condition) << "Some message"; +// +// The "switch (0) case 0:" idiom is used to suppress this. +#ifdef __INTEL_COMPILER +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ +#else +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT +#endif + +// Use this annotation at the end of a struct/class definition to +// prevent the compiler from optimizing away instances that are never +// used. This is useful when all interesting logic happens inside the +// c'tor and / or d'tor. Example: +// +// struct Foo { +// Foo() { ... } +// } GTEST_ATTRIBUTE_UNUSED_; +// +// Also use it after a variable or parameter declaration to tell the +// compiler the variable/parameter does not have to be used. +#if defined(__GNUC__) && !defined(COMPILER_ICC) +# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) +#else +# define GTEST_ATTRIBUTE_UNUSED_ +#endif + +// A macro to disallow operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_ASSIGN_(type)\ + void operator=(type const &) + +// A macro to disallow copy constructor and operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ + type(type const &);\ + GTEST_DISALLOW_ASSIGN_(type) + +// Tell the compiler to warn about unused return values for functions declared +// with this macro. The macro should be used on function declarations +// following the argument list: +// +// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; +#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) +# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) +#else +# define GTEST_MUST_USE_RESULT_ +#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC + +// Determine whether the compiler supports Microsoft's Structured Exception +// Handling. This is supported by several Windows compilers but generally +// does not exist on any other system. +#ifndef GTEST_HAS_SEH +// The user didn't tell us, so we need to figure it out. + +# if defined(_MSC_VER) || defined(__BORLANDC__) +// These two compilers are known to support SEH. +# define GTEST_HAS_SEH 1 +# else +// Assume no SEH. +# define GTEST_HAS_SEH 0 +# endif + +#endif // GTEST_HAS_SEH + +#ifdef _MSC_VER + +# if GTEST_LINKED_AS_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllimport) +# elif GTEST_CREATE_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllexport) +# endif + +#endif // _MSC_VER + +#ifndef GTEST_API_ +# define GTEST_API_ +#endif + +#ifdef __GNUC__ +// Ask the compiler to never inline a given function. +# define GTEST_NO_INLINE_ __attribute__((noinline)) +#else +# define GTEST_NO_INLINE_ +#endif + +namespace testing { + +class Message; + +namespace internal { + +class String; + +// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time +// expression is true. For example, you could use it to verify the +// size of a static array: +// +// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, +// content_type_names_incorrect_size); +// +// or to make sure a struct is smaller than a certain size: +// +// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large); +// +// The second argument to the macro is the name of the variable. If +// the expression is false, most compilers will issue a warning/error +// containing the name of the variable. + +template +struct CompileAssert { +}; + +#define GTEST_COMPILE_ASSERT_(expr, msg) \ + typedef ::testing::internal::CompileAssert<(bool(expr))> \ + msg[bool(expr) ? 1 : -1] + +// Implementation details of GTEST_COMPILE_ASSERT_: +// +// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1 +// elements (and thus is invalid) when the expression is false. +// +// - The simpler definition +// +// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1] +// +// does not work, as gcc supports variable-length arrays whose sizes +// are determined at run-time (this is gcc's extension and not part +// of the C++ standard). As a result, gcc fails to reject the +// following code with the simple definition: +// +// int foo; +// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is +// // not a compile-time constant. +// +// - By using the type CompileAssert<(bool(expr))>, we ensures that +// expr is a compile-time constant. (Template arguments must be +// determined at compile-time.) +// +// - The outter parentheses in CompileAssert<(bool(expr))> are necessary +// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written +// +// CompileAssert +// +// instead, these compilers will refuse to compile +// +// GTEST_COMPILE_ASSERT_(5 > 0, some_message); +// +// (They seem to think the ">" in "5 > 0" marks the end of the +// template argument list.) +// +// - The array size is (bool(expr) ? 1 : -1), instead of simply +// +// ((expr) ? 1 : -1). +// +// This is to avoid running into a bug in MS VC 7.1, which +// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. + +// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h. +// +// This template is declared, but intentionally undefined. +template +struct StaticAssertTypeEqHelper; + +template +struct StaticAssertTypeEqHelper {}; + +#if GTEST_HAS_GLOBAL_STRING +typedef ::string string; +#else +typedef ::std::string string; +#endif // GTEST_HAS_GLOBAL_STRING + +#if GTEST_HAS_GLOBAL_WSTRING +typedef ::wstring wstring; +#elif GTEST_HAS_STD_WSTRING +typedef ::std::wstring wstring; +#endif // GTEST_HAS_GLOBAL_WSTRING + +// A helper for suppressing warnings on constant condition. It just +// returns 'condition'. +GTEST_API_ bool IsTrue(bool condition); + +// Defines scoped_ptr. + +// This implementation of scoped_ptr is PARTIAL - it only contains +// enough stuff to satisfy Google Test's need. +template +class scoped_ptr { + public: + typedef T element_type; + + explicit scoped_ptr(T* p = NULL) : ptr_(p) {} + ~scoped_ptr() { reset(); } + + T& operator*() const { return *ptr_; } + T* operator->() const { return ptr_; } + T* get() const { return ptr_; } + + T* release() { + T* const ptr = ptr_; + ptr_ = NULL; + return ptr; + } + + void reset(T* p = NULL) { + if (p != ptr_) { + if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. + delete ptr_; + } + ptr_ = p; + } + } + private: + T* ptr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); +}; + +// Defines RE. + +// A simple C++ wrapper for . It uses the POSIX Extended +// Regular Expression syntax. +class GTEST_API_ RE { + public: + // A copy constructor is required by the Standard to initialize object + // references from r-values. + RE(const RE& other) { Init(other.pattern()); } + + // Constructs an RE from a string. + RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT + +#if GTEST_HAS_GLOBAL_STRING + + RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT + +#endif // GTEST_HAS_GLOBAL_STRING + + RE(const char* regex) { Init(regex); } // NOLINT + ~RE(); + + // Returns the string representation of the regex. + const char* pattern() const { return pattern_; } + + // FullMatch(str, re) returns true iff regular expression re matches + // the entire str. + // PartialMatch(str, re) returns true iff regular expression re + // matches a substring of str (including str itself). + // + // TODO(wan@google.com): make FullMatch() and PartialMatch() work + // when str contains NUL characters. + static bool FullMatch(const ::std::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::std::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#if GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const ::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#endif // GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const char* str, const RE& re); + static bool PartialMatch(const char* str, const RE& re); + + private: + void Init(const char* regex); + + // We use a const char* instead of a string, as Google Test may be used + // where string is not available. We also do not use Google Test's own + // String type here, in order to simplify dependencies between the + // files. + const char* pattern_; + bool is_valid_; + +#if GTEST_USES_POSIX_RE + + regex_t full_regex_; // For FullMatch(). + regex_t partial_regex_; // For PartialMatch(). + +#else // GTEST_USES_SIMPLE_RE + + const char* full_pattern_; // For FullMatch(); + +#endif + + GTEST_DISALLOW_ASSIGN_(RE); +}; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line); + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, + int line); + +// Defines logging utilities: +// GTEST_LOG_(severity) - logs messages at the specified severity level. The +// message itself is streamed into the macro. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. + +enum GTestLogSeverity { + GTEST_INFO, + GTEST_WARNING, + GTEST_ERROR, + GTEST_FATAL +}; + +// Formats log entry severity, provides a stream object for streaming the +// log message, and terminates the message with a newline when going out of +// scope. +class GTEST_API_ GTestLog { + public: + GTestLog(GTestLogSeverity severity, const char* file, int line); + + // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. + ~GTestLog(); + + ::std::ostream& GetStream() { return ::std::cerr; } + + private: + const GTestLogSeverity severity_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); +}; + +#define GTEST_LOG_(severity) \ + ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ + __FILE__, __LINE__).GetStream() + +inline void LogToStderr() {} +inline void FlushInfoLog() { fflush(NULL); } + +// INTERNAL IMPLEMENTATION - DO NOT USE. +// +// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition +// is not satisfied. +// Synopsys: +// GTEST_CHECK_(boolean_condition); +// or +// GTEST_CHECK_(boolean_condition) << "Additional message"; +// +// This checks the condition and if the condition is not satisfied +// it prints message about the condition violation, including the +// condition itself, plus additional message streamed into it, if any, +// and then it aborts the program. It aborts the program irrespective of +// whether it is built in the debug mode or not. +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. " + +// An all-mode assert to verify that the given POSIX-style function +// call returns 0 (indicating success). Known limitation: this +// doesn't expand to a balanced 'if' statement, so enclose the macro +// in {} if you need to use it as the only statement in an 'if' +// branch. +#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ + if (const int gtest_error = (posix_call)) \ + GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ + << gtest_error + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Use ImplicitCast_ as a safe version of static_cast for upcasting in +// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a +// const Foo*). When you use ImplicitCast_, the compiler checks that +// the cast is safe. Such explicit ImplicitCast_s are necessary in +// surprisingly many situations where C++ demands an exact type match +// instead of an argument type convertable to a target type. +// +// The syntax for using ImplicitCast_ is the same as for static_cast: +// +// ImplicitCast_(expr) +// +// ImplicitCast_ would have been part of the C++ standard library, +// but the proposal was submitted too late. It will probably make +// its way into the language in the future. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., implicit_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template +inline To ImplicitCast_(To x) { return x; } + +// When you upcast (that is, cast a pointer from type Foo to type +// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts +// always succeed. When you downcast (that is, cast a pointer from +// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because +// how do you know the pointer is really of type SubclassOfFoo? It +// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, +// when you downcast, you should use this macro. In debug mode, we +// use dynamic_cast<> to double-check the downcast is legal (we die +// if it's not). In normal mode, we do the efficient static_cast<> +// instead. Thus, it's important to test in debug mode to make sure +// the cast is legal! +// This is the only place in the code we should use dynamic_cast<>. +// In particular, you SHOULDN'T be using dynamic_cast<> in order to +// do RTTI (eg code like this: +// if (dynamic_cast(foo)) HandleASubclass1Object(foo); +// if (dynamic_cast(foo)) HandleASubclass2Object(foo); +// You should design the code some other way not to need this. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., down_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template // use like this: DownCast_(foo); +inline To DownCast_(From* f) { // so we only accept pointers + // Ensures that To is a sub-type of From *. This test is here only + // for compile-time type checking, and has no overhead in an + // optimized build at run-time, as it will be optimized away + // completely. + if (false) { + const To to = NULL; + ::testing::internal::ImplicitCast_(to); + } + +#if GTEST_HAS_RTTI + // RTTI: debug mode only! + GTEST_CHECK_(f == NULL || dynamic_cast(f) != NULL); +#endif + return static_cast(f); +} + +// Downcasts the pointer of type Base to Derived. +// Derived must be a subclass of Base. The parameter MUST +// point to a class of type Derived, not any subclass of it. +// When RTTI is available, the function performs a runtime +// check to enforce this. +template +Derived* CheckedDowncastToActualType(Base* base) { +#if GTEST_HAS_RTTI + GTEST_CHECK_(typeid(*base) == typeid(Derived)); + return dynamic_cast(base); // NOLINT +#else + return static_cast(base); // Poor man's downcast. +#endif +} + +#if GTEST_HAS_STREAM_REDIRECTION + +// Defines the stderr capturer: +// CaptureStdout - starts capturing stdout. +// GetCapturedStdout - stops capturing stdout and returns the captured string. +// CaptureStderr - starts capturing stderr. +// GetCapturedStderr - stops capturing stderr and returns the captured string. +// +GTEST_API_ void CaptureStdout(); +GTEST_API_ String GetCapturedStdout(); +GTEST_API_ void CaptureStderr(); +GTEST_API_ String GetCapturedStderr(); + +#endif // GTEST_HAS_STREAM_REDIRECTION + + +#if GTEST_HAS_DEATH_TEST + +// A copy of all command line arguments. Set by InitGoogleTest(). +extern ::std::vector g_argvs; + +// GTEST_HAS_DEATH_TEST implies we have ::std::string. +const ::std::vector& GetArgvs(); + +#endif // GTEST_HAS_DEATH_TEST + +// Defines synchronization primitives. + +#if GTEST_HAS_PTHREAD + +// Sleeps for (roughly) n milli-seconds. This function is only for +// testing Google Test's own constructs. Don't use it in user tests, +// either directly or indirectly. +inline void SleepMilliseconds(int n) { + const timespec time = { + 0, // 0 seconds. + n * 1000L * 1000L, // And n ms. + }; + nanosleep(&time, NULL); +} + +// Allows a controller thread to pause execution of newly created +// threads until notified. Instances of this class must be created +// and destroyed in the controller thread. +// +// This class is only for testing Google Test's own constructs. Do not +// use it in user tests, either directly or indirectly. +class Notification { + public: + Notification() : notified_(false) {} + + // Notifies all threads created with this notification to start. Must + // be called from the controller thread. + void Notify() { notified_ = true; } + + // Blocks until the controller thread notifies. Must be called from a test + // thread. + void WaitForNotification() { + while(!notified_) { + SleepMilliseconds(10); + } + } + + private: + volatile bool notified_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification); +}; + +// As a C-function, ThreadFuncWithCLinkage cannot be templated itself. +// Consequently, it cannot select a correct instantiation of ThreadWithParam +// in order to call its Run(). Introducing ThreadWithParamBase as a +// non-templated base class for ThreadWithParam allows us to bypass this +// problem. +class ThreadWithParamBase { + public: + virtual ~ThreadWithParamBase() {} + virtual void Run() = 0; +}; + +// pthread_create() accepts a pointer to a function type with the C linkage. +// According to the Standard (7.5/1), function types with different linkages +// are different even if they are otherwise identical. Some compilers (for +// example, SunStudio) treat them as different types. Since class methods +// cannot be defined with C-linkage we need to define a free C-function to +// pass into pthread_create(). +extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { + static_cast(thread)->Run(); + return NULL; +} + +// Helper class for testing Google Test's multi-threading constructs. +// To use it, write: +// +// void ThreadFunc(int param) { /* Do things with param */ } +// Notification thread_can_start; +// ... +// // The thread_can_start parameter is optional; you can supply NULL. +// ThreadWithParam thread(&ThreadFunc, 5, &thread_can_start); +// thread_can_start.Notify(); +// +// These classes are only for testing Google Test's own constructs. Do +// not use them in user tests, either directly or indirectly. +template +class ThreadWithParam : public ThreadWithParamBase { + public: + typedef void (*UserThreadFunc)(T); + + ThreadWithParam( + UserThreadFunc func, T param, Notification* thread_can_start) + : func_(func), + param_(param), + thread_can_start_(thread_can_start), + finished_(false) { + ThreadWithParamBase* const base = this; + // The thread can be created only after all fields except thread_ + // have been initialized. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); + } + ~ThreadWithParam() { Join(); } + + void Join() { + if (!finished_) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0)); + finished_ = true; + } + } + + virtual void Run() { + if (thread_can_start_ != NULL) + thread_can_start_->WaitForNotification(); + func_(param_); + } + + private: + const UserThreadFunc func_; // User-supplied thread function. + const T param_; // User-supplied parameter to the thread function. + // When non-NULL, used to block execution until the controller thread + // notifies. + Notification* const thread_can_start_; + bool finished_; // true iff we know that the thread function has finished. + pthread_t thread_; // The native thread object. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam); +}; + +// MutexBase and Mutex implement mutex on pthreads-based platforms. They +// are used in conjunction with class MutexLock: +// +// Mutex mutex; +// ... +// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end +// // of the current scope. +// +// MutexBase implements behavior for both statically and dynamically +// allocated mutexes. Do not use MutexBase directly. Instead, write +// the following to define a static mutex: +// +// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex); +// +// You can forward declare a static mutex like this: +// +// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex); +// +// To create a dynamic mutex, just define an object of type Mutex. +class MutexBase { + public: + // Acquires this mutex. + void Lock() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_)); + owner_ = pthread_self(); + } + + // Releases this mutex. + void Unlock() { + // We don't protect writing to owner_ here, as it's the caller's + // responsibility to ensure that the current thread holds the + // mutex when this is called. + owner_ = 0; + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_)); + } + + // Does nothing if the current thread holds the mutex. Otherwise, crashes + // with high probability. + void AssertHeld() const { + GTEST_CHECK_(owner_ == pthread_self()) + << "The current thread is not holding the mutex @" << this; + } + + // A static mutex may be used before main() is entered. It may even + // be used before the dynamic initialization stage. Therefore we + // must be able to initialize a static mutex object at link time. + // This means MutexBase has to be a POD and its member variables + // have to be public. + public: + pthread_mutex_t mutex_; // The underlying pthread mutex. + pthread_t owner_; // The thread holding the mutex; 0 means no one holds it. +}; + +// Forward-declares a static mutex. +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::MutexBase mutex + +// Defines and statically (i.e. at link time) initializes a static mutex. +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \ + ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, 0 } + +// The Mutex class can only be used for mutexes created at runtime. It +// shares its API with MutexBase otherwise. +class Mutex : public MutexBase { + public: + Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + owner_ = 0; + } + ~Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_)); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); +}; + +// We cannot name this class MutexLock as the ctor declaration would +// conflict with a macro named MutexLock, which is defined on some +// platforms. Hence the typedef trick below. +class GTestMutexLock { + public: + explicit GTestMutexLock(MutexBase* mutex) + : mutex_(mutex) { mutex_->Lock(); } + + ~GTestMutexLock() { mutex_->Unlock(); } + + private: + MutexBase* const mutex_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock); +}; + +typedef GTestMutexLock MutexLock; + +// Helpers for ThreadLocal. + +// pthread_key_create() requires DeleteThreadLocalValue() to have +// C-linkage. Therefore it cannot be templatized to access +// ThreadLocal. Hence the need for class +// ThreadLocalValueHolderBase. +class ThreadLocalValueHolderBase { + public: + virtual ~ThreadLocalValueHolderBase() {} +}; + +// Called by pthread to delete thread-local data stored by +// pthread_setspecific(). +extern "C" inline void DeleteThreadLocalValue(void* value_holder) { + delete static_cast(value_holder); +} + +// Implements thread-local storage on pthreads-based systems. +// +// // Thread 1 +// ThreadLocal tl(100); // 100 is the default value for each thread. +// +// // Thread 2 +// tl.set(150); // Changes the value for thread 2 only. +// EXPECT_EQ(150, tl.get()); +// +// // Thread 1 +// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value. +// tl.set(200); +// EXPECT_EQ(200, tl.get()); +// +// The template type argument T must have a public copy constructor. +// In addition, the default ThreadLocal constructor requires T to have +// a public default constructor. +// +// An object managed for a thread by a ThreadLocal instance is deleted +// when the thread exits. Or, if the ThreadLocal instance dies in +// that thread, when the ThreadLocal dies. It's the user's +// responsibility to ensure that all other threads using a ThreadLocal +// have exited when it dies, or the per-thread objects for those +// threads will not be deleted. +// +// Google Test only uses global ThreadLocal objects. That means they +// will die after main() has returned. Therefore, no per-thread +// object managed by Google Test will be leaked as long as all threads +// using Google Test have exited when main() returns. +template +class ThreadLocal { + public: + ThreadLocal() : key_(CreateKey()), + default_() {} + explicit ThreadLocal(const T& value) : key_(CreateKey()), + default_(value) {} + + ~ThreadLocal() { + // Destroys the managed object for the current thread, if any. + DeleteThreadLocalValue(pthread_getspecific(key_)); + + // Releases resources associated with the key. This will *not* + // delete managed objects for other threads. + GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_)); + } + + T* pointer() { return GetOrCreateValue(); } + const T* pointer() const { return GetOrCreateValue(); } + const T& get() const { return *pointer(); } + void set(const T& value) { *pointer() = value; } + + private: + // Holds a value of type T. + class ValueHolder : public ThreadLocalValueHolderBase { + public: + explicit ValueHolder(const T& value) : value_(value) {} + + T* pointer() { return &value_; } + + private: + T value_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder); + }; + + static pthread_key_t CreateKey() { + pthread_key_t key; + // When a thread exits, DeleteThreadLocalValue() will be called on + // the object managed for that thread. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_key_create(&key, &DeleteThreadLocalValue)); + return key; + } + + T* GetOrCreateValue() const { + ThreadLocalValueHolderBase* const holder = + static_cast(pthread_getspecific(key_)); + if (holder != NULL) { + return CheckedDowncastToActualType(holder)->pointer(); + } + + ValueHolder* const new_holder = new ValueHolder(default_); + ThreadLocalValueHolderBase* const holder_base = new_holder; + GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base)); + return new_holder->pointer(); + } + + // A key pthreads uses for looking up per-thread values. + const pthread_key_t key_; + const T default_; // The default value for each thread. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal); +}; + +# define GTEST_IS_THREADSAFE 1 + +#else // GTEST_HAS_PTHREAD + +// A dummy implementation of synchronization primitives (mutex, lock, +// and thread-local variable). Necessary for compiling Google Test where +// mutex is not supported - using Google Test in multiple threads is not +// supported on such platforms. + +class Mutex { + public: + Mutex() {} + void AssertHeld() const {} +}; + +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::Mutex mutex + +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex + +class GTestMutexLock { + public: + explicit GTestMutexLock(Mutex*) {} // NOLINT +}; + +typedef GTestMutexLock MutexLock; + +template +class ThreadLocal { + public: + ThreadLocal() : value_() {} + explicit ThreadLocal(const T& value) : value_(value) {} + T* pointer() { return &value_; } + const T* pointer() const { return &value_; } + const T& get() const { return value_; } + void set(const T& value) { value_ = value; } + private: + T value_; +}; + +// The above synchronization primitives have dummy implementations. +// Therefore Google Test is not thread-safe. +# define GTEST_IS_THREADSAFE 0 + +#endif // GTEST_HAS_PTHREAD + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +GTEST_API_ size_t GetThreadCount(); + +// Passing non-POD classes through ellipsis (...) crashes the ARM +// compiler and generates a warning in Sun Studio. The Nokia Symbian +// and the IBM XL C/C++ compiler try to instantiate a copy constructor +// for objects passed through ellipsis (...), failing for uncopyable +// objects. We define this to ensure that only POD is passed through +// ellipsis on these systems. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_ELLIPSIS_NEEDS_POD_ 1 +#else +# define GTEST_CAN_COMPARE_NULL 1 +#endif + +// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between +// const T& and const T* in a function template. These compilers +// _can_ decide between class template specializations for T and T*, +// so a tr1::type_traits-like is_pointer works. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) +# define GTEST_NEEDS_IS_POINTER_ 1 +#endif + +template +struct bool_constant { + typedef bool_constant type; + static const bool value = bool_value; +}; +template const bool bool_constant::value; + +typedef bool_constant false_type; +typedef bool_constant true_type; + +template +struct is_pointer : public false_type {}; + +template +struct is_pointer : public true_type {}; + +template +struct IteratorTraits { + typedef typename Iterator::value_type value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_SEP_ "\\" +# define GTEST_HAS_ALT_PATH_SEP_ 1 +// The biggest signed integer type the compiler supports. +typedef __int64 BiggestInt; +#else +# define GTEST_PATH_SEP_ "/" +# define GTEST_HAS_ALT_PATH_SEP_ 0 +typedef long long BiggestInt; // NOLINT +#endif // GTEST_OS_WINDOWS + +// Utilities for char. + +// isspace(int ch) and friends accept an unsigned char or EOF. char +// may be signed, depending on the compiler (or compiler flags). +// Therefore we need to cast a char to unsigned char before calling +// isspace(), etc. + +inline bool IsAlpha(char ch) { + return isalpha(static_cast(ch)) != 0; +} +inline bool IsAlNum(char ch) { + return isalnum(static_cast(ch)) != 0; +} +inline bool IsDigit(char ch) { + return isdigit(static_cast(ch)) != 0; +} +inline bool IsLower(char ch) { + return islower(static_cast(ch)) != 0; +} +inline bool IsSpace(char ch) { + return isspace(static_cast(ch)) != 0; +} +inline bool IsUpper(char ch) { + return isupper(static_cast(ch)) != 0; +} +inline bool IsXDigit(char ch) { + return isxdigit(static_cast(ch)) != 0; +} + +inline char ToLower(char ch) { + return static_cast(tolower(static_cast(ch))); +} +inline char ToUpper(char ch) { + return static_cast(toupper(static_cast(ch))); +} + +// The testing::internal::posix namespace holds wrappers for common +// POSIX functions. These wrappers hide the differences between +// Windows/MSVC and POSIX systems. Since some compilers define these +// standard functions as macros, the wrapper cannot have the same name +// as the wrapped function. + +namespace posix { + +// Functions with a different name on Windows. + +#if GTEST_OS_WINDOWS + +typedef struct _stat StatStruct; + +# ifdef __BORLANDC__ +inline int IsATTY(int fd) { return isatty(fd); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +# else // !__BORLANDC__ +# if GTEST_OS_WINDOWS_MOBILE +inline int IsATTY(int /* fd */) { return 0; } +# else +inline int IsATTY(int fd) { return _isatty(fd); } +# endif // GTEST_OS_WINDOWS_MOBILE +inline int StrCaseCmp(const char* s1, const char* s2) { + return _stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return _strdup(src); } +# endif // __BORLANDC__ + +# if GTEST_OS_WINDOWS_MOBILE +inline int FileNo(FILE* file) { return reinterpret_cast(_fileno(file)); } +// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this +// time and thus not defined there. +# else +inline int FileNo(FILE* file) { return _fileno(file); } +inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } +inline int RmDir(const char* dir) { return _rmdir(dir); } +inline bool IsDir(const StatStruct& st) { + return (_S_IFDIR & st.st_mode) != 0; +} +# endif // GTEST_OS_WINDOWS_MOBILE + +#else + +typedef struct stat StatStruct; + +inline int FileNo(FILE* file) { return fileno(file); } +inline int IsATTY(int fd) { return isatty(fd); } +inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return strcasecmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +inline int RmDir(const char* dir) { return rmdir(dir); } +inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } + +#endif // GTEST_OS_WINDOWS + +// Functions deprecated by MSVC 8.0. + +#ifdef _MSC_VER +// Temporarily disable warning 4996 (deprecated function). +# pragma warning(push) +# pragma warning(disable:4996) +#endif + +inline const char* StrNCpy(char* dest, const char* src, size_t n) { + return strncpy(dest, src, n); +} + +// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and +// StrError() aren't needed on Windows CE at this time and thus not +// defined there. + +#if !GTEST_OS_WINDOWS_MOBILE +inline int ChDir(const char* dir) { return chdir(dir); } +#endif +inline FILE* FOpen(const char* path, const char* mode) { + return fopen(path, mode); +} +#if !GTEST_OS_WINDOWS_MOBILE +inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { + return freopen(path, mode, stream); +} +inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } +#endif +inline int FClose(FILE* fp) { return fclose(fp); } +#if !GTEST_OS_WINDOWS_MOBILE +inline int Read(int fd, void* buf, unsigned int count) { + return static_cast(read(fd, buf, count)); +} +inline int Write(int fd, const void* buf, unsigned int count) { + return static_cast(write(fd, buf, count)); +} +inline int Close(int fd) { return close(fd); } +inline const char* StrError(int errnum) { return strerror(errnum); } +#endif +inline const char* GetEnv(const char* name) { +#if GTEST_OS_WINDOWS_MOBILE + // We are on Windows CE, which has no environment variables. + return NULL; +#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) + // Environment variables which we programmatically clear will be set to the + // empty string rather than unset (NULL). Handle that case. + const char* const env = getenv(name); + return (env != NULL && env[0] != '\0') ? env : NULL; +#else + return getenv(name); +#endif +} + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + +#if GTEST_OS_WINDOWS_MOBILE +// Windows CE has no C library. The abort() function is used in +// several places in Google Test. This implementation provides a reasonable +// imitation of standard behaviour. +void Abort(); +#else +inline void Abort() { abort(); } +#endif // GTEST_OS_WINDOWS_MOBILE + +} // namespace posix + +// The maximum number a BiggestInt can represent. This definition +// works no matter BiggestInt is represented in one's complement or +// two's complement. +// +// We cannot rely on numeric_limits in STL, as __int64 and long long +// are not part of standard C++ and numeric_limits doesn't need to be +// defined for them. +const BiggestInt kMaxBiggestInt = + ~(static_cast(1) << (8*sizeof(BiggestInt) - 1)); + +// This template class serves as a compile-time function from size to +// type. It maps a size in bytes to a primitive type with that +// size. e.g. +// +// TypeWithSize<4>::UInt +// +// is typedef-ed to be unsigned int (unsigned integer made up of 4 +// bytes). +// +// Such functionality should belong to STL, but I cannot find it +// there. +// +// Google Test uses this class in the implementation of floating-point +// comparison. +// +// For now it only handles UInt (unsigned int) as that's all Google Test +// needs. Other types can be easily added in the future if need +// arises. +template +class TypeWithSize { + public: + // This prevents the user from using TypeWithSize with incorrect + // values of N. + typedef void UInt; +}; + +// The specialization for size 4. +template <> +class TypeWithSize<4> { + public: + // unsigned int has size 4 in both gcc and MSVC. + // + // As base/basictypes.h doesn't compile on Windows, we cannot use + // uint32, uint64, and etc here. + typedef int Int; + typedef unsigned int UInt; +}; + +// The specialization for size 8. +template <> +class TypeWithSize<8> { + public: + +#if GTEST_OS_WINDOWS + typedef __int64 Int; + typedef unsigned __int64 UInt; +#else + typedef long long Int; // NOLINT + typedef unsigned long long UInt; // NOLINT +#endif // GTEST_OS_WINDOWS +}; + +// Integer types of known sizes. +typedef TypeWithSize<4>::Int Int32; +typedef TypeWithSize<4>::UInt UInt32; +typedef TypeWithSize<8>::Int Int64; +typedef TypeWithSize<8>::UInt UInt64; +typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. + +// Utilities for command line flags and environment variables. + +// Macro for referencing flags. +#define GTEST_FLAG(name) FLAGS_gtest_##name + +// Macros for declaring flags. +#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name) +#define GTEST_DECLARE_int32_(name) \ + GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) +#define GTEST_DECLARE_string_(name) \ + GTEST_API_ extern ::testing::internal::String GTEST_FLAG(name) + +// Macros for defining flags. +#define GTEST_DEFINE_bool_(name, default_val, doc) \ + GTEST_API_ bool GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_int32_(name, default_val, doc) \ + GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_string_(name, default_val, doc) \ + GTEST_API_ ::testing::internal::String GTEST_FLAG(name) = (default_val) + +// Parses 'str' for a 32-bit signed integer. If successful, writes the result +// to *value and returns true; otherwise leaves *value unchanged and returns +// false. +// TODO(chandlerc): Find a better way to refactor flag and environment parsing +// out of both gtest-port.cc and gtest.cc to avoid exporting this utility +// function. +bool ParseInt32(const Message& src_text, const char* str, Int32* value); + +// Parses a bool/Int32/string from the environment variable +// corresponding to the given Google Test flag. +bool BoolFromGTestEnv(const char* flag, bool default_val); +GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); +const char* StringFromGTestEnv(const char* flag, const char* default_val); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +#if GTEST_OS_LINUX +# include +# include +# include +# include +#endif // GTEST_OS_LINUX + +#include +#include +#include +#include +#include + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares the String class and functions used internally by +// Google Test. They are subject to change without notice. They should not used +// by code external to Google Test. +// +// This header file is #included by . +// It should not be #included by other files. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ + +#ifdef __BORLANDC__ +// string.h is not guaranteed to provide strcpy on C++ Builder. +# include +#endif + +#include + +#include + +namespace testing { +namespace internal { + +// String - a UTF-8 string class. +// +// For historic reasons, we don't use std::string. +// +// TODO(wan@google.com): replace this class with std::string or +// implement it in terms of the latter. +// +// Note that String can represent both NULL and the empty string, +// while std::string cannot represent NULL. +// +// NULL and the empty string are considered different. NULL is less +// than anything (including the empty string) except itself. +// +// This class only provides minimum functionality necessary for +// implementing Google Test. We do not intend to implement a full-fledged +// string class here. +// +// Since the purpose of this class is to provide a substitute for +// std::string on platforms where it cannot be used, we define a copy +// constructor and assignment operators such that we don't need +// conditional compilation in a lot of places. +// +// In order to make the representation efficient, the d'tor of String +// is not virtual. Therefore DO NOT INHERIT FROM String. +class GTEST_API_ String { + public: + // Static utility methods + + // Returns the input enclosed in double quotes if it's not NULL; + // otherwise returns "(null)". For example, "\"Hello\"" is returned + // for input "Hello". + // + // This is useful for printing a C string in the syntax of a literal. + // + // Known issue: escape sequences are not handled yet. + static String ShowCStringQuoted(const char* c_str); + + // Clones a 0-terminated C string, allocating memory using new. The + // caller is responsible for deleting the return value using + // delete[]. Returns the cloned string, or NULL if the input is + // NULL. + // + // This is different from strdup() in string.h, which allocates + // memory using malloc(). + static const char* CloneCString(const char* c_str); + +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be + // able to pass strings to Win32 APIs on CE we need to convert them + // to 'Unicode', UTF-16. + + // Creates a UTF-16 wide string from the given ANSI string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the wide string, or NULL if the + // input is NULL. + // + // The wide string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static LPCWSTR AnsiToUtf16(const char* c_str); + + // Creates an ANSI string from the given wide string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the ANSI string, or NULL if the + // input is NULL. + // + // The returned string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static const char* Utf16ToAnsi(LPCWSTR utf16_str); +#endif + + // Compares two C strings. Returns true iff they have the same content. + // + // Unlike strcmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CStringEquals(const char* lhs, const char* rhs); + + // Converts a wide C string to a String using the UTF-8 encoding. + // NULL will be converted to "(null)". If an error occurred during + // the conversion, "(failed to convert from wide string)" is + // returned. + static String ShowWideCString(const wchar_t* wide_c_str); + + // Similar to ShowWideCString(), except that this function encloses + // the converted string in double quotes. + static String ShowWideCStringQuoted(const wchar_t* wide_c_str); + + // Compares two wide C strings. Returns true iff they have the same + // content. + // + // Unlike wcscmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); + + // Compares two C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike strcasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CaseInsensitiveCStringEquals(const char* lhs, + const char* rhs); + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. + static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs); + + // Formats a list of arguments to a String, using the same format + // spec string as for printf. + // + // We do not use the StringPrintf class as it is not universally + // available. + // + // The result is limited to 4096 characters (including the tailing + // 0). If 4096 characters are not enough to format the input, + // "" is returned. + static String Format(const char* format, ...); + + // C'tors + + // The default c'tor constructs a NULL string. + String() : c_str_(NULL), length_(0) {} + + // Constructs a String by cloning a 0-terminated C string. + String(const char* a_c_str) { // NOLINT + if (a_c_str == NULL) { + c_str_ = NULL; + length_ = 0; + } else { + ConstructNonNull(a_c_str, strlen(a_c_str)); + } + } + + // Constructs a String by copying a given number of chars from a + // buffer. E.g. String("hello", 3) creates the string "hel", + // String("a\0bcd", 4) creates "a\0bc", String(NULL, 0) creates "", + // and String(NULL, 1) results in access violation. + String(const char* buffer, size_t a_length) { + ConstructNonNull(buffer, a_length); + } + + // The copy c'tor creates a new copy of the string. The two + // String objects do not share content. + String(const String& str) : c_str_(NULL), length_(0) { *this = str; } + + // D'tor. String is intended to be a final class, so the d'tor + // doesn't need to be virtual. + ~String() { delete[] c_str_; } + + // Allows a String to be implicitly converted to an ::std::string or + // ::string, and vice versa. Converting a String containing a NULL + // pointer to ::std::string or ::string is undefined behavior. + // Converting a ::std::string or ::string containing an embedded NUL + // character to a String will result in the prefix up to the first + // NUL character. + String(const ::std::string& str) { + ConstructNonNull(str.c_str(), str.length()); + } + + operator ::std::string() const { return ::std::string(c_str(), length()); } + +#if GTEST_HAS_GLOBAL_STRING + String(const ::string& str) { + ConstructNonNull(str.c_str(), str.length()); + } + + operator ::string() const { return ::string(c_str(), length()); } +#endif // GTEST_HAS_GLOBAL_STRING + + // Returns true iff this is an empty string (i.e. ""). + bool empty() const { return (c_str() != NULL) && (length() == 0); } + + // Compares this with another String. + // Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0 + // if this is greater than rhs. + int Compare(const String& rhs) const; + + // Returns true iff this String equals the given C string. A NULL + // string and a non-NULL string are considered not equal. + bool operator==(const char* a_c_str) const { return Compare(a_c_str) == 0; } + + // Returns true iff this String is less than the given String. A + // NULL string is considered less than "". + bool operator<(const String& rhs) const { return Compare(rhs) < 0; } + + // Returns true iff this String doesn't equal the given C string. A NULL + // string and a non-NULL string are considered not equal. + bool operator!=(const char* a_c_str) const { return !(*this == a_c_str); } + + // Returns true iff this String ends with the given suffix. *Any* + // String is considered to end with a NULL or empty suffix. + bool EndsWith(const char* suffix) const; + + // Returns true iff this String ends with the given suffix, not considering + // case. Any String is considered to end with a NULL or empty suffix. + bool EndsWithCaseInsensitive(const char* suffix) const; + + // Returns the length of the encapsulated string, or 0 if the + // string is NULL. + size_t length() const { return length_; } + + // Gets the 0-terminated C string this String object represents. + // The String object still owns the string. Therefore the caller + // should NOT delete the return value. + const char* c_str() const { return c_str_; } + + // Assigns a C string to this object. Self-assignment works. + const String& operator=(const char* a_c_str) { + return *this = String(a_c_str); + } + + // Assigns a String object to this object. Self-assignment works. + const String& operator=(const String& rhs) { + if (this != &rhs) { + delete[] c_str_; + if (rhs.c_str() == NULL) { + c_str_ = NULL; + length_ = 0; + } else { + ConstructNonNull(rhs.c_str(), rhs.length()); + } + } + + return *this; + } + + private: + // Constructs a non-NULL String from the given content. This + // function can only be called when c_str_ has not been allocated. + // ConstructNonNull(NULL, 0) results in an empty string (""). + // ConstructNonNull(NULL, non_zero) is undefined behavior. + void ConstructNonNull(const char* buffer, size_t a_length) { + char* const str = new char[a_length + 1]; + memcpy(str, buffer, a_length); + str[a_length] = '\0'; + c_str_ = str; + length_ = a_length; + } + + const char* c_str_; + size_t length_; +}; // class String + +// Streams a String to an ostream. Each '\0' character in the String +// is replaced with "\\0". +inline ::std::ostream& operator<<(::std::ostream& os, const String& str) { + if (str.c_str() == NULL) { + os << "(null)"; + } else { + const char* const c_str = str.c_str(); + for (size_t i = 0; i != str.length(); i++) { + if (c_str[i] == '\0') { + os << "\\0"; + } else { + os << c_str[i]; + } + } + } + return os; +} + +// Gets the content of the stringstream's buffer as a String. Each '\0' +// character in the buffer is replaced with "\\0". +GTEST_API_ String StringStreamToString(::std::stringstream* stream); + +// Converts a streamable value to a String. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". + +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +String StreamableToString(const T& streamable); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: keith.ray@gmail.com (Keith Ray) +// +// Google Test filepath utilities +// +// This header file declares classes and functions used internally by +// Google Test. They are subject to change without notice. +// +// This file is #included in . +// Do not include this header file separately! + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ + + +namespace testing { +namespace internal { + +// FilePath - a class for file and directory pathname manipulation which +// handles platform-specific conventions (like the pathname separator). +// Used for helper functions for naming files in a directory for xml output. +// Except for Set methods, all methods are const or static, which provides an +// "immutable value object" -- useful for peace of mind. +// A FilePath with a value ending in a path separator ("like/this/") represents +// a directory, otherwise it is assumed to represent a file. In either case, +// it may or may not represent an actual file or directory in the file system. +// Names are NOT checked for syntax correctness -- no checking for illegal +// characters, malformed paths, etc. + +class GTEST_API_ FilePath { + public: + FilePath() : pathname_("") { } + FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { } + + explicit FilePath(const char* pathname) : pathname_(pathname) { + Normalize(); + } + + explicit FilePath(const String& pathname) : pathname_(pathname) { + Normalize(); + } + + FilePath& operator=(const FilePath& rhs) { + Set(rhs); + return *this; + } + + void Set(const FilePath& rhs) { + pathname_ = rhs.pathname_; + } + + String ToString() const { return pathname_; } + const char* c_str() const { return pathname_.c_str(); } + + // Returns the current working directory, or "" if unsuccessful. + static FilePath GetCurrentDir(); + + // Given directory = "dir", base_name = "test", number = 0, + // extension = "xml", returns "dir/test.xml". If number is greater + // than zero (e.g., 12), returns "dir/test_12.xml". + // On Windows platform, uses \ as the separator rather than /. + static FilePath MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension); + + // Given directory = "dir", relative_path = "test.xml", + // returns "dir/test.xml". + // On Windows, uses \ as the separator rather than /. + static FilePath ConcatPaths(const FilePath& directory, + const FilePath& relative_path); + + // Returns a pathname for a file that does not currently exist. The pathname + // will be directory/base_name.extension or + // directory/base_name_.extension if directory/base_name.extension + // already exists. The number will be incremented until a pathname is found + // that does not already exist. + // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. + // There could be a race condition if two or more processes are calling this + // function at the same time -- they could both pick the same filename. + static FilePath GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension); + + // Returns true iff the path is NULL or "". + bool IsEmpty() const { return c_str() == NULL || *c_str() == '\0'; } + + // If input name has a trailing separator character, removes it and returns + // the name, otherwise return the name string unmodified. + // On Windows platform, uses \ as the separator, other platforms use /. + FilePath RemoveTrailingPathSeparator() const; + + // Returns a copy of the FilePath with the directory part removed. + // Example: FilePath("path/to/file").RemoveDirectoryName() returns + // FilePath("file"). If there is no directory part ("just_a_file"), it returns + // the FilePath unmodified. If there is no file part ("just_a_dir/") it + // returns an empty FilePath (""). + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveDirectoryName() const; + + // RemoveFileName returns the directory path with the filename removed. + // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". + // If the FilePath is "a_file" or "/a_file", RemoveFileName returns + // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does + // not have a file, like "just/a/dir/", it returns the FilePath unmodified. + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveFileName() const; + + // Returns a copy of the FilePath with the case-insensitive extension removed. + // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns + // FilePath("dir/file"). If a case-insensitive extension is not + // found, returns a copy of the original FilePath. + FilePath RemoveExtension(const char* extension) const; + + // Creates directories so that path exists. Returns true if successful or if + // the directories already exist; returns false if unable to create + // directories for any reason. Will also return false if the FilePath does + // not represent a directory (that is, it doesn't end with a path separator). + bool CreateDirectoriesRecursively() const; + + // Create the directory so that path exists. Returns true if successful or + // if the directory already exists; returns false if unable to create the + // directory for any reason, including if the parent directory does not + // exist. Not named "CreateDirectory" because that's a macro on Windows. + bool CreateFolder() const; + + // Returns true if FilePath describes something in the file-system, + // either a file, directory, or whatever, and that something exists. + bool FileOrDirectoryExists() const; + + // Returns true if pathname describes a directory in the file-system + // that exists. + bool DirectoryExists() const; + + // Returns true if FilePath ends with a path separator, which indicates that + // it is intended to represent a directory. Returns false otherwise. + // This does NOT check that a directory (or file) actually exists. + bool IsDirectory() const; + + // Returns true if pathname describes a root directory. (Windows has one + // root directory per disk drive.) + bool IsRootDirectory() const; + + // Returns true if pathname describes an absolute path. + bool IsAbsolutePath() const; + + private: + // Replaces multiple consecutive separators with a single separator. + // For example, "bar///foo" becomes "bar/foo". Does not eliminate other + // redundancies that might be in a pathname involving "." or "..". + // + // A pathname with multiple consecutive separators may occur either through + // user error or as a result of some scripts or APIs that generate a pathname + // with a trailing separator. On other platforms the same API or script + // may NOT generate a pathname with a trailing "/". Then elsewhere that + // pathname may have another "/" and pathname components added to it, + // without checking for the separator already being there. + // The script language and operating system may allow paths like "foo//bar" + // but some of the functions in FilePath will not handle that correctly. In + // particular, RemoveTrailingPathSeparator() only removes one separator, and + // it is called in CreateDirectoriesRecursively() assuming that it will change + // a pathname from directory syntax (trailing separator) to filename syntax. + // + // On Windows this method also replaces the alternate path separator '/' with + // the primary path separator '\\', so that for example "bar\\/\\foo" becomes + // "bar\\foo". + + void Normalize(); + + // Returns a pointer to the last occurrence of a valid path separator in + // the FilePath. On Windows, for example, both '/' and '\' are valid path + // separators. Returns NULL if no path separator was found. + const char* FindLastPathSeparator() const; + + String pathname_; +}; // class FilePath + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +// This file was GENERATED by command: +// pump.py gtest-type-util.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Type utilities needed for implementing typed and type-parameterized +// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently we support at most 50 types in a list, and at most 50 +// type-parameterized tests in one type-parameterized test case. +// Please contact googletestframework@googlegroups.com if you need +// more. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + + +// #ifdef __GNUC__ is too general here. It is possible to use gcc without using +// libstdc++ (which is where cxxabi.h comes from). +# ifdef __GLIBCXX__ +# include +# elif defined(__HP_aCC) +# include +# endif // __GLIBCXX__ + +namespace testing { +namespace internal { + +// GetTypeName() returns a human-readable name of type T. +// NB: This function is also used in Google Mock, so don't move it inside of +// the typed-test-only section below. +template +String GetTypeName() { +# if GTEST_HAS_RTTI + + const char* const name = typeid(T).name(); +# if defined(__GLIBCXX__) || defined(__HP_aCC) + int status = 0; + // gcc's implementation of typeid(T).name() mangles the type name, + // so we have to demangle it. +# ifdef __GLIBCXX__ + using abi::__cxa_demangle; +# endif // __GLIBCXX__ + char* const readable_name = __cxa_demangle(name, 0, 0, &status); + const String name_str(status == 0 ? readable_name : name); + free(readable_name); + return name_str; +# else + return name; +# endif // __GLIBCXX__ || __HP_aCC + +# else + + return ""; + +# endif // GTEST_HAS_RTTI +} + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// AssertyTypeEq::type is defined iff T1 and T2 are the same +// type. This can be used as a compile-time assertion to ensure that +// two types are equal. + +template +struct AssertTypeEq; + +template +struct AssertTypeEq { + typedef bool type; +}; + +// A unique type used as the default value for the arguments of class +// template Types. This allows us to simulate variadic templates +// (e.g. Types, Type, and etc), which C++ doesn't +// support directly. +struct None {}; + +// The following family of struct and struct templates are used to +// represent type lists. In particular, TypesN +// represents a type list with N types (T1, T2, ..., and TN) in it. +// Except for Types0, every struct in the family has two member types: +// Head for the first type in the list, and Tail for the rest of the +// list. + +// The empty type list. +struct Types0 {}; + +// Type lists of length 1, 2, 3, and so on. + +template +struct Types1 { + typedef T1 Head; + typedef Types0 Tail; +}; +template +struct Types2 { + typedef T1 Head; + typedef Types1 Tail; +}; + +template +struct Types3 { + typedef T1 Head; + typedef Types2 Tail; +}; + +template +struct Types4 { + typedef T1 Head; + typedef Types3 Tail; +}; + +template +struct Types5 { + typedef T1 Head; + typedef Types4 Tail; +}; + +template +struct Types6 { + typedef T1 Head; + typedef Types5 Tail; +}; + +template +struct Types7 { + typedef T1 Head; + typedef Types6 Tail; +}; + +template +struct Types8 { + typedef T1 Head; + typedef Types7 Tail; +}; + +template +struct Types9 { + typedef T1 Head; + typedef Types8 Tail; +}; + +template +struct Types10 { + typedef T1 Head; + typedef Types9 Tail; +}; + +template +struct Types11 { + typedef T1 Head; + typedef Types10 Tail; +}; + +template +struct Types12 { + typedef T1 Head; + typedef Types11 Tail; +}; + +template +struct Types13 { + typedef T1 Head; + typedef Types12 Tail; +}; + +template +struct Types14 { + typedef T1 Head; + typedef Types13 Tail; +}; + +template +struct Types15 { + typedef T1 Head; + typedef Types14 Tail; +}; + +template +struct Types16 { + typedef T1 Head; + typedef Types15 Tail; +}; + +template +struct Types17 { + typedef T1 Head; + typedef Types16 Tail; +}; + +template +struct Types18 { + typedef T1 Head; + typedef Types17 Tail; +}; + +template +struct Types19 { + typedef T1 Head; + typedef Types18 Tail; +}; + +template +struct Types20 { + typedef T1 Head; + typedef Types19 Tail; +}; + +template +struct Types21 { + typedef T1 Head; + typedef Types20 Tail; +}; + +template +struct Types22 { + typedef T1 Head; + typedef Types21 Tail; +}; + +template +struct Types23 { + typedef T1 Head; + typedef Types22 Tail; +}; + +template +struct Types24 { + typedef T1 Head; + typedef Types23 Tail; +}; + +template +struct Types25 { + typedef T1 Head; + typedef Types24 Tail; +}; + +template +struct Types26 { + typedef T1 Head; + typedef Types25 Tail; +}; + +template +struct Types27 { + typedef T1 Head; + typedef Types26 Tail; +}; + +template +struct Types28 { + typedef T1 Head; + typedef Types27 Tail; +}; + +template +struct Types29 { + typedef T1 Head; + typedef Types28 Tail; +}; + +template +struct Types30 { + typedef T1 Head; + typedef Types29 Tail; +}; + +template +struct Types31 { + typedef T1 Head; + typedef Types30 Tail; +}; + +template +struct Types32 { + typedef T1 Head; + typedef Types31 Tail; +}; + +template +struct Types33 { + typedef T1 Head; + typedef Types32 Tail; +}; + +template +struct Types34 { + typedef T1 Head; + typedef Types33 Tail; +}; + +template +struct Types35 { + typedef T1 Head; + typedef Types34 Tail; +}; + +template +struct Types36 { + typedef T1 Head; + typedef Types35 Tail; +}; + +template +struct Types37 { + typedef T1 Head; + typedef Types36 Tail; +}; + +template +struct Types38 { + typedef T1 Head; + typedef Types37 Tail; +}; + +template +struct Types39 { + typedef T1 Head; + typedef Types38 Tail; +}; + +template +struct Types40 { + typedef T1 Head; + typedef Types39 Tail; +}; + +template +struct Types41 { + typedef T1 Head; + typedef Types40 Tail; +}; + +template +struct Types42 { + typedef T1 Head; + typedef Types41 Tail; +}; + +template +struct Types43 { + typedef T1 Head; + typedef Types42 Tail; +}; + +template +struct Types44 { + typedef T1 Head; + typedef Types43 Tail; +}; + +template +struct Types45 { + typedef T1 Head; + typedef Types44 Tail; +}; + +template +struct Types46 { + typedef T1 Head; + typedef Types45 Tail; +}; + +template +struct Types47 { + typedef T1 Head; + typedef Types46 Tail; +}; + +template +struct Types48 { + typedef T1 Head; + typedef Types47 Tail; +}; + +template +struct Types49 { + typedef T1 Head; + typedef Types48 Tail; +}; + +template +struct Types50 { + typedef T1 Head; + typedef Types49 Tail; +}; + + +} // namespace internal + +// We don't want to require the users to write TypesN<...> directly, +// as that would require them to count the length. Types<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Types +// will appear as Types in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Types, and Google Test will translate +// that to TypesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Types template. +template +struct Types { + typedef internal::Types50 type; +}; + +template <> +struct Types { + typedef internal::Types0 type; +}; +template +struct Types { + typedef internal::Types1 type; +}; +template +struct Types { + typedef internal::Types2 type; +}; +template +struct Types { + typedef internal::Types3 type; +}; +template +struct Types { + typedef internal::Types4 type; +}; +template +struct Types { + typedef internal::Types5 type; +}; +template +struct Types { + typedef internal::Types6 type; +}; +template +struct Types { + typedef internal::Types7 type; +}; +template +struct Types { + typedef internal::Types8 type; +}; +template +struct Types { + typedef internal::Types9 type; +}; +template +struct Types { + typedef internal::Types10 type; +}; +template +struct Types { + typedef internal::Types11 type; +}; +template +struct Types { + typedef internal::Types12 type; +}; +template +struct Types { + typedef internal::Types13 type; +}; +template +struct Types { + typedef internal::Types14 type; +}; +template +struct Types { + typedef internal::Types15 type; +}; +template +struct Types { + typedef internal::Types16 type; +}; +template +struct Types { + typedef internal::Types17 type; +}; +template +struct Types { + typedef internal::Types18 type; +}; +template +struct Types { + typedef internal::Types19 type; +}; +template +struct Types { + typedef internal::Types20 type; +}; +template +struct Types { + typedef internal::Types21 type; +}; +template +struct Types { + typedef internal::Types22 type; +}; +template +struct Types { + typedef internal::Types23 type; +}; +template +struct Types { + typedef internal::Types24 type; +}; +template +struct Types { + typedef internal::Types25 type; +}; +template +struct Types { + typedef internal::Types26 type; +}; +template +struct Types { + typedef internal::Types27 type; +}; +template +struct Types { + typedef internal::Types28 type; +}; +template +struct Types { + typedef internal::Types29 type; +}; +template +struct Types { + typedef internal::Types30 type; +}; +template +struct Types { + typedef internal::Types31 type; +}; +template +struct Types { + typedef internal::Types32 type; +}; +template +struct Types { + typedef internal::Types33 type; +}; +template +struct Types { + typedef internal::Types34 type; +}; +template +struct Types { + typedef internal::Types35 type; +}; +template +struct Types { + typedef internal::Types36 type; +}; +template +struct Types { + typedef internal::Types37 type; +}; +template +struct Types { + typedef internal::Types38 type; +}; +template +struct Types { + typedef internal::Types39 type; +}; +template +struct Types { + typedef internal::Types40 type; +}; +template +struct Types { + typedef internal::Types41 type; +}; +template +struct Types { + typedef internal::Types42 type; +}; +template +struct Types { + typedef internal::Types43 type; +}; +template +struct Types { + typedef internal::Types44 type; +}; +template +struct Types { + typedef internal::Types45 type; +}; +template +struct Types { + typedef internal::Types46 type; +}; +template +struct Types { + typedef internal::Types47 type; +}; +template +struct Types { + typedef internal::Types48 type; +}; +template +struct Types { + typedef internal::Types49 type; +}; + +namespace internal { + +# define GTEST_TEMPLATE_ template class + +// The template "selector" struct TemplateSel is used to +// represent Tmpl, which must be a class template with one type +// parameter, as a type. TemplateSel::Bind::type is defined +// as the type Tmpl. This allows us to actually instantiate the +// template "selected" by TemplateSel. +// +// This trick is necessary for simulating typedef for class templates, +// which C++ doesn't support directly. +template +struct TemplateSel { + template + struct Bind { + typedef Tmpl type; + }; +}; + +# define GTEST_BIND_(TmplSel, T) \ + TmplSel::template Bind::type + +// A unique struct template used as the default value for the +// arguments of class template Templates. This allows us to simulate +// variadic templates (e.g. Templates, Templates, +// and etc), which C++ doesn't support directly. +template +struct NoneT {}; + +// The following family of struct and struct templates are used to +// represent template lists. In particular, TemplatesN represents a list of N templates (T1, T2, ..., and TN). Except +// for Templates0, every struct in the family has two member types: +// Head for the selector of the first template in the list, and Tail +// for the rest of the list. + +// The empty template list. +struct Templates0 {}; + +// Template lists of length 1, 2, 3, and so on. + +template +struct Templates1 { + typedef TemplateSel Head; + typedef Templates0 Tail; +}; +template +struct Templates2 { + typedef TemplateSel Head; + typedef Templates1 Tail; +}; + +template +struct Templates3 { + typedef TemplateSel Head; + typedef Templates2 Tail; +}; + +template +struct Templates4 { + typedef TemplateSel Head; + typedef Templates3 Tail; +}; + +template +struct Templates5 { + typedef TemplateSel Head; + typedef Templates4 Tail; +}; + +template +struct Templates6 { + typedef TemplateSel Head; + typedef Templates5 Tail; +}; + +template +struct Templates7 { + typedef TemplateSel Head; + typedef Templates6 Tail; +}; + +template +struct Templates8 { + typedef TemplateSel Head; + typedef Templates7 Tail; +}; + +template +struct Templates9 { + typedef TemplateSel Head; + typedef Templates8 Tail; +}; + +template +struct Templates10 { + typedef TemplateSel Head; + typedef Templates9 Tail; +}; + +template +struct Templates11 { + typedef TemplateSel Head; + typedef Templates10 Tail; +}; + +template +struct Templates12 { + typedef TemplateSel Head; + typedef Templates11 Tail; +}; + +template +struct Templates13 { + typedef TemplateSel Head; + typedef Templates12 Tail; +}; + +template +struct Templates14 { + typedef TemplateSel Head; + typedef Templates13 Tail; +}; + +template +struct Templates15 { + typedef TemplateSel Head; + typedef Templates14 Tail; +}; + +template +struct Templates16 { + typedef TemplateSel Head; + typedef Templates15 Tail; +}; + +template +struct Templates17 { + typedef TemplateSel Head; + typedef Templates16 Tail; +}; + +template +struct Templates18 { + typedef TemplateSel Head; + typedef Templates17 Tail; +}; + +template +struct Templates19 { + typedef TemplateSel Head; + typedef Templates18 Tail; +}; + +template +struct Templates20 { + typedef TemplateSel Head; + typedef Templates19 Tail; +}; + +template +struct Templates21 { + typedef TemplateSel Head; + typedef Templates20 Tail; +}; + +template +struct Templates22 { + typedef TemplateSel Head; + typedef Templates21 Tail; +}; + +template +struct Templates23 { + typedef TemplateSel Head; + typedef Templates22 Tail; +}; + +template +struct Templates24 { + typedef TemplateSel Head; + typedef Templates23 Tail; +}; + +template +struct Templates25 { + typedef TemplateSel Head; + typedef Templates24 Tail; +}; + +template +struct Templates26 { + typedef TemplateSel Head; + typedef Templates25 Tail; +}; + +template +struct Templates27 { + typedef TemplateSel Head; + typedef Templates26 Tail; +}; + +template +struct Templates28 { + typedef TemplateSel Head; + typedef Templates27 Tail; +}; + +template +struct Templates29 { + typedef TemplateSel Head; + typedef Templates28 Tail; +}; + +template +struct Templates30 { + typedef TemplateSel Head; + typedef Templates29 Tail; +}; + +template +struct Templates31 { + typedef TemplateSel Head; + typedef Templates30 Tail; +}; + +template +struct Templates32 { + typedef TemplateSel Head; + typedef Templates31 Tail; +}; + +template +struct Templates33 { + typedef TemplateSel Head; + typedef Templates32 Tail; +}; + +template +struct Templates34 { + typedef TemplateSel Head; + typedef Templates33 Tail; +}; + +template +struct Templates35 { + typedef TemplateSel Head; + typedef Templates34 Tail; +}; + +template +struct Templates36 { + typedef TemplateSel Head; + typedef Templates35 Tail; +}; + +template +struct Templates37 { + typedef TemplateSel Head; + typedef Templates36 Tail; +}; + +template +struct Templates38 { + typedef TemplateSel Head; + typedef Templates37 Tail; +}; + +template +struct Templates39 { + typedef TemplateSel Head; + typedef Templates38 Tail; +}; + +template +struct Templates40 { + typedef TemplateSel Head; + typedef Templates39 Tail; +}; + +template +struct Templates41 { + typedef TemplateSel Head; + typedef Templates40 Tail; +}; + +template +struct Templates42 { + typedef TemplateSel Head; + typedef Templates41 Tail; +}; + +template +struct Templates43 { + typedef TemplateSel Head; + typedef Templates42 Tail; +}; + +template +struct Templates44 { + typedef TemplateSel Head; + typedef Templates43 Tail; +}; + +template +struct Templates45 { + typedef TemplateSel Head; + typedef Templates44 Tail; +}; + +template +struct Templates46 { + typedef TemplateSel Head; + typedef Templates45 Tail; +}; + +template +struct Templates47 { + typedef TemplateSel Head; + typedef Templates46 Tail; +}; + +template +struct Templates48 { + typedef TemplateSel Head; + typedef Templates47 Tail; +}; + +template +struct Templates49 { + typedef TemplateSel Head; + typedef Templates48 Tail; +}; + +template +struct Templates50 { + typedef TemplateSel Head; + typedef Templates49 Tail; +}; + + +// We don't want to require the users to write TemplatesN<...> directly, +// as that would require them to count the length. Templates<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Templates +// will appear as Templates in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Templates, and Google Test will translate +// that to TemplatesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Templates template. +template +struct Templates { + typedef Templates50 type; +}; + +template <> +struct Templates { + typedef Templates0 type; +}; +template +struct Templates { + typedef Templates1 type; +}; +template +struct Templates { + typedef Templates2 type; +}; +template +struct Templates { + typedef Templates3 type; +}; +template +struct Templates { + typedef Templates4 type; +}; +template +struct Templates { + typedef Templates5 type; +}; +template +struct Templates { + typedef Templates6 type; +}; +template +struct Templates { + typedef Templates7 type; +}; +template +struct Templates { + typedef Templates8 type; +}; +template +struct Templates { + typedef Templates9 type; +}; +template +struct Templates { + typedef Templates10 type; +}; +template +struct Templates { + typedef Templates11 type; +}; +template +struct Templates { + typedef Templates12 type; +}; +template +struct Templates { + typedef Templates13 type; +}; +template +struct Templates { + typedef Templates14 type; +}; +template +struct Templates { + typedef Templates15 type; +}; +template +struct Templates { + typedef Templates16 type; +}; +template +struct Templates { + typedef Templates17 type; +}; +template +struct Templates { + typedef Templates18 type; +}; +template +struct Templates { + typedef Templates19 type; +}; +template +struct Templates { + typedef Templates20 type; +}; +template +struct Templates { + typedef Templates21 type; +}; +template +struct Templates { + typedef Templates22 type; +}; +template +struct Templates { + typedef Templates23 type; +}; +template +struct Templates { + typedef Templates24 type; +}; +template +struct Templates { + typedef Templates25 type; +}; +template +struct Templates { + typedef Templates26 type; +}; +template +struct Templates { + typedef Templates27 type; +}; +template +struct Templates { + typedef Templates28 type; +}; +template +struct Templates { + typedef Templates29 type; +}; +template +struct Templates { + typedef Templates30 type; +}; +template +struct Templates { + typedef Templates31 type; +}; +template +struct Templates { + typedef Templates32 type; +}; +template +struct Templates { + typedef Templates33 type; +}; +template +struct Templates { + typedef Templates34 type; +}; +template +struct Templates { + typedef Templates35 type; +}; +template +struct Templates { + typedef Templates36 type; +}; +template +struct Templates { + typedef Templates37 type; +}; +template +struct Templates { + typedef Templates38 type; +}; +template +struct Templates { + typedef Templates39 type; +}; +template +struct Templates { + typedef Templates40 type; +}; +template +struct Templates { + typedef Templates41 type; +}; +template +struct Templates { + typedef Templates42 type; +}; +template +struct Templates { + typedef Templates43 type; +}; +template +struct Templates { + typedef Templates44 type; +}; +template +struct Templates { + typedef Templates45 type; +}; +template +struct Templates { + typedef Templates46 type; +}; +template +struct Templates { + typedef Templates47 type; +}; +template +struct Templates { + typedef Templates48 type; +}; +template +struct Templates { + typedef Templates49 type; +}; + +// The TypeList template makes it possible to use either a single type +// or a Types<...> list in TYPED_TEST_CASE() and +// INSTANTIATE_TYPED_TEST_CASE_P(). + +template +struct TypeList { typedef Types1 type; }; + +template +struct TypeList > { + typedef typename Types::type type; +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + +// Due to C++ preprocessor weirdness, we need double indirection to +// concatenate two tokens when one of them is __LINE__. Writing +// +// foo ## __LINE__ +// +// will result in the token foo__LINE__, instead of foo followed by +// the current line number. For more details, see +// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6 +#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar) +#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar + +// Google Test defines the testing::Message class to allow construction of +// test messages via the << operator. The idea is that anything +// streamable to std::ostream can be streamed to a testing::Message. +// This allows a user to use his own types in Google Test assertions by +// overloading the << operator. +// +// util/gtl/stl_logging-inl.h overloads << for STL containers. These +// overloads cannot be defined in the std namespace, as that will be +// undefined behavior. Therefore, they are defined in the global +// namespace instead. +// +// C++'s symbol lookup rule (i.e. Koenig lookup) says that these +// overloads are visible in either the std namespace or the global +// namespace, but not other namespaces, including the testing +// namespace which Google Test's Message class is in. +// +// To allow STL containers (and other types that has a << operator +// defined in the global namespace) to be used in Google Test assertions, +// testing::Message must access the custom << operator from the global +// namespace. Hence this helper function. +// +// Note: Jeffrey Yasskin suggested an alternative fix by "using +// ::operator<<;" in the definition of Message's operator<<. That fix +// doesn't require a helper function, but unfortunately doesn't +// compile with MSVC. +template +inline void GTestStreamToHelper(std::ostream* os, const T& val) { + *os << val; +} + +class ProtocolMessage; +namespace proto2 { class Message; } + +namespace testing { + +// Forward declarations. + +class AssertionResult; // Result of an assertion. +class Message; // Represents a failure message. +class Test; // Represents a test. +class TestInfo; // Information about a test. +class TestPartResult; // Result of a test part. +class UnitTest; // A collection of test cases. + +template +::std::string PrintToString(const T& value); + +namespace internal { + +struct TraceInfo; // Information about a trace point. +class ScopedTrace; // Implements scoped trace. +class TestInfoImpl; // Opaque implementation of TestInfo +class UnitTestImpl; // Opaque implementation of UnitTest + +// How many times InitGoogleTest() has been called. +extern int g_init_gtest_count; + +// The text used in failure messages to indicate the start of the +// stack trace. +GTEST_API_ extern const char kStackTraceMarker[]; + +// A secret type that Google Test users don't know about. It has no +// definition on purpose. Therefore it's impossible to create a +// Secret object, which is what we want. +class Secret; + +// Two overloaded helpers for checking at compile time whether an +// expression is a null pointer literal (i.e. NULL or any 0-valued +// compile-time integral constant). Their return values have +// different sizes, so we can use sizeof() to test which version is +// picked by the compiler. These helpers have no implementations, as +// we only need their signatures. +// +// Given IsNullLiteralHelper(x), the compiler will pick the first +// version if x can be implicitly converted to Secret*, and pick the +// second version otherwise. Since Secret is a secret and incomplete +// type, the only expression a user can write that has type Secret* is +// a null pointer literal. Therefore, we know that x is a null +// pointer literal if and only if the first version is picked by the +// compiler. +char IsNullLiteralHelper(Secret* p); +char (&IsNullLiteralHelper(...))[2]; // NOLINT + +// A compile-time bool constant that is true if and only if x is a +// null pointer literal (i.e. NULL or any 0-valued compile-time +// integral constant). +#ifdef GTEST_ELLIPSIS_NEEDS_POD_ +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_IS_NULL_LITERAL_(x) false +#else +# define GTEST_IS_NULL_LITERAL_(x) \ + (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) +#endif // GTEST_ELLIPSIS_NEEDS_POD_ + +// Appends the user-supplied message to the Google-Test-generated message. +GTEST_API_ String AppendUserMessage(const String& gtest_msg, + const Message& user_msg); + +// A helper class for creating scoped traces in user programs. +class GTEST_API_ ScopedTrace { + public: + // The c'tor pushes the given source file location and message onto + // a trace stack maintained by Google Test. + ScopedTrace(const char* file, int line, const Message& message); + + // The d'tor pops the info pushed by the c'tor. + // + // Note that the d'tor is not virtual in order to be efficient. + // Don't inherit from ScopedTrace! + ~ScopedTrace(); + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace); +} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its + // c'tor and d'tor. Therefore it doesn't + // need to be used otherwise. + +// Converts a streamable value to a String. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +String StreamableToString(const T& streamable); + +// The Symbian compiler has a bug that prevents it from selecting the +// correct overload of FormatForComparisonFailureMessage (see below) +// unless we pass the first argument by reference. If we do that, +// however, Visual Age C++ 10.1 generates a compiler error. Therefore +// we only apply the work-around for Symbian. +#if defined(__SYMBIAN32__) +# define GTEST_CREF_WORKAROUND_ const& +#else +# define GTEST_CREF_WORKAROUND_ +#endif + +// When this operand is a const char* or char*, if the other operand +// is a ::std::string or ::string, we print this operand as a C string +// rather than a pointer (we do the same for wide strings); otherwise +// we print it as a pointer to be safe. + +// This internal macro is used to avoid duplicated code. +#define GTEST_FORMAT_IMPL_(operand2_type, operand1_printer)\ +inline String FormatForComparisonFailureMessage(\ + operand2_type::value_type* GTEST_CREF_WORKAROUND_ str, \ + const operand2_type& /*operand2*/) {\ + return operand1_printer(str);\ +}\ +inline String FormatForComparisonFailureMessage(\ + const operand2_type::value_type* GTEST_CREF_WORKAROUND_ str, \ + const operand2_type& /*operand2*/) {\ + return operand1_printer(str);\ +} + +GTEST_FORMAT_IMPL_(::std::string, String::ShowCStringQuoted) +#if GTEST_HAS_STD_WSTRING +GTEST_FORMAT_IMPL_(::std::wstring, String::ShowWideCStringQuoted) +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_STRING +GTEST_FORMAT_IMPL_(::string, String::ShowCStringQuoted) +#endif // GTEST_HAS_GLOBAL_STRING +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_FORMAT_IMPL_(::wstring, String::ShowWideCStringQuoted) +#endif // GTEST_HAS_GLOBAL_WSTRING + +#undef GTEST_FORMAT_IMPL_ + +// The next four overloads handle the case where the operand being +// printed is a char/wchar_t pointer and the other operand is not a +// string/wstring object. In such cases, we just print the operand as +// a pointer to be safe. +#define GTEST_FORMAT_CHAR_PTR_IMPL_(CharType) \ + template \ + String FormatForComparisonFailureMessage(CharType* GTEST_CREF_WORKAROUND_ p, \ + const T&) { \ + return PrintToString(static_cast(p)); \ + } + +GTEST_FORMAT_CHAR_PTR_IMPL_(char) +GTEST_FORMAT_CHAR_PTR_IMPL_(const char) +GTEST_FORMAT_CHAR_PTR_IMPL_(wchar_t) +GTEST_FORMAT_CHAR_PTR_IMPL_(const wchar_t) + +#undef GTEST_FORMAT_CHAR_PTR_IMPL_ + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +GTEST_API_ AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const String& expected_value, + const String& actual_value, + bool ignoring_case); + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +GTEST_API_ String GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value); + +// This template class represents an IEEE floating-point number +// (either single-precision or double-precision, depending on the +// template parameters). +// +// The purpose of this class is to do more sophisticated number +// comparison. (Due to round-off error, etc, it's very unlikely that +// two floating-points will be equal exactly. Hence a naive +// comparison by the == operation often doesn't work.) +// +// Format of IEEE floating-point: +// +// The most-significant bit being the leftmost, an IEEE +// floating-point looks like +// +// sign_bit exponent_bits fraction_bits +// +// Here, sign_bit is a single bit that designates the sign of the +// number. +// +// For float, there are 8 exponent bits and 23 fraction bits. +// +// For double, there are 11 exponent bits and 52 fraction bits. +// +// More details can be found at +// http://en.wikipedia.org/wiki/IEEE_floating-point_standard. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +template +class FloatingPoint { + public: + // Defines the unsigned integer type that has the same size as the + // floating point number. + typedef typename TypeWithSize::UInt Bits; + + // Constants. + + // # of bits in a number. + static const size_t kBitCount = 8*sizeof(RawType); + + // # of fraction bits in a number. + static const size_t kFractionBitCount = + std::numeric_limits::digits - 1; + + // # of exponent bits in a number. + static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount; + + // The mask for the sign bit. + static const Bits kSignBitMask = static_cast(1) << (kBitCount - 1); + + // The mask for the fraction bits. + static const Bits kFractionBitMask = + ~static_cast(0) >> (kExponentBitCount + 1); + + // The mask for the exponent bits. + static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask); + + // How many ULP's (Units in the Last Place) we want to tolerate when + // comparing two numbers. The larger the value, the more error we + // allow. A 0 value means that two numbers must be exactly the same + // to be considered equal. + // + // The maximum error of a single floating-point operation is 0.5 + // units in the last place. On Intel CPU's, all floating-point + // calculations are done with 80-bit precision, while double has 64 + // bits. Therefore, 4 should be enough for ordinary use. + // + // See the following article for more details on ULP: + // http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm. + static const size_t kMaxUlps = 4; + + // Constructs a FloatingPoint from a raw floating-point number. + // + // On an Intel CPU, passing a non-normalized NAN (Not a Number) + // around may change its bits, although the new value is guaranteed + // to be also a NAN. Therefore, don't expect this constructor to + // preserve the bits in x when x is a NAN. + explicit FloatingPoint(const RawType& x) { u_.value_ = x; } + + // Static methods + + // Reinterprets a bit pattern as a floating-point number. + // + // This function is needed to test the AlmostEquals() method. + static RawType ReinterpretBits(const Bits bits) { + FloatingPoint fp(0); + fp.u_.bits_ = bits; + return fp.u_.value_; + } + + // Returns the floating-point number that represent positive infinity. + static RawType Infinity() { + return ReinterpretBits(kExponentBitMask); + } + + // Non-static methods + + // Returns the bits that represents this number. + const Bits &bits() const { return u_.bits_; } + + // Returns the exponent bits of this number. + Bits exponent_bits() const { return kExponentBitMask & u_.bits_; } + + // Returns the fraction bits of this number. + Bits fraction_bits() const { return kFractionBitMask & u_.bits_; } + + // Returns the sign bit of this number. + Bits sign_bit() const { return kSignBitMask & u_.bits_; } + + // Returns true iff this is NAN (not a number). + bool is_nan() const { + // It's a NAN if the exponent bits are all ones and the fraction + // bits are not entirely zeros. + return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0); + } + + // Returns true iff this number is at most kMaxUlps ULP's away from + // rhs. In particular, this function: + // + // - returns false if either number is (or both are) NAN. + // - treats really large numbers as almost equal to infinity. + // - thinks +0.0 and -0.0 are 0 DLP's apart. + bool AlmostEquals(const FloatingPoint& rhs) const { + // The IEEE standard says that any comparison operation involving + // a NAN must return false. + if (is_nan() || rhs.is_nan()) return false; + + return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) + <= kMaxUlps; + } + + private: + // The data type used to store the actual floating-point number. + union FloatingPointUnion { + RawType value_; // The raw floating-point number. + Bits bits_; // The bits that represent the number. + }; + + // Converts an integer from the sign-and-magnitude representation to + // the biased representation. More precisely, let N be 2 to the + // power of (kBitCount - 1), an integer x is represented by the + // unsigned number x + N. + // + // For instance, + // + // -N + 1 (the most negative number representable using + // sign-and-magnitude) is represented by 1; + // 0 is represented by N; and + // N - 1 (the biggest number representable using + // sign-and-magnitude) is represented by 2N - 1. + // + // Read http://en.wikipedia.org/wiki/Signed_number_representations + // for more details on signed number representations. + static Bits SignAndMagnitudeToBiased(const Bits &sam) { + if (kSignBitMask & sam) { + // sam represents a negative number. + return ~sam + 1; + } else { + // sam represents a positive number. + return kSignBitMask | sam; + } + } + + // Given two numbers in the sign-and-magnitude representation, + // returns the distance between them as an unsigned number. + static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1, + const Bits &sam2) { + const Bits biased1 = SignAndMagnitudeToBiased(sam1); + const Bits biased2 = SignAndMagnitudeToBiased(sam2); + return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1); + } + + FloatingPointUnion u_; +}; + +// Typedefs the instances of the FloatingPoint template class that we +// care to use. +typedef FloatingPoint Float; +typedef FloatingPoint Double; + +// In order to catch the mistake of putting tests that use different +// test fixture classes in the same test case, we need to assign +// unique IDs to fixture classes and compare them. The TypeId type is +// used to hold such IDs. The user should treat TypeId as an opaque +// type: the only operation allowed on TypeId values is to compare +// them for equality using the == operator. +typedef const void* TypeId; + +template +class TypeIdHelper { + public: + // dummy_ must not have a const type. Otherwise an overly eager + // compiler (e.g. MSVC 7.1 & 8.0) may try to merge + // TypeIdHelper::dummy_ for different Ts as an "optimization". + static bool dummy_; +}; + +template +bool TypeIdHelper::dummy_ = false; + +// GetTypeId() returns the ID of type T. Different values will be +// returned for different types. Calling the function twice with the +// same type argument is guaranteed to return the same ID. +template +TypeId GetTypeId() { + // The compiler is required to allocate a different + // TypeIdHelper::dummy_ variable for each T used to instantiate + // the template. Therefore, the address of dummy_ is guaranteed to + // be unique. + return &(TypeIdHelper::dummy_); +} + +// Returns the type ID of ::testing::Test. Always call this instead +// of GetTypeId< ::testing::Test>() to get the type ID of +// ::testing::Test, as the latter may give the wrong result due to a +// suspected linker bug when compiling Google Test as a Mac OS X +// framework. +GTEST_API_ TypeId GetTestTypeId(); + +// Defines the abstract factory interface that creates instances +// of a Test object. +class TestFactoryBase { + public: + virtual ~TestFactoryBase() {} + + // Creates a test instance to run. The instance is both created and destroyed + // within TestInfoImpl::Run() + virtual Test* CreateTest() = 0; + + protected: + TestFactoryBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase); +}; + +// This class provides implementation of TeastFactoryBase interface. +// It is used in TEST and TEST_F macros. +template +class TestFactoryImpl : public TestFactoryBase { + public: + virtual Test* CreateTest() { return new TestClass; } +}; + +#if GTEST_OS_WINDOWS + +// Predicate-formatters for implementing the HRESULT checking macros +// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED} +// We pass a long instead of HRESULT to avoid causing an +// include dependency for the HRESULT type. +GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, + long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, + long hr); // NOLINT + +#endif // GTEST_OS_WINDOWS + +// Types of SetUpTestCase() and TearDownTestCase() functions. +typedef void (*SetUpTestCaseFunc)(); +typedef void (*TearDownTestCaseFunc)(); + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param text representation of the test's value parameter, +// or NULL if this is not a type-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +GTEST_API_ TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory); + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr); + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// State of the definition of a type-parameterized test case. +class GTEST_API_ TypedTestCasePState { + public: + TypedTestCasePState() : registered_(false) {} + + // Adds the given test name to defined_test_names_ and return true + // if the test case hasn't been registered; otherwise aborts the + // program. + bool AddTestName(const char* file, int line, const char* case_name, + const char* test_name) { + if (registered_) { + fprintf(stderr, "%s Test %s must be defined before " + "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n", + FormatFileLocation(file, line).c_str(), test_name, case_name); + fflush(stderr); + posix::Abort(); + } + defined_test_names_.insert(test_name); + return true; + } + + // Verifies that registered_tests match the test names in + // defined_test_names_; returns registered_tests if successful, or + // aborts the program otherwise. + const char* VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests); + + private: + bool registered_; + ::std::set defined_test_names_; +}; + +// Skips to the first non-space char after the first comma in 'str'; +// returns NULL if no comma is found in 'str'. +inline const char* SkipComma(const char* str) { + const char* comma = strchr(str, ','); + if (comma == NULL) { + return NULL; + } + while (IsSpace(*(++comma))) {} + return comma; +} + +// Returns the prefix of 'str' before the first comma in it; returns +// the entire string if it contains no comma. +inline String GetPrefixUntilComma(const char* str) { + const char* comma = strchr(str, ','); + return comma == NULL ? String(str) : String(str, comma - str); +} + +// TypeParameterizedTest::Register() +// registers a list of type-parameterized tests with Google Test. The +// return value is insignificant - we just need to return something +// such that we can call this function in a namespace scope. +// +// Implementation note: The GTEST_TEMPLATE_ macro declares a template +// template parameter. It's defined in gtest-type-util.h. +template +class TypeParameterizedTest { + public: + // 'index' is the index of the test in the type list 'Types' + // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, + // Types). Valid values for 'index' are [0, N - 1] where N is the + // length of Types. + static bool Register(const char* prefix, const char* case_name, + const char* test_names, int index) { + typedef typename Types::Head Type; + typedef Fixture FixtureClass; + typedef typename GTEST_BIND_(TestSel, Type) TestClass; + + // First, registers the first type-parameterized test in the type + // list. + MakeAndRegisterTestInfo( + String::Format("%s%s%s/%d", prefix, prefix[0] == '\0' ? "" : "/", + case_name, index).c_str(), + GetPrefixUntilComma(test_names).c_str(), + GetTypeName().c_str(), + NULL, // No value parameter. + GetTypeId(), + TestClass::SetUpTestCase, + TestClass::TearDownTestCase, + new TestFactoryImpl); + + // Next, recurses (at compile time) with the tail of the type list. + return TypeParameterizedTest + ::Register(prefix, case_name, test_names, index + 1); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTest { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/, int /*index*/) { + return true; + } +}; + +// TypeParameterizedTestCase::Register() +// registers *all combinations* of 'Tests' and 'Types' with Google +// Test. The return value is insignificant - we just need to return +// something such that we can call this function in a namespace scope. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* prefix, const char* case_name, + const char* test_names) { + typedef typename Tests::Head Head; + + // First, register the first test in 'Test' for each type in 'Types'. + TypeParameterizedTest::Register( + prefix, case_name, test_names, 0); + + // Next, recurses (at compile time) with the tail of the test list. + return TypeParameterizedTestCase + ::Register(prefix, case_name, SkipComma(test_names)); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/) { + return true; + } +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// Returns the current OS stack trace as a String. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +GTEST_API_ String GetCurrentOsStackTraceExceptTop(UnitTest* unit_test, + int skip_count); + +// Helpers for suppressing warnings on unreachable code or constant +// condition. + +// Always returns true. +GTEST_API_ bool AlwaysTrue(); + +// Always returns false. +inline bool AlwaysFalse() { return !AlwaysTrue(); } + +// Helper for suppressing false warning from Clang on a const char* +// variable declared in a conditional expression always being NULL in +// the else branch. +struct GTEST_API_ ConstCharPtr { + ConstCharPtr(const char* str) : value(str) {} + operator bool() const { return true; } + const char* value; +}; + +// A simple Linear Congruential Generator for generating random +// numbers with a uniform distribution. Unlike rand() and srand(), it +// doesn't use global state (and therefore can't interfere with user +// code). Unlike rand_r(), it's portable. An LCG isn't very random, +// but it's good enough for our purposes. +class GTEST_API_ Random { + public: + static const UInt32 kMaxRange = 1u << 31; + + explicit Random(UInt32 seed) : state_(seed) {} + + void Reseed(UInt32 seed) { state_ = seed; } + + // Generates a random number from [0, range). Crashes if 'range' is + // 0 or greater than kMaxRange. + UInt32 Generate(UInt32 range); + + private: + UInt32 state_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(Random); +}; + +// Defining a variable of type CompileAssertTypesEqual will cause a +// compiler error iff T1 and T2 are different types. +template +struct CompileAssertTypesEqual; + +template +struct CompileAssertTypesEqual { +}; + +// Removes the reference from a type if it is a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::remove_reference, which is not widely available yet. +template +struct RemoveReference { typedef T type; }; // NOLINT +template +struct RemoveReference { typedef T type; }; // NOLINT + +// A handy wrapper around RemoveReference that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_REFERENCE_(T) \ + typename ::testing::internal::RemoveReference::type + +// Removes const from a type if it is a const type, otherwise leaves +// it unchanged. This is the same as tr1::remove_const, which is not +// widely available yet. +template +struct RemoveConst { typedef T type; }; // NOLINT +template +struct RemoveConst { typedef T type; }; // NOLINT + +// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above +// definition to fail to remove the const in 'const int[3]' and 'const +// char[3][4]'. The following specialization works around the bug. +// However, it causes trouble with GCC and thus needs to be +// conditionally compiled. +#if defined(_MSC_VER) || defined(__SUNPRO_CC) || defined(__IBMCPP__) +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; +#endif + +// A handy wrapper around RemoveConst that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_CONST_(T) \ + typename ::testing::internal::RemoveConst::type + +// Turns const U&, U&, const U, and U all into U. +#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \ + GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) + +// Adds reference to a type if it is not a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::add_reference, which is not widely available yet. +template +struct AddReference { typedef T& type; }; // NOLINT +template +struct AddReference { typedef T& type; }; // NOLINT + +// A handy wrapper around AddReference that works when the argument T +// depends on template parameters. +#define GTEST_ADD_REFERENCE_(T) \ + typename ::testing::internal::AddReference::type + +// Adds a reference to const on top of T as necessary. For example, +// it transforms +// +// char ==> const char& +// const char ==> const char& +// char& ==> const char& +// const char& ==> const char& +// +// The argument T must depend on some template parameters. +#define GTEST_REFERENCE_TO_CONST_(T) \ + GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) + +// ImplicitlyConvertible::value is a compile-time bool +// constant that's true iff type From can be implicitly converted to +// type To. +template +class ImplicitlyConvertible { + private: + // We need the following helper functions only for their types. + // They have no implementations. + + // MakeFrom() is an expression whose type is From. We cannot simply + // use From(), as the type From may not have a public default + // constructor. + static From MakeFrom(); + + // These two functions are overloaded. Given an expression + // Helper(x), the compiler will pick the first version if x can be + // implicitly converted to type To; otherwise it will pick the + // second version. + // + // The first version returns a value of size 1, and the second + // version returns a value of size 2. Therefore, by checking the + // size of Helper(x), which can be done at compile time, we can tell + // which version of Helper() is used, and hence whether x can be + // implicitly converted to type To. + static char Helper(To); + static char (&Helper(...))[2]; // NOLINT + + // We have to put the 'public' section after the 'private' section, + // or MSVC refuses to compile the code. + public: + // MSVC warns about implicitly converting from double to int for + // possible loss of data, so we need to temporarily disable the + // warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4244) // Temporarily disables warning 4244. + + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +# pragma warning(pop) // Restores the warning state. +#elif defined(__BORLANDC__) + // C++Builder cannot use member overload resolution during template + // instantiation. The simplest workaround is to use its C++0x type traits + // functions (C++Builder 2009 and above only). + static const bool value = __is_convertible(From, To); +#else + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +#endif // _MSV_VER +}; +template +const bool ImplicitlyConvertible::value; + +// IsAProtocolMessage::value is a compile-time bool constant that's +// true iff T is type ProtocolMessage, proto2::Message, or a subclass +// of those. +template +struct IsAProtocolMessage + : public bool_constant< + ImplicitlyConvertible::value || + ImplicitlyConvertible::value> { +}; + +// When the compiler sees expression IsContainerTest(0), if C is an +// STL-style container class, the first overload of IsContainerTest +// will be viable (since both C::iterator* and C::const_iterator* are +// valid types and NULL can be implicitly converted to them). It will +// be picked over the second overload as 'int' is a perfect match for +// the type of argument 0. If C::iterator or C::const_iterator is not +// a valid type, the first overload is not viable, and the second +// overload will be picked. Therefore, we can determine whether C is +// a container class by checking the type of IsContainerTest(0). +// The value of the expression is insignificant. +// +// Note that we look for both C::iterator and C::const_iterator. The +// reason is that C++ injects the name of a class as a member of the +// class itself (e.g. you can refer to class iterator as either +// 'iterator' or 'iterator::iterator'). If we look for C::iterator +// only, for example, we would mistakenly think that a class named +// iterator is an STL container. +// +// Also note that the simpler approach of overloading +// IsContainerTest(typename C::const_iterator*) and +// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++. +typedef int IsContainer; +template +IsContainer IsContainerTest(int /* dummy */, + typename C::iterator* /* it */ = NULL, + typename C::const_iterator* /* const_it */ = NULL) { + return 0; +} + +typedef char IsNotContainer; +template +IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; } + +// EnableIf::type is void when 'Cond' is true, and +// undefined when 'Cond' is false. To use SFINAE to make a function +// overload only apply when a particular expression is true, add +// "typename EnableIf::type* = 0" as the last parameter. +template struct EnableIf; +template<> struct EnableIf { typedef void type; }; // NOLINT + +// Utilities for native arrays. + +// ArrayEq() compares two k-dimensional native arrays using the +// elements' operator==, where k can be any integer >= 0. When k is +// 0, ArrayEq() degenerates into comparing a single pair of values. + +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs); + +// This generic version is used when k is 0. +template +inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; } + +// This overload is used when k >= 1. +template +inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { + return internal::ArrayEq(lhs, N, rhs); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous ArrayEq() function, arrays with different sizes would +// lead to different copies of the template code. +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs) { + for (size_t i = 0; i != size; i++) { + if (!internal::ArrayEq(lhs[i], rhs[i])) + return false; + } + return true; +} + +// Finds the first element in the iterator range [begin, end) that +// equals elem. Element may be a native array type itself. +template +Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) { + for (Iter it = begin; it != end; ++it) { + if (internal::ArrayEq(*it, elem)) + return it; + } + return end; +} + +// CopyArray() copies a k-dimensional native array using the elements' +// operator=, where k can be any integer >= 0. When k is 0, +// CopyArray() degenerates into copying a single value. + +template +void CopyArray(const T* from, size_t size, U* to); + +// This generic version is used when k is 0. +template +inline void CopyArray(const T& from, U* to) { *to = from; } + +// This overload is used when k >= 1. +template +inline void CopyArray(const T(&from)[N], U(*to)[N]) { + internal::CopyArray(from, N, *to); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous CopyArray() function, arrays with different sizes +// would lead to different copies of the template code. +template +void CopyArray(const T* from, size_t size, U* to) { + for (size_t i = 0; i != size; i++) { + internal::CopyArray(from[i], to + i); + } +} + +// The relation between an NativeArray object (see below) and the +// native array it represents. +enum RelationToSource { + kReference, // The NativeArray references the native array. + kCopy // The NativeArray makes a copy of the native array and + // owns the copy. +}; + +// Adapts a native array to a read-only STL-style container. Instead +// of the complete STL container concept, this adaptor only implements +// members useful for Google Mock's container matchers. New members +// should be added as needed. To simplify the implementation, we only +// support Element being a raw type (i.e. having no top-level const or +// reference modifier). It's the client's responsibility to satisfy +// this requirement. Element can be an array type itself (hence +// multi-dimensional arrays are supported). +template +class NativeArray { + public: + // STL-style container typedefs. + typedef Element value_type; + typedef Element* iterator; + typedef const Element* const_iterator; + + // Constructs from a native array. + NativeArray(const Element* array, size_t count, RelationToSource relation) { + Init(array, count, relation); + } + + // Copy constructor. + NativeArray(const NativeArray& rhs) { + Init(rhs.array_, rhs.size_, rhs.relation_to_source_); + } + + ~NativeArray() { + // Ensures that the user doesn't instantiate NativeArray with a + // const or reference type. + static_cast(StaticAssertTypeEqHelper()); + if (relation_to_source_ == kCopy) + delete[] array_; + } + + // STL-style container methods. + size_t size() const { return size_; } + const_iterator begin() const { return array_; } + const_iterator end() const { return array_ + size_; } + bool operator==(const NativeArray& rhs) const { + return size() == rhs.size() && + ArrayEq(begin(), size(), rhs.begin()); + } + + private: + // Initializes this object; makes a copy of the input array if + // 'relation' is kCopy. + void Init(const Element* array, size_t a_size, RelationToSource relation) { + if (relation == kReference) { + array_ = array; + } else { + Element* const copy = new Element[a_size]; + CopyArray(array, a_size, copy); + array_ = copy; + } + size_ = a_size; + relation_to_source_ = relation; + } + + const Element* array_; + size_t size_; + RelationToSource relation_to_source_; + + GTEST_DISALLOW_ASSIGN_(NativeArray); +}; + +} // namespace internal +} // namespace testing + +#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ + ::testing::internal::AssertHelper(result_type, file, line, message) \ + = ::testing::Message() + +#define GTEST_MESSAGE_(message, result_type) \ + GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) + +#define GTEST_FATAL_FAILURE_(message) \ + return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) + +#define GTEST_NONFATAL_FAILURE_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) + +#define GTEST_SUCCESS_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess) + +// Suppresses MSVC warnings 4072 (unreachable code) for the code following +// statement if it returns or throws (or doesn't return or throw in some +// situations). +#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \ + if (::testing::internal::AlwaysTrue()) { statement; } + +#define GTEST_TEST_THROW_(statement, expected_exception, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::ConstCharPtr gtest_msg = "") { \ + bool gtest_caught_expected = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (expected_exception const&) { \ + gtest_caught_expected = true; \ + } \ + catch (...) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws a different type."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + if (!gtest_caught_expected) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws nothing."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \ + fail(gtest_msg.value) + +#define GTEST_TEST_NO_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \ + fail("Expected: " #statement " doesn't throw an exception.\n" \ + " Actual: it throws.") + +#define GTEST_TEST_ANY_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + bool gtest_caught_any = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + gtest_caught_any = true; \ + } \ + if (!gtest_caught_any) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \ + fail("Expected: " #statement " throws an exception.\n" \ + " Actual: it doesn't.") + + +// Implements Boolean test assertions such as EXPECT_TRUE. expression can be +// either a boolean expression or an AssertionResult. text is a textual +// represenation of expression as it was passed into the EXPECT_TRUE. +#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar_ = \ + ::testing::AssertionResult(expression)) \ + ; \ + else \ + fail(::testing::internal::GetBoolAssertionFailureMessage(\ + gtest_ar_, text, #actual, #expected).c_str()) + +#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \ + fail("Expected: " #statement " doesn't generate new fatal " \ + "failures in the current thread.\n" \ + " Actual: it does.") + +// Expands to the name of the class that implements the given test. +#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + test_case_name##_##test_name##_Test + +// Helper macro for defining tests. +#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\ +class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ + public:\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ + private:\ + virtual void TestBody();\ + static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ +};\ +\ +::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ + ::test_info_ =\ + ::testing::internal::MakeAndRegisterTestInfo(\ + #test_case_name, #test_name, NULL, NULL, \ + (parent_id), \ + parent_class::SetUpTestCase, \ + parent_class::TearDownTestCase, \ + new ::testing::internal::TestFactoryImpl<\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\ +void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for death tests. It is +// #included by gtest.h so a user doesn't need to include this +// directly. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines internal utilities needed for implementing +// death tests. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ + + +#include + +namespace testing { +namespace internal { + +GTEST_DECLARE_string_(internal_run_death_test); + +// Names of the flags (needed for parsing Google Test flags). +const char kDeathTestStyleFlag[] = "death_test_style"; +const char kDeathTestUseFork[] = "death_test_use_fork"; +const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; + +#if GTEST_HAS_DEATH_TEST + +// DeathTest is a class that hides much of the complexity of the +// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method +// returns a concrete class that depends on the prevailing death test +// style, as defined by the --gtest_death_test_style and/or +// --gtest_internal_run_death_test flags. + +// In describing the results of death tests, these terms are used with +// the corresponding definitions: +// +// exit status: The integer exit information in the format specified +// by wait(2) +// exit code: The integer code passed to exit(3), _exit(2), or +// returned from main() +class GTEST_API_ DeathTest { + public: + // Create returns false if there was an error determining the + // appropriate action to take for the current death test; for example, + // if the gtest_death_test_style flag is set to an invalid value. + // The LastMessage method will return a more detailed message in that + // case. Otherwise, the DeathTest pointer pointed to by the "test" + // argument is set. If the death test should be skipped, the pointer + // is set to NULL; otherwise, it is set to the address of a new concrete + // DeathTest object that controls the execution of the current test. + static bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); + DeathTest(); + virtual ~DeathTest() { } + + // A helper class that aborts a death test when it's deleted. + class ReturnSentinel { + public: + explicit ReturnSentinel(DeathTest* test) : test_(test) { } + ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); } + private: + DeathTest* const test_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel); + } GTEST_ATTRIBUTE_UNUSED_; + + // An enumeration of possible roles that may be taken when a death + // test is encountered. EXECUTE means that the death test logic should + // be executed immediately. OVERSEE means that the program should prepare + // the appropriate environment for a child process to execute the death + // test, then wait for it to complete. + enum TestRole { OVERSEE_TEST, EXECUTE_TEST }; + + // An enumeration of the three reasons that a test might be aborted. + enum AbortReason { + TEST_ENCOUNTERED_RETURN_STATEMENT, + TEST_THREW_EXCEPTION, + TEST_DID_NOT_DIE + }; + + // Assumes one of the above roles. + virtual TestRole AssumeRole() = 0; + + // Waits for the death test to finish and returns its status. + virtual int Wait() = 0; + + // Returns true if the death test passed; that is, the test process + // exited during the test, its exit status matches a user-supplied + // predicate, and its stderr output matches a user-supplied regular + // expression. + // The user-supplied predicate may be a macro expression rather + // than a function pointer or functor, or else Wait and Passed could + // be combined. + virtual bool Passed(bool exit_status_ok) = 0; + + // Signals that the death test did not die as expected. + virtual void Abort(AbortReason reason) = 0; + + // Returns a human-readable outcome message regarding the outcome of + // the last death test. + static const char* LastMessage(); + + static void set_last_death_test_message(const String& message); + + private: + // A string containing a description of the outcome of the last death test. + static String last_death_test_message_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest); +}; + +// Factory interface for death tests. May be mocked out for testing. +class DeathTestFactory { + public: + virtual ~DeathTestFactory() { } + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) = 0; +}; + +// A concrete DeathTestFactory implementation for normal use. +class DefaultDeathTestFactory : public DeathTestFactory { + public: + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); +}; + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +GTEST_API_ bool ExitedUnsuccessfully(int exit_status); + +// Traps C++ exceptions escaping statement and reports them as test +// failures. Note that trapping SEH exceptions is not implemented here. +# if GTEST_HAS_EXCEPTIONS +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (const ::std::exception& gtest_exception) { \ + fprintf(\ + stderr, \ + "\n%s: Caught std::exception-derived exception escaping the " \ + "death test statement. Exception message: %s\n", \ + ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ + gtest_exception.what()); \ + fflush(stderr); \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } catch (...) { \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } + +# else +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) + +# endif + +// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*, +// ASSERT_EXIT*, and EXPECT_EXIT*. +# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + const ::testing::internal::RE& gtest_regex = (regex); \ + ::testing::internal::DeathTest* gtest_dt; \ + if (!::testing::internal::DeathTest::Create(#statement, >est_regex, \ + __FILE__, __LINE__, >est_dt)) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + if (gtest_dt != NULL) { \ + ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \ + gtest_dt_ptr(gtest_dt); \ + switch (gtest_dt->AssumeRole()) { \ + case ::testing::internal::DeathTest::OVERSEE_TEST: \ + if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + break; \ + case ::testing::internal::DeathTest::EXECUTE_TEST: { \ + ::testing::internal::DeathTest::ReturnSentinel \ + gtest_sentinel(gtest_dt); \ + GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ + gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ + break; \ + } \ + default: \ + break; \ + } \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \ + fail(::testing::internal::DeathTest::LastMessage()) +// The symbol "fail" here expands to something into which a message +// can be streamed. + +// A class representing the parsed contents of the +// --gtest_internal_run_death_test flag, as it existed when +// RUN_ALL_TESTS was called. +class InternalRunDeathTestFlag { + public: + InternalRunDeathTestFlag(const String& a_file, + int a_line, + int an_index, + int a_write_fd) + : file_(a_file), line_(a_line), index_(an_index), + write_fd_(a_write_fd) {} + + ~InternalRunDeathTestFlag() { + if (write_fd_ >= 0) + posix::Close(write_fd_); + } + + String file() const { return file_; } + int line() const { return line_; } + int index() const { return index_; } + int write_fd() const { return write_fd_; } + + private: + String file_; + int line_; + int index_; + int write_fd_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); +}; + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); + +#else // GTEST_HAS_DEATH_TEST + +// This macro is used for implementing macros such as +// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where +// death tests are not supported. Those macros must compile on such systems +// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on +// systems that support death tests. This allows one to write such a macro +// on a system that does not support death tests and be sure that it will +// compile on a death-test supporting system. +// +// Parameters: +// statement - A statement that a macro such as EXPECT_DEATH would test +// for program termination. This macro has to make sure this +// statement is compiled but not executed, to ensure that +// EXPECT_DEATH_IF_SUPPORTED compiles with a certain +// parameter iff EXPECT_DEATH compiles with it. +// regex - A regex that a macro such as EXPECT_DEATH would use to test +// the output of statement. This parameter has to be +// compiled but not evaluated by this macro, to ensure that +// this macro only accepts expressions that a macro such as +// EXPECT_DEATH would accept. +// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED +// and a return statement for ASSERT_DEATH_IF_SUPPORTED. +// This ensures that ASSERT_DEATH_IF_SUPPORTED will not +// compile inside functions where ASSERT_DEATH doesn't +// compile. +// +// The branch that has an always false condition is used to ensure that +// statement and regex are compiled (and thus syntactically correct) but +// never executed. The unreachable code macro protects the terminator +// statement from generating an 'unreachable code' warning in case +// statement unconditionally returns or throws. The Message constructor at +// the end allows the syntax of streaming additional messages into the +// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. +# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_LOG_(WARNING) \ + << "Death tests are not supported on this platform.\n" \ + << "Statement '" #statement "' cannot be verified."; \ + } else if (::testing::internal::AlwaysFalse()) { \ + ::testing::internal::RE::PartialMatch(".*", (regex)); \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + terminator; \ + } else \ + ::testing::Message() + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ + +namespace testing { + +// This flag controls the style of death tests. Valid values are "threadsafe", +// meaning that the death test child process will re-execute the test binary +// from the start, running only a single death test, or "fast", +// meaning that the child process will execute the test logic immediately +// after forking. +GTEST_DECLARE_string_(death_test_style); + +#if GTEST_HAS_DEATH_TEST + +// The following macros are useful for writing death tests. + +// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is +// executed: +// +// 1. It generates a warning if there is more than one active +// thread. This is because it's safe to fork() or clone() only +// when there is a single thread. +// +// 2. The parent process clone()s a sub-process and runs the death +// test in it; the sub-process exits with code 0 at the end of the +// death test, if it hasn't exited already. +// +// 3. The parent process waits for the sub-process to terminate. +// +// 4. The parent process checks the exit code and error message of +// the sub-process. +// +// Examples: +// +// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number"); +// for (int i = 0; i < 5; i++) { +// EXPECT_DEATH(server.ProcessRequest(i), +// "Invalid request .* in ProcessRequest()") +// << "Failed to die on request " << i); +// } +// +// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting"); +// +// bool KilledBySIGHUP(int exit_code) { +// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP; +// } +// +// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!"); +// +// On the regular expressions used in death tests: +// +// On POSIX-compliant systems (*nix), we use the library, +// which uses the POSIX extended regex syntax. +// +// On other platforms (e.g. Windows), we only support a simple regex +// syntax implemented as part of Google Test. This limited +// implementation should be enough most of the time when writing +// death tests; though it lacks many features you can find in PCRE +// or POSIX extended regex syntax. For example, we don't support +// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and +// repetition count ("x{5,7}"), among others. +// +// Below is the syntax that we do support. We chose it to be a +// subset of both PCRE and POSIX extended regex, so it's easy to +// learn wherever you come from. In the following: 'A' denotes a +// literal character, period (.), or a single \\ escape sequence; +// 'x' and 'y' denote regular expressions; 'm' and 'n' are for +// natural numbers. +// +// c matches any literal character c +// \\d matches any decimal digit +// \\D matches any character that's not a decimal digit +// \\f matches \f +// \\n matches \n +// \\r matches \r +// \\s matches any ASCII whitespace, including \n +// \\S matches any character that's not a whitespace +// \\t matches \t +// \\v matches \v +// \\w matches any letter, _, or decimal digit +// \\W matches any character that \\w doesn't match +// \\c matches any literal character c, which must be a punctuation +// . matches any single character except \n +// A? matches 0 or 1 occurrences of A +// A* matches 0 or many occurrences of A +// A+ matches 1 or many occurrences of A +// ^ matches the beginning of a string (not that of each line) +// $ matches the end of a string (not that of each line) +// xy matches x followed by y +// +// If you accidentally use PCRE or POSIX extended regex features +// not implemented by us, you will get a run-time failure. In that +// case, please try to rewrite your regular expression within the +// above syntax. +// +// This implementation is *not* meant to be as highly tuned or robust +// as a compiled regex library, but should perform well enough for a +// death test, which already incurs significant overhead by launching +// a child process. +// +// Known caveats: +// +// A "threadsafe" style death test obtains the path to the test +// program from argv[0] and re-executes it in the sub-process. For +// simplicity, the current implementation doesn't search the PATH +// when launching the sub-process. This means that the user must +// invoke the test program via a path that contains at least one +// path separator (e.g. path/to/foo_test and +// /absolute/path/to/bar_test are fine, but foo_test is not). This +// is rarely a problem as people usually don't put the test binary +// directory in PATH. +// +// TODO(wan@google.com): make thread-safe death tests search the PATH. + +// Asserts that a given statement causes the program to exit, with an +// integer exit status that satisfies predicate, and emitting error output +// that matches regex. +# define ASSERT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) + +// Like ASSERT_EXIT, but continues on to successive tests in the +// test case, if any: +# define EXPECT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) + +// Asserts that a given statement causes the program to exit, either by +// explicitly exiting with a nonzero exit code or being killed by a +// signal, and emitting error output that matches regex. +# define ASSERT_DEATH(statement, regex) \ + ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Like ASSERT_DEATH, but continues on to successive tests in the +// test case, if any: +# define EXPECT_DEATH(statement, regex) \ + EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: + +// Tests that an exit code describes a normal exit with a given exit code. +class GTEST_API_ ExitedWithCode { + public: + explicit ExitedWithCode(int exit_code); + bool operator()(int exit_status) const; + private: + // No implementation - assignment is unsupported. + void operator=(const ExitedWithCode& other); + + const int exit_code_; +}; + +# if !GTEST_OS_WINDOWS +// Tests that an exit code describes an exit due to termination by a +// given signal. +class GTEST_API_ KilledBySignal { + public: + explicit KilledBySignal(int signum); + bool operator()(int exit_status) const; + private: + const int signum_; +}; +# endif // !GTEST_OS_WINDOWS + +// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode. +// The death testing framework causes this to have interesting semantics, +// since the sideeffects of the call are only visible in opt mode, and not +// in debug mode. +// +// In practice, this can be used to test functions that utilize the +// LOG(DFATAL) macro using the following style: +// +// int DieInDebugOr12(int* sideeffect) { +// if (sideeffect) { +// *sideeffect = 12; +// } +// LOG(DFATAL) << "death"; +// return 12; +// } +// +// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) { +// int sideeffect = 0; +// // Only asserts in dbg. +// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death"); +// +// #ifdef NDEBUG +// // opt-mode has sideeffect visible. +// EXPECT_EQ(12, sideeffect); +// #else +// // dbg-mode no visible sideeffect. +// EXPECT_EQ(0, sideeffect); +// #endif +// } +// +// This will assert that DieInDebugReturn12InOpt() crashes in debug +// mode, usually due to a DCHECK or LOG(DFATAL), but returns the +// appropriate fallback value (12 in this case) in opt mode. If you +// need to test that a function has appropriate side-effects in opt +// mode, include assertions against the side-effects. A general +// pattern for this is: +// +// EXPECT_DEBUG_DEATH({ +// // Side-effects here will have an effect after this statement in +// // opt mode, but none in debug mode. +// EXPECT_EQ(12, DieInDebugOr12(&sideeffect)); +// }, "death"); +// +# ifdef NDEBUG + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + do { statement; } while (::testing::internal::AlwaysFalse()) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + do { statement; } while (::testing::internal::AlwaysFalse()) + +# else + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + EXPECT_DEATH(statement, regex) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + ASSERT_DEATH(statement, regex) + +# endif // NDEBUG for EXPECT_DEBUG_DEATH +#endif // GTEST_HAS_DEATH_TEST + +// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and +// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if +// death tests are supported; otherwise they just issue a warning. This is +// useful when you are combining death test assertions with normal test +// assertions in one test. +#if GTEST_HAS_DEATH_TEST +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + EXPECT_DEATH(statement, regex) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + ASSERT_DEATH(statement, regex) +#else +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return) +#endif + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the Message class. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! + +#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ + +#include + + +namespace testing { + +// The Message class works like an ostream repeater. +// +// Typical usage: +// +// 1. You stream a bunch of values to a Message object. +// It will remember the text in a stringstream. +// 2. Then you stream the Message object to an ostream. +// This causes the text in the Message to be streamed +// to the ostream. +// +// For example; +// +// testing::Message foo; +// foo << 1 << " != " << 2; +// std::cout << foo; +// +// will print "1 != 2". +// +// Message is not intended to be inherited from. In particular, its +// destructor is not virtual. +// +// Note that stringstream behaves differently in gcc and in MSVC. You +// can stream a NULL char pointer to it in the former, but not in the +// latter (it causes an access violation if you do). The Message +// class hides this difference by treating a NULL char pointer as +// "(null)". +class GTEST_API_ Message { + private: + // The type of basic IO manipulators (endl, ends, and flush) for + // narrow streams. + typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&); + + public: + // Constructs an empty Message. + // We allocate the stringstream separately because otherwise each use of + // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's + // stack frame leading to huge stack frames in some cases; gcc does not reuse + // the stack space. + Message() : ss_(new ::std::stringstream) { + // By default, we want there to be enough precision when printing + // a double to a Message. + *ss_ << std::setprecision(std::numeric_limits::digits10 + 2); + } + + // Copy constructor. + Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT + *ss_ << msg.GetString(); + } + + // Constructs a Message from a C-string. + explicit Message(const char* str) : ss_(new ::std::stringstream) { + *ss_ << str; + } + +#if GTEST_OS_SYMBIAN + // Streams a value (either a pointer or not) to this object. + template + inline Message& operator <<(const T& value) { + StreamHelper(typename internal::is_pointer::type(), value); + return *this; + } +#else + // Streams a non-pointer value to this object. + template + inline Message& operator <<(const T& val) { + ::GTestStreamToHelper(ss_.get(), val); + return *this; + } + + // Streams a pointer value to this object. + // + // This function is an overload of the previous one. When you + // stream a pointer to a Message, this definition will be used as it + // is more specialized. (The C++ Standard, section + // [temp.func.order].) If you stream a non-pointer, then the + // previous definition will be used. + // + // The reason for this overload is that streaming a NULL pointer to + // ostream is undefined behavior. Depending on the compiler, you + // may get "0", "(nil)", "(null)", or an access violation. To + // ensure consistent result across compilers, we always treat NULL + // as "(null)". + template + inline Message& operator <<(T* const& pointer) { // NOLINT + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + return *this; + } +#endif // GTEST_OS_SYMBIAN + + // Since the basic IO manipulators are overloaded for both narrow + // and wide streams, we have to provide this specialized definition + // of operator <<, even though its body is the same as the + // templatized version above. Without this definition, streaming + // endl or other basic IO manipulators to Message will confuse the + // compiler. + Message& operator <<(BasicNarrowIoManip val) { + *ss_ << val; + return *this; + } + + // Instead of 1/0, we want to see true/false for bool values. + Message& operator <<(bool b) { + return *this << (b ? "true" : "false"); + } + + // These two overloads allow streaming a wide C string to a Message + // using the UTF-8 encoding. + Message& operator <<(const wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + Message& operator <<(wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + +#if GTEST_HAS_STD_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::std::wstring& wstr); +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::wstring& wstr); +#endif // GTEST_HAS_GLOBAL_WSTRING + + // Gets the text streamed to this object so far as a String. + // Each '\0' character in the buffer is replaced with "\\0". + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + internal::String GetString() const { + return internal::StringStreamToString(ss_.get()); + } + + private: + +#if GTEST_OS_SYMBIAN + // These are needed as the Nokia Symbian Compiler cannot decide between + // const T& and const T* in a function template. The Nokia compiler _can_ + // decide between class template specializations for T and T*, so a + // tr1::type_traits-like is_pointer works, and we can overload on that. + template + inline void StreamHelper(internal::true_type /*dummy*/, T* pointer) { + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + } + template + inline void StreamHelper(internal::false_type /*dummy*/, const T& value) { + ::GTestStreamToHelper(ss_.get(), value); + } +#endif // GTEST_OS_SYMBIAN + + // We'll hold the text streamed to this object here. + const internal::scoped_ptr< ::std::stringstream> ss_; + + // We declare (but don't implement) this to prevent the compiler + // from implementing the assignment operator. + void operator=(const Message&); +}; + +// Streams a Message to an ostream. +inline std::ostream& operator <<(std::ostream& os, const Message& sb) { + return os << sb.GetString(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +// This file was GENERATED by command: +// pump.py gtest-param-test.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: vladl@google.com (Vlad Losev) +// +// Macros and functions for implementing parameterized tests +// in Google C++ Testing Framework (Google Test) +// +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ + + +// Value-parameterized tests allow you to test your code with different +// parameters without writing multiple copies of the same test. +// +// Here is how you use value-parameterized tests: + +#if 0 + +// To write value-parameterized tests, first you should define a fixture +// class. It is usually derived from testing::TestWithParam (see below for +// another inheritance scheme that's sometimes useful in more complicated +// class hierarchies), where the type of your parameter values. +// TestWithParam is itself derived from testing::Test. T can be any +// copyable type. If it's a raw pointer, you are responsible for managing the +// lifespan of the pointed values. + +class FooTest : public ::testing::TestWithParam { + // You can implement all the usual class fixture members here. +}; + +// Then, use the TEST_P macro to define as many parameterized tests +// for this fixture as you want. The _P suffix is for "parameterized" +// or "pattern", whichever you prefer to think. + +TEST_P(FooTest, DoesBlah) { + // Inside a test, access the test parameter with the GetParam() method + // of the TestWithParam class: + EXPECT_TRUE(foo.Blah(GetParam())); + ... +} + +TEST_P(FooTest, HasBlahBlah) { + ... +} + +// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test +// case with any set of parameters you want. Google Test defines a number +// of functions for generating test parameters. They return what we call +// (surprise!) parameter generators. Here is a summary of them, which +// are all in the testing namespace: +// +// +// Range(begin, end [, step]) - Yields values {begin, begin+step, +// begin+step+step, ...}. The values do not +// include end. step defaults to 1. +// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. +// ValuesIn(container) - Yields values from a C-style array, an STL +// ValuesIn(begin,end) container, or an iterator range [begin, end). +// Bool() - Yields sequence {false, true}. +// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product +// for the math savvy) of the values generated +// by the N generators. +// +// For more details, see comments at the definitions of these functions below +// in this file. +// +// The following statement will instantiate tests from the FooTest test case +// each with parameter values "meeny", "miny", and "moe". + +INSTANTIATE_TEST_CASE_P(InstantiationName, + FooTest, + Values("meeny", "miny", "moe")); + +// To distinguish different instances of the pattern, (yes, you +// can instantiate it more then once) the first argument to the +// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the +// actual test case name. Remember to pick unique prefixes for different +// instantiations. The tests from the instantiation above will have +// these names: +// +// * InstantiationName/FooTest.DoesBlah/0 for "meeny" +// * InstantiationName/FooTest.DoesBlah/1 for "miny" +// * InstantiationName/FooTest.DoesBlah/2 for "moe" +// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" +// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" +// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" +// +// You can use these names in --gtest_filter. +// +// This statement will instantiate all tests from FooTest again, each +// with parameter values "cat" and "dog": + +const char* pets[] = {"cat", "dog"}; +INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); + +// The tests from the instantiation above will have these names: +// +// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" +// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" +// +// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests +// in the given test case, whether their definitions come before or +// AFTER the INSTANTIATE_TEST_CASE_P statement. +// +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. +// +// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc +// for more examples. +// +// In the future, we plan to publish the API for defining new parameter +// generators. But for now this interface remains part of the internal +// implementation and is subject to change. +// +// +// A parameterized test fixture must be derived from testing::Test and from +// testing::WithParamInterface, where T is the type of the parameter +// values. Inheriting from TestWithParam satisfies that requirement because +// TestWithParam inherits from both Test and WithParamInterface. In more +// complicated hierarchies, however, it is occasionally useful to inherit +// separately from Test and WithParamInterface. For example: + +class BaseTest : public ::testing::Test { + // You can inherit all the usual members for a non-parameterized test + // fixture here. +}; + +class DerivedTest : public BaseTest, public ::testing::WithParamInterface { + // The usual test fixture members go here too. +}; + +TEST_F(BaseTest, HasFoo) { + // This is an ordinary non-parameterized test. +} + +TEST_P(DerivedTest, DoesBlah) { + // GetParam works just the same here as if you inherit from TestWithParam. + EXPECT_TRUE(foo.Blah(GetParam())); +} + +#endif // 0 + + +#if !GTEST_OS_SYMBIAN +# include +#endif + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ + +#include +#include +#include + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +// Copyright 2003 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: Dan Egnor (egnor@google.com) +// +// A "smart" pointer type with reference tracking. Every pointer to a +// particular object is kept on a circular linked list. When the last pointer +// to an object is destroyed or reassigned, the object is deleted. +// +// Used properly, this deletes the object when the last reference goes away. +// There are several caveats: +// - Like all reference counting schemes, cycles lead to leaks. +// - Each smart pointer is actually two pointers (8 bytes instead of 4). +// - Every time a pointer is assigned, the entire list of pointers to that +// object is traversed. This class is therefore NOT SUITABLE when there +// will often be more than two or three pointers to a particular object. +// - References are only tracked as long as linked_ptr<> objects are copied. +// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS +// will happen (double deletion). +// +// A good use of this class is storing object references in STL containers. +// You can safely put linked_ptr<> in a vector<>. +// Other uses may not be as good. +// +// Note: If you use an incomplete type with linked_ptr<>, the class +// *containing* linked_ptr<> must have a constructor and destructor (even +// if they do nothing!). +// +// Bill Gibbons suggested we use something like this. +// +// Thread Safety: +// Unlike other linked_ptr implementations, in this implementation +// a linked_ptr object is thread-safe in the sense that: +// - it's safe to copy linked_ptr objects concurrently, +// - it's safe to copy *from* a linked_ptr and read its underlying +// raw pointer (e.g. via get()) concurrently, and +// - it's safe to write to two linked_ptrs that point to the same +// shared object concurrently. +// TODO(wan@google.com): rename this to safe_linked_ptr to avoid +// confusion with normal linked_ptr. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ + +#include +#include + + +namespace testing { +namespace internal { + +// Protects copying of all linked_ptr objects. +GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// This is used internally by all instances of linked_ptr<>. It needs to be +// a non-template class because different types of linked_ptr<> can refer to +// the same object (linked_ptr(obj) vs linked_ptr(obj)). +// So, it needs to be possible for different types of linked_ptr to participate +// in the same circular linked list, so we need a single class type here. +// +// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr. +class linked_ptr_internal { + public: + // Create a new circle that includes only this instance. + void join_new() { + next_ = this; + } + + // Many linked_ptr operations may change p.link_ for some linked_ptr + // variable p in the same circle as this object. Therefore we need + // to prevent two such operations from occurring concurrently. + // + // Note that different types of linked_ptr objects can coexist in a + // circle (e.g. linked_ptr, linked_ptr, and + // linked_ptr). Therefore we must use a single mutex to + // protect all linked_ptr objects. This can create serious + // contention in production code, but is acceptable in a testing + // framework. + + // Join an existing circle. + // L < g_linked_ptr_mutex + void join(linked_ptr_internal const* ptr) { + MutexLock lock(&g_linked_ptr_mutex); + + linked_ptr_internal const* p = ptr; + while (p->next_ != ptr) p = p->next_; + p->next_ = this; + next_ = ptr; + } + + // Leave whatever circle we're part of. Returns true if we were the + // last member of the circle. Once this is done, you can join() another. + // L < g_linked_ptr_mutex + bool depart() { + MutexLock lock(&g_linked_ptr_mutex); + + if (next_ == this) return true; + linked_ptr_internal const* p = next_; + while (p->next_ != this) p = p->next_; + p->next_ = next_; + return false; + } + + private: + mutable linked_ptr_internal const* next_; +}; + +template +class linked_ptr { + public: + typedef T element_type; + + // Take over ownership of a raw pointer. This should happen as soon as + // possible after the object is created. + explicit linked_ptr(T* ptr = NULL) { capture(ptr); } + ~linked_ptr() { depart(); } + + // Copy an existing linked_ptr<>, adding ourselves to the list of references. + template linked_ptr(linked_ptr const& ptr) { copy(&ptr); } + linked_ptr(linked_ptr const& ptr) { // NOLINT + assert(&ptr != this); + copy(&ptr); + } + + // Assignment releases the old value and acquires the new. + template linked_ptr& operator=(linked_ptr const& ptr) { + depart(); + copy(&ptr); + return *this; + } + + linked_ptr& operator=(linked_ptr const& ptr) { + if (&ptr != this) { + depart(); + copy(&ptr); + } + return *this; + } + + // Smart pointer members. + void reset(T* ptr = NULL) { + depart(); + capture(ptr); + } + T* get() const { return value_; } + T* operator->() const { return value_; } + T& operator*() const { return *value_; } + + bool operator==(T* p) const { return value_ == p; } + bool operator!=(T* p) const { return value_ != p; } + template + bool operator==(linked_ptr const& ptr) const { + return value_ == ptr.get(); + } + template + bool operator!=(linked_ptr const& ptr) const { + return value_ != ptr.get(); + } + + private: + template + friend class linked_ptr; + + T* value_; + linked_ptr_internal link_; + + void depart() { + if (link_.depart()) delete value_; + } + + void capture(T* ptr) { + value_ = ptr; + link_.join_new(); + } + + template void copy(linked_ptr const* ptr) { + value_ = ptr->get(); + if (value_) + link_.join(&ptr->link_); + else + link_.join_new(); + } +}; + +template inline +bool operator==(T* ptr, const linked_ptr& x) { + return ptr == x.get(); +} + +template inline +bool operator!=(T* ptr, const linked_ptr& x) { + return ptr != x.get(); +} + +// A function to convert T* into linked_ptr +// Doing e.g. make_linked_ptr(new FooBarBaz(arg)) is a shorter notation +// for linked_ptr >(new FooBarBaz(arg)) +template +linked_ptr make_linked_ptr(T* ptr) { + return linked_ptr(ptr); +} + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// A user can teach this function how to print a class type T by +// defining either operator<<() or PrintTo() in the namespace that +// defines T. More specifically, the FIRST defined function in the +// following list will be used (assuming T is defined in namespace +// foo): +// +// 1. foo::PrintTo(const T&, ostream*) +// 2. operator<<(ostream&, const T&) defined in either foo or the +// global namespace. +// +// If none of the above is defined, it will print the debug string of +// the value if it is a protocol buffer, or print the raw bytes in the +// value otherwise. +// +// To aid debugging: when T is a reference type, the address of the +// value is also printed; when T is a (const) char pointer, both the +// pointer value and the NUL-terminated string it points to are +// printed. +// +// We also provide some convenient wrappers: +// +// // Prints a value to a string. For a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// std::string ::testing::PrintToString(const T& value); +// +// // Prints a value tersely: for a reference type, the referenced +// // value (but not the address) is printed; for a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// void ::testing::internal::UniversalTersePrint(const T& value, ostream*); +// +// // Prints value using the type inferred by the compiler. The difference +// // from UniversalTersePrint() is that this function prints both the +// // pointer and the NUL-terminated string for a (const or not) char pointer. +// void ::testing::internal::UniversalPrint(const T& value, ostream*); +// +// // Prints the fields of a tuple tersely to a string vector, one +// // element for each field. Tuple support must be enabled in +// // gtest-port.h. +// std::vector UniversalTersePrintTupleFieldsToStrings( +// const Tuple& value); +// +// Known limitation: +// +// The print primitives print the elements of an STL-style container +// using the compiler-inferred type of *iter where iter is a +// const_iterator of the container. When const_iterator is an input +// iterator but not a forward iterator, this inferred type may not +// match value_type, and the print output may be incorrect. In +// practice, this is rarely a problem as for most containers +// const_iterator is a forward iterator. We'll fix this if there's an +// actual need for it. Note that this fix cannot rely on value_type +// being defined as many user-defined container types don't have +// value_type. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#include // NOLINT +#include +#include +#include +#include + +namespace testing { + +// Definitions in the 'internal' and 'internal2' name spaces are +// subject to change without notice. DO NOT USE THEM IN USER CODE! +namespace internal2 { + +// Prints the given number of bytes in the given object to the given +// ostream. +GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, + size_t count, + ::std::ostream* os); + +// For selecting which printer to use when a given type has neither << +// nor PrintTo(). +enum TypeKind { + kProtobuf, // a protobuf type + kConvertibleToInteger, // a type implicitly convertible to BiggestInt + // (e.g. a named or unnamed enum type) + kOtherType // anything else +}; + +// TypeWithoutFormatter::PrintValue(value, os) is called +// by the universal printer to print a value of type T when neither +// operator<< nor PrintTo() is defined for T, where kTypeKind is the +// "kind" of T as defined by enum TypeKind. +template +class TypeWithoutFormatter { + public: + // This default version is called when kTypeKind is kOtherType. + static void PrintValue(const T& value, ::std::ostream* os) { + PrintBytesInObjectTo(reinterpret_cast(&value), + sizeof(value), os); + } +}; + +// We print a protobuf using its ShortDebugString() when the string +// doesn't exceed this many characters; otherwise we print it using +// DebugString() for better readability. +const size_t kProtobufOneLinerMaxLength = 50; + +template +class TypeWithoutFormatter { + public: + static void PrintValue(const T& value, ::std::ostream* os) { + const ::testing::internal::string short_str = value.ShortDebugString(); + const ::testing::internal::string pretty_str = + short_str.length() <= kProtobufOneLinerMaxLength ? + short_str : ("\n" + value.DebugString()); + *os << ("<" + pretty_str + ">"); + } +}; + +template +class TypeWithoutFormatter { + public: + // Since T has no << operator or PrintTo() but can be implicitly + // converted to BiggestInt, we print it as a BiggestInt. + // + // Most likely T is an enum type (either named or unnamed), in which + // case printing it as an integer is the desired behavior. In case + // T is not an enum, printing it as an integer is the best we can do + // given that it has no user-defined printer. + static void PrintValue(const T& value, ::std::ostream* os) { + const internal::BiggestInt kBigInt = value; + *os << kBigInt; + } +}; + +// Prints the given value to the given ostream. If the value is a +// protocol message, its debug string is printed; if it's an enum or +// of a type implicitly convertible to BiggestInt, it's printed as an +// integer; otherwise the bytes in the value are printed. This is +// what UniversalPrinter::Print() does when it knows nothing about +// type T and T has neither << operator nor PrintTo(). +// +// A user can override this behavior for a class type Foo by defining +// a << operator in the namespace where Foo is defined. +// +// We put this operator in namespace 'internal2' instead of 'internal' +// to simplify the implementation, as much code in 'internal' needs to +// use << in STL, which would conflict with our own << were it defined +// in 'internal'. +// +// Note that this operator<< takes a generic std::basic_ostream type instead of the more restricted std::ostream. If +// we define it to take an std::ostream instead, we'll get an +// "ambiguous overloads" compiler error when trying to print a type +// Foo that supports streaming to std::basic_ostream, as the compiler cannot tell whether +// operator<<(std::ostream&, const T&) or +// operator<<(std::basic_stream, const Foo&) is more +// specific. +template +::std::basic_ostream& operator<<( + ::std::basic_ostream& os, const T& x) { + TypeWithoutFormatter::value ? kProtobuf : + internal::ImplicitlyConvertible::value ? + kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); + return os; +} + +} // namespace internal2 +} // namespace testing + +// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up +// magic needed for implementing UniversalPrinter won't work. +namespace testing_internal { + +// Used to print a value that is not an STL-style container when the +// user doesn't define PrintTo() for it. +template +void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { + // With the following statement, during unqualified name lookup, + // testing::internal2::operator<< appears as if it was declared in + // the nearest enclosing namespace that contains both + // ::testing_internal and ::testing::internal2, i.e. the global + // namespace. For more details, refer to the C++ Standard section + // 7.3.4-1 [namespace.udir]. This allows us to fall back onto + // testing::internal2::operator<< in case T doesn't come with a << + // operator. + // + // We cannot write 'using ::testing::internal2::operator<<;', which + // gcc 3.3 fails to compile due to a compiler bug. + using namespace ::testing::internal2; // NOLINT + + // Assuming T is defined in namespace foo, in the next statement, + // the compiler will consider all of: + // + // 1. foo::operator<< (thanks to Koenig look-up), + // 2. ::operator<< (as the current namespace is enclosed in ::), + // 3. testing::internal2::operator<< (thanks to the using statement above). + // + // The operator<< whose type matches T best will be picked. + // + // We deliberately allow #2 to be a candidate, as sometimes it's + // impossible to define #1 (e.g. when foo is ::std, defining + // anything in it is undefined behavior unless you are a compiler + // vendor.). + *os << value; +} + +} // namespace testing_internal + +namespace testing { +namespace internal { + +// UniversalPrinter::Print(value, ostream_ptr) prints the given +// value to the given ostream. The caller must ensure that +// 'ostream_ptr' is not NULL, or the behavior is undefined. +// +// We define UniversalPrinter as a class template (as opposed to a +// function template), as we need to partially specialize it for +// reference types, which cannot be done with function templates. +template +class UniversalPrinter; + +template +void UniversalPrint(const T& value, ::std::ostream* os); + +// Used to print an STL-style container when the user doesn't define +// a PrintTo() for it. +template +void DefaultPrintTo(IsContainer /* dummy */, + false_type /* is not a pointer */, + const C& container, ::std::ostream* os) { + const size_t kMaxCount = 32; // The maximum number of elements to print. + *os << '{'; + size_t count = 0; + for (typename C::const_iterator it = container.begin(); + it != container.end(); ++it, ++count) { + if (count > 0) { + *os << ','; + if (count == kMaxCount) { // Enough has been printed. + *os << " ..."; + break; + } + } + *os << ' '; + // We cannot call PrintTo(*it, os) here as PrintTo() doesn't + // handle *it being a native array. + internal::UniversalPrint(*it, os); + } + + if (count > 0) { + *os << ' '; + } + *os << '}'; +} + +// Used to print a pointer that is neither a char pointer nor a member +// pointer, when the user doesn't define PrintTo() for it. (A member +// variable pointer or member function pointer doesn't really point to +// a location in the address space. Their representation is +// implementation-defined. Therefore they will be printed as raw +// bytes.) +template +void DefaultPrintTo(IsNotContainer /* dummy */, + true_type /* is a pointer */, + T* p, ::std::ostream* os) { + if (p == NULL) { + *os << "NULL"; + } else { + // C++ doesn't allow casting from a function pointer to any object + // pointer. + // + // IsTrue() silences warnings: "Condition is always true", + // "unreachable code". + if (IsTrue(ImplicitlyConvertible::value)) { + // T is not a function type. We just call << to print p, + // relying on ADL to pick up user-defined << for their pointer + // types, if any. + *os << p; + } else { + // T is a function type, so '*os << p' doesn't do what we want + // (it just prints p as bool). We want to print p as a const + // void*. However, we cannot cast it to const void* directly, + // even using reinterpret_cast, as earlier versions of gcc + // (e.g. 3.4.5) cannot compile the cast when p is a function + // pointer. Casting to UInt64 first solves the problem. + *os << reinterpret_cast( + reinterpret_cast(p)); + } + } +} + +// Used to print a non-container, non-pointer value when the user +// doesn't define PrintTo() for it. +template +void DefaultPrintTo(IsNotContainer /* dummy */, + false_type /* is not a pointer */, + const T& value, ::std::ostream* os) { + ::testing_internal::DefaultPrintNonContainerTo(value, os); +} + +// Prints the given value using the << operator if it has one; +// otherwise prints the bytes in it. This is what +// UniversalPrinter::Print() does when PrintTo() is not specialized +// or overloaded for type T. +// +// A user can override this behavior for a class type Foo by defining +// an overload of PrintTo() in the namespace where Foo is defined. We +// give the user this option as sometimes defining a << operator for +// Foo is not desirable (e.g. the coding style may prevent doing it, +// or there is already a << operator but it doesn't do what the user +// wants). +template +void PrintTo(const T& value, ::std::ostream* os) { + // DefaultPrintTo() is overloaded. The type of its first two + // arguments determine which version will be picked. If T is an + // STL-style container, the version for container will be called; if + // T is a pointer, the pointer version will be called; otherwise the + // generic version will be called. + // + // Note that we check for container types here, prior to we check + // for protocol message types in our operator<<. The rationale is: + // + // For protocol messages, we want to give people a chance to + // override Google Mock's format by defining a PrintTo() or + // operator<<. For STL containers, other formats can be + // incompatible with Google Mock's format for the container + // elements; therefore we check for container types here to ensure + // that our format is used. + // + // The second argument of DefaultPrintTo() is needed to bypass a bug + // in Symbian's C++ compiler that prevents it from picking the right + // overload between: + // + // PrintTo(const T& x, ...); + // PrintTo(T* x, ...); + DefaultPrintTo(IsContainerTest(0), is_pointer(), value, os); +} + +// The following list of PrintTo() overloads tells +// UniversalPrinter::Print() how to print standard types (built-in +// types, strings, plain arrays, and pointers). + +// Overloads for various char types. +GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os); +GTEST_API_ void PrintTo(signed char c, ::std::ostream* os); +inline void PrintTo(char c, ::std::ostream* os) { + // When printing a plain char, we always treat it as unsigned. This + // way, the output won't be affected by whether the compiler thinks + // char is signed or not. + PrintTo(static_cast(c), os); +} + +// Overloads for other simple built-in types. +inline void PrintTo(bool x, ::std::ostream* os) { + *os << (x ? "true" : "false"); +} + +// Overload for wchar_t type. +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its decimal code (except for L'\0'). +// The L'\0' char is printed as "L'\\0'". The decimal code is printed +// as signed integer when wchar_t is implemented by the compiler +// as a signed type and is printed as an unsigned integer when wchar_t +// is implemented as an unsigned type. +GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); + +// Overloads for C strings. +GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); +inline void PrintTo(char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// signed/unsigned char is often used for representing binary data, so +// we print pointers to it as void* to be safe. +inline void PrintTo(const signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(const unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// MSVC can be configured to define wchar_t as a typedef of unsigned +// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native +// type. When wchar_t is a typedef, defining an overload for const +// wchar_t* would cause unsigned short* be printed as a wide string, +// possibly causing invalid memory accesses. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Overloads for wide C strings +GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os); +inline void PrintTo(wchar_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +#endif + +// Overload for C arrays. Multi-dimensional arrays are printed +// properly. + +// Prints the given number of elements in an array, without printing +// the curly braces. +template +void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { + UniversalPrint(a[0], os); + for (size_t i = 1; i != count; i++) { + *os << ", "; + UniversalPrint(a[i], os); + } +} + +// Overloads for ::string and ::std::string. +#if GTEST_HAS_GLOBAL_STRING +GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os); +inline void PrintTo(const ::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os); +inline void PrintTo(const ::std::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} + +// Overloads for ::wstring and ::std::wstring. +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_TR1_TUPLE +// Overload for ::std::tr1::tuple. Needed for printing function arguments, +// which are packed as tuples. + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os); + +// Overloaded PrintTo() for tuples of various arities. We support +// tuples of up-to 10 fields. The following implementation works +// regardless of whether tr1::tuple is implemented using the +// non-standard variadic template feature or not. + +inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo( + const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} +#endif // GTEST_HAS_TR1_TUPLE + +// Overload for std::pair. +template +void PrintTo(const ::std::pair& value, ::std::ostream* os) { + *os << '('; + // We cannot use UniversalPrint(value.first, os) here, as T1 may be + // a reference type. The same for printing value.second. + UniversalPrinter::Print(value.first, os); + *os << ", "; + UniversalPrinter::Print(value.second, os); + *os << ')'; +} + +// Implements printing a non-reference type T by letting the compiler +// pick the right overload of PrintTo() for T. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + // Note: we deliberately don't call this PrintTo(), as that name + // conflicts with ::testing::internal::PrintTo in the body of the + // function. + static void Print(const T& value, ::std::ostream* os) { + // By default, ::testing::internal::PrintTo() is used for printing + // the value. + // + // Thanks to Koenig look-up, if T is a class and has its own + // PrintTo() function defined in its namespace, that function will + // be visible here. Since it is more specific than the generic ones + // in ::testing::internal, it will be picked by the compiler in the + // following statement - exactly what we want. + PrintTo(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// UniversalPrintArray(begin, len, os) prints an array of 'len' +// elements, starting at address 'begin'. +template +void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { + if (len == 0) { + *os << "{}"; + } else { + *os << "{ "; + const size_t kThreshold = 18; + const size_t kChunkSize = 8; + // If the array has more than kThreshold elements, we'll have to + // omit some details by printing only the first and the last + // kChunkSize elements. + // TODO(wan@google.com): let the user control the threshold using a flag. + if (len <= kThreshold) { + PrintRawArrayTo(begin, len, os); + } else { + PrintRawArrayTo(begin, kChunkSize, os); + *os << ", ..., "; + PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); + } + *os << " }"; + } +} +// This overload prints a (const) char array compactly. +GTEST_API_ void UniversalPrintArray(const char* begin, + size_t len, + ::std::ostream* os); + +// Implements printing an array type T[N]. +template +class UniversalPrinter { + public: + // Prints the given array, omitting some elements when there are too + // many. + static void Print(const T (&a)[N], ::std::ostream* os) { + UniversalPrintArray(a, N, os); + } +}; + +// Implements printing a reference type T&. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + static void Print(const T& value, ::std::ostream* os) { + // Prints the address of the value. We use reinterpret_cast here + // as static_cast doesn't compile when T is a function type. + *os << "@" << reinterpret_cast(&value) << " "; + + // Then prints the value itself. + UniversalPrint(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// Prints a value tersely: for a reference type, the referenced value +// (but not the address) is printed; for a (const) char pointer, the +// NUL-terminated string (but not the pointer) is printed. +template +void UniversalTersePrint(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); +} +inline void UniversalTersePrint(const char* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(string(str), os); + } +} +inline void UniversalTersePrint(char* str, ::std::ostream* os) { + UniversalTersePrint(static_cast(str), os); +} + +// Prints a value using the type inferred by the compiler. The +// difference between this and UniversalTersePrint() is that for a +// (const) char pointer, this prints both the pointer and the +// NUL-terminated string. +template +void UniversalPrint(const T& value, ::std::ostream* os) { + UniversalPrinter::Print(value, os); +} + +#if GTEST_HAS_TR1_TUPLE +typedef ::std::vector Strings; + +// This helper template allows PrintTo() for tuples and +// UniversalTersePrintTupleFieldsToStrings() to be defined by +// induction on the number of tuple fields. The idea is that +// TuplePrefixPrinter::PrintPrefixTo(t, os) prints the first N +// fields in tuple t, and can be defined in terms of +// TuplePrefixPrinter. + +// The inductive case. +template +struct TuplePrefixPrinter { + // Prints the first N fields of a tuple. + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + TuplePrefixPrinter::PrintPrefixTo(t, os); + *os << ", "; + UniversalPrinter::type> + ::Print(::std::tr1::get(t), os); + } + + // Tersely prints the first N fields of a tuple to a string vector, + // one element for each field. + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + TuplePrefixPrinter::TersePrintPrefixToStrings(t, strings); + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Base cases. +template <> +struct TuplePrefixPrinter<0> { + template + static void PrintPrefixTo(const Tuple&, ::std::ostream*) {} + + template + static void TersePrintPrefixToStrings(const Tuple&, Strings*) {} +}; +// We have to specialize the entire TuplePrefixPrinter<> class +// template here, even though the definition of +// TersePrintPrefixToStrings() is the same as the generic version, as +// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't +// support specializing a method template of a class template. +template <> +struct TuplePrefixPrinter<1> { + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + UniversalPrinter::type>:: + Print(::std::tr1::get<0>(t), os); + } + + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get<0>(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os) { + *os << "("; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + PrintPrefixTo(t, os); + *os << ")"; +} + +// Prints the fields of a tuple tersely to a string vector, one +// element for each field. See the comment before +// UniversalTersePrint() for how we define "tersely". +template +Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) { + Strings result; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + TersePrintPrefixToStrings(value, &result); + return result; +} +#endif // GTEST_HAS_TR1_TUPLE + +} // namespace internal + +template +::std::string PrintToString(const T& value) { + ::std::stringstream ss; + internal::UniversalTersePrint(value, &ss); + return ss.str(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#if GTEST_HAS_PARAM_TEST + +namespace testing { +namespace internal { + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Outputs a message explaining invalid registration of different +// fixture class for the same test case. This may happen when +// TEST_P macro is used to define two tests with the same name +// but in different namespaces. +GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line); + +template class ParamGeneratorInterface; +template class ParamGenerator; + +// Interface for iterating over elements provided by an implementation +// of ParamGeneratorInterface. +template +class ParamIteratorInterface { + public: + virtual ~ParamIteratorInterface() {} + // A pointer to the base generator instance. + // Used only for the purposes of iterator comparison + // to make sure that two iterators belong to the same generator. + virtual const ParamGeneratorInterface* BaseGenerator() const = 0; + // Advances iterator to point to the next element + // provided by the generator. The caller is responsible + // for not calling Advance() on an iterator equal to + // BaseGenerator()->End(). + virtual void Advance() = 0; + // Clones the iterator object. Used for implementing copy semantics + // of ParamIterator. + virtual ParamIteratorInterface* Clone() const = 0; + // Dereferences the current iterator and provides (read-only) access + // to the pointed value. It is the caller's responsibility not to call + // Current() on an iterator equal to BaseGenerator()->End(). + // Used for implementing ParamGenerator::operator*(). + virtual const T* Current() const = 0; + // Determines whether the given iterator and other point to the same + // element in the sequence generated by the generator. + // Used for implementing ParamGenerator::operator==(). + virtual bool Equals(const ParamIteratorInterface& other) const = 0; +}; + +// Class iterating over elements provided by an implementation of +// ParamGeneratorInterface. It wraps ParamIteratorInterface +// and implements the const forward iterator concept. +template +class ParamIterator { + public: + typedef T value_type; + typedef const T& reference; + typedef ptrdiff_t difference_type; + + // ParamIterator assumes ownership of the impl_ pointer. + ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {} + ParamIterator& operator=(const ParamIterator& other) { + if (this != &other) + impl_.reset(other.impl_->Clone()); + return *this; + } + + const T& operator*() const { return *impl_->Current(); } + const T* operator->() const { return impl_->Current(); } + // Prefix version of operator++. + ParamIterator& operator++() { + impl_->Advance(); + return *this; + } + // Postfix version of operator++. + ParamIterator operator++(int /*unused*/) { + ParamIteratorInterface* clone = impl_->Clone(); + impl_->Advance(); + return ParamIterator(clone); + } + bool operator==(const ParamIterator& other) const { + return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_); + } + bool operator!=(const ParamIterator& other) const { + return !(*this == other); + } + + private: + friend class ParamGenerator; + explicit ParamIterator(ParamIteratorInterface* impl) : impl_(impl) {} + scoped_ptr > impl_; +}; + +// ParamGeneratorInterface is the binary interface to access generators +// defined in other translation units. +template +class ParamGeneratorInterface { + public: + typedef T ParamType; + + virtual ~ParamGeneratorInterface() {} + + // Generator interface definition + virtual ParamIteratorInterface* Begin() const = 0; + virtual ParamIteratorInterface* End() const = 0; +}; + +// Wraps ParamGeneratorInterface and provides general generator syntax +// compatible with the STL Container concept. +// This class implements copy initialization semantics and the contained +// ParamGeneratorInterface instance is shared among all copies +// of the original object. This is possible because that instance is immutable. +template +class ParamGenerator { + public: + typedef ParamIterator iterator; + + explicit ParamGenerator(ParamGeneratorInterface* impl) : impl_(impl) {} + ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {} + + ParamGenerator& operator=(const ParamGenerator& other) { + impl_ = other.impl_; + return *this; + } + + iterator begin() const { return iterator(impl_->Begin()); } + iterator end() const { return iterator(impl_->End()); } + + private: + linked_ptr > impl_; +}; + +// Generates values from a range of two comparable values. Can be used to +// generate sequences of user-defined types that implement operator+() and +// operator<(). +// This class is used in the Range() function. +template +class RangeGenerator : public ParamGeneratorInterface { + public: + RangeGenerator(T begin, T end, IncrementT step) + : begin_(begin), end_(end), + step_(step), end_index_(CalculateEndIndex(begin, end, step)) {} + virtual ~RangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, begin_, 0, step_); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, end_, end_index_, step_); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, T value, int index, + IncrementT step) + : base_(base), value_(value), index_(index), step_(step) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + value_ = value_ + step_; + index_++; + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const T* Current() const { return &value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const int other_index = + CheckedDowncastToActualType(&other)->index_; + return index_ == other_index; + } + + private: + Iterator(const Iterator& other) + : ParamIteratorInterface(), + base_(other.base_), value_(other.value_), index_(other.index_), + step_(other.step_) {} + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + T value_; + int index_; + const IncrementT step_; + }; // class RangeGenerator::Iterator + + static int CalculateEndIndex(const T& begin, + const T& end, + const IncrementT& step) { + int end_index = 0; + for (T i = begin; i < end; i = i + step) + end_index++; + return end_index; + } + + // No implementation - assignment is unsupported. + void operator=(const RangeGenerator& other); + + const T begin_; + const T end_; + const IncrementT step_; + // The index for the end() iterator. All the elements in the generated + // sequence are indexed (0-based) to aid iterator comparison. + const int end_index_; +}; // class RangeGenerator + + +// Generates values from a pair of STL-style iterators. Used in the +// ValuesIn() function. The elements are copied from the source range +// since the source can be located on the stack, and the generator +// is likely to persist beyond that stack frame. +template +class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface { + public: + template + ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end) + : container_(begin, end) {} + virtual ~ValuesInIteratorRangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, container_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, container_.end()); + } + + private: + typedef typename ::std::vector ContainerType; + + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + typename ContainerType::const_iterator iterator) + : base_(base), iterator_(iterator) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + ++iterator_; + value_.reset(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + // We need to use cached value referenced by iterator_ because *iterator_ + // can return a temporary object (and of type other then T), so just + // having "return &*iterator_;" doesn't work. + // value_ is updated here and not in Advance() because Advance() + // can advance iterator_ beyond the end of the range, and we cannot + // detect that fact. The client code, on the other hand, is + // responsible for not calling Current() on an out-of-range iterator. + virtual const T* Current() const { + if (value_.get() == NULL) + value_.reset(new T(*iterator_)); + return value_.get(); + } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + return iterator_ == + CheckedDowncastToActualType(&other)->iterator_; + } + + private: + Iterator(const Iterator& other) + // The explicit constructor call suppresses a false warning + // emitted by gcc when supplied with the -Wextra option. + : ParamIteratorInterface(), + base_(other.base_), + iterator_(other.iterator_) {} + + const ParamGeneratorInterface* const base_; + typename ContainerType::const_iterator iterator_; + // A cached value of *iterator_. We keep it here to allow access by + // pointer in the wrapping iterator's operator->(). + // value_ needs to be mutable to be accessed in Current(). + // Use of scoped_ptr helps manage cached value's lifetime, + // which is bound by the lifespan of the iterator itself. + mutable scoped_ptr value_; + }; // class ValuesInIteratorRangeGenerator::Iterator + + // No implementation - assignment is unsupported. + void operator=(const ValuesInIteratorRangeGenerator& other); + + const ContainerType container_; +}; // class ValuesInIteratorRangeGenerator + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Stores a parameter value and later creates tests parameterized with that +// value. +template +class ParameterizedTestFactory : public TestFactoryBase { + public: + typedef typename TestClass::ParamType ParamType; + explicit ParameterizedTestFactory(ParamType parameter) : + parameter_(parameter) {} + virtual Test* CreateTest() { + TestClass::SetParam(¶meter_); + return new TestClass(); + } + + private: + const ParamType parameter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactoryBase is a base class for meta-factories that create +// test factories for passing into MakeAndRegisterTestInfo function. +template +class TestMetaFactoryBase { + public: + virtual ~TestMetaFactoryBase() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0; +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactory creates test factories for passing into +// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives +// ownership of test factory pointer, same factory object cannot be passed +// into that method twice. But ParameterizedTestCaseInfo is going to call +// it for each Test/Parameter value combination. Thus it needs meta factory +// creator class. +template +class TestMetaFactory + : public TestMetaFactoryBase { + public: + typedef typename TestCase::ParamType ParamType; + + TestMetaFactory() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) { + return new ParameterizedTestFactory(parameter); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfoBase is a generic interface +// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase +// accumulates test information provided by TEST_P macro invocations +// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations +// and uses that information to register all resulting test instances +// in RegisterTests method. The ParameterizeTestCaseRegistry class holds +// a collection of pointers to the ParameterizedTestCaseInfo objects +// and calls RegisterTests() on each of them when asked. +class ParameterizedTestCaseInfoBase { + public: + virtual ~ParameterizedTestCaseInfoBase() {} + + // Base part of test case name for display purposes. + virtual const string& GetTestCaseName() const = 0; + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const = 0; + // UnitTest class invokes this method to register tests in this + // test case right before running them in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + virtual void RegisterTests() = 0; + + protected: + ParameterizedTestCaseInfoBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P +// macro invocations for a particular test case and generators +// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that +// test case. It registers tests with all values generated by all +// generators when asked. +template +class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { + public: + // ParamType and GeneratorCreationFunc are private types but are required + // for declarations of public methods AddTestPattern() and + // AddTestCaseInstantiation(). + typedef typename TestCase::ParamType ParamType; + // A function that returns an instance of appropriate generator type. + typedef ParamGenerator(GeneratorCreationFunc)(); + + explicit ParameterizedTestCaseInfo(const char* name) + : test_case_name_(name) {} + + // Test case base name for display purposes. + virtual const string& GetTestCaseName() const { return test_case_name_; } + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const { return GetTypeId(); } + // TEST_P macro uses AddTestPattern() to record information + // about a single test in a LocalTestInfo structure. + // test_case_name is the base name of the test case (without invocation + // prefix). test_base_name is the name of an individual test without + // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is + // test case base name and DoBar is test base name. + void AddTestPattern(const char* test_case_name, + const char* test_base_name, + TestMetaFactoryBase* meta_factory) { + tests_.push_back(linked_ptr(new TestInfo(test_case_name, + test_base_name, + meta_factory))); + } + // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information + // about a generator. + int AddTestCaseInstantiation(const string& instantiation_name, + GeneratorCreationFunc* func, + const char* /* file */, + int /* line */) { + instantiations_.push_back(::std::make_pair(instantiation_name, func)); + return 0; // Return value used only to run this method in namespace scope. + } + // UnitTest class invokes this method to register tests in this test case + // test cases right before running tests in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + // UnitTest has a guard to prevent from calling this method more then once. + virtual void RegisterTests() { + for (typename TestInfoContainer::iterator test_it = tests_.begin(); + test_it != tests_.end(); ++test_it) { + linked_ptr test_info = *test_it; + for (typename InstantiationContainer::iterator gen_it = + instantiations_.begin(); gen_it != instantiations_.end(); + ++gen_it) { + const string& instantiation_name = gen_it->first; + ParamGenerator generator((*gen_it->second)()); + + Message test_case_name_stream; + if ( !instantiation_name.empty() ) + test_case_name_stream << instantiation_name << "/"; + test_case_name_stream << test_info->test_case_base_name; + + int i = 0; + for (typename ParamGenerator::iterator param_it = + generator.begin(); + param_it != generator.end(); ++param_it, ++i) { + Message test_name_stream; + test_name_stream << test_info->test_base_name << "/" << i; + MakeAndRegisterTestInfo( + test_case_name_stream.GetString().c_str(), + test_name_stream.GetString().c_str(), + NULL, // No type parameter. + PrintToString(*param_it).c_str(), + GetTestCaseTypeId(), + TestCase::SetUpTestCase, + TestCase::TearDownTestCase, + test_info->test_meta_factory->CreateTestFactory(*param_it)); + } // for param_it + } // for gen_it + } // for test_it + } // RegisterTests + + private: + // LocalTestInfo structure keeps information about a single test registered + // with TEST_P macro. + struct TestInfo { + TestInfo(const char* a_test_case_base_name, + const char* a_test_base_name, + TestMetaFactoryBase* a_test_meta_factory) : + test_case_base_name(a_test_case_base_name), + test_base_name(a_test_base_name), + test_meta_factory(a_test_meta_factory) {} + + const string test_case_base_name; + const string test_base_name; + const scoped_ptr > test_meta_factory; + }; + typedef ::std::vector > TestInfoContainer; + // Keeps pairs of + // received from INSTANTIATE_TEST_CASE_P macros. + typedef ::std::vector > + InstantiationContainer; + + const string test_case_name_; + TestInfoContainer tests_; + InstantiationContainer instantiations_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo); +}; // class ParameterizedTestCaseInfo + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase +// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P +// macros use it to locate their corresponding ParameterizedTestCaseInfo +// descriptors. +class ParameterizedTestCaseRegistry { + public: + ParameterizedTestCaseRegistry() {} + ~ParameterizedTestCaseRegistry() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + delete *it; + } + } + + // Looks up or creates and returns a structure containing information about + // tests and instantiations of a particular test case. + template + ParameterizedTestCaseInfo* GetTestCasePatternHolder( + const char* test_case_name, + const char* file, + int line) { + ParameterizedTestCaseInfo* typed_test_info = NULL; + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + if ((*it)->GetTestCaseName() == test_case_name) { + if ((*it)->GetTestCaseTypeId() != GetTypeId()) { + // Complain about incorrect usage of Google Test facilities + // and terminate the program since we cannot guaranty correct + // test case setup and tear-down in this case. + ReportInvalidTestCaseType(test_case_name, file, line); + posix::Abort(); + } else { + // At this point we are sure that the object we found is of the same + // type we are looking for, so we downcast it to that type + // without further checks. + typed_test_info = CheckedDowncastToActualType< + ParameterizedTestCaseInfo >(*it); + } + break; + } + } + if (typed_test_info == NULL) { + typed_test_info = new ParameterizedTestCaseInfo(test_case_name); + test_case_infos_.push_back(typed_test_info); + } + return typed_test_info; + } + void RegisterTests() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + (*it)->RegisterTests(); + } + } + + private: + typedef ::std::vector TestCaseInfoContainer; + + TestCaseInfoContainer test_case_infos_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry); +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +// This file was GENERATED by command: +// pump.py gtest-param-util-generated.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently Google Test supports at most 50 arguments in Values, +// and at most 10 arguments in Combine. Please contact +// googletestframework@googlegroups.com if you need more. +// Please note that the number of arguments to Combine is limited +// by the maximum arity of the implementation of tr1::tuple which is +// currently set at 10. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Forward declarations of ValuesIn(), which is implemented in +// include/gtest/gtest-param-test.h. +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end); + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]); + +template +internal::ParamGenerator ValuesIn( + const Container& container); + +namespace internal { + +// Used in the Values() function to provide polymorphic capabilities. +template +class ValueArray1 { + public: + explicit ValueArray1(T1 v1) : v1_(v1) {} + + template + operator ParamGenerator() const { return ValuesIn(&v1_, &v1_ + 1); } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray1& other); + + const T1 v1_; +}; + +template +class ValueArray2 { + public: + ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray2& other); + + const T1 v1_; + const T2 v2_; +}; + +template +class ValueArray3 { + public: + ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray3& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; +}; + +template +class ValueArray4 { + public: + ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray4& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; +}; + +template +class ValueArray5 { + public: + ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray5& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; +}; + +template +class ValueArray6 { + public: + ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray6& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; +}; + +template +class ValueArray7 { + public: + ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray7& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; +}; + +template +class ValueArray8 { + public: + ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray8& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; +}; + +template +class ValueArray9 { + public: + ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray9& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; +}; + +template +class ValueArray10 { + public: + ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray10& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; +}; + +template +class ValueArray11 { + public: + ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray11& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; +}; + +template +class ValueArray12 { + public: + ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray12& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; +}; + +template +class ValueArray13 { + public: + ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray13& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; +}; + +template +class ValueArray14 { + public: + ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray14& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; +}; + +template +class ValueArray15 { + public: + ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray15& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; +}; + +template +class ValueArray16 { + public: + ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray16& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; +}; + +template +class ValueArray17 { + public: + ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray17& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; +}; + +template +class ValueArray18 { + public: + ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray18& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; +}; + +template +class ValueArray19 { + public: + ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray19& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; +}; + +template +class ValueArray20 { + public: + ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray20& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; +}; + +template +class ValueArray21 { + public: + ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray21& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; +}; + +template +class ValueArray22 { + public: + ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray22& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; +}; + +template +class ValueArray23 { + public: + ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, + v23_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray23& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; +}; + +template +class ValueArray24 { + public: + ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray24& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; +}; + +template +class ValueArray25 { + public: + ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray25& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; +}; + +template +class ValueArray26 { + public: + ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray26& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; +}; + +template +class ValueArray27 { + public: + ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray27& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; +}; + +template +class ValueArray28 { + public: + ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray28& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; +}; + +template +class ValueArray29 { + public: + ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray29& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; +}; + +template +class ValueArray30 { + public: + ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray30& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; +}; + +template +class ValueArray31 { + public: + ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray31& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; +}; + +template +class ValueArray32 { + public: + ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray32& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; +}; + +template +class ValueArray33 { + public: + ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray33& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; +}; + +template +class ValueArray34 { + public: + ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray34& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; +}; + +template +class ValueArray35 { + public: + ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, + v35_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray35& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; +}; + +template +class ValueArray36 { + public: + ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray36& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; +}; + +template +class ValueArray37 { + public: + ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray37& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; +}; + +template +class ValueArray38 { + public: + ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray38& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; +}; + +template +class ValueArray39 { + public: + ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray39& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; +}; + +template +class ValueArray40 { + public: + ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray40& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; +}; + +template +class ValueArray41 { + public: + ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray41& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; +}; + +template +class ValueArray42 { + public: + ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray42& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; +}; + +template +class ValueArray43 { + public: + ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), + v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray43& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; +}; + +template +class ValueArray44 { + public: + ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), + v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), + v43_(v43), v44_(v44) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray44& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; +}; + +template +class ValueArray45 { + public: + ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), + v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray45& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; +}; + +template +class ValueArray46 { + public: + ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray46& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; +}; + +template +class ValueArray47 { + public: + ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), + v47_(v47) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, + v47_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray47& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; +}; + +template +class ValueArray48 { + public: + ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), + v46_(v46), v47_(v47), v48_(v48) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, + v48_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray48& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; +}; + +template +class ValueArray49 { + public: + ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, + T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, + v48_, v49_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray49& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; +}; + +template +class ValueArray50 { + public: + ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, + T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} + + template + operator ParamGenerator() const { + const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, + v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, + v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, + v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, + v48_, v49_, v50_}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray50& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; + const T50 v50_; +}; + +# if GTEST_HAS_COMBINE +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Generates values from the Cartesian product of values produced +// by the argument generators. +// +template +class CartesianProductGenerator2 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator2(const ParamGenerator& g1, + const ParamGenerator& g2) + : g1_(g1), g2_(g2) {} + virtual ~CartesianProductGenerator2() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current2_; + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + ParamType current_value_; + }; // class CartesianProductGenerator2::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator2& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; +}; // class CartesianProductGenerator2 + + +template +class CartesianProductGenerator3 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator3(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + virtual ~CartesianProductGenerator3() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current3_; + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + ParamType current_value_; + }; // class CartesianProductGenerator3::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator3& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; +}; // class CartesianProductGenerator3 + + +template +class CartesianProductGenerator4 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator4(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + virtual ~CartesianProductGenerator4() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current4_; + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + ParamType current_value_; + }; // class CartesianProductGenerator4::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator4& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; +}; // class CartesianProductGenerator4 + + +template +class CartesianProductGenerator5 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator5(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + virtual ~CartesianProductGenerator5() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current5_; + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + ParamType current_value_; + }; // class CartesianProductGenerator5::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator5& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; +}; // class CartesianProductGenerator5 + + +template +class CartesianProductGenerator6 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator6(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + virtual ~CartesianProductGenerator6() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current6_; + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + ParamType current_value_; + }; // class CartesianProductGenerator6::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator6& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; +}; // class CartesianProductGenerator6 + + +template +class CartesianProductGenerator7 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator7(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + virtual ~CartesianProductGenerator7() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current7_; + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + ParamType current_value_; + }; // class CartesianProductGenerator7::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator7& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; +}; // class CartesianProductGenerator7 + + +template +class CartesianProductGenerator8 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator8(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + virtual ~CartesianProductGenerator8() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current8_; + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + ParamType current_value_; + }; // class CartesianProductGenerator8::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator8& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; +}; // class CartesianProductGenerator8 + + +template +class CartesianProductGenerator9 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator9(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + virtual ~CartesianProductGenerator9() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current9_; + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + ParamType current_value_; + }; // class CartesianProductGenerator9::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator9& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; +}; // class CartesianProductGenerator9 + + +template +class CartesianProductGenerator10 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator10(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9, + const ParamGenerator& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + virtual ~CartesianProductGenerator10() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end(), g10_, g10_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9, + const ParamGenerator& g10, + const typename ParamGenerator::iterator& current10) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9), + begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current10_; + if (current10_ == end10_) { + current10_ = begin10_; + ++current9_; + } + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_ && + current10_ == typed_other->current10_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_), + begin10_(other.begin10_), + end10_(other.end10_), + current10_(other.current10_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_, *current10_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_ || + current10_ == end10_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + const typename ParamGenerator::iterator begin10_; + const typename ParamGenerator::iterator end10_; + typename ParamGenerator::iterator current10_; + ParamType current_value_; + }; // class CartesianProductGenerator10::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator10& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; + const ParamGenerator g10_; +}; // class CartesianProductGenerator10 + + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Helper classes providing Combine() with polymorphic features. They allow +// casting CartesianProductGeneratorN to ParamGenerator if T is +// convertible to U. +// +template +class CartesianProductHolder2 { + public: +CartesianProductHolder2(const Generator1& g1, const Generator2& g2) + : g1_(g1), g2_(g2) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator2( + static_cast >(g1_), + static_cast >(g2_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder2& other); + + const Generator1 g1_; + const Generator2 g2_; +}; // class CartesianProductHolder2 + +template +class CartesianProductHolder3 { + public: +CartesianProductHolder3(const Generator1& g1, const Generator2& g2, + const Generator3& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator3( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder3& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; +}; // class CartesianProductHolder3 + +template +class CartesianProductHolder4 { + public: +CartesianProductHolder4(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator4( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder4& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; +}; // class CartesianProductHolder4 + +template +class CartesianProductHolder5 { + public: +CartesianProductHolder5(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator5( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder5& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; +}; // class CartesianProductHolder5 + +template +class CartesianProductHolder6 { + public: +CartesianProductHolder6(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator6( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder6& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; +}; // class CartesianProductHolder6 + +template +class CartesianProductHolder7 { + public: +CartesianProductHolder7(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator7( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder7& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; +}; // class CartesianProductHolder7 + +template +class CartesianProductHolder8 { + public: +CartesianProductHolder8(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator8( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder8& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; +}; // class CartesianProductHolder8 + +template +class CartesianProductHolder9 { + public: +CartesianProductHolder9(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator9( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder9& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; +}; // class CartesianProductHolder9 + +template +class CartesianProductHolder10 { + public: +CartesianProductHolder10(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9, const Generator10& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator10( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_), + static_cast >(g10_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder10& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; + const Generator10 g10_; +}; // class CartesianProductHolder10 + +# endif // GTEST_HAS_COMBINE + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Functions producing parameter generators. +// +// Google Test uses these generators to produce parameters for value- +// parameterized tests. When a parameterized test case is instantiated +// with a particular generator, Google Test creates and runs tests +// for each element in the sequence produced by the generator. +// +// In the following sample, tests from test case FooTest are instantiated +// each three times with parameter values 3, 5, and 8: +// +// class FooTest : public TestWithParam { ... }; +// +// TEST_P(FooTest, TestThis) { +// } +// TEST_P(FooTest, TestThat) { +// } +// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); +// + +// Range() returns generators providing sequences of values in a range. +// +// Synopsis: +// Range(start, end) +// - returns a generator producing a sequence of values {start, start+1, +// start+2, ..., }. +// Range(start, end, step) +// - returns a generator producing a sequence of values {start, start+step, +// start+step+step, ..., }. +// Notes: +// * The generated sequences never include end. For example, Range(1, 5) +// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) +// returns a generator producing {1, 3, 5, 7}. +// * start and end must have the same type. That type may be any integral or +// floating-point type or a user defined type satisfying these conditions: +// * It must be assignable (have operator=() defined). +// * It must have operator+() (operator+(int-compatible type) for +// two-operand version). +// * It must have operator<() defined. +// Elements in the resulting sequences will also have that type. +// * Condition start < end must be satisfied in order for resulting sequences +// to contain any elements. +// +template +internal::ParamGenerator Range(T start, T end, IncrementT step) { + return internal::ParamGenerator( + new internal::RangeGenerator(start, end, step)); +} + +template +internal::ParamGenerator Range(T start, T end) { + return Range(start, end, 1); +} + +// ValuesIn() function allows generation of tests with parameters coming from +// a container. +// +// Synopsis: +// ValuesIn(const T (&array)[N]) +// - returns a generator producing sequences with elements from +// a C-style array. +// ValuesIn(const Container& container) +// - returns a generator producing sequences with elements from +// an STL-style container. +// ValuesIn(Iterator begin, Iterator end) +// - returns a generator producing sequences with elements from +// a range [begin, end) defined by a pair of STL-style iterators. These +// iterators can also be plain C pointers. +// +// Please note that ValuesIn copies the values from the containers +// passed in and keeps them to generate tests in RUN_ALL_TESTS(). +// +// Examples: +// +// This instantiates tests from test case StringTest +// each with C-string values of "foo", "bar", and "baz": +// +// const char* strings[] = {"foo", "bar", "baz"}; +// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); +// +// This instantiates tests from test case StlStringTest +// each with STL strings with values "a" and "b": +// +// ::std::vector< ::std::string> GetParameterStrings() { +// ::std::vector< ::std::string> v; +// v.push_back("a"); +// v.push_back("b"); +// return v; +// } +// +// INSTANTIATE_TEST_CASE_P(CharSequence, +// StlStringTest, +// ValuesIn(GetParameterStrings())); +// +// +// This will also instantiate tests from CharTest +// each with parameter values 'a' and 'b': +// +// ::std::list GetParameterChars() { +// ::std::list list; +// list.push_back('a'); +// list.push_back('b'); +// return list; +// } +// ::std::list l = GetParameterChars(); +// INSTANTIATE_TEST_CASE_P(CharSequence2, +// CharTest, +// ValuesIn(l.begin(), l.end())); +// +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) { + typedef typename ::testing::internal::IteratorTraits + ::value_type ParamType; + return internal::ParamGenerator( + new internal::ValuesInIteratorRangeGenerator(begin, end)); +} + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]) { + return ValuesIn(array, array + N); +} + +template +internal::ParamGenerator ValuesIn( + const Container& container) { + return ValuesIn(container.begin(), container.end()); +} + +// Values() allows generating tests from explicitly specified list of +// parameters. +// +// Synopsis: +// Values(T v1, T v2, ..., T vN) +// - returns a generator producing sequences with elements v1, v2, ..., vN. +// +// For example, this instantiates tests from test case BarTest each +// with values "one", "two", and "three": +// +// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); +// +// This instantiates tests from test case BazTest each with values 1, 2, 3.5. +// The exact type of values will depend on the type of parameter in BazTest. +// +// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); +// +// Currently, Values() supports from 1 to 50 parameters. +// +template +internal::ValueArray1 Values(T1 v1) { + return internal::ValueArray1(v1); +} + +template +internal::ValueArray2 Values(T1 v1, T2 v2) { + return internal::ValueArray2(v1, v2); +} + +template +internal::ValueArray3 Values(T1 v1, T2 v2, T3 v3) { + return internal::ValueArray3(v1, v2, v3); +} + +template +internal::ValueArray4 Values(T1 v1, T2 v2, T3 v3, T4 v4) { + return internal::ValueArray4(v1, v2, v3, v4); +} + +template +internal::ValueArray5 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5) { + return internal::ValueArray5(v1, v2, v3, v4, v5); +} + +template +internal::ValueArray6 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6) { + return internal::ValueArray6(v1, v2, v3, v4, v5, v6); +} + +template +internal::ValueArray7 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7) { + return internal::ValueArray7(v1, v2, v3, v4, v5, + v6, v7); +} + +template +internal::ValueArray8 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { + return internal::ValueArray8(v1, v2, v3, v4, + v5, v6, v7, v8); +} + +template +internal::ValueArray9 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { + return internal::ValueArray9(v1, v2, v3, + v4, v5, v6, v7, v8, v9); +} + +template +internal::ValueArray10 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { + return internal::ValueArray10(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10); +} + +template +internal::ValueArray11 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) { + return internal::ValueArray11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); +} + +template +internal::ValueArray12 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) { + return internal::ValueArray12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); +} + +template +internal::ValueArray13 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) { + return internal::ValueArray13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); +} + +template +internal::ValueArray14 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { + return internal::ValueArray14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14); +} + +template +internal::ValueArray15 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { + return internal::ValueArray15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15); +} + +template +internal::ValueArray16 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16) { + return internal::ValueArray16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16); +} + +template +internal::ValueArray17 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17) { + return internal::ValueArray17(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17); +} + +template +internal::ValueArray18 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18) { + return internal::ValueArray18(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18); +} + +template +internal::ValueArray19 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { + return internal::ValueArray19(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); +} + +template +internal::ValueArray20 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { + return internal::ValueArray20(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); +} + +template +internal::ValueArray21 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { + return internal::ValueArray21(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); +} + +template +internal::ValueArray22 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22) { + return internal::ValueArray22(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22); +} + +template +internal::ValueArray23 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23) { + return internal::ValueArray23(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23); +} + +template +internal::ValueArray24 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24) { + return internal::ValueArray24(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24); +} + +template +internal::ValueArray25 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { + return internal::ValueArray25(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25); +} + +template +internal::ValueArray26 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) { + return internal::ValueArray26(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); +} + +template +internal::ValueArray27 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) { + return internal::ValueArray27(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); +} + +template +internal::ValueArray28 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) { + return internal::ValueArray28(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28); +} + +template +internal::ValueArray29 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) { + return internal::ValueArray29(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29); +} + +template +internal::ValueArray30 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { + return internal::ValueArray30(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30); +} + +template +internal::ValueArray31 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { + return internal::ValueArray31(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31); +} + +template +internal::ValueArray32 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32) { + return internal::ValueArray32(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32); +} + +template +internal::ValueArray33 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33) { + return internal::ValueArray33(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); +} + +template +internal::ValueArray34 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34) { + return internal::ValueArray34(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); +} + +template +internal::ValueArray35 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { + return internal::ValueArray35(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); +} + +template +internal::ValueArray36 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { + return internal::ValueArray36(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36); +} + +template +internal::ValueArray37 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37) { + return internal::ValueArray37(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37); +} + +template +internal::ValueArray38 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38) { + return internal::ValueArray38(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, + v33, v34, v35, v36, v37, v38); +} + +template +internal::ValueArray39 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38, T39 v39) { + return internal::ValueArray39(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, + v32, v33, v34, v35, v36, v37, v38, v39); +} + +template +internal::ValueArray40 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, + T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { + return internal::ValueArray40(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, + v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); +} + +template +internal::ValueArray41 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { + return internal::ValueArray41(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, + v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); +} + +template +internal::ValueArray42 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) { + return internal::ValueArray42(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, + v42); +} + +template +internal::ValueArray43 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) { + return internal::ValueArray43(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, + v41, v42, v43); +} + +template +internal::ValueArray44 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) { + return internal::ValueArray44(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, + v40, v41, v42, v43, v44); +} + +template +internal::ValueArray45 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { + return internal::ValueArray45(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, + v39, v40, v41, v42, v43, v44, v45); +} + +template +internal::ValueArray46 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { + return internal::ValueArray46(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46); +} + +template +internal::ValueArray47 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { + return internal::ValueArray47(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); +} + +template +internal::ValueArray48 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, + T48 v48) { + return internal::ValueArray48(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, + v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); +} + +template +internal::ValueArray49 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47, T48 v48, T49 v49) { + return internal::ValueArray49(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, + v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); +} + +template +internal::ValueArray50 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, + T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, + T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { + return internal::ValueArray50(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, + v48, v49, v50); +} + +// Bool() allows generating tests with parameters in a set of (false, true). +// +// Synopsis: +// Bool() +// - returns a generator producing sequences with elements {false, true}. +// +// It is useful when testing code that depends on Boolean flags. Combinations +// of multiple flags can be tested when several Bool()'s are combined using +// Combine() function. +// +// In the following example all tests in the test case FlagDependentTest +// will be instantiated twice with parameters false and true. +// +// class FlagDependentTest : public testing::TestWithParam { +// virtual void SetUp() { +// external_flag = GetParam(); +// } +// } +// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); +// +inline internal::ParamGenerator Bool() { + return Values(false, true); +} + +# if GTEST_HAS_COMBINE +// Combine() allows the user to combine two or more sequences to produce +// values of a Cartesian product of those sequences' elements. +// +// Synopsis: +// Combine(gen1, gen2, ..., genN) +// - returns a generator producing sequences with elements coming from +// the Cartesian product of elements from the sequences generated by +// gen1, gen2, ..., genN. The sequence elements will have a type of +// tuple where T1, T2, ..., TN are the types +// of elements from sequences produces by gen1, gen2, ..., genN. +// +// Combine can have up to 10 arguments. This number is currently limited +// by the maximum number of elements in the tuple implementation used by Google +// Test. +// +// Example: +// +// This will instantiate tests in test case AnimalTest each one with +// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), +// tuple("dog", BLACK), and tuple("dog", WHITE): +// +// enum Color { BLACK, GRAY, WHITE }; +// class AnimalTest +// : public testing::TestWithParam > {...}; +// +// TEST_P(AnimalTest, AnimalLooksNice) {...} +// +// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, +// Combine(Values("cat", "dog"), +// Values(BLACK, WHITE))); +// +// This will instantiate tests in FlagDependentTest with all variations of two +// Boolean flags: +// +// class FlagDependentTest +// : public testing::TestWithParam > { +// virtual void SetUp() { +// // Assigns external_flag_1 and external_flag_2 values from the tuple. +// tie(external_flag_1, external_flag_2) = GetParam(); +// } +// }; +// +// TEST_P(FlagDependentTest, TestFeature1) { +// // Test your code using external_flag_1 and external_flag_2 here. +// } +// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, +// Combine(Bool(), Bool())); +// +template +internal::CartesianProductHolder2 Combine( + const Generator1& g1, const Generator2& g2) { + return internal::CartesianProductHolder2( + g1, g2); +} + +template +internal::CartesianProductHolder3 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3) { + return internal::CartesianProductHolder3( + g1, g2, g3); +} + +template +internal::CartesianProductHolder4 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4) { + return internal::CartesianProductHolder4( + g1, g2, g3, g4); +} + +template +internal::CartesianProductHolder5 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5) { + return internal::CartesianProductHolder5( + g1, g2, g3, g4, g5); +} + +template +internal::CartesianProductHolder6 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6) { + return internal::CartesianProductHolder6( + g1, g2, g3, g4, g5, g6); +} + +template +internal::CartesianProductHolder7 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7) { + return internal::CartesianProductHolder7( + g1, g2, g3, g4, g5, g6, g7); +} + +template +internal::CartesianProductHolder8 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8) { + return internal::CartesianProductHolder8( + g1, g2, g3, g4, g5, g6, g7, g8); +} + +template +internal::CartesianProductHolder9 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9) { + return internal::CartesianProductHolder9( + g1, g2, g3, g4, g5, g6, g7, g8, g9); +} + +template +internal::CartesianProductHolder10 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9, + const Generator10& g10) { + return internal::CartesianProductHolder10( + g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); +} +# endif // GTEST_HAS_COMBINE + + + +# define TEST_P(test_case_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + : public test_case_name { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ + virtual void TestBody(); \ + private: \ + static int AddToRegistry() { \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ + #test_case_name, \ + #test_name, \ + new ::testing::internal::TestMetaFactory< \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_case_name, \ + test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ + void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ + ::testing::internal::ParamGenerator \ + gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ + int gtest_##prefix##test_case_name##_dummy_ = \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ + #prefix, \ + >est_##prefix##test_case_name##_EvalGenerator_, \ + __FILE__, __LINE__) + +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Google C++ Testing Framework definitions useful in production code. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_ + +// When you need to test the private or protected members of a class, +// use the FRIEND_TEST macro to declare your tests as friends of the +// class. For example: +// +// class MyClass { +// private: +// void MyMethod(); +// FRIEND_TEST(MyClassTest, MyMethod); +// }; +// +// class MyClassTest : public testing::Test { +// // ... +// }; +// +// TEST_F(MyClassTest, MyMethod) { +// // Can call MyClass::MyMethod() here. +// } + +#define FRIEND_TEST(test_case_name, test_name)\ +friend class test_case_name##_##test_name##_Test + +#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ + +#include +#include + +namespace testing { + +// A copyable object representing the result of a test part (i.e. an +// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()). +// +// Don't inherit from TestPartResult as its destructor is not virtual. +class GTEST_API_ TestPartResult { + public: + // The possible outcomes of a test part (i.e. an assertion or an + // explicit SUCCEED(), FAIL(), or ADD_FAILURE()). + enum Type { + kSuccess, // Succeeded. + kNonFatalFailure, // Failed but the test can continue. + kFatalFailure // Failed and the test should be terminated. + }; + + // C'tor. TestPartResult does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestPartResult object. + TestPartResult(Type a_type, + const char* a_file_name, + int a_line_number, + const char* a_message) + : type_(a_type), + file_name_(a_file_name), + line_number_(a_line_number), + summary_(ExtractSummary(a_message)), + message_(a_message) { + } + + // Gets the outcome of the test part. + Type type() const { return type_; } + + // Gets the name of the source file where the test part took place, or + // NULL if it's unknown. + const char* file_name() const { return file_name_.c_str(); } + + // Gets the line in the source file where the test part took place, + // or -1 if it's unknown. + int line_number() const { return line_number_; } + + // Gets the summary of the failure message. + const char* summary() const { return summary_.c_str(); } + + // Gets the message associated with the test part. + const char* message() const { return message_.c_str(); } + + // Returns true iff the test part passed. + bool passed() const { return type_ == kSuccess; } + + // Returns true iff the test part failed. + bool failed() const { return type_ != kSuccess; } + + // Returns true iff the test part non-fatally failed. + bool nonfatally_failed() const { return type_ == kNonFatalFailure; } + + // Returns true iff the test part fatally failed. + bool fatally_failed() const { return type_ == kFatalFailure; } + private: + Type type_; + + // Gets the summary of the failure message by omitting the stack + // trace in it. + static internal::String ExtractSummary(const char* message); + + // The name of the source file where the test part took place, or + // NULL if the source file is unknown. + internal::String file_name_; + // The line in the source file where the test part took place, or -1 + // if the line number is unknown. + int line_number_; + internal::String summary_; // The test failure summary. + internal::String message_; // The test failure message. +}; + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result); + +// An array of TestPartResult objects. +// +// Don't inherit from TestPartResultArray as its destructor is not +// virtual. +class GTEST_API_ TestPartResultArray { + public: + TestPartResultArray() {} + + // Appends the given TestPartResult to the array. + void Append(const TestPartResult& result); + + // Returns the TestPartResult at the given index (0-based). + const TestPartResult& GetTestPartResult(int index) const; + + // Returns the number of TestPartResult objects in the array. + int size() const; + + private: + std::vector array_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray); +}; + +// This interface knows how to report a test part result. +class TestPartResultReporterInterface { + public: + virtual ~TestPartResultReporterInterface() {} + + virtual void ReportTestPartResult(const TestPartResult& result) = 0; +}; + +namespace internal { + +// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a +// statement generates new fatal failures. To do so it registers itself as the +// current test part result reporter. Besides checking if fatal failures were +// reported, it only delegates the reporting to the former result reporter. +// The original result reporter is restored in the destructor. +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +class GTEST_API_ HasNewFatalFailureHelper + : public TestPartResultReporterInterface { + public: + HasNewFatalFailureHelper(); + virtual ~HasNewFatalFailureHelper(); + virtual void ReportTestPartResult(const TestPartResult& result); + bool has_new_fatal_failure() const { return has_new_fatal_failure_; } + private: + bool has_new_fatal_failure_; + TestPartResultReporterInterface* original_reporter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper); +}; + +} // namespace internal + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ + +// This header implements typed tests and type-parameterized tests. + +// Typed (aka type-driven) tests repeat the same test for types in a +// list. You must know which types you want to test with when writing +// typed tests. Here's how you do it: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + public: + ... + typedef std::list List; + static T shared_; + T value_; +}; + +// Next, associate a list of types with the test case, which will be +// repeated for each type in the list. The typedef is necessary for +// the macro to parse correctly. +typedef testing::Types MyTypes; +TYPED_TEST_CASE(FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// TYPED_TEST_CASE(FooTest, int); + +// Then, use TYPED_TEST() instead of TEST_F() to define as many typed +// tests for this test case as you want. +TYPED_TEST(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + // Since we are inside a derived class template, C++ requires use to + // visit the members of FooTest via 'this'. + TypeParam n = this->value_; + + // To visit static members of the fixture, add the TestFixture:: + // prefix. + n += TestFixture::shared_; + + // To refer to typedefs in the fixture, add the "typename + // TestFixture::" prefix. + typename TestFixture::List values; + values.push_back(n); + ... +} + +TYPED_TEST(FooTest, HasPropertyA) { ... } + +#endif // 0 + +// Type-parameterized tests are abstract test patterns parameterized +// by a type. Compared with typed tests, type-parameterized tests +// allow you to define the test pattern without knowing what the type +// parameters are. The defined pattern can be instantiated with +// different types any number of times, in any number of translation +// units. +// +// If you are designing an interface or concept, you can define a +// suite of type-parameterized tests to verify properties that any +// valid implementation of the interface/concept should have. Then, +// each implementation can easily instantiate the test suite to verify +// that it conforms to the requirements, without having to write +// similar tests repeatedly. Here's an example: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + ... +}; + +// Next, declare that you will define a type-parameterized test case +// (the _P suffix is for "parameterized" or "pattern", whichever you +// prefer): +TYPED_TEST_CASE_P(FooTest); + +// Then, use TYPED_TEST_P() to define as many type-parameterized tests +// for this type-parameterized test case as you want. +TYPED_TEST_P(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + TypeParam n = 0; + ... +} + +TYPED_TEST_P(FooTest, HasPropertyA) { ... } + +// Now the tricky part: you need to register all test patterns before +// you can instantiate them. The first argument of the macro is the +// test case name; the rest are the names of the tests in this test +// case. +REGISTER_TYPED_TEST_CASE_P(FooTest, + DoesBlah, HasPropertyA); + +// Finally, you are free to instantiate the pattern with the types you +// want. If you put the above code in a header file, you can #include +// it in multiple C++ source files and instantiate it multiple times. +// +// To distinguish different instances of the pattern, the first +// argument to the INSTANTIATE_* macro is a prefix that will be added +// to the actual test case name. Remember to pick unique prefixes for +// different instances. +typedef testing::Types MyTypes; +INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int); + +#endif // 0 + + +// Implements typed tests. + +#if GTEST_HAS_TYPED_TEST + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the typedef for the type parameters of the +// given test case. +# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define TYPED_TEST_CASE(CaseName, Types) \ + typedef ::testing::internal::TypeList< Types >::type \ + GTEST_TYPE_PARAMS_(CaseName) + +# define TYPED_TEST(CaseName, TestName) \ + template \ + class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ + : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTest< \ + CaseName, \ + ::testing::internal::TemplateSel< \ + GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ + GTEST_TYPE_PARAMS_(CaseName)>::Register(\ + "", #CaseName, #TestName, 0); \ + template \ + void GTEST_TEST_CLASS_NAME_(CaseName, TestName)::TestBody() + +#endif // GTEST_HAS_TYPED_TEST + +// Implements type-parameterized tests. + +#if GTEST_HAS_TYPED_TEST_P + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the namespace name that the type-parameterized tests for +// the given type-parameterized test case are defined in. The exact +// name of the namespace is subject to change without notice. +# define GTEST_CASE_NAMESPACE_(TestCaseName) \ + gtest_case_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the variable used to remember the names of +// the defined tests in the given test case. +# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ + gtest_typed_test_case_p_state_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. +// +// Expands to the name of the variable used to remember the names of +// the registered tests in the given test case. +# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ + gtest_registered_test_names_##TestCaseName##_ + +// The variables defined in the type-parameterized test macros are +// static as typically these macros are used in a .h file that can be +// #included in multiple translation units linked together. +# define TYPED_TEST_CASE_P(CaseName) \ + static ::testing::internal::TypedTestCasePState \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) + +# define TYPED_TEST_P(CaseName, TestName) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + template \ + class TestName : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ + __FILE__, __LINE__, #CaseName, #TestName); \ + } \ + template \ + void GTEST_CASE_NAMESPACE_(CaseName)::TestName::TestBody() + +# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ + } \ + static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ + __FILE__, __LINE__, #__VA_ARGS__) + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ + bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTestCase::type>::Register(\ + #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) + +#endif // GTEST_HAS_TYPED_TEST_P + +#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ + +// Depending on the platform, different string classes are available. +// On Linux, in addition to ::std::string, Google also makes use of +// class ::string, which has the same interface as ::std::string, but +// has a different implementation. +// +// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that +// ::string is available AND is a distinct type to ::std::string, or +// define it to 0 to indicate otherwise. +// +// If the user's ::std::string and ::string are the same class due to +// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0. +// +// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined +// heuristically. + +namespace testing { + +// Declares the flags. + +// This flag temporary enables the disabled tests. +GTEST_DECLARE_bool_(also_run_disabled_tests); + +// This flag brings the debugger on an assertion failure. +GTEST_DECLARE_bool_(break_on_failure); + +// This flag controls whether Google Test catches all test-thrown exceptions +// and logs them as failures. +GTEST_DECLARE_bool_(catch_exceptions); + +// This flag enables using colors in terminal output. Available values are +// "yes" to enable colors, "no" (disable colors), or "auto" (the default) +// to let Google Test decide. +GTEST_DECLARE_string_(color); + +// This flag sets up the filter to select by name using a glob pattern +// the tests to run. If the filter is not given all tests are executed. +GTEST_DECLARE_string_(filter); + +// This flag causes the Google Test to list tests. None of the tests listed +// are actually run if the flag is provided. +GTEST_DECLARE_bool_(list_tests); + +// This flag controls whether Google Test emits a detailed XML report to a file +// in addition to its normal textual output. +GTEST_DECLARE_string_(output); + +// This flags control whether Google Test prints the elapsed time for each +// test. +GTEST_DECLARE_bool_(print_time); + +// This flag specifies the random number seed. +GTEST_DECLARE_int32_(random_seed); + +// This flag sets how many times the tests are repeated. The default value +// is 1. If the value is -1 the tests are repeating forever. +GTEST_DECLARE_int32_(repeat); + +// This flag controls whether Google Test includes Google Test internal +// stack frames in failure stack traces. +GTEST_DECLARE_bool_(show_internal_stack_frames); + +// When this flag is specified, tests' order is randomized on every iteration. +GTEST_DECLARE_bool_(shuffle); + +// This flag specifies the maximum number of stack frames to be +// printed in a failure message. +GTEST_DECLARE_int32_(stack_trace_depth); + +// When this flag is specified, a failed assertion will throw an +// exception if exceptions are enabled, or exit the program with a +// non-zero code otherwise. +GTEST_DECLARE_bool_(throw_on_failure); + +// When this flag is set with a "host:port" string, on supported +// platforms test results are streamed to the specified port on +// the specified host machine. +GTEST_DECLARE_string_(stream_result_to); + +// The upper limit for valid stack trace depths. +const int kMaxStackTraceDepth = 100; + +namespace internal { + +class AssertHelper; +class DefaultGlobalTestPartResultReporter; +class ExecDeathTest; +class NoExecDeathTest; +class FinalSuccessChecker; +class GTestFlagSaver; +class TestResultAccessor; +class TestEventListenersAccessor; +class TestEventRepeater; +class WindowsDeathTest; +class UnitTestImpl* GetUnitTestImpl(); +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const String& message); + +// Converts a streamable value to a String. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared in gtest-internal.h but defined here, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +String StreamableToString(const T& streamable) { + return (Message() << streamable).GetString(); +} + +} // namespace internal + +// The friend relationship of some of these classes is cyclic. +// If we don't forward declare them the compiler might confuse the classes +// in friendship clauses with same named classes on the scope. +class Test; +class TestCase; +class TestInfo; +class UnitTest; + +// A class for indicating whether an assertion was successful. When +// the assertion wasn't successful, the AssertionResult object +// remembers a non-empty message that describes how it failed. +// +// To create an instance of this class, use one of the factory functions +// (AssertionSuccess() and AssertionFailure()). +// +// This class is useful for two purposes: +// 1. Defining predicate functions to be used with Boolean test assertions +// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts +// 2. Defining predicate-format functions to be +// used with predicate assertions (ASSERT_PRED_FORMAT*, etc). +// +// For example, if you define IsEven predicate: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5))) +// will print the message +// +// Value of: IsEven(Fib(5)) +// Actual: false (5 is odd) +// Expected: true +// +// instead of a more opaque +// +// Value of: IsEven(Fib(5)) +// Actual: false +// Expected: true +// +// in case IsEven is a simple Boolean predicate. +// +// If you expect your predicate to be reused and want to support informative +// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up +// about half as often as positive ones in our tests), supply messages for +// both success and failure cases: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess() << n << " is even"; +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print +// +// Value of: IsEven(Fib(6)) +// Actual: true (8 is even) +// Expected: false +// +// NB: Predicates that support negative Boolean assertions have reduced +// performance in positive ones so be careful not to use them in tests +// that have lots (tens of thousands) of positive Boolean assertions. +// +// To use this class with EXPECT_PRED_FORMAT assertions such as: +// +// // Verifies that Foo() returns an even number. +// EXPECT_PRED_FORMAT1(IsEven, Foo()); +// +// you need to define: +// +// testing::AssertionResult IsEven(const char* expr, int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() +// << "Expected: " << expr << " is even\n Actual: it's " << n; +// } +// +// If Foo() returns 5, you will see the following message: +// +// Expected: Foo() is even +// Actual: it's 5 +// +class GTEST_API_ AssertionResult { + public: + // Copy constructor. + // Used in EXPECT_TRUE/FALSE(assertion_result). + AssertionResult(const AssertionResult& other); + // Used in the EXPECT_TRUE/FALSE(bool_expression). + explicit AssertionResult(bool success) : success_(success) {} + + // Returns true iff the assertion succeeded. + operator bool() const { return success_; } // NOLINT + + // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. + AssertionResult operator!() const; + + // Returns the text streamed into this AssertionResult. Test assertions + // use it when they fail (i.e., the predicate's outcome doesn't match the + // assertion's expectation). When nothing has been streamed into the + // object, returns an empty string. + const char* message() const { + return message_.get() != NULL ? message_->c_str() : ""; + } + // TODO(vladl@google.com): Remove this after making sure no clients use it. + // Deprecated; please use message() instead. + const char* failure_message() const { return message(); } + + // Streams a custom failure message into this object. + template AssertionResult& operator<<(const T& value) { + AppendMessage(Message() << value); + return *this; + } + + // Allows streaming basic output manipulators such as endl or flush into + // this object. + AssertionResult& operator<<( + ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) { + AppendMessage(Message() << basic_manipulator); + return *this; + } + + private: + // Appends the contents of message to message_. + void AppendMessage(const Message& a_message) { + if (message_.get() == NULL) + message_.reset(new ::std::string); + message_->append(a_message.GetString().c_str()); + } + + // Stores result of the assertion predicate. + bool success_; + // Stores the message describing the condition in case the expectation + // construct is not satisfied with the predicate's outcome. + // Referenced via a pointer to avoid taking too much stack frame space + // with test assertions. + internal::scoped_ptr< ::std::string> message_; + + GTEST_DISALLOW_ASSIGN_(AssertionResult); +}; + +// Makes a successful assertion result. +GTEST_API_ AssertionResult AssertionSuccess(); + +// Makes a failed assertion result. +GTEST_API_ AssertionResult AssertionFailure(); + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << msg. +GTEST_API_ AssertionResult AssertionFailure(const Message& msg); + +// The abstract class that all tests inherit from. +// +// In Google Test, a unit test program contains one or many TestCases, and +// each TestCase contains one or many Tests. +// +// When you define a test using the TEST macro, you don't need to +// explicitly derive from Test - the TEST macro automatically does +// this for you. +// +// The only time you derive from Test is when defining a test fixture +// to be used a TEST_F. For example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { ... } +// virtual void TearDown() { ... } +// ... +// }; +// +// TEST_F(FooTest, Bar) { ... } +// TEST_F(FooTest, Baz) { ... } +// +// Test is not copyable. +class GTEST_API_ Test { + public: + friend class TestInfo; + + // Defines types for pointers to functions that set up and tear down + // a test case. + typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc; + typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc; + + // The d'tor is virtual as we intend to inherit from Test. + virtual ~Test(); + + // Sets up the stuff shared by all tests in this test case. + // + // Google Test will call Foo::SetUpTestCase() before running the first + // test in test case Foo. Hence a sub-class can define its own + // SetUpTestCase() method to shadow the one defined in the super + // class. + static void SetUpTestCase() {} + + // Tears down the stuff shared by all tests in this test case. + // + // Google Test will call Foo::TearDownTestCase() after running the last + // test in test case Foo. Hence a sub-class can define its own + // TearDownTestCase() method to shadow the one defined in the super + // class. + static void TearDownTestCase() {} + + // Returns true iff the current test has a fatal failure. + static bool HasFatalFailure(); + + // Returns true iff the current test has a non-fatal failure. + static bool HasNonfatalFailure(); + + // Returns true iff the current test has a (either fatal or + // non-fatal) failure. + static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); } + + // Logs a property for the current test. Only the last value for a given + // key is remembered. + // These are public static so they can be called from utility functions + // that are not members of the test fixture. + // The arguments are const char* instead strings, as Google Test is used + // on platforms where string doesn't compile. + // + // Note that a driving consideration for these RecordProperty methods + // was to produce xml output suited to the Greenspan charting utility, + // which at present will only chart values that fit in a 32-bit int. It + // is the user's responsibility to restrict their values to 32-bit ints + // if they intend them to be used with Greenspan. + static void RecordProperty(const char* key, const char* value); + static void RecordProperty(const char* key, int value); + + protected: + // Creates a Test object. + Test(); + + // Sets up the test fixture. + virtual void SetUp(); + + // Tears down the test fixture. + virtual void TearDown(); + + private: + // Returns true iff the current test has the same fixture class as + // the first test in the current test case. + static bool HasSameFixtureClass(); + + // Runs the test after the test fixture has been set up. + // + // A sub-class must implement this to define the test logic. + // + // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM. + // Instead, use the TEST or TEST_F macro. + virtual void TestBody() = 0; + + // Sets up, executes, and tears down the test. + void Run(); + + // Deletes self. We deliberately pick an unusual name for this + // internal method to avoid clashing with names used in user TESTs. + void DeleteSelf_() { delete this; } + + // Uses a GTestFlagSaver to save and restore all Google Test flags. + const internal::GTestFlagSaver* const gtest_flag_saver_; + + // Often a user mis-spells SetUp() as Setup() and spends a long time + // wondering why it is never called by Google Test. The declaration of + // the following method is solely for catching such an error at + // compile time: + // + // - The return type is deliberately chosen to be not void, so it + // will be a conflict if a user declares void Setup() in his test + // fixture. + // + // - This method is private, so it will be another compiler error + // if a user calls it from his test fixture. + // + // DO NOT OVERRIDE THIS FUNCTION. + // + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } + + // We disallow copying Tests. + GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); +}; + +typedef internal::TimeInMillis TimeInMillis; + +// A copyable object representing a user specified test property which can be +// output as a key/value string pair. +// +// Don't inherit from TestProperty as its destructor is not virtual. +class TestProperty { + public: + // C'tor. TestProperty does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestProperty object. + TestProperty(const char* a_key, const char* a_value) : + key_(a_key), value_(a_value) { + } + + // Gets the user supplied key. + const char* key() const { + return key_.c_str(); + } + + // Gets the user supplied value. + const char* value() const { + return value_.c_str(); + } + + // Sets a new value, overriding the one supplied in the constructor. + void SetValue(const char* new_value) { + value_ = new_value; + } + + private: + // The key supplied by the user. + internal::String key_; + // The value supplied by the user. + internal::String value_; +}; + +// The result of a single Test. This includes a list of +// TestPartResults, a list of TestProperties, a count of how many +// death tests there are in the Test, and how much time it took to run +// the Test. +// +// TestResult is not copyable. +class GTEST_API_ TestResult { + public: + // Creates an empty TestResult. + TestResult(); + + // D'tor. Do not inherit from TestResult. + ~TestResult(); + + // Gets the number of all test parts. This is the sum of the number + // of successful test parts and the number of failed test parts. + int total_part_count() const; + + // Returns the number of the test properties. + int test_property_count() const; + + // Returns true iff the test passed (i.e. no test part failed). + bool Passed() const { return !Failed(); } + + // Returns true iff the test failed. + bool Failed() const; + + // Returns true iff the test fatally failed. + bool HasFatalFailure() const; + + // Returns true iff the test has a non-fatal failure. + bool HasNonfatalFailure() const; + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test part result among all the results. i can range + // from 0 to test_property_count() - 1. If i is not in that range, aborts + // the program. + const TestPartResult& GetTestPartResult(int i) const; + + // Returns the i-th test property. i can range from 0 to + // test_property_count() - 1. If i is not in that range, aborts the + // program. + const TestProperty& GetTestProperty(int i) const; + + private: + friend class TestInfo; + friend class UnitTest; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::ExecDeathTest; + friend class internal::TestResultAccessor; + friend class internal::UnitTestImpl; + friend class internal::WindowsDeathTest; + + // Gets the vector of TestPartResults. + const std::vector& test_part_results() const { + return test_part_results_; + } + + // Gets the vector of TestProperties. + const std::vector& test_properties() const { + return test_properties_; + } + + // Sets the elapsed time. + void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } + + // Adds a test property to the list. The property is validated and may add + // a non-fatal failure if invalid (e.g., if it conflicts with reserved + // key names). If a property is already recorded for the same key, the + // value will be updated, rather than storing multiple values for the same + // key. + void RecordProperty(const TestProperty& test_property); + + // Adds a failure if the key is a reserved attribute of Google Test + // testcase tags. Returns true if the property is valid. + // TODO(russr): Validate attribute names are legal and human readable. + static bool ValidateTestProperty(const TestProperty& test_property); + + // Adds a test part result to the list. + void AddTestPartResult(const TestPartResult& test_part_result); + + // Returns the death test count. + int death_test_count() const { return death_test_count_; } + + // Increments the death test count, returning the new count. + int increment_death_test_count() { return ++death_test_count_; } + + // Clears the test part results. + void ClearTestPartResults(); + + // Clears the object. + void Clear(); + + // Protects mutable state of the property vector and of owned + // properties, whose values may be updated. + internal::Mutex test_properites_mutex_; + + // The vector of TestPartResults + std::vector test_part_results_; + // The vector of TestProperties + std::vector test_properties_; + // Running count of death tests. + int death_test_count_; + // The elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestResult. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult); +}; // class TestResult + +// A TestInfo object stores the following information about a test: +// +// Test case name +// Test name +// Whether the test should be run +// A function pointer that creates the test object when invoked +// Test result +// +// The constructor of TestInfo registers itself with the UnitTest +// singleton such that the RUN_ALL_TESTS() macro knows which tests to +// run. +class GTEST_API_ TestInfo { + public: + // Destructs a TestInfo object. This function is not virtual, so + // don't inherit from TestInfo. + ~TestInfo(); + + // Returns the test case name. + const char* test_case_name() const { return test_case_name_.c_str(); } + + // Returns the test name. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a typed + // or a type-parameterized test. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns the text representation of the value parameter, or NULL if this + // is not a value-parameterized test. + const char* value_param() const { + if (value_param_.get() != NULL) + return value_param_->c_str(); + return NULL; + } + + // Returns true if this test should run, that is if the test is not disabled + // (or it is disabled but the also_run_disabled_tests flag has been specified) + // and its full name matches the user-specified filter. + // + // Google Test allows the user to filter the tests by their full names. + // The full name of a test Bar in test case Foo is defined as + // "Foo.Bar". Only the tests that match the filter will run. + // + // A filter is a colon-separated list of glob (not regex) patterns, + // optionally followed by a '-' and a colon-separated list of + // negative patterns (tests to exclude). A test is run if it + // matches one of the positive patterns and does not match any of + // the negative patterns. + // + // For example, *A*:Foo.* is a filter that matches any string that + // contains the character 'A' or starts with "Foo.". + bool should_run() const { return should_run_; } + + // Returns the result of the test. + const TestResult* result() const { return &result_; } + + private: + +#if GTEST_HAS_DEATH_TEST + friend class internal::DefaultDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + friend class Test; + friend class TestCase; + friend class internal::UnitTestImpl; + friend TestInfo* internal::MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + internal::TypeId fixture_class_id, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + internal::TestFactoryBase* factory); + + // Constructs a TestInfo object. The newly constructed instance assumes + // ownership of the factory object. + TestInfo(const char* test_case_name, const char* name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory); + + // Increments the number of death tests encountered in this test so + // far. + int increment_death_test_count() { + return result_.increment_death_test_count(); + } + + // Creates the test object, runs it, records its result, and then + // deletes it. + void Run(); + + static void ClearTestResult(TestInfo* test_info) { + test_info->result_.Clear(); + } + + // These fields are immutable properties of the test. + const std::string test_case_name_; // Test case name + const std::string name_; // Test name + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // Text representation of the value parameter, or NULL if this is not a + // value-parameterized test. + const internal::scoped_ptr value_param_; + const internal::TypeId fixture_class_id_; // ID of the test fixture class + bool should_run_; // True iff this test should run + bool is_disabled_; // True iff this test is disabled + bool matches_filter_; // True if this test matches the + // user-specified filter. + internal::TestFactoryBase* const factory_; // The factory that creates + // the test object + + // This field is mutable and needs to be reset before running the + // test for the second time. + TestResult result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo); +}; + +// A test case, which consists of a vector of TestInfos. +// +// TestCase is not copyable. +class GTEST_API_ TestCase { + public: + // Creates a TestCase with the given name. + // + // TestCase does NOT have a default constructor. Always use this + // constructor to create a TestCase object. + // + // Arguments: + // + // name: name of the test case + // a_type_param: the name of the test's type parameter, or NULL if + // this is not a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase(const char* name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Destructor of TestCase. + virtual ~TestCase(); + + // Gets the name of the TestCase. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a + // type-parameterized test case. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns true if any test in this test case should run. + bool should_run() const { return should_run_; } + + // Gets the number of successful tests in this test case. + int successful_test_count() const; + + // Gets the number of failed tests in this test case. + int failed_test_count() const; + + // Gets the number of disabled tests in this test case. + int disabled_test_count() const; + + // Get the number of tests in this test case that should run. + int test_to_run_count() const; + + // Gets the number of all tests in this test case. + int total_test_count() const; + + // Returns true iff the test case passed. + bool Passed() const { return !Failed(); } + + // Returns true iff the test case failed. + bool Failed() const { return failed_test_count() > 0; } + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + const TestInfo* GetTestInfo(int i) const; + + private: + friend class Test; + friend class internal::UnitTestImpl; + + // Gets the (mutable) vector of TestInfos in this TestCase. + std::vector& test_info_list() { return test_info_list_; } + + // Gets the (immutable) vector of TestInfos in this TestCase. + const std::vector& test_info_list() const { + return test_info_list_; + } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + TestInfo* GetMutableTestInfo(int i); + + // Sets the should_run member. + void set_should_run(bool should) { should_run_ = should; } + + // Adds a TestInfo to this test case. Will delete the TestInfo upon + // destruction of the TestCase object. + void AddTestInfo(TestInfo * test_info); + + // Clears the results of all tests in this test case. + void ClearResult(); + + // Clears the results of all tests in the given test case. + static void ClearTestCaseResult(TestCase* test_case) { + test_case->ClearResult(); + } + + // Runs every test in this TestCase. + void Run(); + + // Runs SetUpTestCase() for this TestCase. This wrapper is needed + // for catching exceptions thrown from SetUpTestCase(). + void RunSetUpTestCase() { (*set_up_tc_)(); } + + // Runs TearDownTestCase() for this TestCase. This wrapper is + // needed for catching exceptions thrown from TearDownTestCase(). + void RunTearDownTestCase() { (*tear_down_tc_)(); } + + // Returns true iff test passed. + static bool TestPassed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Passed(); + } + + // Returns true iff test failed. + static bool TestFailed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Failed(); + } + + // Returns true iff test is disabled. + static bool TestDisabled(const TestInfo* test_info) { + return test_info->is_disabled_; + } + + // Returns true if the given test should run. + static bool ShouldRunTest(const TestInfo* test_info) { + return test_info->should_run(); + } + + // Shuffles the tests in this test case. + void ShuffleTests(internal::Random* random); + + // Restores the test order to before the first shuffle. + void UnshuffleTests(); + + // Name of the test case. + internal::String name_; + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // The vector of TestInfos in their original order. It owns the + // elements in the vector. + std::vector test_info_list_; + // Provides a level of indirection for the test list to allow easy + // shuffling and restoring the test order. The i-th element in this + // vector is the index of the i-th test in the shuffled test list. + std::vector test_indices_; + // Pointer to the function that sets up the test case. + Test::SetUpTestCaseFunc set_up_tc_; + // Pointer to the function that tears down the test case. + Test::TearDownTestCaseFunc tear_down_tc_; + // True iff any test in this test case should run. + bool should_run_; + // Elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestCases. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase); +}; + +// An Environment object is capable of setting up and tearing down an +// environment. The user should subclass this to define his own +// environment(s). +// +// An Environment object does the set-up and tear-down in virtual +// methods SetUp() and TearDown() instead of the constructor and the +// destructor, as: +// +// 1. You cannot safely throw from a destructor. This is a problem +// as in some cases Google Test is used where exceptions are enabled, and +// we may want to implement ASSERT_* using exceptions where they are +// available. +// 2. You cannot use ASSERT_* directly in a constructor or +// destructor. +class Environment { + public: + // The d'tor is virtual as we need to subclass Environment. + virtual ~Environment() {} + + // Override this to define how to set up the environment. + virtual void SetUp() {} + + // Override this to define how to tear down the environment. + virtual void TearDown() {} + private: + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } +}; + +// The interface for tracing execution of tests. The methods are organized in +// the order the corresponding events are fired. +class TestEventListener { + public: + virtual ~TestEventListener() {} + + // Fired before any test activity starts. + virtual void OnTestProgramStart(const UnitTest& unit_test) = 0; + + // Fired before each iteration of tests starts. There may be more than + // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration + // index, starting from 0. + virtual void OnTestIterationStart(const UnitTest& unit_test, + int iteration) = 0; + + // Fired before environment set-up for each iteration of tests starts. + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0; + + // Fired after environment set-up for each iteration of tests ends. + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0; + + // Fired before the test case starts. + virtual void OnTestCaseStart(const TestCase& test_case) = 0; + + // Fired before the test starts. + virtual void OnTestStart(const TestInfo& test_info) = 0; + + // Fired after a failed assertion or a SUCCEED() invocation. + virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0; + + // Fired after the test ends. + virtual void OnTestEnd(const TestInfo& test_info) = 0; + + // Fired after the test case ends. + virtual void OnTestCaseEnd(const TestCase& test_case) = 0; + + // Fired before environment tear-down for each iteration of tests starts. + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0; + + // Fired after environment tear-down for each iteration of tests ends. + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0; + + // Fired after each iteration of tests finishes. + virtual void OnTestIterationEnd(const UnitTest& unit_test, + int iteration) = 0; + + // Fired after all test activities have ended. + virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; +}; + +// The convenience class for users who need to override just one or two +// methods and are not concerned that a possible change to a signature of +// the methods they override will not be caught during the build. For +// comments about each method please see the definition of TestEventListener +// above. +class EmptyTestEventListener : public TestEventListener { + public: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} + virtual void OnTestStart(const TestInfo& /*test_info*/) {} + virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} + virtual void OnTestEnd(const TestInfo& /*test_info*/) {} + virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} + virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} +}; + +// TestEventListeners lets users add listeners to track events in Google Test. +class GTEST_API_ TestEventListeners { + public: + TestEventListeners(); + ~TestEventListeners(); + + // Appends an event listener to the end of the list. Google Test assumes + // the ownership of the listener (i.e. it will delete the listener when + // the test program finishes). + void Append(TestEventListener* listener); + + // Removes the given event listener from the list and returns it. It then + // becomes the caller's responsibility to delete the listener. Returns + // NULL if the listener is not found in the list. + TestEventListener* Release(TestEventListener* listener); + + // Returns the standard listener responsible for the default console + // output. Can be removed from the listeners list to shut down default + // console output. Note that removing this object from the listener list + // with Release transfers its ownership to the caller and makes this + // function return NULL the next time. + TestEventListener* default_result_printer() const { + return default_result_printer_; + } + + // Returns the standard listener responsible for the default XML output + // controlled by the --gtest_output=xml flag. Can be removed from the + // listeners list by users who want to shut down the default XML output + // controlled by this flag and substitute it with custom one. Note that + // removing this object from the listener list with Release transfers its + // ownership to the caller and makes this function return NULL the next + // time. + TestEventListener* default_xml_generator() const { + return default_xml_generator_; + } + + private: + friend class TestCase; + friend class TestInfo; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::NoExecDeathTest; + friend class internal::TestEventListenersAccessor; + friend class internal::UnitTestImpl; + + // Returns repeater that broadcasts the TestEventListener events to all + // subscribers. + TestEventListener* repeater(); + + // Sets the default_result_printer attribute to the provided listener. + // The listener is also added to the listener list and previous + // default_result_printer is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultResultPrinter(TestEventListener* listener); + + // Sets the default_xml_generator attribute to the provided listener. The + // listener is also added to the listener list and previous + // default_xml_generator is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultXmlGenerator(TestEventListener* listener); + + // Controls whether events will be forwarded by the repeater to the + // listeners in the list. + bool EventForwardingEnabled() const; + void SuppressEventForwarding(); + + // The actual list of listeners. + internal::TestEventRepeater* repeater_; + // Listener responsible for the standard result output. + TestEventListener* default_result_printer_; + // Listener responsible for the creation of the XML output file. + TestEventListener* default_xml_generator_; + + // We disallow copying TestEventListeners. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners); +}; + +// A UnitTest consists of a vector of TestCases. +// +// This is a singleton class. The only instance of UnitTest is +// created when UnitTest::GetInstance() is first called. This +// instance is never deleted. +// +// UnitTest is not copyable. +// +// This class is thread-safe as long as the methods are called +// according to their specification. +class GTEST_API_ UnitTest { + public: + // Gets the singleton UnitTest object. The first time this method + // is called, a UnitTest object is constructed and returned. + // Consecutive calls will return the same object. + static UnitTest* GetInstance(); + + // Runs all tests in this UnitTest object and prints the result. + // Returns 0 if successful, or 1 otherwise. + // + // This method can only be called from the main thread. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + int Run() GTEST_MUST_USE_RESULT_; + + // Returns the working directory when the first TEST() or TEST_F() + // was executed. The UnitTest object owns the string. + const char* original_working_dir() const; + + // Returns the TestCase object for the test that's currently running, + // or NULL if no test is running. + const TestCase* current_test_case() const; + + // Returns the TestInfo object for the test that's currently running, + // or NULL if no test is running. + const TestInfo* current_test_info() const; + + // Returns the random seed used at the start of the current test run. + int random_seed() const; + +#if GTEST_HAS_PARAM_TEST + // Returns the ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry(); +#endif // GTEST_HAS_PARAM_TEST + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const; + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const; + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const; + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const; + + // Returns the list of event listeners that can be used to track events + // inside Google Test. + TestEventListeners& listeners(); + + private: + // Registers and returns a global test environment. When a test + // program is run, all global test environments will be set-up in + // the order they were registered. After all tests in the program + // have finished, all global test environments will be torn-down in + // the *reverse* order they were registered. + // + // The UnitTest object takes ownership of the given environment. + // + // This method can only be called from the main thread. + Environment* AddEnvironment(Environment* env); + + // Adds a TestPartResult to the current TestResult object. All + // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) + // eventually call this to report their results. The user code + // should use the assertion macros instead of calling this directly. + void AddTestPartResult(TestPartResult::Type result_type, + const char* file_name, + int line_number, + const internal::String& message, + const internal::String& os_stack_trace); + + // Adds a TestProperty to the current TestResult object. If the result already + // contains a property with the same key, the value will be updated. + void RecordPropertyForCurrentTest(const char* key, const char* value); + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i); + + // Accessors for the implementation object. + internal::UnitTestImpl* impl() { return impl_; } + const internal::UnitTestImpl* impl() const { return impl_; } + + // These classes and funcions are friends as they need to access private + // members of UnitTest. + friend class Test; + friend class internal::AssertHelper; + friend class internal::ScopedTrace; + friend Environment* AddGlobalTestEnvironment(Environment* env); + friend internal::UnitTestImpl* internal::GetUnitTestImpl(); + friend void internal::ReportFailureInUnknownLocation( + TestPartResult::Type result_type, + const internal::String& message); + + // Creates an empty UnitTest. + UnitTest(); + + // D'tor + virtual ~UnitTest(); + + // Pushes a trace defined by SCOPED_TRACE() on to the per-thread + // Google Test trace stack. + void PushGTestTrace(const internal::TraceInfo& trace); + + // Pops a trace from the per-thread Google Test trace stack. + void PopGTestTrace(); + + // Protects mutable state in *impl_. This is mutable as some const + // methods need to lock it too. + mutable internal::Mutex mutex_; + + // Opaque implementation object. This field is never changed once + // the object is constructed. We don't mark it as const here, as + // doing so will cause a warning in the constructor of UnitTest. + // Mutable state in *impl_ is protected by mutex_. + internal::UnitTestImpl* impl_; + + // We disallow copying UnitTest. + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest); +}; + +// A convenient wrapper for adding an environment for the test +// program. +// +// You should call this before RUN_ALL_TESTS() is called, probably in +// main(). If you use gtest_main, you need to call this before main() +// starts for it to take effect. For example, you can define a global +// variable like this: +// +// testing::Environment* const foo_env = +// testing::AddGlobalTestEnvironment(new FooEnvironment); +// +// However, we strongly recommend you to write your own main() and +// call AddGlobalTestEnvironment() there, as relying on initialization +// of global variables makes the code harder to read and may cause +// problems when you register multiple environments from different +// translation units and the environments have dependencies among them +// (remember that the compiler doesn't guarantee the order in which +// global variables from different translation units are initialized). +inline Environment* AddGlobalTestEnvironment(Environment* env) { + return UnitTest::GetInstance()->AddEnvironment(env); +} + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +GTEST_API_ void InitGoogleTest(int* argc, char** argv); + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv); + +namespace internal { + +// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc) +// operand to be used in a failure message. The type (but not value) +// of the other operand may affect the format. This allows us to +// print a char* as a raw pointer when it is compared against another +// char*, and print it as a C string when it is compared against an +// std::string object, for example. +// +// The default implementation ignores the type of the other operand. +// Some specialized versions are used to handle formatting wide or +// narrow C strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +String FormatForComparisonFailureMessage(const T1& value, + const T2& /* other_operand */) { + // C++Builder compiles this incorrectly if the namespace isn't explicitly + // given. + return ::testing::PrintToString(value); +} + +// The helper function for {ASSERT|EXPECT}_EQ. +template +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4389) // Temporarily disables warning on + // signed/unsigned mismatch. +#endif + + if (expected == actual) { + return AssertionSuccess(); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// With this overloaded version, we allow anonymous enums to be used +// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums +// can be implicitly cast to BiggestInt. +GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual); + +// The helper class for {ASSERT|EXPECT}_EQ. The template argument +// lhs_is_null_literal is true iff the first argument to ASSERT_EQ() +// is a null pointer literal. The following default implementation is +// for lhs_is_null_literal being false. +template +class EqHelper { + public: + // This templatized version is for the general case. + template + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // With this overloaded version, we allow anonymous enums to be used + // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous + // enums can be implicitly cast to BiggestInt. + // + // Even though its body looks the same as the above version, we + // cannot merge the two, as it will make anonymous enums unhappy. + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } +}; + +// This specialization is used when the first argument to ASSERT_EQ() +// is a null pointer literal, like NULL, false, or 0. +template <> +class EqHelper { + public: + // We define two overloaded versions of Compare(). The first + // version will be picked when the second argument to ASSERT_EQ() is + // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or + // EXPECT_EQ(false, a_bool). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual, + // The following line prevents this overload from being considered if T2 + // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) + // expands to Compare("", "", NULL, my_ptr), which requires a conversion + // to match the Secret* in the other overload, which would otherwise make + // this template match better. + typename EnableIf::value>::type* = 0) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // This version will be picked when the second argument to ASSERT_EQ() is a + // pointer, e.g. ASSERT_EQ(NULL, a_pointer). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + // We used to have a second template parameter instead of Secret*. That + // template parameter would deduce to 'long', making this a better match + // than the first overload even without the first overload's EnableIf. + // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to + // non-pointer argument" (even a deduced integral argument), so the old + // implementation caused warnings in user code. + Secret* /* expected (NULL) */, + T* actual) { + // We already know that 'expected' is a null pointer. + return CmpHelperEQ(expected_expression, actual_expression, + static_cast(NULL), actual); + } +}; + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste +// of similar code. +// +// For each templatized helper function, we also define an overloaded +// version for BiggestInt in order to reduce code bloat and allow +// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled +// with gcc 4. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +template \ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + const T1& val1, const T2& val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +}\ +GTEST_API_ AssertionResult CmpHelper##op_name(\ + const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) + +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + +// Implements the helper function for {ASSERT|EXPECT}_NE +GTEST_IMPL_CMP_HELPER_(NE, !=); +// Implements the helper function for {ASSERT|EXPECT}_LE +GTEST_IMPL_CMP_HELPER_(LE, <=); +// Implements the helper function for {ASSERT|EXPECT}_LT +GTEST_IMPL_CMP_HELPER_(LT, < ); +// Implements the helper function for {ASSERT|EXPECT}_GE +GTEST_IMPL_CMP_HELPER_(GE, >=); +// Implements the helper function for {ASSERT|EXPECT}_GT +GTEST_IMPL_CMP_HELPER_(GT, > ); + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRNE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + + +// Helper function for *_STREQ on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual); + +// Helper function for *_STRNE on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2); + +} // namespace internal + +// IsSubstring() and IsNotSubstring() are intended to be used as the +// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by +// themselves. They check whether needle is a substring of haystack +// (NULL is considered a substring of itself only), and return an +// appropriate error message when they fail. +// +// The {needle,haystack}_expr arguments are the stringified +// expressions that generated the two real arguments. +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +// Helper template function for comparing floating-points. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, + const char* actual_expression, + RawType expected, + RawType actual) { + const FloatingPoint lhs(expected), rhs(actual); + + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + ::std::stringstream expected_ss; + expected_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << expected; + + ::std::stringstream actual_ss; + actual_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << actual; + + return EqFailure(expected_expression, + actual_expression, + StringStreamToString(&expected_ss), + StringStreamToString(&actual_ss), + false); +} + +// Helper function for implementing ASSERT_NEAR. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error); + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// A class that enables one to stream messages to assertion macros +class GTEST_API_ AssertHelper { + public: + // Constructor. + AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message); + ~AssertHelper(); + + // Message assignment is a semantic trick to enable assertion + // streaming; see the GTEST_MESSAGE_ macro below. + void operator=(const Message& message) const; + + private: + // We put our data in a struct so that the size of the AssertHelper class can + // be as small as possible. This is important because gcc is incapable of + // re-using stack space even for temporary variables, so every EXPECT_EQ + // reserves stack space for another AssertHelper. + struct AssertHelperData { + AssertHelperData(TestPartResult::Type t, + const char* srcfile, + int line_num, + const char* msg) + : type(t), file(srcfile), line(line_num), message(msg) { } + + TestPartResult::Type const type; + const char* const file; + int const line; + String const message; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData); + }; + + AssertHelperData* const data_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper); +}; + +} // namespace internal + +#if GTEST_HAS_PARAM_TEST +// The pure interface class that all value-parameterized tests inherit from. +// A value-parameterized class must inherit from both ::testing::Test and +// ::testing::WithParamInterface. In most cases that just means inheriting +// from ::testing::TestWithParam, but more complicated test hierarchies +// may need to inherit from Test and WithParamInterface at different levels. +// +// This interface has support for accessing the test parameter value via +// the GetParam() method. +// +// Use it with one of the parameter generator defining functions, like Range(), +// Values(), ValuesIn(), Bool(), and Combine(). +// +// class FooTest : public ::testing::TestWithParam { +// protected: +// FooTest() { +// // Can use GetParam() here. +// } +// virtual ~FooTest() { +// // Can use GetParam() here. +// } +// virtual void SetUp() { +// // Can use GetParam() here. +// } +// virtual void TearDown { +// // Can use GetParam() here. +// } +// }; +// TEST_P(FooTest, DoesBar) { +// // Can use GetParam() method here. +// Foo foo; +// ASSERT_TRUE(foo.DoesBar(GetParam())); +// } +// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); + +template +class WithParamInterface { + public: + typedef T ParamType; + virtual ~WithParamInterface() {} + + // The current parameter value. Is also available in the test fixture's + // constructor. This member function is non-static, even though it only + // references static data, to reduce the opportunity for incorrect uses + // like writing 'WithParamInterface::GetParam()' for a test that + // uses a fixture whose parameter type is int. + const ParamType& GetParam() const { return *parameter_; } + + private: + // Sets parameter value. The caller is responsible for making sure the value + // remains alive and unchanged throughout the current test. + static void SetParam(const ParamType* parameter) { + parameter_ = parameter; + } + + // Static value used for accessing parameter during a test lifetime. + static const ParamType* parameter_; + + // TestClass must be a subclass of WithParamInterface and Test. + template friend class internal::ParameterizedTestFactory; +}; + +template +const T* WithParamInterface::parameter_ = NULL; + +// Most value-parameterized classes can ignore the existence of +// WithParamInterface, and can just inherit from ::testing::TestWithParam. + +template +class TestWithParam : public Test, public WithParamInterface { +}; + +#endif // GTEST_HAS_PARAM_TEST + +// Macros for indicating success/failure in test code. + +// ADD_FAILURE unconditionally adds a failure to the current test. +// SUCCEED generates a success - it doesn't automatically make the +// current test successful, as a test is only successful when it has +// no failure. +// +// EXPECT_* verifies that a certain condition is satisfied. If not, +// it behaves like ADD_FAILURE. In particular: +// +// EXPECT_TRUE verifies that a Boolean condition is true. +// EXPECT_FALSE verifies that a Boolean condition is false. +// +// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except +// that they will also abort the current function on failure. People +// usually want the fail-fast behavior of FAIL and ASSERT_*, but those +// writing data-driven tests often find themselves using ADD_FAILURE +// and EXPECT_* more. +// +// Examples: +// +// EXPECT_TRUE(server.StatusIsOK()); +// ASSERT_FALSE(server.HasPendingRequest(port)) +// << "There are still pending requests " << "on port " << port; + +// Generates a nonfatal failure with a generic message. +#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") + +// Generates a nonfatal failure at the given source file location with +// a generic message. +#define ADD_FAILURE_AT(file, line) \ + GTEST_MESSAGE_AT_(file, line, "Failed", \ + ::testing::TestPartResult::kNonFatalFailure) + +// Generates a fatal failure with a generic message. +#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") + +// Define this macro to 1 to omit the definition of FAIL(), which is a +// generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_FAIL +# define FAIL() GTEST_FAIL() +#endif + +// Generates a success with a generic message. +#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded") + +// Define this macro to 1 to omit the definition of SUCCEED(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_SUCCEED +# define SUCCEED() GTEST_SUCCEED() +#endif + +// Macros for testing exceptions. +// +// * {ASSERT|EXPECT}_THROW(statement, expected_exception): +// Tests that the statement throws the expected exception. +// * {ASSERT|EXPECT}_NO_THROW(statement): +// Tests that the statement doesn't throw any exception. +// * {ASSERT|EXPECT}_ANY_THROW(statement): +// Tests that the statement throws an exception. + +#define EXPECT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) +#define EXPECT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define EXPECT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define ASSERT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) +#define ASSERT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) +#define ASSERT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) + +// Boolean assertions. Condition can be either a Boolean expression or an +// AssertionResult. For more information on how to use AssertionResult with +// these macros see comments on that class. +#define EXPECT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_NONFATAL_FAILURE_) +#define EXPECT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_NONFATAL_FAILURE_) +#define ASSERT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_FATAL_FAILURE_) +#define ASSERT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_FATAL_FAILURE_) + +// Includes the auto-generated header that implements a family of +// generic predicate assertion macros. +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is AUTOMATICALLY GENERATED on 09/24/2010 by command +// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! +// +// Implements a family of generic predicate assertion macros. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Makes sure this header is not included before gtest.h. +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ + +// This header implements a family of generic predicate assertion +// macros: +// +// ASSERT_PRED_FORMAT1(pred_format, v1) +// ASSERT_PRED_FORMAT2(pred_format, v1, v2) +// ... +// +// where pred_format is a function or functor that takes n (in the +// case of ASSERT_PRED_FORMATn) values and their source expression +// text, and returns a testing::AssertionResult. See the definition +// of ASSERT_EQ in gtest.h for an example. +// +// If you don't care about formatting, you can use the more +// restrictive version: +// +// ASSERT_PRED1(pred, v1) +// ASSERT_PRED2(pred, v1, v2) +// ... +// +// where pred is an n-ary function or functor that returns bool, +// and the values v1, v2, ..., must support the << operator for +// streaming to std::ostream. +// +// We also define the EXPECT_* variations. +// +// For now we only support predicates whose arity is at most 5. +// Please email googletestframework@googlegroups.com if you need +// support for higher arities. + +// GTEST_ASSERT_ is the basic statement to which all of the assertions +// in this file reduce. Don't use this in your code. + +#define GTEST_ASSERT_(expression, on_failure) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar = (expression)) \ + ; \ + else \ + on_failure(gtest_ar.failure_message()) + + +// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +template +AssertionResult AssertPred1Helper(const char* pred_text, + const char* e1, + Pred pred, + const T1& v1) { + if (pred(v1)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. +// Don't use this in your code. +#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, v1),\ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +#define GTEST_PRED1_(pred, v1, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \ + #v1, \ + pred, \ + v1), on_failure) + +// Unary predicate assertion macros. +#define EXPECT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +template +AssertionResult AssertPred2Helper(const char* pred_text, + const char* e1, + const char* e2, + Pred pred, + const T1& v1, + const T2& v2) { + if (pred(v1, v2)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. +// Don't use this in your code. +#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2),\ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +#define GTEST_PRED2_(pred, v1, v2, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \ + #v1, \ + #v2, \ + pred, \ + v1, \ + v2), on_failure) + +// Binary predicate assertion macros. +#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +template +AssertionResult AssertPred3Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3) { + if (pred(v1, v2, v3)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. +// Don't use this in your code. +#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3),\ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + pred, \ + v1, \ + v2, \ + v3), on_failure) + +// Ternary predicate assertion macros. +#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +template +AssertionResult AssertPred4Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4) { + if (pred(v1, v2, v3, v4)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. +// Don't use this in your code. +#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4),\ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4), on_failure) + +// 4-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +template +AssertionResult AssertPred5Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + const char* e5, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4, + const T5& v5) { + if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ", " + << e5 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4 + << "\n" << e5 << " evaluates to " << v5; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. +// Don't use this in your code. +#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5),\ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + #v5, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4, \ + v5), on_failure) + +// 5-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) + + + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Macros for testing equalities and inequalities. +// +// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual +// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2 +// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2 +// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2 +// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2 +// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2 +// +// When they are not, Google Test prints both the tested expressions and +// their actual values. The values must be compatible built-in types, +// or you will get a compiler error. By "compatible" we mean that the +// values can be compared by the respective operator. +// +// Note: +// +// 1. It is possible to make a user-defined type work with +// {ASSERT|EXPECT}_??(), but that requires overloading the +// comparison operators and is thus discouraged by the Google C++ +// Usage Guide. Therefore, you are advised to use the +// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are +// equal. +// +// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on +// pointers (in particular, C strings). Therefore, if you use it +// with two C strings, you are testing how their locations in memory +// are related, not how their content is related. To compare two C +// strings by content, use {ASSERT|EXPECT}_STR*(). +// +// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to +// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you +// what the actual value is when it fails, and similarly for the +// other comparisons. +// +// 4. Do not depend on the order in which {ASSERT|EXPECT}_??() +// evaluate their arguments, which is undefined. +// +// 5. These macros evaluate their arguments exactly once. +// +// Examples: +// +// EXPECT_NE(5, Foo()); +// EXPECT_EQ(NULL, a_pointer); +// ASSERT_LT(i, array_size); +// ASSERT_GT(records.size(), 0) << "There is no record left."; + +#define EXPECT_EQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define EXPECT_NE(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) +#define EXPECT_LE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define EXPECT_LT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define EXPECT_GE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define EXPECT_GT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +#define GTEST_ASSERT_EQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define GTEST_ASSERT_NE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) +#define GTEST_ASSERT_LE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define GTEST_ASSERT_LT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define GTEST_ASSERT_GE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define GTEST_ASSERT_GT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of +// ASSERT_XY(), which clashes with some users' own code. + +#if !GTEST_DONT_DEFINE_ASSERT_EQ +# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_NE +# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LE +# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LT +# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GE +# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GT +# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) +#endif + +// C String Comparisons. All tests treat NULL and any non-NULL string +// as different. Two NULLs are equal. +// +// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2 +// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2 +// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case +// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case +// +// For wide or narrow string objects, you can use the +// {ASSERT|EXPECT}_??() macros. +// +// Don't depend on the order in which the arguments are evaluated, +// which is undefined. +// +// These macros evaluate their arguments exactly once. + +#define EXPECT_STREQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define EXPECT_STRNE(s1, s2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define EXPECT_STRCASEEQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define EXPECT_STRCASENE(s1, s2)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +#define ASSERT_STREQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define ASSERT_STRNE(s1, s2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define ASSERT_STRCASEEQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define ASSERT_STRCASENE(s1, s2)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +// Macros for comparing floating-point numbers. +// +// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual): +// Tests that two float values are almost equal. +// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual): +// Tests that two double values are almost equal. +// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error): +// Tests that v1 and v2 are within the given distance to each other. +// +// Google Test uses ULP-based comparison to automatically pick a default +// error bound that is appropriate for the operands. See the +// FloatingPoint template class in gtest-internal.h if you are +// interested in the implementation details. + +#define EXPECT_FLOAT_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_DOUBLE_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_FLOAT_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_DOUBLE_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_NEAR(val1, val2, abs_error)\ + EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +#define ASSERT_NEAR(val1, val2, abs_error)\ + ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +// These predicate format functions work on floating-point values, and +// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g. +// +// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0); + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2); +GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2); + + +#if GTEST_OS_WINDOWS + +// Macros that test for HRESULT failure and success, these are only useful +// on Windows, and rely on Windows SDK macros and APIs to compile. +// +// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) +// +// When expr unexpectedly fails or succeeds, Google Test prints the +// expected result and the actual result with both a human-readable +// string representation of the error, if available, as well as the +// hex result code. +# define EXPECT_HRESULT_SUCCEEDED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define ASSERT_HRESULT_SUCCEEDED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define EXPECT_HRESULT_FAILED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +# define ASSERT_HRESULT_FAILED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +#endif // GTEST_OS_WINDOWS + +// Macros that execute statement and check that it doesn't generate new fatal +// failures in the current thread. +// +// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); +// +// Examples: +// +// EXPECT_NO_FATAL_FAILURE(Process()); +// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed"; +// +#define ASSERT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) +#define EXPECT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) + +// Causes a trace (including the source file path, the current line +// number, and the given message) to be included in every test failure +// message generated by code in the current scope. The effect is +// undone when the control leaves the current scope. +// +// The message argument can be anything streamable to std::ostream. +// +// In the implementation, we include the current line number as part +// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s +// to appear in the same block - as long as they are on different +// lines. +#define SCOPED_TRACE(message) \ + ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ + __FILE__, __LINE__, ::testing::Message() << (message)) + +// Compile-time assertion for type equality. +// StaticAssertTypeEq() compiles iff type1 and type2 are +// the same type. The value it returns is not interesting. +// +// Instead of making StaticAssertTypeEq a class template, we make it a +// function template that invokes a helper class template. This +// prevents a user from misusing StaticAssertTypeEq by +// defining objects of that type. +// +// CAVEAT: +// +// When used inside a method of a class template, +// StaticAssertTypeEq() is effective ONLY IF the method is +// instantiated. For example, given: +// +// template class Foo { +// public: +// void Bar() { testing::StaticAssertTypeEq(); } +// }; +// +// the code: +// +// void Test1() { Foo foo; } +// +// will NOT generate a compiler error, as Foo::Bar() is never +// actually instantiated. Instead, you need: +// +// void Test2() { Foo foo; foo.Bar(); } +// +// to cause a compiler error. +template +bool StaticAssertTypeEq() { + (void)internal::StaticAssertTypeEqHelper(); + return true; +} + +// Defines a test. +// +// The first parameter is the name of the test case, and the second +// parameter is the name of the test within the test case. +// +// The convention is to end the test case name with "Test". For +// example, a test case for the Foo class can be named FooTest. +// +// The user should put his test code between braces after using this +// macro. Example: +// +// TEST(FooTest, InitializesCorrectly) { +// Foo foo; +// EXPECT_TRUE(foo.StatusIsOK()); +// } + +// Note that we call GetTestTypeId() instead of GetTypeId< +// ::testing::Test>() here to get the type ID of testing::Test. This +// is to work around a suspected linker bug when using Google Test as +// a framework on Mac OS X. The bug causes GetTypeId< +// ::testing::Test>() to return different values depending on whether +// the call is from the Google Test framework itself or from user test +// code. GetTestTypeId() is guaranteed to always return the same +// value, as it always calls GetTypeId<>() from the Google Test +// framework. +#define GTEST_TEST(test_case_name, test_name)\ + GTEST_TEST_(test_case_name, test_name, \ + ::testing::Test, ::testing::internal::GetTestTypeId()) + +// Define this macro to 1 to omit the definition of TEST(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_TEST +# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) +#endif + +// Defines a test that uses a test fixture. +// +// The first parameter is the name of the test fixture class, which +// also doubles as the test case name. The second parameter is the +// name of the test within the test case. +// +// A test fixture class must be declared earlier. The user should put +// his test code between braces after using this macro. Example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { b_.AddElement(3); } +// +// Foo a_; +// Foo b_; +// }; +// +// TEST_F(FooTest, InitializesCorrectly) { +// EXPECT_TRUE(a_.StatusIsOK()); +// } +// +// TEST_F(FooTest, ReturnsElementCountCorrectly) { +// EXPECT_EQ(0, a_.size()); +// EXPECT_EQ(1, b_.size()); +// } + +#define TEST_F(test_fixture, test_name)\ + GTEST_TEST_(test_fixture, test_name, test_fixture, \ + ::testing::internal::GetTypeId()) + +// Use this macro in main() to run all tests. It returns 0 if all +// tests are successful, or 1 otherwise. +// +// RUN_ALL_TESTS() should be invoked after the command line has been +// parsed by InitGoogleTest(). + +#define RUN_ALL_TESTS()\ + (::testing::UnitTest::GetInstance()->Run()) + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ diff --git a/3rdparty/caffe/src/gtest/gtest_main.cc b/3rdparty/caffe/src/gtest/gtest_main.cc new file mode 100644 index 00000000..a09bbe0c --- /dev/null +++ b/3rdparty/caffe/src/gtest/gtest_main.cc @@ -0,0 +1,39 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include + +#include "gtest/gtest.h" + +GTEST_API_ int main(int argc, char **argv) { + std::cout << "Running main() from gtest_main.cc\n"; + + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/3rdparty/caffe/tools/CMakeLists.txt b/3rdparty/caffe/tools/CMakeLists.txt new file mode 100644 index 00000000..37894505 --- /dev/null +++ b/3rdparty/caffe/tools/CMakeLists.txt @@ -0,0 +1,30 @@ +# Collect source files +file(GLOB_RECURSE srcs ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) + +# Build each source file independently +foreach(source ${srcs}) + get_filename_component(name ${source} NAME_WE) + + # caffe target already exits + if(name MATCHES "caffe") + set(name ${name}.bin) + endif() + + # target + add_executable(${name} ${source}) + target_link_libraries(${name} ${Caffe_LINK}) + caffe_default_properties(${name}) + + # set back RUNTIME_OUTPUT_DIRECTORY + caffe_set_runtime_directory(${name} "${PROJECT_BINARY_DIR}/tools") + caffe_set_solution_folder(${name} tools) + + # restore output name without suffix + if(name MATCHES "caffe.bin") + set_target_properties(${name} PROPERTIES OUTPUT_NAME caffe) + endif() + + # Install + install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR}) + +endforeach(source) diff --git a/3rdparty/caffe/tools/caffe.cpp b/3rdparty/caffe/tools/caffe.cpp new file mode 100644 index 00000000..3587d8aa --- /dev/null +++ b/3rdparty/caffe/tools/caffe.cpp @@ -0,0 +1,458 @@ +#ifdef WITH_PYTHON_LAYER +#include "boost/python.hpp" +namespace bp = boost::python; +#endif + +#include +#include + +#include +#include +#include +#include + +#include "boost/algorithm/string.hpp" +#include "caffe/caffe.hpp" +#include "caffe/util/signal_handler.h" + +using caffe::Blob; +using caffe::Caffe; +using caffe::Net; +using caffe::Layer; +using caffe::Solver; +using caffe::shared_ptr; +using caffe::string; +using caffe::Timer; +using caffe::vector; +using std::ostringstream; + +DEFINE_string(gpu, "", + "Optional; run in GPU mode on given device IDs separated by ','." + "Use '-gpu all' to run on all available GPUs. The effective training " + "batch size is multiplied by the number of devices."); +DEFINE_string(solver, "", + "The solver definition protocol buffer text file."); +DEFINE_string(model, "", + "The model definition protocol buffer text file."); +DEFINE_string(phase, "", + "Optional; network phase (TRAIN or TEST). Only used for 'time'."); +DEFINE_int32(level, 0, + "Optional; network level."); +DEFINE_string(stage, "", + "Optional; network stages (not to be confused with phase), " + "separated by ','."); +DEFINE_string(snapshot, "", + "Optional; the snapshot solver state to resume training."); +DEFINE_string(weights, "", + "Optional; the pretrained weights to initialize finetuning, " + "separated by ','. Cannot be set simultaneously with snapshot."); +DEFINE_int32(iterations, 50, + "The number of iterations to run."); +DEFINE_string(sigint_effect, "stop", + "Optional; action to take when a SIGINT signal is received: " + "snapshot, stop or none."); +DEFINE_string(sighup_effect, "snapshot", + "Optional; action to take when a SIGHUP signal is received: " + "snapshot, stop or none."); + +// A simple registry for caffe commands. +typedef int (*BrewFunction)(); +typedef std::map BrewMap; +BrewMap g_brew_map; + +#define RegisterBrewFunction(func) \ +namespace { \ +class __Registerer_##func { \ + public: /* NOLINT */ \ + __Registerer_##func() { \ + g_brew_map[#func] = &func; \ + } \ +}; \ +__Registerer_##func g_registerer_##func; \ +} + +static BrewFunction GetBrewFunction(const caffe::string& name) { + if (g_brew_map.count(name)) { + return g_brew_map[name]; + } else { + LOG(ERROR) << "Available caffe actions:"; + for (BrewMap::iterator it = g_brew_map.begin(); + it != g_brew_map.end(); ++it) { + LOG(ERROR) << "\t" << it->first; + } + LOG(FATAL) << "Unknown action: " << name; + return NULL; // not reachable, just to suppress old compiler warnings. + } +} + +// Parse GPU ids or use all available devices +static void get_gpus(vector* gpus) { + if (FLAGS_gpu == "all") { + int count = 0; +#ifndef CPU_ONLY + CUDA_CHECK(cudaGetDeviceCount(&count)); +#else + NO_GPU; +#endif + for (int i = 0; i < count; ++i) { + gpus->push_back(i); + } + } else if (FLAGS_gpu.size()) { + vector strings; + boost::split(strings, FLAGS_gpu, boost::is_any_of(",")); + for (int i = 0; i < strings.size(); ++i) { + gpus->push_back(boost::lexical_cast(strings[i])); + } + } else { + CHECK_EQ(gpus->size(), 0); + } +} + +// Parse phase from flags +caffe::Phase get_phase_from_flags(caffe::Phase default_value) { + if (FLAGS_phase == "") + return default_value; + if (FLAGS_phase == "TRAIN") + return caffe::TRAIN; + if (FLAGS_phase == "TEST") + return caffe::TEST; + LOG(FATAL) << "phase must be \"TRAIN\" or \"TEST\""; + return caffe::TRAIN; // Avoid warning +} + +// Parse stages from flags +vector get_stages_from_flags() { + vector stages; + boost::split(stages, FLAGS_stage, boost::is_any_of(",")); + return stages; +} + +// caffe commands to call by +// caffe +// +// To add a command, define a function "int command()" and register it with +// RegisterBrewFunction(action); + +// Device Query: show diagnostic information for a GPU device. +int device_query() { + LOG(INFO) << "Querying GPUs " << FLAGS_gpu; + vector gpus; + get_gpus(&gpus); + for (int i = 0; i < gpus.size(); ++i) { + caffe::Caffe::SetDevice(gpus[i]); + caffe::Caffe::DeviceQuery(); + } + return 0; +} +RegisterBrewFunction(device_query); + +// Load the weights from the specified caffemodel(s) into the train and +// test nets. +void CopyLayers(caffe::Solver* solver, const std::string& model_list) { + std::vector model_names; + boost::split(model_names, model_list, boost::is_any_of(",") ); + for (int i = 0; i < model_names.size(); ++i) { + LOG(INFO) << "Finetuning from " << model_names[i]; + solver->net()->CopyTrainedLayersFrom(model_names[i]); + for (int j = 0; j < solver->test_nets().size(); ++j) { + solver->test_nets()[j]->CopyTrainedLayersFrom(model_names[i]); + } + } +} + +// Translate the signal effect the user specified on the command-line to the +// corresponding enumeration. +caffe::SolverAction::Enum GetRequestedAction( + const std::string& flag_value) { + if (flag_value == "stop") { + return caffe::SolverAction::STOP; + } + if (flag_value == "snapshot") { + return caffe::SolverAction::SNAPSHOT; + } + if (flag_value == "none") { + return caffe::SolverAction::NONE; + } + LOG(FATAL) << "Invalid signal effect \""<< flag_value << "\" was specified"; +} + +// Train / Finetune a model. +int train() { + CHECK_GT(FLAGS_solver.size(), 0) << "Need a solver definition to train."; + CHECK(!FLAGS_snapshot.size() || !FLAGS_weights.size()) + << "Give a snapshot to resume training or weights to finetune " + "but not both."; + vector stages = get_stages_from_flags(); + + caffe::SolverParameter solver_param; + caffe::ReadSolverParamsFromTextFileOrDie(FLAGS_solver, &solver_param); + + solver_param.mutable_train_state()->set_level(FLAGS_level); + for (int i = 0; i < stages.size(); i++) { + solver_param.mutable_train_state()->add_stage(stages[i]); + } + + // If the gpus flag is not provided, allow the mode and device to be set + // in the solver prototxt. + if (FLAGS_gpu.size() == 0 + && solver_param.has_solver_mode() + && solver_param.solver_mode() == caffe::SolverParameter_SolverMode_GPU) { + if (solver_param.has_device_id()) { + FLAGS_gpu = "" + + boost::lexical_cast(solver_param.device_id()); + } else { // Set default GPU if unspecified + FLAGS_gpu = "" + boost::lexical_cast(0); + } + } + + vector gpus; + get_gpus(&gpus); + if (gpus.size() == 0) { + LOG(INFO) << "Use CPU."; + Caffe::set_mode(Caffe::CPU); + } else { + ostringstream s; + for (int i = 0; i < gpus.size(); ++i) { + s << (i ? ", " : "") << gpus[i]; + } + LOG(INFO) << "Using GPUs " << s.str(); +#ifndef CPU_ONLY + cudaDeviceProp device_prop; + for (int i = 0; i < gpus.size(); ++i) { + cudaGetDeviceProperties(&device_prop, gpus[i]); + LOG(INFO) << "GPU " << gpus[i] << ": " << device_prop.name; + } +#endif + solver_param.set_device_id(gpus[0]); + Caffe::SetDevice(gpus[0]); + Caffe::set_mode(Caffe::GPU); + Caffe::set_solver_count(gpus.size()); + } + + caffe::SignalHandler signal_handler( + GetRequestedAction(FLAGS_sigint_effect), + GetRequestedAction(FLAGS_sighup_effect)); + + shared_ptr > + solver(caffe::SolverRegistry::CreateSolver(solver_param)); + + solver->SetActionFunction(signal_handler.GetActionFunction()); + + if (FLAGS_snapshot.size()) { + LOG(INFO) << "Resuming from " << FLAGS_snapshot; + solver->Restore(FLAGS_snapshot.c_str()); + } else if (FLAGS_weights.size()) { + CopyLayers(solver.get(), FLAGS_weights); + } + + LOG(INFO) << "Starting Optimization"; + if (gpus.size() > 1) { +#ifdef USE_NCCL + caffe::NCCL nccl(solver); + nccl.Run(gpus, FLAGS_snapshot.size() > 0 ? FLAGS_snapshot.c_str() : NULL); +#else + LOG(FATAL) << "Multi-GPU execution not available - rebuild with USE_NCCL"; +#endif + } else { + solver->Solve(); + } + LOG(INFO) << "Optimization Done."; + return 0; +} +RegisterBrewFunction(train); + + +// Test: score a model. +int test() { + CHECK_GT(FLAGS_model.size(), 0) << "Need a model definition to score."; + CHECK_GT(FLAGS_weights.size(), 0) << "Need model weights to score."; + vector stages = get_stages_from_flags(); + + // Set device id and mode + vector gpus; + get_gpus(&gpus); + if (gpus.size() != 0) { + LOG(INFO) << "Use GPU with device ID " << gpus[0]; +#ifndef CPU_ONLY + cudaDeviceProp device_prop; + cudaGetDeviceProperties(&device_prop, gpus[0]); + LOG(INFO) << "GPU device name: " << device_prop.name; +#endif + Caffe::SetDevice(gpus[0]); + Caffe::set_mode(Caffe::GPU); + } else { + LOG(INFO) << "Use CPU."; + Caffe::set_mode(Caffe::CPU); + } + // Instantiate the caffe net. + Net caffe_net(FLAGS_model, caffe::TEST, FLAGS_level, &stages); + caffe_net.CopyTrainedLayersFrom(FLAGS_weights); + LOG(INFO) << "Running for " << FLAGS_iterations << " iterations."; + + vector test_score_output_id; + vector test_score; + float loss = 0; + for (int i = 0; i < FLAGS_iterations; ++i) { + float iter_loss; + const vector*>& result = + caffe_net.Forward(&iter_loss); + loss += iter_loss; + int idx = 0; + for (int j = 0; j < result.size(); ++j) { + const float* result_vec = result[j]->cpu_data(); + for (int k = 0; k < result[j]->count(); ++k, ++idx) { + const float score = result_vec[k]; + if (i == 0) { + test_score.push_back(score); + test_score_output_id.push_back(j); + } else { + test_score[idx] += score; + } + const std::string& output_name = caffe_net.blob_names()[ + caffe_net.output_blob_indices()[j]]; + LOG(INFO) << "Batch " << i << ", " << output_name << " = " << score; + } + } + } + loss /= FLAGS_iterations; + LOG(INFO) << "Loss: " << loss; + for (int i = 0; i < test_score.size(); ++i) { + const std::string& output_name = caffe_net.blob_names()[ + caffe_net.output_blob_indices()[test_score_output_id[i]]]; + const float loss_weight = caffe_net.blob_loss_weights()[ + caffe_net.output_blob_indices()[test_score_output_id[i]]]; + std::ostringstream loss_msg_stream; + const float mean_score = test_score[i] / FLAGS_iterations; + if (loss_weight) { + loss_msg_stream << " (* " << loss_weight + << " = " << loss_weight * mean_score << " loss)"; + } + LOG(INFO) << output_name << " = " << mean_score << loss_msg_stream.str(); + } + + return 0; +} +RegisterBrewFunction(test); + + +// Time: benchmark the execution time of a model. +int time() { + CHECK_GT(FLAGS_model.size(), 0) << "Need a model definition to time."; + caffe::Phase phase = get_phase_from_flags(caffe::TRAIN); + vector stages = get_stages_from_flags(); + + // Set device id and mode + vector gpus; + get_gpus(&gpus); + if (gpus.size() != 0) { + LOG(INFO) << "Use GPU with device ID " << gpus[0]; + Caffe::SetDevice(gpus[0]); + Caffe::set_mode(Caffe::GPU); + } else { + LOG(INFO) << "Use CPU."; + Caffe::set_mode(Caffe::CPU); + } + // Instantiate the caffe net. + Net caffe_net(FLAGS_model, phase, FLAGS_level, &stages); + + // Do a clean forward and backward pass, so that memory allocation are done + // and future iterations will be more stable. + LOG(INFO) << "Performing Forward"; + // Note that for the speed benchmark, we will assume that the network does + // not take any input blobs. + float initial_loss; + caffe_net.Forward(&initial_loss); + LOG(INFO) << "Initial loss: " << initial_loss; + LOG(INFO) << "Performing Backward"; + caffe_net.Backward(); + + const vector > >& layers = caffe_net.layers(); + const vector*> >& bottom_vecs = caffe_net.bottom_vecs(); + const vector*> >& top_vecs = caffe_net.top_vecs(); + const vector >& bottom_need_backward = + caffe_net.bottom_need_backward(); + LOG(INFO) << "*** Benchmark begins ***"; + LOG(INFO) << "Testing for " << FLAGS_iterations << " iterations."; + Timer total_timer; + total_timer.Start(); + Timer forward_timer; + Timer backward_timer; + Timer timer; + std::vector forward_time_per_layer(layers.size(), 0.0); + std::vector backward_time_per_layer(layers.size(), 0.0); + double forward_time = 0.0; + double backward_time = 0.0; + for (int j = 0; j < FLAGS_iterations; ++j) { + Timer iter_timer; + iter_timer.Start(); + forward_timer.Start(); + for (int i = 0; i < layers.size(); ++i) { + timer.Start(); + layers[i]->Forward(bottom_vecs[i], top_vecs[i]); + forward_time_per_layer[i] += timer.MicroSeconds(); + } + forward_time += forward_timer.MicroSeconds(); + backward_timer.Start(); + for (int i = layers.size() - 1; i >= 0; --i) { + timer.Start(); + layers[i]->Backward(top_vecs[i], bottom_need_backward[i], + bottom_vecs[i]); + backward_time_per_layer[i] += timer.MicroSeconds(); + } + backward_time += backward_timer.MicroSeconds(); + LOG(INFO) << "Iteration: " << j + 1 << " forward-backward time: " + << iter_timer.MilliSeconds() << " ms."; + } + LOG(INFO) << "Average time per layer: "; + for (int i = 0; i < layers.size(); ++i) { + const caffe::string& layername = layers[i]->layer_param().name(); + LOG(INFO) << std::setfill(' ') << std::setw(10) << layername << + "\tforward: " << forward_time_per_layer[i] / 1000 / + FLAGS_iterations << " ms."; + LOG(INFO) << std::setfill(' ') << std::setw(10) << layername << + "\tbackward: " << backward_time_per_layer[i] / 1000 / + FLAGS_iterations << " ms."; + } + total_timer.Stop(); + LOG(INFO) << "Average Forward pass: " << forward_time / 1000 / + FLAGS_iterations << " ms."; + LOG(INFO) << "Average Backward pass: " << backward_time / 1000 / + FLAGS_iterations << " ms."; + LOG(INFO) << "Average Forward-Backward: " << total_timer.MilliSeconds() / + FLAGS_iterations << " ms."; + LOG(INFO) << "Total Time: " << total_timer.MilliSeconds() << " ms."; + LOG(INFO) << "*** Benchmark ends ***"; + return 0; +} +RegisterBrewFunction(time); + +int main(int argc, char** argv) { + // Print output to stderr (while still logging). + FLAGS_alsologtostderr = 1; + // Set version + gflags::SetVersionString(AS_STRING(CAFFE_VERSION)); + // Usage message. + gflags::SetUsageMessage("command line brew\n" + "usage: caffe \n\n" + "commands:\n" + " train train or finetune a model\n" + " test score a model\n" + " device_query show GPU diagnostic information\n" + " time benchmark model execution time"); + // Run tool or show usage. + caffe::GlobalInit(&argc, &argv); + if (argc == 2) { +#ifdef WITH_PYTHON_LAYER + try { +#endif + return GetBrewFunction(caffe::string(argv[1]))(); +#ifdef WITH_PYTHON_LAYER + } catch (bp::error_already_set) { + PyErr_Print(); + return 1; + } +#endif + } else { + gflags::ShowUsageWithFlagsRestrict(argv[0], "tools/caffe"); + } +} diff --git a/3rdparty/caffe/tools/compute_image_mean.cpp b/3rdparty/caffe/tools/compute_image_mean.cpp new file mode 100644 index 00000000..417f5e4c --- /dev/null +++ b/3rdparty/caffe/tools/compute_image_mean.cpp @@ -0,0 +1,125 @@ +#include +#include +#include +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "gflags/gflags.h" +#include "glog/logging.h" + +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" +#include "caffe/util/io.hpp" + +using namespace caffe; // NOLINT(build/namespaces) + +using std::max; +using std::pair; +using boost::scoped_ptr; + +DEFINE_string(backend, "lmdb", + "The backend {leveldb, lmdb} containing the images"); + +int main(int argc, char** argv) { +#ifdef USE_OPENCV + ::google::InitGoogleLogging(argv[0]); + // Print output to stderr (while still logging) + FLAGS_alsologtostderr = 1; + +#ifndef GFLAGS_GFLAGS_H_ + namespace gflags = google; +#endif + + gflags::SetUsageMessage("Compute the mean_image of a set of images given by" + " a leveldb/lmdb\n" + "Usage:\n" + " compute_image_mean [FLAGS] INPUT_DB [OUTPUT_FILE]\n"); + + gflags::ParseCommandLineFlags(&argc, &argv, true); + + if (argc < 2 || argc > 3) { + gflags::ShowUsageWithFlagsRestrict(argv[0], "tools/compute_image_mean"); + return 1; + } + + scoped_ptr db(db::GetDB(FLAGS_backend)); + db->Open(argv[1], db::READ); + scoped_ptr cursor(db->NewCursor()); + + BlobProto sum_blob; + int count = 0; + // load first datum + Datum datum; + datum.ParseFromString(cursor->value()); + + if (DecodeDatumNative(&datum)) { + LOG(INFO) << "Decoding Datum"; + } + + sum_blob.set_num(1); + sum_blob.set_channels(datum.channels()); + sum_blob.set_height(datum.height()); + sum_blob.set_width(datum.width()); + const int data_size = datum.channels() * datum.height() * datum.width(); + int size_in_datum = std::max(datum.data().size(), + datum.float_data_size()); + for (int i = 0; i < size_in_datum; ++i) { + sum_blob.add_data(0.); + } + LOG(INFO) << "Starting iteration"; + while (cursor->valid()) { + Datum datum; + datum.ParseFromString(cursor->value()); + DecodeDatumNative(&datum); + + const std::string& data = datum.data(); + size_in_datum = std::max(datum.data().size(), + datum.float_data_size()); + CHECK_EQ(size_in_datum, data_size) << "Incorrect data field size " << + size_in_datum; + if (data.size() != 0) { + CHECK_EQ(data.size(), size_in_datum); + for (int i = 0; i < size_in_datum; ++i) { + sum_blob.set_data(i, sum_blob.data(i) + (uint8_t)data[i]); + } + } else { + CHECK_EQ(datum.float_data_size(), size_in_datum); + for (int i = 0; i < size_in_datum; ++i) { + sum_blob.set_data(i, sum_blob.data(i) + + static_cast(datum.float_data(i))); + } + } + ++count; + if (count % 10000 == 0) { + LOG(INFO) << "Processed " << count << " files."; + } + cursor->Next(); + } + + if (count % 10000 != 0) { + LOG(INFO) << "Processed " << count << " files."; + } + for (int i = 0; i < sum_blob.data_size(); ++i) { + sum_blob.set_data(i, sum_blob.data(i) / count); + } + // Write to disk + if (argc == 3) { + LOG(INFO) << "Write to " << argv[2]; + WriteProtoToBinaryFile(sum_blob, argv[2]); + } + const int channels = sum_blob.channels(); + const int dim = sum_blob.height() * sum_blob.width(); + std::vector mean_values(channels, 0.0); + LOG(INFO) << "Number of channels: " << channels; + for (int c = 0; c < channels; ++c) { + for (int i = 0; i < dim; ++i) { + mean_values[c] += sum_blob.data(dim * c + i); + } + LOG(INFO) << "mean_value channel [" << c << "]: " << mean_values[c] / dim; + } +#else + LOG(FATAL) << "This tool requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV + return 0; +} diff --git a/3rdparty/caffe/tools/convert_imageset.cpp b/3rdparty/caffe/tools/convert_imageset.cpp new file mode 100644 index 00000000..90cdb15d --- /dev/null +++ b/3rdparty/caffe/tools/convert_imageset.cpp @@ -0,0 +1,159 @@ +// This program converts a set of images to a lmdb/leveldb by storing them +// as Datum proto buffers. +// Usage: +// convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME +// +// where ROOTFOLDER is the root folder that holds all the images, and LISTFILE +// should be a list of files as well as their labels, in the format as +// subfolder1/file1.JPEG 7 +// .... + +#include +#include // NOLINT(readability/streams) +#include +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "gflags/gflags.h" +#include "glog/logging.h" + +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" +#include "caffe/util/format.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/rng.hpp" + +using namespace caffe; // NOLINT(build/namespaces) +using std::pair; +using boost::scoped_ptr; + +DEFINE_bool(gray, false, + "When this option is on, treat images as grayscale ones"); +DEFINE_bool(shuffle, false, + "Randomly shuffle the order of images and their labels"); +DEFINE_string(backend, "lmdb", + "The backend {lmdb, leveldb} for storing the result"); +DEFINE_int32(resize_width, 0, "Width images are resized to"); +DEFINE_int32(resize_height, 0, "Height images are resized to"); +DEFINE_bool(check_size, false, + "When this option is on, check that all the datum have the same size"); +DEFINE_bool(encoded, false, + "When this option is on, the encoded image will be save in datum"); +DEFINE_string(encode_type, "", + "Optional: What type should we encode the image as ('png','jpg',...)."); + +int main(int argc, char** argv) { +#ifdef USE_OPENCV + ::google::InitGoogleLogging(argv[0]); + // Print output to stderr (while still logging) + FLAGS_alsologtostderr = 1; + +#ifndef GFLAGS_GFLAGS_H_ + namespace gflags = google; +#endif + + gflags::SetUsageMessage("Convert a set of images to the leveldb/lmdb\n" + "format used as input for Caffe.\n" + "Usage:\n" + " convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME\n" + "The ImageNet dataset for the training demo is at\n" + " http://www.image-net.org/download-images\n"); + gflags::ParseCommandLineFlags(&argc, &argv, true); + + if (argc < 4) { + gflags::ShowUsageWithFlagsRestrict(argv[0], "tools/convert_imageset"); + return 1; + } + + const bool is_color = !FLAGS_gray; + const bool check_size = FLAGS_check_size; + const bool encoded = FLAGS_encoded; + const string encode_type = FLAGS_encode_type; + + std::ifstream infile(argv[2]); + std::vector > lines; + std::string line; + size_t pos; + int label; + while (std::getline(infile, line)) { + pos = line.find_last_of(' '); + label = atoi(line.substr(pos + 1).c_str()); + lines.push_back(std::make_pair(line.substr(0, pos), label)); + } + if (FLAGS_shuffle) { + // randomly shuffle data + LOG(INFO) << "Shuffling data"; + shuffle(lines.begin(), lines.end()); + } + LOG(INFO) << "A total of " << lines.size() << " images."; + + if (encode_type.size() && !encoded) + LOG(INFO) << "encode_type specified, assuming encoded=true."; + + int resize_height = std::max(0, FLAGS_resize_height); + int resize_width = std::max(0, FLAGS_resize_width); + + // Create new DB + scoped_ptr db(db::GetDB(FLAGS_backend)); + db->Open(argv[3], db::NEW); + scoped_ptr txn(db->NewTransaction()); + + // Storing to db + std::string root_folder(argv[1]); + Datum datum; + int count = 0; + int data_size = 0; + bool data_size_initialized = false; + + for (int line_id = 0; line_id < lines.size(); ++line_id) { + bool status; + std::string enc = encode_type; + if (encoded && !enc.size()) { + // Guess the encoding type from the file name + string fn = lines[line_id].first; + size_t p = fn.rfind('.'); + if ( p == fn.npos ) + LOG(WARNING) << "Failed to guess the encoding of '" << fn << "'"; + enc = fn.substr(p); + std::transform(enc.begin(), enc.end(), enc.begin(), ::tolower); + } + status = ReadImageToDatum(root_folder + lines[line_id].first, + lines[line_id].second, resize_height, resize_width, is_color, + enc, &datum); + if (status == false) continue; + if (check_size) { + if (!data_size_initialized) { + data_size = datum.channels() * datum.height() * datum.width(); + data_size_initialized = true; + } else { + const std::string& data = datum.data(); + CHECK_EQ(data.size(), data_size) << "Incorrect data field size " + << data.size(); + } + } + // sequential + string key_str = caffe::format_int(line_id, 8) + "_" + lines[line_id].first; + + // Put in db + string out; + CHECK(datum.SerializeToString(&out)); + txn->Put(key_str, out); + + if (++count % 1000 == 0) { + // Commit db + txn->Commit(); + txn.reset(db->NewTransaction()); + LOG(INFO) << "Processed " << count << " files."; + } + } + // write the last batch + if (count % 1000 != 0) { + txn->Commit(); + LOG(INFO) << "Processed " << count << " files."; + } +#else + LOG(FATAL) << "This tool requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV + return 0; +} diff --git a/3rdparty/caffe/tools/device_query.cpp b/3rdparty/caffe/tools/device_query.cpp new file mode 100644 index 00000000..03799e52 --- /dev/null +++ b/3rdparty/caffe/tools/device_query.cpp @@ -0,0 +1,7 @@ +#include "caffe/common.hpp" + +int main(int argc, char** argv) { + LOG(FATAL) << "Deprecated. Use caffe device_query " + "[--device_id=0] instead."; + return 0; +} diff --git a/3rdparty/caffe/tools/extra/extract_seconds.py b/3rdparty/caffe/tools/extra/extract_seconds.py new file mode 100755 index 00000000..68af69a2 --- /dev/null +++ b/3rdparty/caffe/tools/extra/extract_seconds.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python +import datetime +import os +import sys + +def extract_datetime_from_line(line, year): + # Expected format: I0210 13:39:22.381027 25210 solver.cpp:204] Iteration 100, lr = 0.00992565 + line = line.strip().split() + month = int(line[0][1:3]) + day = int(line[0][3:]) + timestamp = line[1] + pos = timestamp.rfind('.') + ts = [int(x) for x in timestamp[:pos].split(':')] + hour = ts[0] + minute = ts[1] + second = ts[2] + microsecond = int(timestamp[pos + 1:]) + dt = datetime.datetime(year, month, day, hour, minute, second, microsecond) + return dt + + +def get_log_created_year(input_file): + """Get year from log file system timestamp + """ + + log_created_time = os.path.getctime(input_file) + log_created_year = datetime.datetime.fromtimestamp(log_created_time).year + return log_created_year + + +def get_start_time(line_iterable, year): + """Find start time from group of lines + """ + + start_datetime = None + for line in line_iterable: + line = line.strip() + if line.find('Solving') != -1: + start_datetime = extract_datetime_from_line(line, year) + break + return start_datetime + + +def extract_seconds(input_file, output_file): + with open(input_file, 'r') as f: + lines = f.readlines() + log_created_year = get_log_created_year(input_file) + start_datetime = get_start_time(lines, log_created_year) + assert start_datetime, 'Start time not found' + + last_dt = start_datetime + out = open(output_file, 'w') + for line in lines: + line = line.strip() + if line.find('Iteration') != -1: + dt = extract_datetime_from_line(line, log_created_year) + + # if it's another year + if dt.month < last_dt.month: + log_created_year += 1 + dt = extract_datetime_from_line(line, log_created_year) + last_dt = dt + + elapsed_seconds = (dt - start_datetime).total_seconds() + out.write('%f\n' % elapsed_seconds) + out.close() + +if __name__ == '__main__': + if len(sys.argv) < 3: + print('Usage: ./extract_seconds input_file output_file') + exit(1) + extract_seconds(sys.argv[1], sys.argv[2]) diff --git a/3rdparty/caffe/tools/extra/launch_resize_and_crop_images.sh b/3rdparty/caffe/tools/extra/launch_resize_and_crop_images.sh new file mode 100755 index 00000000..84ca858c --- /dev/null +++ b/3rdparty/caffe/tools/extra/launch_resize_and_crop_images.sh @@ -0,0 +1,24 @@ +#!/bin/bash +#### https://github.com/Yangqing/mincepie/wiki/Launch-Your-Mapreducer + +# If you encounter error that the address already in use, kill the process. +# 11235 is the port of server process +# https://github.com/Yangqing/mincepie/blob/master/mincepie/mince.py +# sudo netstat -ap | grep 11235 +# The last column of the output is PID/Program name +# kill -9 PID +# Second solution: +# nmap localhost +# fuser -k 11235/tcp +# Or just wait a few seconds. + +## Launch your Mapreduce locally +# num_clients: number of processes +# image_lib: OpenCV or PIL, case insensitive. The default value is the faster OpenCV. +# input: the file containing one image path relative to input_folder each line +# input_folder: where are the original images +# output_folder: where to save the resized and cropped images +./resize_and_crop_images.py --num_clients=8 --image_lib=opencv --input=/home/user/Datasets/ImageNet/ILSVRC2010/ILSVRC2010_images.txt --input_folder=/home/user/Datasets/ImageNet/ILSVRC2010/ILSVRC2010_images_train/ --output_folder=/home/user/Datasets/ImageNet/ILSVRC2010/ILSVRC2010_images_train_resized/ + +## Launch your Mapreduce with MPI +# mpirun -n 8 --launch=mpi resize_and_crop_images.py --image_lib=opencv --input=/home/user/Datasets/ImageNet/ILSVRC2010/ILSVRC2010_images.txt --input_folder=/home/user/Datasets/ImageNet/ILSVRC2010/ILSVRC2010_images_train/ --output_folder=/home/user/Datasets/ImageNet/ILSVRC2010/ILSVRC2010_images_train_resized/ diff --git a/3rdparty/caffe/tools/extra/parse_log.py b/3rdparty/caffe/tools/extra/parse_log.py new file mode 100755 index 00000000..4248e2b8 --- /dev/null +++ b/3rdparty/caffe/tools/extra/parse_log.py @@ -0,0 +1,210 @@ +#!/usr/bin/env python + +""" +Parse training log + +Evolved from parse_log.sh +""" + +import os +import re +import extract_seconds +import argparse +import csv +from collections import OrderedDict + + +def parse_log(path_to_log): + """Parse log file + Returns (train_dict_list, test_dict_list) + + train_dict_list and test_dict_list are lists of dicts that define the table + rows + """ + + regex_iteration = re.compile('Iteration (\d+)') + regex_train_output = re.compile('Train net output #(\d+): (\S+) = ([\.\deE+-]+)') + regex_test_output = re.compile('Test net output #(\d+): (\S+) = ([\.\deE+-]+)') + regex_learning_rate = re.compile('lr = ([-+]?[0-9]*\.?[0-9]+([eE]?[-+]?[0-9]+)?)') + + # Pick out lines of interest + iteration = -1 + learning_rate = float('NaN') + train_dict_list = [] + test_dict_list = [] + train_row = None + test_row = None + + logfile_year = extract_seconds.get_log_created_year(path_to_log) + with open(path_to_log) as f: + start_time = extract_seconds.get_start_time(f, logfile_year) + last_time = start_time + + for line in f: + iteration_match = regex_iteration.search(line) + if iteration_match: + iteration = float(iteration_match.group(1)) + if iteration == -1: + # Only start parsing for other stuff if we've found the first + # iteration + continue + + try: + time = extract_seconds.extract_datetime_from_line(line, + logfile_year) + except ValueError: + # Skip lines with bad formatting, for example when resuming solver + continue + + # if it's another year + if time.month < last_time.month: + logfile_year += 1 + time = extract_seconds.extract_datetime_from_line(line, logfile_year) + last_time = time + + seconds = (time - start_time).total_seconds() + + learning_rate_match = regex_learning_rate.search(line) + if learning_rate_match: + learning_rate = float(learning_rate_match.group(1)) + + train_dict_list, train_row = parse_line_for_net_output( + regex_train_output, train_row, train_dict_list, + line, iteration, seconds, learning_rate + ) + test_dict_list, test_row = parse_line_for_net_output( + regex_test_output, test_row, test_dict_list, + line, iteration, seconds, learning_rate + ) + + fix_initial_nan_learning_rate(train_dict_list) + fix_initial_nan_learning_rate(test_dict_list) + + return train_dict_list, test_dict_list + + +def parse_line_for_net_output(regex_obj, row, row_dict_list, + line, iteration, seconds, learning_rate): + """Parse a single line for training or test output + + Returns a a tuple with (row_dict_list, row) + row: may be either a new row or an augmented version of the current row + row_dict_list: may be either the current row_dict_list or an augmented + version of the current row_dict_list + """ + + output_match = regex_obj.search(line) + if output_match: + if not row or row['NumIters'] != iteration: + # Push the last row and start a new one + if row: + # If we're on a new iteration, push the last row + # This will probably only happen for the first row; otherwise + # the full row checking logic below will push and clear full + # rows + row_dict_list.append(row) + + row = OrderedDict([ + ('NumIters', iteration), + ('Seconds', seconds), + ('LearningRate', learning_rate) + ]) + + # output_num is not used; may be used in the future + # output_num = output_match.group(1) + output_name = output_match.group(2) + output_val = output_match.group(3) + row[output_name] = float(output_val) + + if row and len(row_dict_list) >= 1 and len(row) == len(row_dict_list[0]): + # The row is full, based on the fact that it has the same number of + # columns as the first row; append it to the list + row_dict_list.append(row) + row = None + + return row_dict_list, row + + +def fix_initial_nan_learning_rate(dict_list): + """Correct initial value of learning rate + + Learning rate is normally not printed until after the initial test and + training step, which means the initial testing and training rows have + LearningRate = NaN. Fix this by copying over the LearningRate from the + second row, if it exists. + """ + + if len(dict_list) > 1: + dict_list[0]['LearningRate'] = dict_list[1]['LearningRate'] + + +def save_csv_files(logfile_path, output_dir, train_dict_list, test_dict_list, + delimiter=',', verbose=False): + """Save CSV files to output_dir + + If the input log file is, e.g., caffe.INFO, the names will be + caffe.INFO.train and caffe.INFO.test + """ + + log_basename = os.path.basename(logfile_path) + train_filename = os.path.join(output_dir, log_basename + '.train') + write_csv(train_filename, train_dict_list, delimiter, verbose) + + test_filename = os.path.join(output_dir, log_basename + '.test') + write_csv(test_filename, test_dict_list, delimiter, verbose) + + +def write_csv(output_filename, dict_list, delimiter, verbose=False): + """Write a CSV file + """ + + if not dict_list: + if verbose: + print('Not writing %s; no lines to write' % output_filename) + return + + dialect = csv.excel + dialect.delimiter = delimiter + + with open(output_filename, 'w') as f: + dict_writer = csv.DictWriter(f, fieldnames=dict_list[0].keys(), + dialect=dialect) + dict_writer.writeheader() + dict_writer.writerows(dict_list) + if verbose: + print 'Wrote %s' % output_filename + + +def parse_args(): + description = ('Parse a Caffe training log into two CSV files ' + 'containing training and testing information') + parser = argparse.ArgumentParser(description=description) + + parser.add_argument('logfile_path', + help='Path to log file') + + parser.add_argument('output_dir', + help='Directory in which to place output CSV files') + + parser.add_argument('--verbose', + action='store_true', + help='Print some extra info (e.g., output filenames)') + + parser.add_argument('--delimiter', + default=',', + help=('Column delimiter in output files ' + '(default: \'%(default)s\')')) + + args = parser.parse_args() + return args + + +def main(): + args = parse_args() + train_dict_list, test_dict_list = parse_log(args.logfile_path) + save_csv_files(args.logfile_path, args.output_dir, train_dict_list, + test_dict_list, delimiter=args.delimiter, verbose=args.verbose) + + +if __name__ == '__main__': + main() diff --git a/3rdparty/caffe/tools/extra/parse_log.sh b/3rdparty/caffe/tools/extra/parse_log.sh new file mode 100755 index 00000000..122eb9e6 --- /dev/null +++ b/3rdparty/caffe/tools/extra/parse_log.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# Usage parse_log.sh caffe.log +# It creates the following two text files, each containing a table: +# caffe.log.test (columns: '#Iters Seconds TestAccuracy TestLoss') +# caffe.log.train (columns: '#Iters Seconds TrainingLoss LearningRate') + + +# get the dirname of the script +DIR="$( cd "$(dirname "$0")" ; pwd -P )" + +if [ "$#" -lt 1 ] +then +echo "Usage parse_log.sh /path/to/your.log" +exit +fi +LOG=`basename $1` +sed -n '/Iteration .* Testing net/,/Iteration *. loss/p' $1 > aux.txt +sed -i '/Waiting for data/d' aux.txt +sed -i '/prefetch queue empty/d' aux.txt +sed -i '/Iteration .* loss/d' aux.txt +sed -i '/Iteration .* lr/d' aux.txt +sed -i '/Train net/d' aux.txt +grep 'Iteration ' aux.txt | sed 's/.*Iteration \([[:digit:]]*\).*/\1/g' > aux0.txt +grep 'Test net output #0' aux.txt | awk '{print $11}' > aux1.txt +grep 'Test net output #1' aux.txt | awk '{print $11}' > aux2.txt + +# Extracting elapsed seconds +# For extraction of time since this line contains the start time +grep '] Solving ' $1 > aux3.txt +grep 'Testing net' $1 >> aux3.txt +$DIR/extract_seconds.py aux3.txt aux4.txt + +# Generating +echo '#Iters Seconds TestAccuracy TestLoss'> $LOG.test +paste aux0.txt aux4.txt aux1.txt aux2.txt | column -t >> $LOG.test +rm aux.txt aux0.txt aux1.txt aux2.txt aux3.txt aux4.txt + +# For extraction of time since this line contains the start time +grep '] Solving ' $1 > aux.txt +grep ', loss = ' $1 >> aux.txt +grep 'Iteration ' aux.txt | sed 's/.*Iteration \([[:digit:]]*\).*/\1/g' > aux0.txt +grep ', loss = ' $1 | awk -F = '{print $2}' > aux1.txt +grep ', lr = ' $1 | awk '{print $9}' > aux2.txt + +# Extracting elapsed seconds +$DIR/extract_seconds.py aux.txt aux3.txt + +# Generating +echo '#Iters Seconds TrainingLoss LearningRate'> $LOG.train +paste aux0.txt aux3.txt aux1.txt aux2.txt | column -t >> $LOG.train +rm aux.txt aux0.txt aux1.txt aux2.txt aux3.txt diff --git a/3rdparty/caffe/tools/extra/plot_log.gnuplot.example b/3rdparty/caffe/tools/extra/plot_log.gnuplot.example new file mode 100644 index 00000000..02c68e1d --- /dev/null +++ b/3rdparty/caffe/tools/extra/plot_log.gnuplot.example @@ -0,0 +1,69 @@ +# These snippets serve only as basic examples. +# Customization is a must. +# You can copy, paste, edit them in whatever way you want. +# Be warned that the fields in the training log may change in the future. +# You had better check the data files before designing your own plots. + +# Please generate the necessary data files with +# /path/to/caffe/tools/extra/parse_log.sh before plotting. +# Example usage: +# ./parse_log.sh mnist.log +# Now you have mnist.log.train and mnist.log.test. +# gnuplot mnist.gnuplot + +# The fields present in the data files that are usually proper to plot along +# the y axis are test accuracy, test loss, training loss, and learning rate. +# Those should plot along the x axis are training iterations and seconds. +# Possible combinations: +# 1. Test accuracy (test score 0) vs. training iterations / time; +# 2. Test loss (test score 1) time; +# 3. Training loss vs. training iterations / time; +# 4. Learning rate vs. training iterations / time; +# A rarer one: Training time vs. iterations. + +# What is the difference between plotting against iterations and time? +# If the overhead in one iteration is too high, one algorithm might appear +# to be faster in terms of progress per iteration and slower when measured +# against time. And the reverse case is not entirely impossible. Thus, some +# papers chose to only publish the more favorable type. It is your freedom +# to decide what to plot. + +reset +set terminal png +set output "your_chart_name.png" +set style data lines +set key right + +###### Fields in the data file your_log_name.log.train are +###### Iters Seconds TrainingLoss LearningRate + +# Training loss vs. training iterations +set title "Training loss vs. training iterations" +set xlabel "Training iterations" +set ylabel "Training loss" +plot "mnist.log.train" using 1:3 title "mnist" + +# Training loss vs. training time +# plot "mnist.log.train" using 2:3 title "mnist" + +# Learning rate vs. training iterations; +# plot "mnist.log.train" using 1:4 title "mnist" + +# Learning rate vs. training time; +# plot "mnist.log.train" using 2:4 title "mnist" + + +###### Fields in the data file your_log_name.log.test are +###### Iters Seconds TestAccuracy TestLoss + +# Test loss vs. training iterations +# plot "mnist.log.test" using 1:4 title "mnist" + +# Test accuracy vs. training iterations +# plot "mnist.log.test" using 1:3 title "mnist" + +# Test loss vs. training time +# plot "mnist.log.test" using 2:4 title "mnist" + +# Test accuracy vs. training time +# plot "mnist.log.test" using 2:3 title "mnist" diff --git a/3rdparty/caffe/tools/extra/plot_training_log.py.example b/3rdparty/caffe/tools/extra/plot_training_log.py.example new file mode 100755 index 00000000..8caca6b8 --- /dev/null +++ b/3rdparty/caffe/tools/extra/plot_training_log.py.example @@ -0,0 +1,184 @@ +#!/usr/bin/env python +import inspect +import os +import random +import sys +import matplotlib.cm as cmx +import matplotlib.colors as colors +import matplotlib.pyplot as plt +import matplotlib.legend as lgd +import matplotlib.markers as mks + +def get_log_parsing_script(): + dirname = os.path.dirname(os.path.abspath(inspect.getfile( + inspect.currentframe()))) + return dirname + '/parse_log.sh' + +def get_log_file_suffix(): + return '.log' + +def get_chart_type_description_separator(): + return ' vs. ' + +def is_x_axis_field(field): + x_axis_fields = ['Iters', 'Seconds'] + return field in x_axis_fields + +def create_field_index(): + train_key = 'Train' + test_key = 'Test' + field_index = {train_key:{'Iters':0, 'Seconds':1, train_key + ' loss':2, + train_key + ' learning rate':3}, + test_key:{'Iters':0, 'Seconds':1, test_key + ' accuracy':2, + test_key + ' loss':3}} + fields = set() + for data_file_type in field_index.keys(): + fields = fields.union(set(field_index[data_file_type].keys())) + fields = list(fields) + fields.sort() + return field_index, fields + +def get_supported_chart_types(): + field_index, fields = create_field_index() + num_fields = len(fields) + supported_chart_types = [] + for i in xrange(num_fields): + if not is_x_axis_field(fields[i]): + for j in xrange(num_fields): + if i != j and is_x_axis_field(fields[j]): + supported_chart_types.append('%s%s%s' % ( + fields[i], get_chart_type_description_separator(), + fields[j])) + return supported_chart_types + +def get_chart_type_description(chart_type): + supported_chart_types = get_supported_chart_types() + chart_type_description = supported_chart_types[chart_type] + return chart_type_description + +def get_data_file_type(chart_type): + description = get_chart_type_description(chart_type) + data_file_type = description.split()[0] + return data_file_type + +def get_data_file(chart_type, path_to_log): + return (os.path.basename(path_to_log) + '.' + + get_data_file_type(chart_type).lower()) + +def get_field_descriptions(chart_type): + description = get_chart_type_description(chart_type).split( + get_chart_type_description_separator()) + y_axis_field = description[0] + x_axis_field = description[1] + return x_axis_field, y_axis_field + +def get_field_indices(x_axis_field, y_axis_field): + data_file_type = get_data_file_type(chart_type) + fields = create_field_index()[0][data_file_type] + return fields[x_axis_field], fields[y_axis_field] + +def load_data(data_file, field_idx0, field_idx1): + data = [[], []] + with open(data_file, 'r') as f: + for line in f: + line = line.strip() + if line[0] != '#': + fields = line.split() + data[0].append(float(fields[field_idx0].strip())) + data[1].append(float(fields[field_idx1].strip())) + return data + +def random_marker(): + markers = mks.MarkerStyle.markers + num = len(markers.keys()) + idx = random.randint(0, num - 1) + return markers.keys()[idx] + +def get_data_label(path_to_log): + label = path_to_log[path_to_log.rfind('/')+1 : path_to_log.rfind( + get_log_file_suffix())] + return label + +def get_legend_loc(chart_type): + x_axis, y_axis = get_field_descriptions(chart_type) + loc = 'lower right' + if y_axis.find('accuracy') != -1: + pass + if y_axis.find('loss') != -1 or y_axis.find('learning rate') != -1: + loc = 'upper right' + return loc + +def plot_chart(chart_type, path_to_png, path_to_log_list): + for path_to_log in path_to_log_list: + os.system('%s %s' % (get_log_parsing_script(), path_to_log)) + data_file = get_data_file(chart_type, path_to_log) + x_axis_field, y_axis_field = get_field_descriptions(chart_type) + x, y = get_field_indices(x_axis_field, y_axis_field) + data = load_data(data_file, x, y) + ## TODO: more systematic color cycle for lines + color = [random.random(), random.random(), random.random()] + label = get_data_label(path_to_log) + linewidth = 0.75 + ## If there too many datapoints, do not use marker. +## use_marker = False + use_marker = True + if not use_marker: + plt.plot(data[0], data[1], label = label, color = color, + linewidth = linewidth) + else: + marker = random_marker() + plt.plot(data[0], data[1], label = label, color = color, + marker = marker, linewidth = linewidth) + legend_loc = get_legend_loc(chart_type) + plt.legend(loc = legend_loc, ncol = 1) # ajust ncol to fit the space + plt.title(get_chart_type_description(chart_type)) + plt.xlabel(x_axis_field) + plt.ylabel(y_axis_field) + plt.savefig(path_to_png) + plt.show() + +def print_help(): + print """This script mainly serves as the basis of your customizations. +Customization is a must. +You can copy, paste, edit them in whatever way you want. +Be warned that the fields in the training log may change in the future. +You had better check the data files and change the mapping from field name to + field index in create_field_index before designing your own plots. +Usage: + ./plot_training_log.py chart_type[0-%s] /where/to/save.png /path/to/first.log ... +Notes: + 1. Supporting multiple logs. + 2. Log file name must end with the lower-cased "%s". +Supported chart types:""" % (len(get_supported_chart_types()) - 1, + get_log_file_suffix()) + supported_chart_types = get_supported_chart_types() + num = len(supported_chart_types) + for i in xrange(num): + print ' %d: %s' % (i, supported_chart_types[i]) + sys.exit() + +def is_valid_chart_type(chart_type): + return chart_type >= 0 and chart_type < len(get_supported_chart_types()) + +if __name__ == '__main__': + if len(sys.argv) < 4: + print_help() + else: + chart_type = int(sys.argv[1]) + if not is_valid_chart_type(chart_type): + print '%s is not a valid chart type.' % chart_type + print_help() + path_to_png = sys.argv[2] + if not path_to_png.endswith('.png'): + print 'Path must ends with png' % path_to_png + sys.exit() + path_to_logs = sys.argv[3:] + for path_to_log in path_to_logs: + if not os.path.exists(path_to_log): + print 'Path does not exist: %s' % path_to_log + sys.exit() + if not path_to_log.endswith(get_log_file_suffix()): + print 'Log file must end in %s.' % get_log_file_suffix() + print_help() + ## plot_chart accpets multiple path_to_logs + plot_chart(chart_type, path_to_png, path_to_logs) diff --git a/3rdparty/caffe/tools/extra/resize_and_crop_images.py b/3rdparty/caffe/tools/extra/resize_and_crop_images.py new file mode 100755 index 00000000..fd2c3134 --- /dev/null +++ b/3rdparty/caffe/tools/extra/resize_and_crop_images.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python +from mincepie import mapreducer, launcher +import gflags +import os +import cv2 +from PIL import Image + +# gflags +gflags.DEFINE_string('image_lib', 'opencv', + 'OpenCV or PIL, case insensitive. The default value is the faster OpenCV.') +gflags.DEFINE_string('input_folder', '', + 'The folder that contains all input images, organized in synsets.') +gflags.DEFINE_integer('output_side_length', 256, + 'Expected side length of the output image.') +gflags.DEFINE_string('output_folder', '', + 'The folder that we write output resized and cropped images to') +FLAGS = gflags.FLAGS + +class OpenCVResizeCrop: + def resize_and_crop_image(self, input_file, output_file, output_side_length = 256): + '''Takes an image name, resize it and crop the center square + ''' + img = cv2.imread(input_file) + height, width, depth = img.shape + new_height = output_side_length + new_width = output_side_length + if height > width: + new_height = output_side_length * height / width + else: + new_width = output_side_length * width / height + resized_img = cv2.resize(img, (new_width, new_height)) + height_offset = (new_height - output_side_length) / 2 + width_offset = (new_width - output_side_length) / 2 + cropped_img = resized_img[height_offset:height_offset + output_side_length, + width_offset:width_offset + output_side_length] + cv2.imwrite(output_file, cropped_img) + +class PILResizeCrop: +## http://united-coders.com/christian-harms/image-resizing-tips-every-coder-should-know/ + def resize_and_crop_image(self, input_file, output_file, output_side_length = 256, fit = True): + '''Downsample the image. + ''' + img = Image.open(input_file) + box = (output_side_length, output_side_length) + #preresize image with factor 2, 4, 8 and fast algorithm + factor = 1 + while img.size[0]/factor > 2*box[0] and img.size[1]*2/factor > 2*box[1]: + factor *=2 + if factor > 1: + img.thumbnail((img.size[0]/factor, img.size[1]/factor), Image.NEAREST) + + #calculate the cropping box and get the cropped part + if fit: + x1 = y1 = 0 + x2, y2 = img.size + wRatio = 1.0 * x2/box[0] + hRatio = 1.0 * y2/box[1] + if hRatio > wRatio: + y1 = int(y2/2-box[1]*wRatio/2) + y2 = int(y2/2+box[1]*wRatio/2) + else: + x1 = int(x2/2-box[0]*hRatio/2) + x2 = int(x2/2+box[0]*hRatio/2) + img = img.crop((x1,y1,x2,y2)) + + #Resize the image with best quality algorithm ANTI-ALIAS + img.thumbnail(box, Image.ANTIALIAS) + + #save it into a file-like object + with open(output_file, 'wb') as out: + img.save(out, 'JPEG', quality=75) + +class ResizeCropImagesMapper(mapreducer.BasicMapper): + '''The ImageNet Compute mapper. + The input value would be the file listing images' paths relative to input_folder. + ''' + def map(self, key, value): + if type(value) is not str: + value = str(value) + files = [value] + image_lib = FLAGS.image_lib.lower() + if image_lib == 'pil': + resize_crop = PILResizeCrop() + else: + resize_crop = OpenCVResizeCrop() + for i, line in enumerate(files): + try: + line = line.replace(FLAGS.input_folder, '').strip() + line = line.split() + image_file_name = line[0] + input_file = os.path.join(FLAGS.input_folder, image_file_name) + output_file = os.path.join(FLAGS.output_folder, image_file_name) + output_dir = output_file[:output_file.rfind('/')] + if not os.path.exists(output_dir): + os.makedirs(output_dir) + feat = resize_crop.resize_and_crop_image(input_file, output_file, + FLAGS.output_side_length) + except Exception, e: + # we ignore the exception (maybe the image is corrupted?) + print line, Exception, e + yield value, FLAGS.output_folder + +mapreducer.REGISTER_DEFAULT_MAPPER(ResizeCropImagesMapper) +mapreducer.REGISTER_DEFAULT_REDUCER(mapreducer.NoPassReducer) +mapreducer.REGISTER_DEFAULT_READER(mapreducer.FileReader) +mapreducer.REGISTER_DEFAULT_WRITER(mapreducer.FileWriter) + +if __name__ == '__main__': + launcher.launch() diff --git a/3rdparty/caffe/tools/extra/summarize.py b/3rdparty/caffe/tools/extra/summarize.py new file mode 100755 index 00000000..7e2d22fd --- /dev/null +++ b/3rdparty/caffe/tools/extra/summarize.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python + +"""Net summarization tool. + +This tool summarizes the structure of a net in a concise but comprehensive +tabular listing, taking a prototxt file as input. + +Use this tool to check at a glance that the computation you've specified is the +computation you expect. +""" + +from caffe.proto import caffe_pb2 +from google import protobuf +import re +import argparse + +# ANSI codes for coloring blobs (used cyclically) +COLORS = ['92', '93', '94', '95', '97', '96', '42', '43;30', '100', + '444', '103;30', '107;30'] +DISCONNECTED_COLOR = '41' + +def read_net(filename): + net = caffe_pb2.NetParameter() + with open(filename) as f: + protobuf.text_format.Parse(f.read(), net) + return net + +def format_param(param): + out = [] + if len(param.name) > 0: + out.append(param.name) + if param.lr_mult != 1: + out.append('x{}'.format(param.lr_mult)) + if param.decay_mult != 1: + out.append('Dx{}'.format(param.decay_mult)) + return ' '.join(out) + +def printed_len(s): + return len(re.sub(r'\033\[[\d;]+m', '', s)) + +def print_table(table, max_width): + """Print a simple nicely-aligned table. + + table must be a list of (equal-length) lists. Columns are space-separated, + and as narrow as possible, but no wider than max_width. Text may overflow + columns; note that unlike string.format, this will not affect subsequent + columns, if possible.""" + + max_widths = [max_width] * len(table[0]) + column_widths = [max(printed_len(row[j]) + 1 for row in table) + for j in range(len(table[0]))] + column_widths = [min(w, max_w) for w, max_w in zip(column_widths, max_widths)] + + for row in table: + row_str = '' + right_col = 0 + for cell, width in zip(row, column_widths): + right_col += width + row_str += cell + ' ' + row_str += ' ' * max(right_col - printed_len(row_str), 0) + print row_str + +def summarize_net(net): + disconnected_tops = set() + for lr in net.layer: + disconnected_tops |= set(lr.top) + disconnected_tops -= set(lr.bottom) + + table = [] + colors = {} + for lr in net.layer: + tops = [] + for ind, top in enumerate(lr.top): + color = colors.setdefault(top, COLORS[len(colors) % len(COLORS)]) + if top in disconnected_tops: + top = '\033[1;4m' + top + if len(lr.loss_weight) > 0: + top = '{} * {}'.format(lr.loss_weight[ind], top) + tops.append('\033[{}m{}\033[0m'.format(color, top)) + top_str = ', '.join(tops) + + bottoms = [] + for bottom in lr.bottom: + color = colors.get(bottom, DISCONNECTED_COLOR) + bottoms.append('\033[{}m{}\033[0m'.format(color, bottom)) + bottom_str = ', '.join(bottoms) + + if lr.type == 'Python': + type_str = lr.python_param.module + '.' + lr.python_param.layer + else: + type_str = lr.type + + # Summarize conv/pool parameters. + # TODO support rectangular/ND parameters + conv_param = lr.convolution_param + if (lr.type in ['Convolution', 'Deconvolution'] + and len(conv_param.kernel_size) == 1): + arg_str = str(conv_param.kernel_size[0]) + if len(conv_param.stride) > 0 and conv_param.stride[0] != 1: + arg_str += '/' + str(conv_param.stride[0]) + if len(conv_param.pad) > 0 and conv_param.pad[0] != 0: + arg_str += '+' + str(conv_param.pad[0]) + arg_str += ' ' + str(conv_param.num_output) + if conv_param.group != 1: + arg_str += '/' + str(conv_param.group) + elif lr.type == 'Pooling': + arg_str = str(lr.pooling_param.kernel_size) + if lr.pooling_param.stride != 1: + arg_str += '/' + str(lr.pooling_param.stride) + if lr.pooling_param.pad != 0: + arg_str += '+' + str(lr.pooling_param.pad) + else: + arg_str = '' + + if len(lr.param) > 0: + param_strs = map(format_param, lr.param) + if max(map(len, param_strs)) > 0: + param_str = '({})'.format(', '.join(param_strs)) + else: + param_str = '' + else: + param_str = '' + + table.append([lr.name, type_str, param_str, bottom_str, '->', top_str, + arg_str]) + return table + +def main(): + parser = argparse.ArgumentParser(description="Print a concise summary of net computation.") + parser.add_argument('filename', help='net prototxt file to summarize') + parser.add_argument('-w', '--max-width', help='maximum field width', + type=int, default=30) + args = parser.parse_args() + + net = read_net(args.filename) + table = summarize_net(net) + print_table(table, max_width=args.max_width) + +if __name__ == '__main__': + main() diff --git a/3rdparty/caffe/tools/extract_features.cpp b/3rdparty/caffe/tools/extract_features.cpp new file mode 100644 index 00000000..51c791e4 --- /dev/null +++ b/3rdparty/caffe/tools/extract_features.cpp @@ -0,0 +1,183 @@ +#include +#include + +#include "boost/algorithm/string.hpp" +#include "google/protobuf/text_format.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/net.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" +#include "caffe/util/format.hpp" +#include "caffe/util/io.hpp" + +using caffe::Blob; +using caffe::Caffe; +using caffe::Datum; +using caffe::Net; +using std::string; +namespace db = caffe::db; + +template +int feature_extraction_pipeline(int argc, char** argv); + +int main(int argc, char** argv) { + return feature_extraction_pipeline(argc, argv); +// return feature_extraction_pipeline(argc, argv); +} + +template +int feature_extraction_pipeline(int argc, char** argv) { + ::google::InitGoogleLogging(argv[0]); + const int num_required_args = 7; + if (argc < num_required_args) { + LOG(ERROR)<< + "This program takes in a trained network and an input data layer, and then" + " extract features of the input data produced by the net.\n" + "Usage: extract_features pretrained_net_param" + " feature_extraction_proto_file extract_feature_blob_name1[,name2,...]" + " save_feature_dataset_name1[,name2,...] num_mini_batches db_type" + " [CPU/GPU] [DEVICE_ID=0]\n" + "Note: you can extract multiple features in one pass by specifying" + " multiple feature blob names and dataset names separated by ','." + " The names cannot contain white space characters and the number of blobs" + " and datasets must be equal."; + return 1; + } + int arg_pos = num_required_args; + + arg_pos = num_required_args; + if (argc > arg_pos && strcmp(argv[arg_pos], "GPU") == 0) { + LOG(ERROR)<< "Using GPU"; + int device_id = 0; + if (argc > arg_pos + 1) { + device_id = atoi(argv[arg_pos + 1]); + CHECK_GE(device_id, 0); + } + LOG(ERROR) << "Using Device_id=" << device_id; + Caffe::SetDevice(device_id); + Caffe::set_mode(Caffe::GPU); + } else { + LOG(ERROR) << "Using CPU"; + Caffe::set_mode(Caffe::CPU); + } + + arg_pos = 0; // the name of the executable + std::string pretrained_binary_proto(argv[++arg_pos]); + + // Expected prototxt contains at least one data layer such as + // the layer data_layer_name and one feature blob such as the + // fc7 top blob to extract features. + /* + layers { + name: "data_layer_name" + type: DATA + data_param { + source: "/path/to/your/images/to/extract/feature/images_leveldb" + mean_file: "/path/to/your/image_mean.binaryproto" + batch_size: 128 + crop_size: 227 + mirror: false + } + top: "data_blob_name" + top: "label_blob_name" + } + layers { + name: "drop7" + type: DROPOUT + dropout_param { + dropout_ratio: 0.5 + } + bottom: "fc7" + top: "fc7" + } + */ + std::string feature_extraction_proto(argv[++arg_pos]); + boost::shared_ptr > feature_extraction_net( + new Net(feature_extraction_proto, caffe::TEST)); + feature_extraction_net->CopyTrainedLayersFrom(pretrained_binary_proto); + + std::string extract_feature_blob_names(argv[++arg_pos]); + std::vector blob_names; + boost::split(blob_names, extract_feature_blob_names, boost::is_any_of(",")); + + std::string save_feature_dataset_names(argv[++arg_pos]); + std::vector dataset_names; + boost::split(dataset_names, save_feature_dataset_names, + boost::is_any_of(",")); + CHECK_EQ(blob_names.size(), dataset_names.size()) << + " the number of blob names and dataset names must be equal"; + size_t num_features = blob_names.size(); + + for (size_t i = 0; i < num_features; i++) { + CHECK(feature_extraction_net->has_blob(blob_names[i])) + << "Unknown feature blob name " << blob_names[i] + << " in the network " << feature_extraction_proto; + } + + int num_mini_batches = atoi(argv[++arg_pos]); + + std::vector > feature_dbs; + std::vector > txns; + const char* db_type = argv[++arg_pos]; + for (size_t i = 0; i < num_features; ++i) { + LOG(INFO)<< "Opening dataset " << dataset_names[i]; + boost::shared_ptr db(db::GetDB(db_type)); + db->Open(dataset_names.at(i), db::NEW); + feature_dbs.push_back(db); + boost::shared_ptr txn(db->NewTransaction()); + txns.push_back(txn); + } + + LOG(ERROR)<< "Extracting Features"; + + Datum datum; + std::vector image_indices(num_features, 0); + for (int batch_index = 0; batch_index < num_mini_batches; ++batch_index) { + feature_extraction_net->Forward(); + for (int i = 0; i < num_features; ++i) { + const boost::shared_ptr > feature_blob = + feature_extraction_net->blob_by_name(blob_names[i]); + int batch_size = feature_blob->num(); + int dim_features = feature_blob->count() / batch_size; + const Dtype* feature_blob_data; + for (int n = 0; n < batch_size; ++n) { + datum.set_height(feature_blob->height()); + datum.set_width(feature_blob->width()); + datum.set_channels(feature_blob->channels()); + datum.clear_data(); + datum.clear_float_data(); + feature_blob_data = feature_blob->cpu_data() + + feature_blob->offset(n); + for (int d = 0; d < dim_features; ++d) { + datum.add_float_data(feature_blob_data[d]); + } + string key_str = caffe::format_int(image_indices[i], 10); + + string out; + CHECK(datum.SerializeToString(&out)); + txns.at(i)->Put(key_str, out); + ++image_indices[i]; + if (image_indices[i] % 1000 == 0) { + txns.at(i)->Commit(); + txns.at(i).reset(feature_dbs.at(i)->NewTransaction()); + LOG(ERROR)<< "Extracted features of " << image_indices[i] << + " query images for feature blob " << blob_names[i]; + } + } // for (int n = 0; n < batch_size; ++n) + } // for (int i = 0; i < num_features; ++i) + } // for (int batch_index = 0; batch_index < num_mini_batches; ++batch_index) + // write the last batch + for (int i = 0; i < num_features; ++i) { + if (image_indices[i] % 1000 != 0) { + txns.at(i)->Commit(); + } + LOG(ERROR)<< "Extracted features of " << image_indices[i] << + " query images for feature blob " << blob_names[i]; + feature_dbs.at(i)->Close(); + } + + LOG(ERROR)<< "Successfully extracted the features!"; + return 0; +} diff --git a/3rdparty/caffe/tools/finetune_net.cpp b/3rdparty/caffe/tools/finetune_net.cpp new file mode 100644 index 00000000..81c0c354 --- /dev/null +++ b/3rdparty/caffe/tools/finetune_net.cpp @@ -0,0 +1,7 @@ +#include "caffe/caffe.hpp" + +int main(int argc, char** argv) { + LOG(FATAL) << "Deprecated. Use caffe train --solver=... " + "[--weights=...] instead."; + return 0; +} diff --git a/3rdparty/caffe/tools/net_speed_benchmark.cpp b/3rdparty/caffe/tools/net_speed_benchmark.cpp new file mode 100644 index 00000000..cd16e8d0 --- /dev/null +++ b/3rdparty/caffe/tools/net_speed_benchmark.cpp @@ -0,0 +1,7 @@ +#include "caffe/caffe.hpp" + +int main(int argc, char** argv) { + LOG(FATAL) << "Deprecated. Use caffe time --model=... " + "[--iterations=50] [--gpu] [--device_id=0]"; + return 0; +} diff --git a/3rdparty/caffe/tools/test_net.cpp b/3rdparty/caffe/tools/test_net.cpp new file mode 100644 index 00000000..92e14eee --- /dev/null +++ b/3rdparty/caffe/tools/test_net.cpp @@ -0,0 +1,7 @@ +#include "caffe/caffe.hpp" + +int main(int argc, char** argv) { + LOG(FATAL) << "Deprecated. Use caffe test --model=... " + "--weights=... instead."; + return 0; +} diff --git a/3rdparty/caffe/tools/train_net.cpp b/3rdparty/caffe/tools/train_net.cpp new file mode 100644 index 00000000..622bca31 --- /dev/null +++ b/3rdparty/caffe/tools/train_net.cpp @@ -0,0 +1,7 @@ +#include "caffe/caffe.hpp" + +int main(int argc, char** argv) { + LOG(FATAL) << "Deprecated. Use caffe train --solver=... " + "[--snapshot=...] instead."; + return 0; +} diff --git a/3rdparty/caffe/tools/upgrade_net_proto_binary.cpp b/3rdparty/caffe/tools/upgrade_net_proto_binary.cpp new file mode 100644 index 00000000..ede07ecc --- /dev/null +++ b/3rdparty/caffe/tools/upgrade_net_proto_binary.cpp @@ -0,0 +1,50 @@ +// This is a script to upgrade "V0" network prototxts to the new format. +// Usage: +// upgrade_net_proto_binary v0_net_proto_file_in net_proto_file_out + +#include +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include + +#include "caffe/caffe.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +using std::ofstream; + +using namespace caffe; // NOLINT(build/namespaces) + +int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; // Print output to stderr (while still logging) + ::google::InitGoogleLogging(argv[0]); + if (argc != 3) { + LOG(ERROR) << "Usage: " + << "upgrade_net_proto_binary v0_net_proto_file_in net_proto_file_out"; + return 1; + } + + NetParameter net_param; + string input_filename(argv[1]); + if (!ReadProtoFromBinaryFile(input_filename, &net_param)) { + LOG(ERROR) << "Failed to parse input binary file as NetParameter: " + << input_filename; + return 2; + } + bool need_upgrade = NetNeedsUpgrade(net_param); + bool success = true; + if (need_upgrade) { + success = UpgradeNetAsNeeded(input_filename, &net_param); + if (!success) { + LOG(ERROR) << "Encountered error(s) while upgrading prototxt; " + << "see details above."; + } + } else { + LOG(ERROR) << "File already in latest proto format: " << input_filename; + } + + WriteProtoToBinaryFile(net_param, argv[2]); + + LOG(INFO) << "Wrote upgraded NetParameter binary proto to " << argv[2]; + return !success; +} diff --git a/3rdparty/caffe/tools/upgrade_net_proto_text.cpp b/3rdparty/caffe/tools/upgrade_net_proto_text.cpp new file mode 100644 index 00000000..617b48dc --- /dev/null +++ b/3rdparty/caffe/tools/upgrade_net_proto_text.cpp @@ -0,0 +1,51 @@ +// This is a script to upgrade "V0" network prototxts to the new format. +// Usage: +// upgrade_net_proto_text v0_net_proto_file_in net_proto_file_out + +#include +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include + +#include "caffe/caffe.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +using std::ofstream; + +using namespace caffe; // NOLINT(build/namespaces) + +int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; // Print output to stderr (while still logging) + ::google::InitGoogleLogging(argv[0]); + if (argc != 3) { + LOG(ERROR) << "Usage: " + << "upgrade_net_proto_text v0_net_proto_file_in net_proto_file_out"; + return 1; + } + + NetParameter net_param; + string input_filename(argv[1]); + if (!ReadProtoFromTextFile(input_filename, &net_param)) { + LOG(ERROR) << "Failed to parse input text file as NetParameter: " + << input_filename; + return 2; + } + bool need_upgrade = NetNeedsUpgrade(net_param); + bool success = true; + if (need_upgrade) { + success = UpgradeNetAsNeeded(input_filename, &net_param); + if (!success) { + LOG(ERROR) << "Encountered error(s) while upgrading prototxt; " + << "see details above."; + } + } else { + LOG(ERROR) << "File already in latest proto format: " << input_filename; + } + + // Save new format prototxt. + WriteProtoToTextFile(net_param, argv[2]); + + LOG(INFO) << "Wrote upgraded NetParameter text proto to " << argv[2]; + return !success; +} diff --git a/3rdparty/caffe/tools/upgrade_solver_proto_text.cpp b/3rdparty/caffe/tools/upgrade_solver_proto_text.cpp new file mode 100644 index 00000000..ddff1ce6 --- /dev/null +++ b/3rdparty/caffe/tools/upgrade_solver_proto_text.cpp @@ -0,0 +1,51 @@ +// This is a script to upgrade old solver prototxts to the new format. +// Usage: +// upgrade_solver_proto_text old_solver_proto_file_in solver_proto_file_out + +#include +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include + +#include "caffe/caffe.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +using std::ofstream; + +using namespace caffe; // NOLINT(build/namespaces) + +int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; // Print output to stderr (while still logging) + ::google::InitGoogleLogging(argv[0]); + if (argc != 3) { + LOG(ERROR) << "Usage: upgrade_solver_proto_text " + << "old_solver_proto_file_in solver_proto_file_out"; + return 1; + } + + SolverParameter solver_param; + string input_filename(argv[1]); + if (!ReadProtoFromTextFile(input_filename, &solver_param)) { + LOG(ERROR) << "Failed to parse input text file as SolverParameter: " + << input_filename; + return 2; + } + bool need_upgrade = SolverNeedsTypeUpgrade(solver_param); + bool success = true; + if (need_upgrade) { + success = UpgradeSolverAsNeeded(input_filename, &solver_param); + if (!success) { + LOG(ERROR) << "Encountered error(s) while upgrading prototxt; " + << "see details above."; + } + } else { + LOG(ERROR) << "File already in latest proto format: " << input_filename; + } + + // Save new format prototxt. + WriteProtoToTextFile(solver_param, argv[2]); + + LOG(INFO) << "Wrote upgraded SolverParameter text proto to " << argv[2]; + return !success; +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..bce1510c --- /dev/null +++ b/LICENSE @@ -0,0 +1,108 @@ +OPENPOSE: MULTIPERSON KEYPOINT DETECTION +SOFTWARE LICENSE AGREEMENT +ACADEMIC OR NON-PROFIT ORGANIZATION NONCOMMERCIAL RESEARCH USE ONLY + +BY USING OR DOWNLOADING THE SOFTWARE, YOU ARE AGREEING TO THE TERMS OF THIS LICENSE AGREEMENT. IF YOU DO NOT AGREE WITH THESE TERMS, YOU MAY NOT USE OR DOWNLOAD THE SOFTWARE. + +This is a license agreement ("Agreement") between your academic institution or non-profit organization or self (called "Licensee" or "You" in this Agreement) and Carnegie Mellon University (called "Licensor" in this Agreement). All rights not specifically granted to you in this Agreement are reserved for Licensor. + +RESERVATION OF OWNERSHIP AND GRANT OF LICENSE: +Licensor retains exclusive ownership of any copy of the Software (as defined below) licensed under this Agreement and hereby grants to Licensee a personal, non-exclusive, +non-transferable license to use the Software for noncommercial research purposes, without the right to sublicense, pursuant to the terms and conditions of this Agreement. As used in this Agreement, the term "Software" means (i) the actual copy of all or any portion of code for program routines made accessible to Licensee by Licensor pursuant to this Agreement, inclusive of backups, updates, and/or merged copies permitted hereunder or subsequently supplied by Licensor, including all or any file structures, programming instructions, user interfaces and screen formats and sequences as well as any and all documentation and instructions related to it, and (ii) all or any derivatives and/or modifications created or made by You to any of the items specified in (i). + +CONFIDENTIALITY: Licensee acknowledges that the Software is proprietary to Licensor, and as such, Licensee agrees to receive all such materials in confidence and use the Software only in accordance with the terms of this Agreement. Licensee agrees to use reasonable effort to protect the Software from unauthorized use, reproduction, distribution, or publication. + +COPYRIGHT: The Software is owned by Licensor and is protected by United +States copyright laws and applicable international treaties and/or conventions. + +PERMITTED USES: The Software may be used for your own noncommercial internal research purposes. You understand and agree that Licensor is not obligated to implement any suggestions and/or feedback you might provide regarding the Software, but to the extent Licensor does so, you are not entitled to any compensation related thereto. + +DERIVATIVES: You may create derivatives of or make modifications to the Software, however, You agree that all and any such derivatives and modifications will be owned by Licensor and become a part of the Software licensed to You under this Agreement.  You may only use such derivatives and modifications for your own noncommercial internal research purposes, and you may not otherwise use, distribute or copy such derivatives and modifications in violation of this Agreement. + +BACKUPS: If Licensee is an organization, it may make that number of copies of the Software necessary for internal noncommercial use at a single site within its organization provided that all information appearing in or on the original labels, including the copyright and trademark notices are copied onto the labels of the copies. + +USES NOT PERMITTED: You may not distribute, copy or use the Software except as explicitly permitted herein. Licensee has not been granted any trademark license as part of this Agreement and may not use the name or mark “OpenPose", "Carnegie Mellon" or any renditions thereof without the prior written permission of Licensor. + +You may not sell, rent, lease, sublicense, lend, time-share or transfer, in whole or in part, or provide third parties access to prior or present versions (or any parts thereof) of the Software. + +ASSIGNMENT: You may not assign this Agreement or your rights hereunder without the prior written consent of Licensor. Any attempted assignment without such consent shall be null and void. + +TERM: The term of the license granted by this Agreement is from Licensee's acceptance of this Agreement by downloading the Software or by using the Software until terminated as provided below. + +The Agreement automatically terminates without notice if you fail to comply with any provision of this Agreement. Licensee may terminate this Agreement by ceasing using the Software. Upon any termination of this Agreement, Licensee will delete any and all copies of the Software. You agree that all provisions which operate to protect the proprietary rights of Licensor shall remain in force should breach occur and that the obligation of confidentiality described in this Agreement is binding in perpetuity and, as such, survives the term of the Agreement. + +FEE: Provided Licensee abides completely by the terms and conditions of this Agreement, there is no fee due to Licensor for Licensee's use of the Software in accordance with this Agreement. + +DISCLAIMER OF WARRANTIES: THE SOFTWARE IS PROVIDED "AS-IS" WITHOUT WARRANTY OF ANY KIND INCLUDING ANY WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE OR PURPOSE OR OF NON-INFRINGEMENT. LICENSEE BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF THE SOFTWARE AND RELATED MATERIALS. + +SUPPORT AND MAINTENANCE: No Software support or training by the Licensor is provided as part of this Agreement. + +EXCLUSIVE REMEDY AND LIMITATION OF LIABILITY: To the maximum extent permitted under applicable law, Licensor shall not be liable for direct, indirect, special, incidental, or consequential damages or lost profits related to Licensee's use of and/or inability to use the Software, even if Licensor is advised of the possibility of such damage. + +EXPORT REGULATION: Licensee agrees to comply with any and all applicable +U.S. export control laws, regulations, and/or other laws related to embargoes and sanction programs administered by the Office of Foreign Assets Control. + +SEVERABILITY: If any provision(s) of this Agreement shall be held to be invalid, illegal, or unenforceable by a court or other tribunal of competent jurisdiction, the validity, legality and enforceability of the remaining provisions shall not in any way be affected or impaired thereby. + +NO IMPLIED WAIVERS: No failure or delay by Licensor in enforcing any right or remedy under this Agreement shall be construed as a waiver of any future or other exercise of such right or remedy by Licensor. + +GOVERNING LAW: This Agreement shall be construed and enforced in accordance with the laws of the Commonwealth of Pennsylvania without reference to conflict of laws principles. You consent to the personal jurisdiction of the courts of this County and waive their rights to venue outside of Allegheny County, Pennsylvania. + +ENTIRE AGREEMENT AND AMENDMENTS: This Agreement constitutes the sole and entire agreement between Licensee and Licensor as to the matter set forth herein and supersedes any previous agreements, understandings, and arrangements between the parties relating hereto. + + + +************************************************************************ + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION + +This project incorporates material from the project(s) listed below (collectively, "Third Party Code"). This Third Party Code is licensed to you under their original license terms set forth below. We reserves all other rights not expressly granted, whether by implication, estoppel or otherwise. + +1. Caffe, version 1.0.0rc5, (https://github.com/BVLC/caffe/) + +COPYRIGHT + +All contributions by the University of California: +Copyright (c) 2014-2017 The Regents of the University of California (Regents) +All rights reserved. + +All other contributions: +Copyright (c) 2014-2017, the respective contributors +All rights reserved. + +Caffe uses a shared copyright model: each contributor holds copyright over +their contributions to Caffe. The project versioning records all such +contribution and copyright details. If a contributor wants to further mark +their specific copyright on a particular contribution, they should indicate +their copyright solely in the commit message of the change when it is +committed. + +LICENSE + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +CONTRIBUTION AGREEMENT + +By contributing to the BVLC/caffe repository through pull-request, comment, +or otherwise, the contributor releases their content to the +license and copyright terms herein. + +************END OF THIRD-PARTY SOFTWARE NOTICES AND INFORMATION********** diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..ba6539a5 --- /dev/null +++ b/Makefile @@ -0,0 +1,508 @@ +PROJECT := openpose + +CONFIG_FILE := Makefile.config +# Explicitly check for the config file, otherwise make -k will proceed anyway. +ifeq ($(wildcard $(CONFIG_FILE)),) +$(error $(CONFIG_FILE) not found. See $(CONFIG_FILE).example.) +endif +include $(CONFIG_FILE) + +BUILD_DIR_LINK := $(BUILD_DIR) +ifeq ($(RELEASE_BUILD_DIR),) + RELEASE_BUILD_DIR := .$(BUILD_DIR)_release +endif +ifeq ($(DEBUG_BUILD_DIR),) + DEBUG_BUILD_DIR := .$(BUILD_DIR)_debug +endif + +DEBUG ?= 0 +ifeq ($(DEBUG), 1) + BUILD_DIR := $(DEBUG_BUILD_DIR) + OTHER_BUILD_DIR := $(RELEASE_BUILD_DIR) +else + BUILD_DIR := $(RELEASE_BUILD_DIR) + OTHER_BUILD_DIR := $(DEBUG_BUILD_DIR) +endif + +# All of the directories containing code. +SRC_DIRS := $(shell find * -type d -exec bash -c "find {} -maxdepth 1 \ + -name '*.cpp' | grep -q ." \; -print) + +# The target shared library name +LIBRARY_NAME := $(PROJECT) +LIB_BUILD_DIR := $(BUILD_DIR)/lib +STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a +DYNAMIC_VERSION_MAJOR := 1 +DYNAMIC_VERSION_MINOR := 0 +DYNAMIC_VERSION_REVISION := 0-rc1 +DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so +#DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR) +DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) +DYNAMIC_NAME := $(LIB_BUILD_DIR)/$(DYNAMIC_VERSIONED_NAME_SHORT) +COMMON_FLAGS += -DOPEN_POSE_VERSION=$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) + + +############################## +# Enable profiler +############################## +PROFILER_ENABLED ?= 0 +ifeq ($(PROFILER_ENABLED), 1) + COMMON_FLAGS += -DPROFILER_ENABLED +endif + + +############################## +# Deep net selection +############################## +DEEP_NET ?= caffe +# TensorFlow +ifeq ($(DEEP_NET), tensorflow) + # COMMON_FLAGS += -DUSE_TENSOR_FLOW +# Torch +else ifeq ($(DEEP_NET), torch) + # COMMON_FLAGS += -DUSE_TORCH +# Caffe +else + COMMON_FLAGS += -DUSE_CAFFE +endif + +############################## +# Get all source files +############################## +# CXX_SRCS are the source files excluding the test ones. +# CXX_SRCS := $(shell find src/$(PROJECT) ! -name "test_*.cpp" -name "*.cpp") +CXX_SRCS := $(shell find src ! -name "test_*.cpp" -name "*.cpp") +# CU_SRCS are the cuda source files +# CU_SRCS := $(shell find src/$(PROJECT) ! -name "test_*.cu" -name "*.cu") +CU_SRCS := $(shell find src ! -name "test_*.cu" -name "*.cu") +# EXAMPLE_SRCS are the source files for the example binaries +EXAMPLE_SRCS := $(shell find examples -name "*.cpp") +# BUILD_INCLUDE_DIR contains any generated header files we want to include. +BUILD_INCLUDE_DIR := $(BUILD_DIR)/src +# NONGEN_CXX_SRCS includes all source/header files except those generated +# automatically (e.g., by proto). +NONGEN_CXX_SRCS := $(shell find \ + src/$(PROJECT) \ + include/$(PROJECT) \ + examples \ + -name "*.cpp" -or -name "*.hpp" -or -name "*.cu" -or -name "*.cuh") +LINT_SCRIPT := scripts/cpp_lint.py +LINT_OUTPUT_DIR := $(BUILD_DIR)/.lint +LINT_EXT := lint.txt +LINT_OUTPUTS := $(addsuffix .$(LINT_EXT), $(addprefix $(LINT_OUTPUT_DIR)/, $(NONGEN_CXX_SRCS))) +EMPTY_LINT_REPORT := $(BUILD_DIR)/.$(LINT_EXT) +NONEMPTY_LINT_REPORT := $(BUILD_DIR)/$(LINT_EXT) + +############################## +# Derive generated files +############################## +# The objects corresponding to the source files +# These objects will be linked into the final shared library, so we +# exclude the example objects. +CXX_OBJS := $(addprefix $(BUILD_DIR)/, ${CXX_SRCS:.cpp=.o}) +CU_OBJS := $(addprefix $(BUILD_DIR)/cuda/, ${CU_SRCS:.cu=.o}) +OBJS := $(CXX_OBJS) $(CU_OBJS) +# example objects +EXAMPLE_OBJS := $(addprefix $(BUILD_DIR)/, ${EXAMPLE_SRCS:.cpp=.o}) +# Output files for automatic dependency generation +DEPS := ${EXAMPLE_OBJS:.o=.d} ${CXX_OBJS:.o=.d} ${CU_OBJS:.o=.d} +EXAMPLE_BINS := ${EXAMPLE_OBJS:.o=.bin} + +############################## +# Derive compiler warning dump locations +############################## +WARNS_EXT := warnings.txt +CXX_WARNS := $(addprefix $(BUILD_DIR)/, ${CXX_SRCS:.cpp=.o.$(WARNS_EXT)}) +CU_WARNS := $(addprefix $(BUILD_DIR)/cuda/, ${CU_SRCS:.cu=.o.$(WARNS_EXT)}) +EXAMPLE_WARNS := $(addprefix $(BUILD_DIR)/, ${EXAMPLE_SRCS:.cpp=.o.$(WARNS_EXT)}) +ALL_CXX_WARNS := $(CXX_WARNS) $(EXAMPLE_WARNS) +ALL_CU_WARNS := $(CU_WARNS) +ALL_WARNS := $(ALL_CXX_WARNS) $(ALL_CU_WARNS) + +EMPTY_WARN_REPORT := $(BUILD_DIR)/.$(WARNS_EXT) +NONEMPTY_WARN_REPORT := $(BUILD_DIR)/$(WARNS_EXT) + +############################## +# Derive include and lib directories +############################## +CUDA_INCLUDE_DIR := $(CUDA_DIR)/include + +CUDA_LIB_DIR := +# add /lib64 only if it exists +ifneq ("$(wildcard $(CUDA_DIR)/lib64)","") + CUDA_LIB_DIR += $(CUDA_DIR)/lib64 +endif +CUDA_LIB_DIR += $(CUDA_DIR)/lib + +INCLUDE_DIRS += $(BUILD_INCLUDE_DIR) ./src ./include +ifneq ($(CPU_ONLY), 1) + INCLUDE_DIRS += $(CUDA_INCLUDE_DIR) + LIBRARY_DIRS += $(CUDA_LIB_DIR) + LIBRARIES := cudart cublas curand +endif + +LIBRARIES += glog gflags boost_system boost_filesystem m hdf5_hl hdf5 caffe + +# handle IO dependencies +USE_LEVELDB ?= 1 +USE_LMDB ?= 1 +USE_OPENCV ?= 1 + +ifeq ($(USE_LEVELDB), 1) + LIBRARIES += leveldb snappy +endif +ifeq ($(USE_LMDB), 1) + LIBRARIES += lmdb +endif +ifeq ($(USE_OPENCV), 1) + LIBRARIES += opencv_core opencv_highgui opencv_imgproc + + ifeq ($(OPENCV_VERSION), 3) + LIBRARIES += opencv_imgcodecs opencv_videoio + else + LIBRARIES += opencv_contrib + endif + +endif +WARNINGS := -Wall -Wno-sign-compare + +############################## +# Set build directories +############################## + +DISTRIBUTE_DIR ?= distribute +DISTRIBUTE_SUBDIRS := $(DISTRIBUTE_DIR)/bin $(DISTRIBUTE_DIR)/lib +DIST_ALIASES := dist +ifneq ($(strip $(DISTRIBUTE_DIR)),distribute) + DIST_ALIASES += distribute +endif + +ALL_BUILD_DIRS := $(sort $(BUILD_DIR) $(addprefix $(BUILD_DIR)/, $(SRC_DIRS)) \ + $(addprefix $(BUILD_DIR)/cuda/, $(SRC_DIRS)) \ + $(LIB_BUILD_DIR) $(LINT_OUTPUT_DIR)) + +############################## +# Set directory for Doxygen-generated documentation +############################## +DOXYGEN_CONFIG_FILE ?= ./.Doxyfile +# should be the same as OUTPUT_DIRECTORY in the .Doxyfile +DOXYGEN_OUTPUT_DIR ?= ./doxygen +DOXYGEN_COMMAND ?= doxygen +# All the files that might have Doxygen documentation. +DOXYGEN_SOURCES := $(shell find \ + src/$(PROJECT) \ + include/$(PROJECT) \ + examples \ + -name "*.cpp" -or -name "*.hpp" -or -name "*.cu" -or -name "*.cuh") +DOXYGEN_SOURCES += $(DOXYGEN_CONFIG_FILE) + + +############################## +# OpenPose extra code: added flags +############################## +# Automatic dependency generation (nvcc is handled separately) +CXXFLAGS += -march=native + +# Complete build flags. +CXXFLAGS += -fopenmp -Wpedantic -Wall -Wextra +CXXFLAGS += -Wfatal-errors +COMMON_FLAGS += -std=c++11 +LINKFLAGS += -fopenmp + + +############################## +# Configure build +############################## + +# Determine platform +UNAME := $(shell uname -s) +ifeq ($(UNAME), Linux) + LINUX := 1 +else ifeq ($(UNAME), Darwin) + OSX := 1 + OSX_MAJOR_VERSION := $(shell sw_vers -productVersion | cut -f 1 -d .) + OSX_MINOR_VERSION := $(shell sw_vers -productVersion | cut -f 2 -d .) +endif + +# Linux +ifeq ($(LINUX), 1) + CXX ?= /usr/bin/g++ + GCCVERSION := $(shell $(CXX) -dumpversion | cut -f1,2 -d.) + # older versions of gcc are too dumb to build boost with -Wuninitalized + ifeq ($(shell echo | awk '{exit $(GCCVERSION) < 4.6;}'), 1) + WARNINGS += -Wno-uninitialized + endif + # boost::thread is reasonably called boost_thread (compare OS X) + # We will also explicitly add stdc++ to the link target. + LIBRARIES += boost_thread stdc++ + VERSIONFLAGS += -Wl,-soname,$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../lib +endif + +# OS X: +# clang++ instead of g++ +# libstdc++ for NVCC compatibility on OS X >= 10.9 with CUDA < 7.0 +ifeq ($(OSX), 1) + CXX := /usr/bin/clang++ + ifneq ($(CPU_ONLY), 1) + CUDA_VERSION := $(shell $(CUDA_DIR)/bin/nvcc -V | grep -o 'release [0-9.]*' | tr -d '[a-z ]') + ifeq ($(shell echo | awk '{exit $(CUDA_VERSION) < 7.0;}'), 1) + CXXFLAGS += -stdlib=libstdc++ + LINKFLAGS += -stdlib=libstdc++ + endif + # clang throws this warning for cuda headers + WARNINGS += -Wno-unneeded-internal-declaration + # 10.11 strips DYLD_* env vars so link CUDA (rpath is available on 10.5+) + OSX_10_OR_LATER := $(shell [ $(OSX_MAJOR_VERSION) -ge 10 ] && echo true) + OSX_10_5_OR_LATER := $(shell [ $(OSX_MINOR_VERSION) -ge 5 ] && echo true) + ifeq ($(OSX_10_OR_LATER),true) + ifeq ($(OSX_10_5_OR_LATER),true) + LDFLAGS += -Wl,-rpath,$(CUDA_LIB_DIR) + endif + endif + endif + # boost::thread is called boost_thread-mt to mark multithreading on OS X + LIBRARIES += boost_thread-mt + # we need to explicitly ask for the rpath to be obeyed + ORIGIN := @loader_path + VERSIONFLAGS += -Wl,-install_name,@rpath/$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../../build/lib +else + ORIGIN := \$$ORIGIN +endif + +# Custom compiler +ifdef CUSTOM_CXX + CXX := $(CUSTOM_CXX) +endif + +# Static linking +ifneq (,$(findstring clang++,$(CXX))) + STATIC_LINK_COMMAND := -Wl,-force_load $(STATIC_NAME) +else ifneq (,$(findstring g++,$(CXX))) + STATIC_LINK_COMMAND := -Wl,--whole-archive $(STATIC_NAME) -Wl,--no-whole-archive +else + # The following line must not be indented with a tab, since we are not inside a target + $(error Cannot static link with the $(CXX) compiler) +endif + +# Debugging +ifeq ($(DEBUG), 1) + COMMON_FLAGS += -DDEBUG -g -O0 + NVCCFLAGS += -G +else + COMMON_FLAGS += -DNDEBUG -O3 +endif + +# cuDNN acceleration configuration. +ifeq ($(USE_CUDNN), 1) + LIBRARIES += cudnn + COMMON_FLAGS += -DUSE_CUDNN +endif + +# configure IO libraries +ifeq ($(USE_OPENCV), 1) + COMMON_FLAGS += -DUSE_OPENCV +endif +ifeq ($(USE_LEVELDB), 1) + COMMON_FLAGS += -DUSE_LEVELDB +endif +ifeq ($(USE_LMDB), 1) + COMMON_FLAGS += -DUSE_LMDB +ifeq ($(ALLOW_LMDB_NOLOCK), 1) + COMMON_FLAGS += -DALLOW_LMDB_NOLOCK +endif +endif + +# CPU-only configuration +ifeq ($(CPU_ONLY), 1) + OBJS := $(CXX_OBJS) + ALL_WARNS := $(ALL_CXX_WARNS) + COMMON_FLAGS += -DCPU_ONLY +endif + +# BLAS configuration (default = ATLAS) +BLAS ?= atlas +ifeq ($(BLAS), mkl) + # MKL + LIBRARIES += mkl_rt + COMMON_FLAGS += -DUSE_MKL + MKLROOT ?= /opt/intel/mkl + BLAS_INCLUDE ?= $(MKLROOT)/include + BLAS_LIB ?= $(MKLROOT)/lib $(MKLROOT)/lib/intel64 +else ifeq ($(BLAS), open) + # OpenBLAS + LIBRARIES += openblas +else + # ATLAS + ifeq ($(LINUX), 1) + ifeq ($(BLAS), atlas) + # Linux simply has cblas and atlas + LIBRARIES += cblas atlas + endif + else ifeq ($(OSX), 1) + # OS X packages atlas as the vecLib framework + LIBRARIES += cblas + # 10.10 has accelerate while 10.9 has veclib + XCODE_CLT_VER := $(shell pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep 'version' | sed 's/[^0-9]*\([0-9]\).*/\1/') + XCODE_CLT_GEQ_7 := $(shell [ $(XCODE_CLT_VER) -gt 6 ] && echo 1) + XCODE_CLT_GEQ_6 := $(shell [ $(XCODE_CLT_VER) -gt 5 ] && echo 1) + ifeq ($(XCODE_CLT_GEQ_7), 1) + BLAS_INCLUDE ?= /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/$(shell ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ | sort | tail -1)/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers + else ifeq ($(XCODE_CLT_GEQ_6), 1) + BLAS_INCLUDE ?= /System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ + LDFLAGS += -framework Accelerate + else + BLAS_INCLUDE ?= /System/Library/Frameworks/vecLib.framework/Versions/Current/Headers/ + LDFLAGS += -framework vecLib + endif + endif +endif +#' +INCLUDE_DIRS += $(BLAS_INCLUDE) +LIBRARY_DIRS += $(BLAS_LIB) + +LIBRARY_DIRS += $(LIB_BUILD_DIR) + +# Automatic dependency generation (nvcc is handled separately) +CXXFLAGS += -MMD -MP + +# Complete build flags. +COMMON_FLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) +CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) +NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) +LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) + +USE_PKG_CONFIG ?= 0 +ifeq ($(USE_PKG_CONFIG), 1) + PKG_CONFIG := $(shell pkg-config opencv --libs) +else + PKG_CONFIG := +endif +LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(PKG_CONFIG) \ + $(foreach library,$(LIBRARIES),-l$(library)) -Wl,-rpath=$(CAFFE_DIR)/lib + +############################## +# Define build targets +############################## +.PHONY: all lib clean docs linecount lint lintclean examples $(DIST_ALIASES) \ + warn everything + +all: lib examples + +lib: $(STATIC_NAME) $(DYNAMIC_NAME) + +everything: $(EVERYTHING_TARGETS) + +linecount: + cloc --read-lang-def=$(PROJECT).cloc \ + src/$(PROJECT) include/$(PROJECT) examples + +lint: $(EMPTY_LINT_REPORT) + +lintclean: + @ $(RM) -r $(LINT_OUTPUT_DIR) $(EMPTY_LINT_REPORT) $(NONEMPTY_LINT_REPORT) + +docs: $(DOXYGEN_OUTPUT_DIR) + @ cd ./docs ; ln -sfn ../$(DOXYGEN_OUTPUT_DIR)/html doxygen + +$(DOXYGEN_OUTPUT_DIR): $(DOXYGEN_CONFIG_FILE) $(DOXYGEN_SOURCES) + $(DOXYGEN_COMMAND) $(DOXYGEN_CONFIG_FILE) + +$(EMPTY_LINT_REPORT): $(LINT_OUTPUTS) | $(BUILD_DIR) + @ cat $(LINT_OUTPUTS) > $@ + @ if [ -s "$@" ]; then \ + cat $@; \ + mv $@ $(NONEMPTY_LINT_REPORT); \ + echo "Found one or more lint errors."; \ + exit 1; \ + fi; \ + $(RM) $(NONEMPTY_LINT_REPORT); \ + echo "No lint errors!"; + +$(LINT_OUTPUTS): $(LINT_OUTPUT_DIR)/%.lint.txt : % $(LINT_SCRIPT) | $(LINT_OUTPUT_DIR) + @ mkdir -p $(dir $@) + @ python $(LINT_SCRIPT) $< 2>&1 \ + | grep -v "^Done processing " \ + | grep -v "^Total errors found: 0" \ + > $@ \ + || true + +examples: $(EXAMPLE_BINS) + +warn: $(EMPTY_WARN_REPORT) + +$(EMPTY_WARN_REPORT): $(ALL_WARNS) | $(BUILD_DIR) + @ cat $(ALL_WARNS) > $@ + @ if [ -s "$@" ]; then \ + cat $@; \ + mv $@ $(NONEMPTY_WARN_REPORT); \ + echo "Compiler produced one or more warnings."; \ + exit 1; \ + fi; \ + $(RM) $(NONEMPTY_WARN_REPORT); \ + echo "No compiler warnings!"; + +$(ALL_WARNS): %.o.$(WARNS_EXT) : %.o + +$(BUILD_DIR_LINK): $(BUILD_DIR)/.linked + +# Create a target ".linked" in this BUILD_DIR to tell Make that the "build" link +# is currently correct, then delete the one in the OTHER_BUILD_DIR in case it +# exists and $(DEBUG) is toggled later. +$(BUILD_DIR)/.linked: + @ mkdir -p $(BUILD_DIR) + @ $(RM) $(OTHER_BUILD_DIR)/.linked + @ $(RM) -r $(BUILD_DIR_LINK) + @ ln -s $(BUILD_DIR) $(BUILD_DIR_LINK) + @ touch $@ + +$(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK) + @ mkdir -p $@ + +$(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) + @ echo LD -o $@ + $(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(LINKFLAGS) $(LDFLAGS) + @ cd $(LIB_BUILD_DIR); rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT) + +$(STATIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) + @ echo AR -o $@ + $(Q)ar rcs $@ $(OBJS) + +$(BUILD_DIR)/%.o: %.cpp | $(ALL_BUILD_DIRS) + @ echo CXX $< + $(Q)$(CXX) $< $(CXXFLAGS) -c -o $@ 2> $@.$(WARNS_EXT) \ + || (cat $@.$(WARNS_EXT); exit 1) + @ cat $@.$(WARNS_EXT) + +$(BUILD_DIR)/cuda/%.o: %.cu | $(ALL_BUILD_DIRS) + @ echo NVCC $< + $(Q)$(CUDA_DIR)/bin/nvcc $(NVCCFLAGS) $(CUDA_ARCH) -M $< -o ${@:.o=.d} \ + -odir $(@D) + $(Q)$(CUDA_DIR)/bin/nvcc $(NVCCFLAGS) $(CUDA_ARCH) -c $< -o $@ 2> $@.$(WARNS_EXT) \ + || (cat $@.$(WARNS_EXT); exit 1) + @ cat $@.$(WARNS_EXT) + +$(EXAMPLE_BINS): %.bin : %.o | $(DYNAMIC_NAME) + @ echo CXX/LD -o $@ + $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \ + -Wl,-rpath,$(ORIGIN)/../../lib + +clean: + @- $(RM) -rf $(ALL_BUILD_DIRS) + @- $(RM) -rf $(OTHER_BUILD_DIR) + @- $(RM) -rf $(BUILD_DIR_LINK) + @- $(RM) -rf $(DISTRIBUTE_DIR) + +$(DIST_ALIASES): $(DISTRIBUTE_DIR) + +$(DISTRIBUTE_DIR): all + @ mkdir -p $(DISTRIBUTE_SUBDIRS) + # add include + cp -r include $(DISTRIBUTE_DIR)/ + # add example binaries + cp $(EXAMPLE_BINS) $(DISTRIBUTE_DIR)/bin + # add libraries + cp $(STATIC_NAME) $(DISTRIBUTE_DIR)/lib + install -m 644 $(DYNAMIC_NAME) $(DISTRIBUTE_DIR)/lib + cd $(DISTRIBUTE_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT) + +-include $(DEPS) diff --git a/Makefile.config.Ubuntu14.example b/Makefile.config.Ubuntu14.example new file mode 100644 index 00000000..7f68dc3b --- /dev/null +++ b/Makefile.config.Ubuntu14.example @@ -0,0 +1,101 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 \ + -gencode arch=compute_60,code=sm_60 \ + -gencode arch=compute_61,code=sm_61 \ + -gencode arch=compute_61,code=compute_61 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# Uncomment to enable op::Profiler +# PROFILER_ENABLED := 1 + +# DEEP_NET choice: +# caffe for Caffe (default and only option so far) +DEEP_NET := caffe + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# Caffe directory +CAFFE_DIR := 3rdparty/caffe/distribute + +# Whatever else you find you need goes here. +INCLUDE_DIRS := /usr/local/include $(CAFFE_DIR)/include +LIBRARY_DIRS := /usr/local/lib /usr/lib $(CAFFE_DIR)/lib + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/Makefile.config.Ubuntu14_cuda_7.example b/Makefile.config.Ubuntu14_cuda_7.example new file mode 100644 index 00000000..c5dc3516 --- /dev/null +++ b/Makefile.config.Ubuntu14_cuda_7.example @@ -0,0 +1,95 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 + +# Uncomment to enable op::Profiler +# PROFILER_ENABLED := 1 + +# DEEP_NET choice: +# caffe for Caffe (default and only option so far) +DEEP_NET := caffe + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# Caffe directory +CAFFE_DIR := 3rdparty/caffe/distribute + +# Whatever else you find you need goes here. +INCLUDE_DIRS := /usr/local/include $(CAFFE_DIR)/include +LIBRARY_DIRS := /usr/local/lib /usr/lib $(CAFFE_DIR)/lib + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/Makefile.config.Ubuntu16.example b/Makefile.config.Ubuntu16.example new file mode 100644 index 00000000..0d53628a --- /dev/null +++ b/Makefile.config.Ubuntu16.example @@ -0,0 +1,101 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 \ + -gencode arch=compute_60,code=sm_60 \ + -gencode arch=compute_61,code=sm_61 \ + -gencode arch=compute_61,code=compute_61 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# Uncomment to enable op::Profiler +# PROFILER_ENABLED := 1 + +# DEEP_NET choice: +# caffe for Caffe (default and only option so far) +DEEP_NET := caffe + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# Caffe directory +CAFFE_DIR := 3rdparty/caffe/distribute + +# Whatever else you find you need goes here. +INCLUDE_DIRS := /usr/local/include $(CAFFE_DIR)/include /usr/include/hdf5/serial +LIBRARY_DIRS := /usr/local/lib /usr/lib $(CAFFE_DIR)/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/Makefile.config.Ubuntu16_cuda_7.example b/Makefile.config.Ubuntu16_cuda_7.example new file mode 100644 index 00000000..6b2b3f96 --- /dev/null +++ b/Makefile.config.Ubuntu16_cuda_7.example @@ -0,0 +1,95 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 + +# Uncomment to enable op::Profiler +# PROFILER_ENABLED := 1 + +# DEEP_NET choice: +# caffe for Caffe (default and only option so far) +DEEP_NET := caffe + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# Caffe directory +CAFFE_DIR := 3rdparty/caffe/distribute + +# Whatever else you find you need goes here. +INCLUDE_DIRS := /usr/local/include $(CAFFE_DIR)/include /usr/include/hdf5/serial +LIBRARY_DIRS := /usr/local/lib /usr/lib $(CAFFE_DIR)/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/README.md b/README.md new file mode 100644 index 00000000..156f3ad7 --- /dev/null +++ b/README.md @@ -0,0 +1,179 @@ +OpenPose +==================================== + +## Introduction + +OpenPose is a **library for real-time multi-person key-point detection and multi-threading written in C++** using OpenCV and Caffe, authored by [Gines Hidalgo](https://www.linkedin.com/in/gineshidalgo/), [Zhe Cao](http://www.andrew.cmu.edu/user/zhecao), [Tomas Simon](http://www.cs.cmu.edu/~tsimon/), [Shih-En Wei](https://scholar.google.com/citations?user=sFQD3k4AAAAJ&hl=en), [Yaser Sheikh](http://www.cs.cmu.edu/~yaser/). + +OpenPose is freely available for free non-commercial use, and may be redistributed under these conditions. Please, see the [license](LICENSE) for further details. Contact us for commercial purposes. + + + +Library main functionality: + +* Multi-person 18-body-part pose estimation and rendering. + +* Flexible and easy-to-configure multi-threading module. + +* Image, video and webcam reader. + +* Able to store the results on disk and read them later. + +* Small display and GUI for simple result visualization. + +* All the functionality is wrapped into a simple-to-use OpenPose::Wrapper class. + +This work is based on the C++ code from [C++ real-time ECCV 2016 demo](https://github.com/CMU-Perceptual-Computing-Lab/caffe_rtpose), "Realtime Multiperson Pose Estimation", [Zhe Cao](http://www.andrew.cmu.edu/user/zhecao), [Tomas Simon](http://www.cs.cmu.edu/~tsimon/), [Shih-En Wei](https://scholar.google.com/citations?user=sFQD3k4AAAAJ&hl=en), [Yaser Sheikh](http://www.cs.cmu.edu/~yaser/). The [full project repo](https://github.com/ZheC/Multi-Person-Pose-Estimation) includes Matlab and Python version, as well as training code. + + + +## Results +

    + +

    + +

    + +

    + + + +## Contents +1. [Installation](#installation) +2. [Quick Start](#quick-start) + 1. [Demo](#demo) + 2. [OpenPose Wrapper](#openpose-wrapper) + 3. [OpenPose Library](#openpose-library) +3. [Output](#output) + 1. [Output Format](#output-format) + 2. [Reading Saved Results](#reading-saved-results) +4. [Send Us your Feed-Back!](#send-us-your-feed-back) +5. [Citation](#citation) + + + +## Installation +Installation steps on [installation.md](doc/installation.md). + + + +## Quick Start +Most users cases should not need to dive deep into the library, they might just be able to use the [Demo](#demo) or the simple [OpenPose Wrapper](#openpose-wrapper). So you can most probably skip the library details on [OpenPose Library](#openpose-library). + + + +#### Demo +Your case if you just want to process a folder of images or video or webcam and display or save the pose results. + +Forget about the OpenPose library details and just read the [demo_overview.md](doc/demo_overview.md) 1-page section. + +#### OpenPose Wrapper +Your case if you want to read a specific format of image source and/or add a specific post-processing function and/or implement your own display/saving. + +(Almost) forget about the library, just take a look to the `Wrapper` tutorial on [examples/tutorial_wrapper/](examples/tutorial_wrapper/). + +Note: you should not need to modify OpenPose source code or examples, so that you can directly upgrade the OpenPose library anytime in the future without changing your code. You might create your custom code on [examples/user_code/](examples/user_code/) and compile it by using `make all` in the OpenPose folder. + +#### OpenPose Library +Your case if you want to change internal functions and/or extend its functionality. First, take a look to the [Demo](#demo) and [OpenPose Wrapper](#openpose-wrapper). Secondly, read the 2 following subsections: OpenPose Overview and Extending Functionality. + +1. OpenPose Overview: Learn the basics about our library source code on [library_overview.md](doc/library_overview.md). + +2. Extending Functionality: Learn how to extend our library on [library_extend_functionality.md](doc/library_extend_functionality.md). + +3. Adding An Extra Module: Learn how to add an extra module on [library_add_new_module.md](doc/library_add_new_module.md). + +#### Doxygen Documentation Autogeneration +You can generate the documentation by running the following command. The documentation will be generated on `doc/doxygen/html/index.html`. You can simply open it with double click and your favourite browser will display it. +``` +doxygen doc/doc_autogeneration.doxygen +``` + + + +## Output +#### Output Format +There are 2 alternatives to save the **(x,y,score) body part locations**. The `write_pose` flag uses the OpenCV cv::FileStorage default formats (JSON, XML and YML). However, the JSON format is only available after OpenCV 3.0. Hence, `write_pose_json` saves the people pose data as a custom JSON file. For the later, each JSON file has a `people` array of objects, where each object has an array `body_parts` containing the body part locations and detection confidence formatted as `x1,y1,c1,x2,y2,c2,...`. The coordinates `x` and `y` can be normalized to the range [0,1], [-1,1], [0, source size], [0, output size], etc., depending on the flag `scale_mode`. In addition, `c` is the confidence in the range [0,1]. + +``` +{ + "version":0.1, + "people":[ + {"body_parts":[1114.15,160.396,0.846207,...]}, + {"body_parts":[...]}, + ] +} +``` + +The body part order of the COCO (18 body parts) and MPI (15 body parts) keypoints is described for `POSE_BODY_PART_MAPPING` in [include/openpose/pose/poseParameters.hpp](include/openpose/pose/poseParameters.hpp). E.g. for COCO: +``` + POSE_COCO_BODY_PARTS { + {0, "Nose"}, + {1, "Neck"}, + {2, "RShoulder"}, + {3, "RElbow"}, + {4, "RWrist"}, + {5, "LShoulder"}, + {6, "LElbow"}, + {7, "LWrist"}, + {8, "RHip"}, + {9, "RKnee"}, + {10, "RAnkle"}, + {11, "LHip"}, + {12, "LKnee"}, + {13, "LAnkle"}, + {14, "REye"}, + {15, "LEye"}, + {16, "REar"}, + {17, "LEar"}, + {18, "Bkg"}, + } +``` + +For the **heat maps storing format**, instead of individually saving each of the 67 heatmaps (18 body parts + background + 2 x 19 PAFs) individually, the library concatenate them vertically into a huge (width x #heat maps) x (height) matrix, i.e. it concats the heat maps by columns. E.g. columns [0, individual heat map width] contains the first heat map, columns [individual heat map width + 1, 2 * individual heat map width] contains the second heat map, etc. Note that some displayers are not able to display the resulting images given its size. However, Chrome and Firefox are able to properly open them. + +The saving order is body parts + background + PAFs. Any of them can be disabled with the program flags. If background is disabled, then the final image will be body parts + PAFs. The body parts and background follow the order of `POSE_COCO_BODY_PARTS` or `POSE_MPI_BODY_PARTS`, while the PAFs follow the order specified on POSE_BODY_PART_PAIRS in `poseParameters.hpp`. E.g. for COCO: +``` + POSE_COCO_PAIRS {1,2, 1,5, 2,3, 3,4, 5,6, 6,7, 1,8, 8,9, 9,10, 1,11, 11,12, 12,13, 1,0, 0,14, 14,16, 0,15, 15,17, 2,16, 5,17}; +``` + +Where each index is the key value corresponding with each body part on `POSE_COCO_BODY_PARTS`, e.g. 0 for "Neck", 1 for "RShoulder", etc. + +#### Reading Saved Results +We use standard formats (JSON, XML, PNG, JPG, ...) to save our results, so there will be lots of frameworks to read them later, but you might also directly use our functions on [include/openpose/filestream.hpp](include/openpose/filestream.hpp). In particular, `loadData` (for JSON, XML and YML files) and `loadImage` (for image formats such as PNG or JPG) to load the data into cv::Mat format. + + + +## Send Us your Feed-Back! +Our library is open source for research purposes, and we want to continuously improve it! So please, let us know if... + +1. ... you find any bug (in functionality or speed). + +2. ... you added some functionality to some class or some new Worker subclass which we might potentially incorporate to our library. + +3. ... you know how to speed up or make more clear any part of the library. + +4. ... you have request about possible functionality. + +5. ... etc. + +Just comment on GibHub or make a pull request! We will answer you back as soon as possible! + + + +## Citation +Please cite the paper in your publications if it helps your research: + + @inproceedings{cao2017realtime, + author = {Zhe Cao and Tomas Simon and Shih-En Wei and Yaser Sheikh}, + booktitle = {CVPR}, + title = {Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields}, + year = {2017} + } + + @inproceedings{wei2016cpm, + author = {Shih-En Wei and Varun Ramakrishna and Takeo Kanade and Yaser Sheikh}, + booktitle = {CVPR}, + title = {Convolutional pose machines}, + year = {2016} + } diff --git a/doc/GUI_help/GUI_help.odt b/doc/GUI_help/GUI_help.odt new file mode 100644 index 0000000000000000000000000000000000000000..9e2a190b52246d2a41f530afca29e84c23648799 GIT binary patch literal 16830 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
    k_Q+RB0vDQjlF<}+$axFxs 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 literal 0 HcmV?d00001 diff --git a/doc/UML/1_0_0rc1/UML.mdj b/doc/UML/1_0_0rc1/UML.mdj new file mode 100755 index 00000000..c592aed2 --- /dev/null +++ b/doc/UML/1_0_0rc1/UML.mdj @@ -0,0 +1,42282 @@ +{ + "_type": "Project", + "_id": "AAAAAAFF+h6SjaM2Hec=", + "name": "Untitled", + "ownedElements": [ + { + "_type": "UMLModel", + "_id": "AAAAAAFF+qBWK6M3Z8Y=", + "_parent": { + "$ref": "AAAAAAFF+h6SjaM2Hec=" + }, + "name": "Model", + "ownedElements": [ + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFbPme936hyNvU=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Legend", + "visible": true, + "defaultDiagram": false, + "ownedViews": [ + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbPmguIqilCQQ=", + "_parent": { + "$ref": "AAAAAAFbPme936hyNvU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;15;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": 0, + "width": 953, + "height": 146, + "autoResize": false, + "text": "Legend:\n - The `Module Diagram` section shows the package dependencies.\n - The other sections (`core`, `thread`, `pose`, ...) show the file dependencies inside of that module.\n - Each file corresponds at most to 1 class, with the same name but initial upper case. Examples:\n - File wGui = class WGui.\n - File array = class Array.\n - If a file name finishes in *.hpp, it means that there is no associated *.cpp.\n - If a file name does not finish in *.hpp, there is both *.hpp and *.cpp. In case of CUDA classes, there might be a *.cu file associated too.", + "wordWrap": true + } + ] + }, + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFbHIJpMS36f7s=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Module Diagram", + "ownedElements": [ + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHCwkb098Gn8=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "name": "openpose", + "ownedElements": [ + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1QElDMPAM=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "utilities", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1OMVCzVD0=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "profiler", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1MqlCahVc=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "debug", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1IyVBoNV4=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "producer", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHC/EoVNdCyI=", + "_parent": { + "$ref": "AAAAAAFbHC1IyVBoNV4=" + }, + "source": { + "$ref": "AAAAAAFbHC1IyVBoNV4=" + }, + "target": { + "$ref": "AAAAAAFbHC1KeVCBpLY=" + }, + "visibility": "public" + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1KeVCBpLY=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "thread", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1G+lBPPsc=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "core", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHC9JuVLempo=", + "_parent": { + "$ref": "AAAAAAFbHC1G+lBPPsc=" + }, + "source": { + "$ref": "AAAAAAFbHC1G+lBPPsc=" + }, + "target": { + "$ref": "AAAAAAFbHC1KeVCBpLY=" + }, + "visibility": "public" + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1EhVA2eKM=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "pose", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHC9UmlLvhDw=", + "_parent": { + "$ref": "AAAAAAFbHC1EhVA2eKM=" + }, + "source": { + "$ref": "AAAAAAFbHC1EhVA2eKM=" + }, + "target": { + "$ref": "AAAAAAFbHC1KeVCBpLY=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHEFiO1Mmm7U=", + "_parent": { + "$ref": "AAAAAAFbHC1EhVA2eKM=" + }, + "source": { + "$ref": "AAAAAAFbHC1EhVA2eKM=" + }, + "target": { + "$ref": "AAAAAAFbHC1G+lBPPsc=" + }, + "visibility": "public" + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC1AKlAdhqg=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "filestream", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHC9bqlMAYZQ=", + "_parent": { + "$ref": "AAAAAAFbHC1AKlAdhqg=" + }, + "source": { + "$ref": "AAAAAAFbHC1AKlAdhqg=" + }, + "target": { + "$ref": "AAAAAAFbHC1KeVCBpLY=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHEF5SVM3f7Q=", + "_parent": { + "$ref": "AAAAAAFbHC1AKlAdhqg=" + }, + "source": { + "$ref": "AAAAAAFbHC1AKlAdhqg=" + }, + "target": { + "$ref": "AAAAAAFbHC1G+lBPPsc=" + }, + "visibility": "public" + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHC0+ElAE2jQ=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "gui", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHC9h+FMRrKY=", + "_parent": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "source": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "target": { + "$ref": "AAAAAAFbHC1KeVCBpLY=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHC9pCVMip8Y=", + "_parent": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "source": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "target": { + "$ref": "AAAAAAFbHC1EhVA2eKM=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHC9xUVMzMBc=", + "_parent": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "source": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "target": { + "$ref": "AAAAAAFbHC1G+lBPPsc=" + }, + "visibility": "public" + } + ], + "visibility": "public" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHIP8kjKBZ98=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "headers.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbS+qlRWuhTb0=", + "_parent": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "name": "wrapper", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHuMZiPmwEI=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "name": "3rd party", + "ownedElements": [ + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHwvmCSZ3oQ=", + "_parent": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "name": "cuda", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHvjGSQMEkI=", + "_parent": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "name": "caffe", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHyaSCVmqsA=", + "_parent": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "name": "protobuf", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHwh2CR/pHM=", + "_parent": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "name": "opencv", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHw5mCSz/Mc=", + "_parent": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "name": "cuDNN", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHwWmCRl81Y=", + "_parent": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "name": "boost", + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHHx6GCUN8a0=", + "_parent": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "name": "gflags", + "visibility": "public" + } + ], + "visibility": "public" + } + ], + "visible": true, + "defaultDiagram": false, + "ownedViews": [ + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUrvNhinY=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUrvNicKc=", + "_parent": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "model": { + "$ref": "AAAAAAFbHCwkb098Gn8=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/Nj5uU=", + "_parent": { + "$ref": "AAAAAAFbHIMUrvNicKc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2346, + "top": -655, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/NkZVw=", + "_parent": { + "$ref": "AAAAAAFbHIMUrvNicKc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 5, + "top": 22, + "width": 919, + "height": 14, + "autoResize": false, + "underline": false, + "text": "openpose", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/NlS6U=", + "_parent": { + "$ref": "AAAAAAFbHIMUrvNicKc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2346, + "top": -655, + "width": 153, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from Module Diagram)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/NmTvY=", + "_parent": { + "$ref": "AAAAAAFbHIMUrvNicKc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2346, + "top": -655, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": 15, + "width": 929, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUr/Nj5uU=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUr/NkZVw=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUr/NlS6U=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUr/NmTvY=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbS+qlSGuji3g=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 0, + "top": 0, + "width": 929, + "height": 529, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUrvNicKc=" + }, + "wordWrap": false + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbHIMUr/NnWbQ=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 720, + "top": 464, + "width": 201, + "height": 57, + "autoResize": false, + "text": "Level 0: Dependencies: 3rd party. Used by all modules.", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbHIMUr/NoMHg=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 720, + "top": 392, + "width": 201, + "height": 57, + "autoResize": false, + "text": "Level 1 - Dependencies: 3rdparty and module level 0.", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbHIMUr/Np+jI=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 720, + "top": 314, + "width": 201, + "height": 57, + "autoResize": false, + "text": "Level 2 - Dependencies: 3rdparty and modules levels 0-1.", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbHIMUr/NqRgQ=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 720, + "top": 240, + "width": 201, + "height": 57, + "autoResize": false, + "text": "Level 3 - Dependencies: 3rdparty and modules levels 0-2.", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbHIMUr/Nr9tQ=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 720, + "top": 168, + "width": 201, + "height": 57, + "autoResize": false, + "text": "Level 4 - Dependencies: 3rdparty and modules levels 0-3.", + "wordWrap": true + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUr/NscFI=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC1QElDMPAM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUr/Ntn3M=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/NscFI=" + }, + "model": { + "$ref": "AAAAAAFbHC1QElDMPAM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/Nucfo=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/Ntn3M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2642, + "top": -943, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/NvTn4=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/Ntn3M=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 221, + "top": 494, + "width": 62, + "height": 14, + "autoResize": false, + "underline": false, + "text": "utilities", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/Nwj4g=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/Ntn3M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2642, + "top": -943, + "width": 105, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/Nx7CI=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/Ntn3M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 221, + "top": 510, + "width": 62, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 216, + "top": 487, + "width": 72, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUr/Nucfo=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUr/NvTn4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUr/Nwj4g=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUr/Nx7CI=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 216, + "top": 472, + "width": 72, + "height": 41, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUr/Ntn3M=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUr/N+ggs=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC1IyVBoNV4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUr/N/MAo=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/N+ggs=" + }, + "model": { + "$ref": "AAAAAAFbHC1IyVBoNV4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OA+l0=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/N/MAo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1658, + "top": -791, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OBZuM=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/N/MAo=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 397, + "top": 342, + "width": 65, + "height": 14, + "autoResize": false, + "underline": false, + "text": "producer", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OC2VA=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/N/MAo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1658, + "top": -791, + "width": 105, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OD/AY=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/N/MAo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1658, + "top": -791, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 392, + "top": 335, + "width": 75, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUr/OA+l0=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUr/OBZuM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUr/OC2VA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUr/OD/AY=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 392, + "top": 320, + "width": 75, + "height": 42, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUr/N/MAo=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUr/OEzro=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC1KeVCBpLY=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUr/OFF4k=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OEzro=" + }, + "model": { + "$ref": "AAAAAAFbHC1KeVCBpLY=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OG4lk=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OFF4k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2514, + "top": -751, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OHg78=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OFF4k=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 221, + "top": 422, + "width": 62, + "height": 14, + "autoResize": false, + "underline": false, + "text": "thread", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OIbfY=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OFF4k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2514, + "top": -751, + "width": 105, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OJq3A=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OFF4k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2514, + "top": -751, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 216, + "top": 415, + "width": 72, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUr/OG4lk=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUr/OHg78=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUr/OIbfY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUr/OJq3A=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 216, + "top": 400, + "width": 72, + "height": 42, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUr/OFF4k=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUr/OK8aY=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC1G+lBPPsc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUr/OLsHs=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OK8aY=" + }, + "model": { + "$ref": "AAAAAAFbHC1G+lBPPsc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUr/OM+rQ=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OLsHs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2210, + "top": -583, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPONPeY=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OLsHs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 125, + "top": 342, + "width": 62, + "height": 14, + "autoResize": false, + "underline": false, + "text": "core", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOO0Zo=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OLsHs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2210, + "top": -583, + "width": 105, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOPPRQ=", + "_parent": { + "$ref": "AAAAAAFbHIMUr/OLsHs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2210, + "top": -583, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": 335, + "width": 72, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUr/OM+rQ=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPONPeY=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsPOO0Zo=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPOPPRQ=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 120, + "top": 320, + "width": 72, + "height": 42, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUr/OLsHs=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsPOQbhs=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC1EhVA2eKM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsPORBkQ=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOQbhs=" + }, + "model": { + "$ref": "AAAAAAFbHC1EhVA2eKM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOSy7k=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPORBkQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1658, + "top": -471, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOTti8=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPORBkQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 405, + "top": 262, + "width": 62, + "height": 14, + "autoResize": false, + "underline": false, + "text": "pose", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOUvfE=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPORBkQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1658, + "top": -471, + "width": 105, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOV81o=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPORBkQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1658, + "top": -471, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 400, + "top": 255, + "width": 72, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPOSy7k=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOTti8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsPOUvfE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPOV81o=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 400, + "top": 240, + "width": 72, + "height": 42, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsPORBkQ=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsPOWfGA=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC1AKlAdhqg=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsPOXNXg=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOWfGA=" + }, + "model": { + "$ref": "AAAAAAFbHC1AKlAdhqg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOYm00=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOXNXg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2418, + "top": -279, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOZwhY=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOXNXg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 165, + "top": 198, + "width": 72, + "height": 14, + "autoResize": false, + "underline": false, + "text": "filestream", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOayEU=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOXNXg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2418, + "top": -279, + "width": 105, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPObgW8=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOXNXg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2418, + "top": -279, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 160, + "top": 191, + "width": 82, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPOYm00=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOZwhY=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsPOayEU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPObgW8=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 160, + "top": 176, + "width": 82, + "height": 42, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsPOXNXg=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsPOcVl8=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsPOdIPQ=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOcVl8=" + }, + "model": { + "$ref": "AAAAAAFbHC0+ElAE2jQ=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOe1Xk=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOdIPQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2330, + "top": -295, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOfGnA=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOdIPQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 317, + "top": 198, + "width": 62, + "height": 14, + "autoResize": false, + "underline": false, + "text": "gui", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOgr10=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOdIPQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2330, + "top": -295, + "width": 105, + "height": 14, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsPOhEiw=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOdIPQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -2330, + "top": -295, + "width": 0, + "height": 14, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 312, + "top": 191, + "width": 72, + "height": 26, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPOe1Xk=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOfGnA=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsPOgr10=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPOhEiw=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 312, + "top": 176, + "width": 72, + "height": 42, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsPOdIPQ=" + }, + "wordWrap": false + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPOiTcA=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC9JuVLempo=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOjpLA=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOiTcA=" + }, + "model": { + "$ref": "AAAAAAFbHC9JuVLempo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 212, + "top": 362, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOiTcA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOk9j0=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOiTcA=" + }, + "model": { + "$ref": "AAAAAAFbHC9JuVLempo=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 222, + "top": 350, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOiTcA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOlml0=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOiTcA=" + }, + "model": { + "$ref": "AAAAAAFbHC9JuVLempo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 193, + "top": 385, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOiTcA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OEzro=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUr/OK8aY=" + }, + "lineStyle": 1, + "points": "181:362;226:399", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOjpLA=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPOk9j0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPOlml0=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPOmbEw=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC9UmlLvhDw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOnVWY=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOmbEw=" + }, + "model": { + "$ref": "AAAAAAFbHC9UmlLvhDw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 351, + "top": 345, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOmbEw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOorbU=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOmbEw=" + }, + "model": { + "$ref": "AAAAAAFbHC9UmlLvhDw=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 361, + "top": 356, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOmbEw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOpZtw=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOmbEw=" + }, + "model": { + "$ref": "AAAAAAFbHC9UmlLvhDw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 332, + "top": 322, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOmbEw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OEzro=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUsPOQbhs=" + }, + "lineStyle": 1, + "points": "410:282;275:399", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOnVWY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPOorbU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPOpZtw=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPOqgrs=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC9bqlMAYZQ=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOrc8c=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOqgrs=" + }, + "model": { + "$ref": "AAAAAAFbHC9bqlMAYZQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 239, + "top": 298, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOqgrs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOsvlQ=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOqgrs=" + }, + "model": { + "$ref": "AAAAAAFbHC9bqlMAYZQ=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 254, + "top": 295, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOqgrs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOtIiQ=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOqgrs=" + }, + "model": { + "$ref": "AAAAAAFbHC9bqlMAYZQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 210, + "top": 305, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOqgrs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OEzro=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUsPOWfGA=" + }, + "lineStyle": 1, + "points": "205:218;246:399", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOrc8c=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPOsvlQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPOtIiQ=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPOuAzE=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC9h+FMRrKY=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOvsmc=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOuAzE=" + }, + "model": { + "$ref": "AAAAAAFbHC9h+FMRrKY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 312, + "top": 307, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOuAzE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOw+Ho=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOuAzE=" + }, + "model": { + "$ref": "AAAAAAFbHC9h+FMRrKY=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 326, + "top": 313, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOuAzE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOxu4Y=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOuAzE=" + }, + "model": { + "$ref": "AAAAAAFbHC9h+FMRrKY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 285, + "top": 296, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOuAzE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OEzro=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUsPOcVl8=" + }, + "lineStyle": 1, + "points": "338:218;260:399", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOvsmc=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPOw+Ho=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPOxu4Y=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPOybk4=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC9pCVMip8Y=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPOzed0=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOybk4=" + }, + "model": { + "$ref": "AAAAAAFbHC9pCVMip8Y=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 399, + "top": 209, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOybk4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO02ZY=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOybk4=" + }, + "model": { + "$ref": "AAAAAAFbHC9pCVMip8Y=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": 197, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOybk4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO1u2A=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPOybk4=" + }, + "model": { + "$ref": "AAAAAAFbHC9pCVMip8Y=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 382, + "top": 234, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPOybk4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUsPOQbhs=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUsPOcVl8=" + }, + "lineStyle": 1, + "points": "377:218;406:239", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPOzed0=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPO02ZY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPO1u2A=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPO2dBI=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC9xUVMzMBc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO38z4=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO2dBI=" + }, + "model": { + "$ref": "AAAAAAFbHC9xUVMzMBc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 259, + "top": 273, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO2dBI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO4Lhs=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO2dBI=" + }, + "model": { + "$ref": "AAAAAAFbHC9xUVMzMBc=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 268, + "top": 285, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO2dBI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO5LWQ=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO2dBI=" + }, + "model": { + "$ref": "AAAAAAFbHC9xUVMzMBc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 240, + "top": 250, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO2dBI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OK8aY=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUsPOcVl8=" + }, + "lineStyle": 1, + "points": "318:218;183:319", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPO38z4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPO4Lhs=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPO5LWQ=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPO6JZ0=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHC/EoVNdCyI=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO7SWM=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO6JZ0=" + }, + "model": { + "$ref": "AAAAAAFbHC/EoVNdCyI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 345, + "top": 387, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO6JZ0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO8xqA=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO6JZ0=" + }, + "model": { + "$ref": "AAAAAAFbHC/EoVNdCyI=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 351, + "top": 401, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO6JZ0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO9aFc=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO6JZ0=" + }, + "model": { + "$ref": "AAAAAAFbHC/EoVNdCyI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 332, + "top": 360, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO6JZ0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OEzro=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUr/N+ggs=" + }, + "lineStyle": 1, + "points": "391:357;288:403", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPO7SWM=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPO8xqA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPO9aFc=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPO+la0=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHEFiO1Mmm7U=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPO/B0Y=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO+la0=" + }, + "model": { + "$ref": "AAAAAAFbHEFiO1Mmm7U=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 299, + "top": 307, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO+la0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPPASZk=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO+la0=" + }, + "model": { + "$ref": "AAAAAAFbHEFiO1Mmm7U=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 303, + "top": 321, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO+la0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsPPBLAU=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPO+la0=" + }, + "model": { + "$ref": "AAAAAAFbHEFiO1Mmm7U=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 290, + "top": 278, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPO+la0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OK8aY=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUsPOQbhs=" + }, + "lineStyle": 1, + "points": "399:270;192:329", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsPO/B0Y=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsPPASZk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsPPBLAU=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHIMUsPPCzDA=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHEF5SVM3f7Q=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsfPD+nk=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPPCzDA=" + }, + "model": { + "$ref": "AAAAAAFbHEF5SVM3f7Q=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 191, + "top": 266, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPPCzDA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsfPE0kU=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPPCzDA=" + }, + "model": { + "$ref": "AAAAAAFbHEF5SVM3f7Q=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 205, + "top": 270, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPPCzDA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHIMUsfPFtGE=", + "_parent": { + "$ref": "AAAAAAFbHIMUsPPCzDA=" + }, + "model": { + "$ref": "AAAAAAFbHEF5SVM3f7Q=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 162, + "top": 257, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHIMUsPPCzDA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHIMUr/OK8aY=" + }, + "tail": { + "$ref": "AAAAAAFbHIMUsPOWfGA=" + }, + "lineStyle": 1, + "points": "193:218;162:319", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsfPD+nk=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsfPE0kU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsfPFtGE=" + } + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsfPGj1A=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsfPH+hM=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "model": { + "$ref": "AAAAAAFbHHuMZiPmwEI=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPIFPA=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPH+hM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -666, + "top": -719, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPJR8A=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPH+hM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 5, + "top": 566, + "width": 919, + "height": 13, + "autoResize": false, + "underline": false, + "text": "3rd party", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPKNZk=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPH+hM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -666, + "top": -719, + "width": 138, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from Module Diagram)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPL+9g=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPH+hM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -666, + "top": -719, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": 559, + "width": 929, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsfPIFPA=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsfPJR8A=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsfPKNZk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsfPL+9g=" + } + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 0, + "top": 544, + "width": 929, + "height": 137, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsfPH+hM=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsfPMbkI=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHwvmCSZ3oQ=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsfPNVvA=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPMbkI=" + }, + "model": { + "$ref": "AAAAAAFbHHwvmCSZ3oQ=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPOGE4=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPNVvA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1090, + "top": -711, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPPcuM=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPNVvA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 317, + "top": 630, + "width": 62, + "height": 13, + "autoResize": false, + "underline": false, + "text": "cuda", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPQ2Ls=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPNVvA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1090, + "top": -711, + "width": 88, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from 3rd party)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPRYg8=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPNVvA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1090, + "top": -711, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 312, + "top": 623, + "width": 72, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsfPOGE4=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsfPPcuM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsfPQ2Ls=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsfPRYg8=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 312, + "top": 608, + "width": 72, + "height": 40, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsfPNVvA=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsfPSO0Y=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHvjGSQMEkI=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsfPTSG0=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPSO0Y=" + }, + "model": { + "$ref": "AAAAAAFbHHvjGSQMEkI=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPU3Dk=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPTSG0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -450, + "top": -663, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPVgvE=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPTSG0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 197, + "top": 630, + "width": 62, + "height": 13, + "autoResize": false, + "underline": false, + "text": "caffe", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPWMbs=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPTSG0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -450, + "top": -663, + "width": 88, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from 3rd party)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPX8WI=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPTSG0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -450, + "top": -663, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 192, + "top": 623, + "width": 72, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsfPU3Dk=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsfPVgvE=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsfPWMbs=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsfPX8WI=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 192, + "top": 608, + "width": 72, + "height": 40, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsfPTSG0=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsfPYA9k=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHyaSCVmqsA=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsfPZIz8=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPYA9k=" + }, + "model": { + "$ref": "AAAAAAFbHHyaSCVmqsA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPa/tE=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPZIz8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 790, + "top": -599, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPb9+I=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPZIz8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 789, + "top": 630, + "width": 62, + "height": 13, + "autoResize": false, + "underline": false, + "text": "protobuf", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPcku0=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPZIz8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 790, + "top": -599, + "width": 88, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from 3rd party)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPdi1E=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPZIz8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 790, + "top": -599, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 784, + "top": 623, + "width": 72, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsfPa/tE=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsfPb9+I=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsfPcku0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsfPdi1E=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 784, + "top": 608, + "width": 72, + "height": 40, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsfPZIz8=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUsfPefpk=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHwh2CR/pHM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUsfPfd60=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPefpk=" + }, + "model": { + "$ref": "AAAAAAFbHHwh2CR/pHM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPgWow=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPfd60=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -154, + "top": -815, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPhHG8=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPfd60=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 557, + "top": 630, + "width": 62, + "height": 13, + "autoResize": false, + "underline": false, + "text": "opencv", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPiqE0=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPfd60=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -154, + "top": -815, + "width": 88, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from 3rd party)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUsfPjufU=", + "_parent": { + "$ref": "AAAAAAFbHIMUsfPfd60=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -154, + "top": -815, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 552, + "top": 623, + "width": 72, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUsfPgWow=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUsfPhHG8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUsfPiqE0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUsfPjufU=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 552, + "top": 608, + "width": 72, + "height": 40, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUsfPfd60=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUs/PkU3k=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHw5mCSz/Mc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUs/Plgxg=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PkU3k=" + }, + "model": { + "$ref": "AAAAAAFbHHw5mCSz/Mc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/Pmtdc=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/Plgxg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -882, + "top": -647, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/PneZM=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/Plgxg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 437, + "top": 630, + "width": 62, + "height": 13, + "autoResize": false, + "underline": false, + "text": "cuDNN", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/PoOaU=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/Plgxg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -882, + "top": -647, + "width": 88, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from 3rd party)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/PpUVk=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/Plgxg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -882, + "top": -647, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 432, + "top": 623, + "width": 72, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUs/Pmtdc=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUs/PneZM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUs/PoOaU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUs/PpUVk=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 432, + "top": 608, + "width": 72, + "height": 40, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUs/Plgxg=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUs/PqP/U=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHwWmCRl81Y=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUs/PrpOs=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PqP/U=" + }, + "model": { + "$ref": "AAAAAAFbHHwWmCRl81Y=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/PsrR8=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PrpOs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -946, + "top": -735, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/PtUPg=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PrpOs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 77, + "top": 630, + "width": 62, + "height": 13, + "autoResize": false, + "underline": false, + "text": "boost", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/PuQo4=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PrpOs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -946, + "top": -735, + "width": 88, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from 3rd party)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/Pv4aA=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PrpOs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -946, + "top": -735, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 72, + "top": 623, + "width": 72, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUs/PsrR8=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUs/PtUPg=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUs/PuQo4=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUs/Pv4aA=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 72, + "top": 608, + "width": 72, + "height": 40, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUs/PrpOs=" + }, + "wordWrap": false + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHIMUs/Pw+qg=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHHx6GCUN8a0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIMUs/PxFr0=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/Pw+qg=" + }, + "model": { + "$ref": "AAAAAAFbHHx6GCUN8a0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/PyGPg=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PxFr0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 534, + "top": -607, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/Pz/O4=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PxFr0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 677, + "top": 630, + "width": 62, + "height": 13, + "autoResize": false, + "underline": false, + "text": "gflags", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/P0HyY=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PxFr0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 534, + "top": -607, + "width": 88, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from 3rd party)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIMUs/P1x8s=", + "_parent": { + "$ref": "AAAAAAFbHIMUs/PxFr0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 534, + "top": -607, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 672, + "top": 623, + "width": 72, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIMUs/PyGPg=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIMUs/Pz/O4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIMUs/P0HyY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIMUs/P1x8s=" + } + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUsfPGj1A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 672, + "top": 608, + "width": 72, + "height": 40, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIMUs/PxFr0=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHIP8kzKDNC4=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbHIP8kjKBZ98=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHIP8kzKEic8=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKDNC4=" + }, + "model": { + "$ref": "AAAAAAFbHIP8kjKBZ98=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHIP8kzKFLv4=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKEic8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -112, + "top": -96, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIP8kzKGkIg=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKEic8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 85, + "top": 55, + "width": 79, + "height": 13, + "autoResize": false, + "underline": false, + "text": "headers.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIP8lDKH5PM=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKEic8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -112, + "top": -96, + "width": 131, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHIP8lDKI2u8=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKEic8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -112, + "top": -96, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 48, + "width": 89, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHIP8kzKFLv4=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHIP8kzKGkIg=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHIP8lDKH5PM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHIP8lDKI2u8=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHIP8lDKJ50I=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKDNC4=" + }, + "model": { + "$ref": "AAAAAAFbHIP8kjKBZ98=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 73, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHIP8lDKKEdY=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKDNC4=" + }, + "model": { + "$ref": "AAAAAAFbHIP8kjKBZ98=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 83, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHIP8lDKLYr0=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKDNC4=" + }, + "model": { + "$ref": "AAAAAAFbHIP8kjKBZ98=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -56, + "top": -48, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHIP8mzKMq20=", + "_parent": { + "$ref": "AAAAAAFbHIP8kzKDNC4=" + }, + "model": { + "$ref": "AAAAAAFbHIP8kjKBZ98=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -56, + "top": -48, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 80, + "top": 48, + "width": 89, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHIP8kzKEic8=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHIP8lDKJ50I=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHIP8lDKKEdY=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHIP8lDKLYr0=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHIP8mzKMq20=" + } + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbHIRn9/P2rQY=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 720, + "top": 104, + "width": 201, + "height": 57, + "autoResize": false, + "text": "Level 5: wrapper class with all the functionality. It uses all the modules 0-4.", + "wordWrap": true + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbS+qlSGuji3g=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "model": { + "$ref": "AAAAAAFbS+qlRWuhTb0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbS+qlSGukExY=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGuji3g=" + }, + "model": { + "$ref": "AAAAAAFbS+qlRWuhTb0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbS+qlSWulXrQ=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGukExY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1176, + "top": -1760, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbS+qlSWumtzk=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGukExY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 245, + "top": 111, + "width": 53, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wrapper", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbS+qlSWun3C8=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGukExY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1176, + "top": -1760, + "width": 93, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from openpose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbS+qlSWuoSU0=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGukExY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1176, + "top": -1760, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 240, + "top": 104, + "width": 63, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbS+qlSWulXrQ=" + }, + "nameLabel": { + "$ref": "AAAAAAFbS+qlSWumtzk=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbS+qlSWun3C8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbS+qlSWuoSU0=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbS+qlSWupEuk=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGuji3g=" + }, + "model": { + "$ref": "AAAAAAFbS+qlRWuhTb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 240, + "top": 129, + "width": 63, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbS+qlSWuqwDQ=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGuji3g=" + }, + "model": { + "$ref": "AAAAAAFbS+qlRWuhTb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 240, + "top": 139, + "width": 63, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbS+qlSmurltM=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGuji3g=" + }, + "model": { + "$ref": "AAAAAAFbS+qlRWuhTb0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -784, + "top": -1176, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbS+qlSmusnEM=", + "_parent": { + "$ref": "AAAAAAFbS+qlSGuji3g=" + }, + "model": { + "$ref": "AAAAAAFbS+qlRWuhTb0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -784, + "top": -1176, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHIMUrvNhinY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 240, + "top": 104, + "width": 63, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbS+qlSGukExY=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbS+qlSWupEuk=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbS+qlSWuqwDQ=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbS+qlSmurltM=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbS+qlSmusnEM=" + } + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbS+r/4tDnklI=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebd8ff", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 720, + "top": 40, + "width": 201, + "height": 57, + "autoResize": false, + "text": "Level 6: headers.hpp imports all the modules at once.", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbiF4LK7RRW2E=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8fff8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": 464, + "width": 201, + "height": 57, + "autoResize": false, + "text": "- utilities: Auxiliary functions for other modules", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbiF4s3LRSU4k=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#d8ffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": 392, + "width": 201, + "height": 57, + "autoResize": false, + "text": "- thread: Multi-threading module", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbiF/73LRUffM=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ebffd8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": 312, + "width": 201, + "height": 57, + "autoResize": false, + "text": "- producer: Read image, video and webcam\n- core: Array and Datum", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbiGAXrLRVx9c=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#fff5d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": 240, + "width": 201, + "height": 57, + "autoResize": false, + "text": "- pose: 18-body-part detection and rendering", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbiGNx27RYcY0=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffe2d8", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": 168, + "width": 201, + "height": 57, + "autoResize": false, + "text": "- filestream: save/load JSON, XML, PNG, JPG, ...\n- gui: basic display & GUI", + "wordWrap": true + }, + { + "_type": "UMLNoteView", + "_id": "AAAAAAFbiGPEPLRZM9o=", + "_parent": { + "$ref": "AAAAAAFbHIJpMS36f7s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffd8eb", + "fontColor": "#000000", + "font": "Arial;14;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": 104, + "width": 201, + "height": 57, + "autoResize": false, + "text": "-wrapper: Simple wrapper to use all the modules fucntionality at once.", + "wordWrap": true + } + ] + }, + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFbHDVYsl1GUQo=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "core", + "ownedElements": [ + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHDZmRV10zeE=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "name": "core", + "ownedElements": [ + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDieuEyuaf0=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "cvMatToOpInput", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHDsY50/Dn0U=", + "_parent": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "source": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "target": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHE+jAGM/iNg=", + "_parent": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHE+jAGNAOCM=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGM/iNg=" + }, + "reference": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHE+jAGNBxzI=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGM/iNg=" + }, + "reference": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDiZg0xc7rw=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "array", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHE9aP2L8JeY=", + "_parent": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHE9aP2L9MGo=", + "_parent": { + "$ref": "AAAAAAFbHE9aP2L8JeY=" + }, + "reference": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHE9aP2L+yLs=", + "_parent": { + "$ref": "AAAAAAFbHE9aP2L8JeY=" + }, + "reference": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDibKEyF0Kw=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "opOutputToCvMat", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHDsF9k+yn0o=", + "_parent": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "source": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "target": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHE+oTmOR1lk=", + "_parent": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHE+oTmOSFbA=", + "_parent": { + "$ref": "AAAAAAFbHE+oTmOR1lk=" + }, + "reference": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHE+oTmOToto=", + "_parent": { + "$ref": "AAAAAAFbHE+oTmOR1lk=" + }, + "reference": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDihJ0zX3Z4=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "datum", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHDsuEE/UdvU=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "source": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "target": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDij2E0AXIA=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "headers.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDilaE0pq8s=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "net.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHDtbT0/lk08=", + "_parent": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "source": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "target": { + "$ref": "AAAAAAFbHDiopk1SCJU=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDirkU2kyDg=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "wCvMatToOpInput.hpp", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHDuCwE/2Ynw=", + "_parent": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "source": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "target": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "visibility": "public" + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHD1guFCC148=", + "_parent": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "source": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "target": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDiqGk17ze0=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "wOpOutputToCvMat.hpp", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHDuNM1AH+0I=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "source": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "target": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "visibility": "public" + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHD1bSVBx/jk=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "source": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "target": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDiopk1SCJU=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "netCaffe", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbJy96yU8KINY=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "wCvMatToOpOutput.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbJy/3vlDB8o0=", + "_parent": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "source": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "target": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbJzBlhVWNQPg=", + "_parent": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "source": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "target": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbJy+z90+8J3g=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "cvMatToOpOutput", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbJzA9yVTEB3o=", + "_parent": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "source": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "target": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbJzBZvVUdaeg=", + "_parent": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbJzBZvlUe8Yg=", + "_parent": { + "$ref": "AAAAAAFbJzBZvVUdaeg=" + }, + "reference": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbJzBZvlUfUq8=", + "_parent": { + "$ref": "AAAAAAFbJzBZvVUdaeg=" + }, + "reference": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFygkJZojX8=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "scalePose", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHG2xPqfYUnM=", + "_parent": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "source": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "target": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbgmCzuq7pEyw=", + "_parent": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbgmCzuq7qC10=", + "_parent": { + "$ref": "AAAAAAFbgmCzuq7pEyw=" + }, + "reference": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbgmCzuq7rWko=", + "_parent": { + "$ref": "AAAAAAFbgmCzuq7pEyw=" + }, + "reference": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbgmHTOrmNRog=", + "_parent": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "source": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "target": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFydM5Y/IIc=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "wArrayScaler.hpp", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHG7TsKoYdWk=", + "_parent": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "source": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "target": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "visibility": "public" + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHHCAcq2WsUE=", + "_parent": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "source": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "target": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbgmChw66cxFQ=", + "_parent": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "source": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "target": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "visibility": "public" + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbgmGCTLdfN0I=", + "_parent": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "source": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "target": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbgmGMAre7gzc=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "name": "ArrayScaler", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbgmHlSrnppV8=", + "_parent": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "source": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "target": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHDy+OFAk314=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "name": "thread", + "ownedElements": [ + { + "_type": "UMLClass", + "_id": "AAAAAAFbHDz5SVA/xUk=", + "_parent": { + "$ref": "AAAAAAFbHDy+OFAk314=" + }, + "name": "worker.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + } + ], + "visible": true, + "defaultDiagram": false, + "ownedViews": [ + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHDZmRV12Zhg=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDZmRl13Jpo=", + "_parent": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "model": { + "$ref": "AAAAAAFbHDZmRV10zeE=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDZmRl14eP0=", + "_parent": { + "$ref": "AAAAAAFbHDZmRl13Jpo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -544, + "top": -1088, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDZmRl15u8g=", + "_parent": { + "$ref": "AAAAAAFbHDZmRl13Jpo=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 5, + "top": 22, + "width": 775, + "height": 13, + "autoResize": false, + "underline": false, + "text": "core", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDZmRl16500=", + "_parent": { + "$ref": "AAAAAAFbHDZmRl13Jpo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -544, + "top": -1088, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDZmRl17nWY=", + "_parent": { + "$ref": "AAAAAAFbHDZmRl13Jpo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -544, + "top": -1088, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": 15, + "width": 785, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDZmRl14eP0=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDZmRl15u8g=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDZmRl16500=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDZmRl17nWY=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + { + "$ref": "AAAAAAFbHDij2E0CgSQ=" + }, + { + "$ref": "AAAAAAFbHDilaE0rwcY=" + }, + { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + { + "$ref": "AAAAAAFbHDiop01U6Vo=" + }, + { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + { + "$ref": "AAAAAAFbgmGMA7e9i94=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 0, + "top": 0, + "width": 785, + "height": 385, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDZmRl13Jpo=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDieuEywuH8=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDieuUyx4n8=", + "_parent": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "model": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDieuUyyAac=", + "_parent": { + "$ref": "AAAAAAFbHDieuUyx4n8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -872, + "top": -24, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDieuUyzj9c=", + "_parent": { + "$ref": "AAAAAAFbHDieuUyx4n8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 117, + "top": 231, + "width": 127, + "height": 13, + "autoResize": false, + "underline": false, + "text": "cvMatToOpInput", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDieuUy0qBs=", + "_parent": { + "$ref": "AAAAAAFbHDieuUyx4n8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -872, + "top": -24, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDieuUy1JOI=", + "_parent": { + "$ref": "AAAAAAFbHDieuUyx4n8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -872, + "top": -24, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 112, + "top": 224, + "width": 137, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDieuUyyAac=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDieuUyzj9c=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDieuUy0qBs=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDieuUy1JOI=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDieuUy21oI=", + "_parent": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "model": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 112, + "top": 249, + "width": 137, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDieuUy3NHk=", + "_parent": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "model": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 112, + "top": 259, + "width": 137, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDieuUy4iPk=", + "_parent": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "model": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -488, + "top": -112, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDieuUy5BxE=", + "_parent": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "model": { + "$ref": "AAAAAAFbHDieuEyuaf0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -488, + "top": -112, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 112, + "top": 224, + "width": 137, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDieuUyx4n8=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDieuUy21oI=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDieuUy3NHk=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDieuUy4iPk=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDieuUy5BxE=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDiZhUxetSs=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDiZhUxfOxM=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "model": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiZhkxgx90=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxfOxM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -72, + "top": 296, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiZhkxhaA4=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxfOxM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 177, + "top": 335, + "width": 33, + "height": 13, + "autoResize": false, + "underline": false, + "text": "array", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiZhkxiEYA=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxfOxM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -72, + "top": 296, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiZhkxj9yU=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxfOxM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -72, + "top": 296, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 172, + "top": 328, + "width": 43, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDiZhkxgx90=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDiZhkxhaA4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDiZhkxiEYA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDiZhkxj9yU=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDiZh0xkaJs=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "model": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 172, + "top": 353, + "width": 43, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDiZh0xlbxo=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "model": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 172, + "top": 363, + "width": 43, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDiZh0xmLAU=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "model": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -16, + "top": 96, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDiZh0xn+lg=", + "_parent": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "model": { + "$ref": "AAAAAAFbHDiZg0xc7rw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -16, + "top": 96, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 172, + "top": 328, + "width": 43, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDiZhUxfOxM=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDiZh0xkaJs=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDiZh0xlbxo=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDiZh0xmLAU=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDiZh0xn+lg=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDibKUyHyzc=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDibKUyIdSc=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "model": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDibKUyJ/hY=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyIdSc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 200, + "top": 72, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDibKUyKDo8=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyIdSc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 437, + "top": 231, + "width": 169, + "height": 13, + "autoResize": false, + "underline": false, + "text": "opOutputToCvMat", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDibKUyLjA8=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyIdSc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 200, + "top": 72, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDibKUyMxOw=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyIdSc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 200, + "top": 72, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 432, + "top": 224, + "width": 179, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDibKUyJ/hY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDibKUyKDo8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDibKUyLjA8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDibKUyMxOw=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDibKUyNxgg=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "model": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 432, + "top": 249, + "width": 179, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDibKkyO4dA=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "model": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 432, + "top": 259, + "width": 179, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDibKkyPh60=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "model": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": -8, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDibKkyQKLA=", + "_parent": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "model": { + "$ref": "AAAAAAFbHDibKEyF0Kw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": -8, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 432, + "top": 224, + "width": 179, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDibKUyIdSc=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDibKUyNxgg=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDibKkyO4dA=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDibKkyPh60=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDibKkyQKLA=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDihJ0zZY0c=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDihJ0zaYS0=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + "model": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDihKEzbLug=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zaYS0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -160, + "top": -288, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDihKEzc38c=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zaYS0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 45, + "top": 231, + "width": 40, + "height": 13, + "autoResize": false, + "underline": false, + "text": "datum", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDihKEzdARw=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zaYS0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -160, + "top": -288, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDihKEzel+A=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zaYS0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -160, + "top": -288, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 224, + "width": 50, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDihKEzbLug=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDihKEzc38c=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDihKEzdARw=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDihKEzel+A=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDihKEzfi5Y=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + "model": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 249, + "width": 50, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDihKEzgh5Y=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + "model": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 259, + "width": 50, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDihKEzh3Hg=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + "model": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -40, + "top": -216, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDihKEzilqs=", + "_parent": { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + "model": { + "$ref": "AAAAAAFbHDihJ0zX3Z4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -40, + "top": -216, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 40, + "top": 224, + "width": 50, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDihJ0zaYS0=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDihKEzfi5Y=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDihKEzgh5Y=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDihKEzh3Hg=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDihKEzilqs=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDij2E0CgSQ=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDij2E0AXIA=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDij2E0DEAQ=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0CgSQ=" + }, + "model": { + "$ref": "AAAAAAFbHDij2E0AXIA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDij2E0ELdY=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0DEAQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -720, + "top": -704, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDij2E0FdSw=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0DEAQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 37, + "top": 55, + "width": 79, + "height": 13, + "autoResize": false, + "underline": false, + "text": "headers.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDij2U0GZnY=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0DEAQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -720, + "top": -704, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDij2U0Hlz8=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0DEAQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -720, + "top": -704, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 48, + "width": 89, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDij2E0ELdY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDij2E0FdSw=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDij2U0GZnY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDij2U0Hlz8=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDij2U0ILuo=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0CgSQ=" + }, + "model": { + "$ref": "AAAAAAFbHDij2E0AXIA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 73, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDij2U0J3QU=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0CgSQ=" + }, + "model": { + "$ref": "AAAAAAFbHDij2E0AXIA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 83, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDij2U0KmNg=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0CgSQ=" + }, + "model": { + "$ref": "AAAAAAFbHDij2E0AXIA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -376, + "top": -448, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDij2U0LuVc=", + "_parent": { + "$ref": "AAAAAAFbHDij2E0CgSQ=" + }, + "model": { + "$ref": "AAAAAAFbHDij2E0AXIA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -376, + "top": -448, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 32, + "top": 48, + "width": 89, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDij2E0DEAQ=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDij2U0ILuo=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDij2U0J3QU=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDij2U0KmNg=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDij2U0LuVc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDilaE0rwcY=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDilaU0sE3k=", + "_parent": { + "$ref": "AAAAAAFbHDilaE0rwcY=" + }, + "model": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDilaU0t3oE=", + "_parent": { + "$ref": "AAAAAAFbHDilaU0sE3k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 344, + "top": -376, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDilaU0uurU=", + "_parent": { + "$ref": "AAAAAAFbHDilaU0sE3k=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 709, + "top": 231, + "width": 48, + "height": 13, + "autoResize": false, + "underline": false, + "text": "net.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDilaU0vVmg=", + "_parent": { + "$ref": "AAAAAAFbHDilaU0sE3k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 344, + "top": -376, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDilaU0wj6Y=", + "_parent": { + "$ref": "AAAAAAFbHDilaU0sE3k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 344, + "top": -376, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 704, + "top": 224, + "width": 58, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDilaU0t3oE=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDilaU0uurU=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDilaU0vVmg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDilaU0wj6Y=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDilaU0xOds=", + "_parent": { + "$ref": "AAAAAAFbHDilaE0rwcY=" + }, + "model": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 704, + "top": 249, + "width": 58, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDilaU0yVCE=", + "_parent": { + "$ref": "AAAAAAFbHDilaE0rwcY=" + }, + "model": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 704, + "top": 259, + "width": 58, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDilaU0z76k=", + "_parent": { + "$ref": "AAAAAAFbHDilaE0rwcY=" + }, + "model": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": -296, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDilaU00ZOQ=", + "_parent": { + "$ref": "AAAAAAFbHDilaE0rwcY=" + }, + "model": { + "$ref": "AAAAAAFbHDilaE0pq8s=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": -296, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 704, + "top": 224, + "width": 58, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDilaU0sE3k=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDilaU0xOds=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDilaU0yVCE=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDilaU0z76k=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDilaU00ZOQ=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDirkk2m0MU=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDirk02nxGo=", + "_parent": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "model": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDirk02ovaA=", + "_parent": { + "$ref": "AAAAAAFbHDirk02nxGo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -880, + "top": -1056, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDirk02pCGs=", + "_parent": { + "$ref": "AAAAAAFbHDirk02nxGo=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 85, + "top": 119, + "width": 144, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wCvMatToOpInput.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDirk02qGJk=", + "_parent": { + "$ref": "AAAAAAFbHDirk02nxGo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -880, + "top": -1056, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDirk02r7TE=", + "_parent": { + "$ref": "AAAAAAFbHDirk02nxGo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -880, + "top": -1056, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 112, + "width": 154, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDirk02ovaA=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDirk02pCGs=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDirk02qGJk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDirk02r7TE=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDirlE2s50s=", + "_parent": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "model": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 137, + "width": 154, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDirlE2tHG0=", + "_parent": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "model": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 147, + "width": 154, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDirlE2uEW4=", + "_parent": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "model": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -408, + "top": -664, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDirlE2vAOw=", + "_parent": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "model": { + "$ref": "AAAAAAFbHDirkU2kyDg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -408, + "top": -664, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 80, + "top": 112, + "width": 154, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDirk02nxGo=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDirlE2s50s=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDirlE2tHG0=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDirlE2uEW4=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDirlE2vAOw=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDiqGk19SxU=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDiqGk1+iJ8=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "model": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiqGk1/nA0=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk1+iJ8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": -984, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiqGk2Anbo=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk1+iJ8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 461, + "top": 119, + "width": 154, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wOpOutputToCvMat.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiqGk2Bq8Y=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk1+iJ8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": -984, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiqGk2CoFU=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk1+iJ8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": -984, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 456, + "top": 112, + "width": 164, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDiqGk1/nA0=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDiqGk2Anbo=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDiqGk2Bq8Y=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDiqGk2CoFU=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDiqGk2DqeA=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "model": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 456, + "top": 137, + "width": 164, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDiqGk2E9Q4=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "model": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 456, + "top": 147, + "width": 164, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDiqGk2FQ7E=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "model": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 192, + "top": -544, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDiqGk2GRHw=", + "_parent": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "model": { + "$ref": "AAAAAAFbHDiqGk17ze0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 192, + "top": -544, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 456, + "top": 112, + "width": 164, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDiqGk1+iJ8=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDiqGk2DqeA=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDiqGk2E9Q4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDiqGk2FQ7E=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDiqGk2GRHw=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDiop01U6Vo=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDiopk1SCJU=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDiop01VWR0=", + "_parent": { + "$ref": "AAAAAAFbHDiop01U6Vo=" + }, + "model": { + "$ref": "AAAAAAFbHDiopk1SCJU=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiop01WoLQ=", + "_parent": { + "$ref": "AAAAAAFbHDiop01VWR0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 952, + "top": -520, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiop01Xbzs=", + "_parent": { + "$ref": "AAAAAAFbHDiop01VWR0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 597, + "top": 335, + "width": 53, + "height": 13, + "autoResize": false, + "underline": false, + "text": "netCaffe", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiop01Yhy4=", + "_parent": { + "$ref": "AAAAAAFbHDiop01VWR0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 952, + "top": -520, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDiop01ZY+o=", + "_parent": { + "$ref": "AAAAAAFbHDiop01VWR0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 952, + "top": -520, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 592, + "top": 328, + "width": 63, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDiop01WoLQ=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDiop01Xbzs=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDiop01Yhy4=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDiop01ZY+o=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDiop01a9Os=", + "_parent": { + "$ref": "AAAAAAFbHDiop01U6Vo=" + }, + "model": { + "$ref": "AAAAAAFbHDiopk1SCJU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 592, + "top": 353, + "width": 63, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDiop01bf8Y=", + "_parent": { + "$ref": "AAAAAAFbHDiop01U6Vo=" + }, + "model": { + "$ref": "AAAAAAFbHDiopk1SCJU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 592, + "top": 363, + "width": 63, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDiop01cTKQ=", + "_parent": { + "$ref": "AAAAAAFbHDiop01U6Vo=" + }, + "model": { + "$ref": "AAAAAAFbHDiopk1SCJU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": -304, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDiop01dImQ=", + "_parent": { + "$ref": "AAAAAAFbHDiop01U6Vo=" + }, + "model": { + "$ref": "AAAAAAFbHDiopk1SCJU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 512, + "top": -304, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 592, + "top": 328, + "width": 63, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDiop01VWR0=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDiop01a9Os=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDiop01bf8Y=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDiop01cTKQ=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDiop01dImQ=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHDsF+E+0IHQ=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDsF9k+yn0o=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsF+U+1AxU=", + "_parent": { + "$ref": "AAAAAAFbHDsF+E+0IHQ=" + }, + "model": { + "$ref": "AAAAAAFbHDsF9k+yn0o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 335, + "top": 314, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDsF+E+0IHQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsF+U+2iho=", + "_parent": { + "$ref": "AAAAAAFbHDsF+E+0IHQ=" + }, + "model": { + "$ref": "AAAAAAFbHDsF9k+yn0o=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 340, + "top": 328, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHDsF+E+0IHQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsF+U+3Rm0=", + "_parent": { + "$ref": "AAAAAAFbHDsF+E+0IHQ=" + }, + "model": { + "$ref": "AAAAAAFbHDsF9k+yn0o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 326, + "top": 285, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDsF+E+0IHQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "tail": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "lineStyle": 1, + "points": "448:269;215:343", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHDsF+U+1AxU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDsF+U+2iho=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDsF+U+3Rm0=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHDsY50/FZCs=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDsY50/Dn0U=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsY50/GyI4=", + "_parent": { + "$ref": "AAAAAAFbHDsY50/FZCs=" + }, + "model": { + "$ref": "AAAAAAFbHDsY50/Dn0U=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 200, + "top": 289, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDsY50/FZCs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsY6E/HUK0=", + "_parent": { + "$ref": "AAAAAAFbHDsY50/FZCs=" + }, + "model": { + "$ref": "AAAAAAFbHDsY50/Dn0U=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 215, + "top": 287, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHDsY50/FZCs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsY6E/InH8=", + "_parent": { + "$ref": "AAAAAAFbHDsY50/FZCs=" + }, + "model": { + "$ref": "AAAAAAFbHDsY50/Dn0U=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 171, + "top": 294, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDsY50/FZCs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "tail": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "lineStyle": 1, + "points": "183:269;190:327", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHDsY50/GyI4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDsY6E/HUK0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDsY6E/InH8=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHDsuEE/WjyQ=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDsuEE/UdvU=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsuEE/X1Q0=", + "_parent": { + "$ref": "AAAAAAFbHDsuEE/WjyQ=" + }, + "model": { + "$ref": "AAAAAAFbHDsuEE/UdvU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 139, + "top": 281, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDsuEE/WjyQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsuEE/Y1Ns=", + "_parent": { + "$ref": "AAAAAAFbHDsuEE/WjyQ=" + }, + "model": { + "$ref": "AAAAAAFbHDsuEE/UdvU=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 148, + "top": 269, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHDsuEE/WjyQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDsuEE/ZYnk=", + "_parent": { + "$ref": "AAAAAAFbHDsuEE/WjyQ=" + }, + "model": { + "$ref": "AAAAAAFbHDsuEE/UdvU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": 304, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDsuEE/WjyQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "tail": { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + "lineStyle": 1, + "points": "90:267;171:332", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHDsuEE/X1Q0=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDsuEE/Y1Ns=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDsuEE/ZYnk=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHDtbT0/neoM=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDtbT0/lk08=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDtbUE/o34k=", + "_parent": { + "$ref": "AAAAAAFbHDtbT0/neoM=" + }, + "model": { + "$ref": "AAAAAAFbHDtbT0/lk08=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 687, + "top": 302, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDtbT0/neoM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDtbUE/pYaA=", + "_parent": { + "$ref": "AAAAAAFbHDtbT0/neoM=" + }, + "model": { + "$ref": "AAAAAAFbHDtbT0/lk08=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 697, + "top": 313, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHDtbT0/neoM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDtbUE/qu1g=", + "_parent": { + "$ref": "AAAAAAFbHDtbT0/neoM=" + }, + "model": { + "$ref": "AAAAAAFbHDtbT0/lk08=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 666, + "top": 281, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDtbT0/neoM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDiop01U6Vo=" + }, + "tail": { + "$ref": "AAAAAAFbHDilaE0rwcY=" + }, + "lineStyle": 1, + "points": "708:269;647:327", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHDtbUE/o34k=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDtbUE/pYaA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDtbUE/qu1g=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHDuCwE/467Q=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDuCwE/2Ynw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDuCwE/55C8=", + "_parent": { + "$ref": "AAAAAAFbHDuCwE/467Q=" + }, + "model": { + "$ref": "AAAAAAFbHDuCwE/2Ynw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 182, + "top": 180, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDuCwE/467Q=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDuCwE/6p04=", + "_parent": { + "$ref": "AAAAAAFbHDuCwE/467Q=" + }, + "model": { + "$ref": "AAAAAAFbHDuCwE/2Ynw=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 197, + "top": 177, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHDuCwE/467Q=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDuCwE/7Wx0=", + "_parent": { + "$ref": "AAAAAAFbHDuCwE/467Q=" + }, + "model": { + "$ref": "AAAAAAFbHDuCwE/2Ynw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 153, + "top": 187, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDuCwE/467Q=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "tail": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "lineStyle": 1, + "points": "161:157;175:223", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHDuCwE/55C8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDuCwE/6p04=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDuCwE/7Wx0=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHDuNM1AJHN4=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDuNM1AH+0I=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDuNM1AKOa8=", + "_parent": { + "$ref": "AAAAAAFbHDuNM1AJHN4=" + }, + "model": { + "$ref": "AAAAAAFbHDuNM1AH+0I=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 543, + "top": 186, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDuNM1AJHN4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDuNM1ALy8I=", + "_parent": { + "$ref": "AAAAAAFbHDuNM1AJHN4=" + }, + "model": { + "$ref": "AAAAAAFbHDuNM1AH+0I=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 558, + "top": 188, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHDuNM1AJHN4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHDuNM1AM+V0=", + "_parent": { + "$ref": "AAAAAAFbHDuNM1AJHN4=" + }, + "model": { + "$ref": "AAAAAAFbHDuNM1AH+0I=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 514, + "top": 181, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHDuNM1AJHN4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "tail": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "lineStyle": 1, + "points": "534:157;524:223", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHDuNM1AKOa8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDuNM1ALy8I=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDuNM1AM+V0=" + } + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHDy+OlAmHDg=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDy+OFAk314=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDy+OlAnueI=", + "_parent": { + "$ref": "AAAAAAFbHDy+OlAmHDg=" + }, + "model": { + "$ref": "AAAAAAFbHDy+OFAk314=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDy+O1AopIA=", + "_parent": { + "$ref": "AAAAAAFbHDy+OlAnueI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 112, + "top": -192, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDy+O1ApQPQ=", + "_parent": { + "$ref": "AAAAAAFbHDy+OlAnueI=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 797, + "top": 158, + "width": 214, + "height": 13, + "autoResize": false, + "underline": false, + "text": "thread", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDy+O1Aqy0E=", + "_parent": { + "$ref": "AAAAAAFbHDy+OlAnueI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 112, + "top": -192, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDy+O1ArFV0=", + "_parent": { + "$ref": "AAAAAAFbHDy+OlAnueI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 112, + "top": -192, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 792, + "top": 151, + "width": 224, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDy+O1AopIA=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDy+O1ApQPQ=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDy+O1Aqy0E=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDy+O1ArFV0=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 792, + "top": 136, + "width": 224, + "height": 192, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDy+OlAnueI=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHDz5SlBBwM0=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHDz5SlBCE+o=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "model": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHDz5SlBD9Ps=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBCE+o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": -344, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDz5SlBEOL4=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBCE+o=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 869, + "top": 223, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "worker.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDz5S1BFQMY=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBCE+o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": -344, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHDz5S1BGbrU=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBCE+o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": -344, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 864, + "top": 216, + "width": 82, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHDz5SlBD9Ps=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHDz5SlBEOL4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHDz5S1BFQMY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHDz5S1BGbrU=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHDz5S1BH96Q=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "model": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 864, + "top": 241, + "width": 82, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHDz5S1BIenk=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "model": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 864, + "top": 251, + "width": 82, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHDz5S1BJ2DU=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "model": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 48, + "top": -208, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHDz5TFBKy7Q=", + "_parent": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "model": { + "$ref": "AAAAAAFbHDz5SVA/xUk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 48, + "top": -208, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDy+OlAmHDg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 864, + "top": 216, + "width": 82, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHDz5SlBCE+o=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHDz5S1BH96Q=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHDz5S1BIenk=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHDz5S1BJ2DU=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHDz5TFBKy7Q=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHD1bSVBzYVw=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHD1bSVBx/jk=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHD1bSlB0IJU=", + "_parent": { + "$ref": "AAAAAAFbHD1bSVBzYVw=" + }, + "model": { + "$ref": "AAAAAAFbHD1bSVBx/jk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 744, + "top": 170, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHD1bSVBzYVw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHD1bSlB1bWI=", + "_parent": { + "$ref": "AAAAAAFbHD1bSVBzYVw=" + }, + "model": { + "$ref": "AAAAAAFbHD1bSVBx/jk=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 748, + "top": 156, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHD1bSVBzYVw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHD1bSlB2Idg=", + "_parent": { + "$ref": "AAAAAAFbHD1bSVBzYVw=" + }, + "model": { + "$ref": "AAAAAAFbHD1bSVBx/jk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 735, + "top": 199, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHD1bSVBzYVw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "tail": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "lineStyle": 1, + "points": "618:157;863:226", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHD1bSlB0IJU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHD1bSlB1bWI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHD1bSlB2Idg=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHD1guFCE2Yw=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHD1guFCC148=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHD1guFCFR5o=", + "_parent": { + "$ref": "AAAAAAFbHD1guFCE2Yw=" + }, + "model": { + "$ref": "AAAAAAFbHD1guFCC148=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 550, + "top": 167, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHD1guFCE2Yw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHD1guFCGjKM=", + "_parent": { + "$ref": "AAAAAAFbHD1guFCE2Yw=" + }, + "model": { + "$ref": "AAAAAAFbHD1guFCC148=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 552, + "top": 152, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHD1guFCE2Yw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHD1guFCHciE=", + "_parent": { + "$ref": "AAAAAAFbHD1guFCE2Yw=" + }, + "model": { + "$ref": "AAAAAAFbHD1guFCC148=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 545, + "top": 196, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHD1guFCE2Yw=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "tail": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "lineStyle": 1, + "points": "234:145;863:232", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHD1guFCFR5o=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHD1guFCGjKM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHD1guFCHciE=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHE9aQGMA6RU=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L8JeY=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMBi/k=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L8JeY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": 304, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMCOL0=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L8JeY=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 111, + "top": 316, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMDXzQ=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L8JeY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 139, + "top": 281, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMEeGM=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L9MGo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 141, + "top": 321, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMFpa4=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L9MGo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 131, + "top": 330, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMGLZY=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L9MGo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 161, + "top": 302, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMHovc=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L+yLs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 100, + "top": 288, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMIhes=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L+yLs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 94, + "top": 300, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE9aQGMJmHw=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L+yLs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 114, + "top": 264, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHE9aQGMKZUM=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L9MGo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -96, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHE9aQGMLTyY=", + "_parent": { + "$ref": "AAAAAAFbHE9aQGMA6RU=" + }, + "model": { + "$ref": "AAAAAAFbHE9aP2L+yLs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -96, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDihJ0zZY0c=" + }, + "tail": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "lineStyle": 1, + "points": "171:332;90:267", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHE9aQGMBi/k=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHE9aQGMCOL0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHE9aQGMDXzQ=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHE9aQGMEeGM=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHE9aQGMFpa4=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHE9aQGMGLZY=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHE9aQGMHovc=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHE9aQGMIhes=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHE9aQGMJmHw=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHE9aQGMKZUM=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHE9aQGMLTyY=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHE+jAGNDahQ=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGM/iNg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAGNExz8=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGM/iNg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 153, + "top": 187, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNFH+s=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGM/iNg=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 138, + "top": 190, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNGyik=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGM/iNg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 182, + "top": 180, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNHfSU=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNAOCM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 154, + "top": 194, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNIKXo=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNAOCM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 141, + "top": 195, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNJIV8=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNAOCM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 182, + "top": 193, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNKRUY=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNBxzI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 151, + "top": 179, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNL9es=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNBxzI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 139, + "top": 184, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+jAWNMMXI=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNBxzI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 177, + "top": 169, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHE+jAWNNM7M=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNAOCM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -96, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHE+jAWNOzLY=", + "_parent": { + "$ref": "AAAAAAFbHE+jAGNDahQ=" + }, + "model": { + "$ref": "AAAAAAFbHE+jAGNBxzI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -96, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDirkk2m0MU=" + }, + "tail": { + "$ref": "AAAAAAFbHDieuEywuH8=" + }, + "lineStyle": 1, + "points": "175:223;161:157", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHE+jAGNExz8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHE+jAWNFH+s=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHE+jAWNGyik=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHE+jAWNHfSU=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHE+jAWNIKXo=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHE+jAWNJIV8=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHE+jAWNKRUY=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHE+jAWNL9es=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHE+jAWNMMXI=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHE+jAWNNM7M=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHE+jAWNOzLY=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHE+oT2OV5Y8=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOR1lk=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OWNVs=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOR1lk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 514, + "top": 181, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OXAgk=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOR1lk=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 499, + "top": 179, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OYZSI=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOR1lk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 543, + "top": 186, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OZSuw=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOSFbA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 513, + "top": 189, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OaNrg=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOSFbA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 500, + "top": 184, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2Ob3sk=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOSFbA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 539, + "top": 197, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OcHzI=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOToto=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 515, + "top": 174, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OdTXY=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOToto=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 501, + "top": 174, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE+oT2OeuLo=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOToto=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 543, + "top": 174, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHE+oT2Ofd6E=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOSFbA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 56, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHE+oT2OglUk=", + "_parent": { + "$ref": "AAAAAAFbHE+oT2OV5Y8=" + }, + "model": { + "$ref": "AAAAAAFbHE+oTmOToto=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 56, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDiqGk19SxU=" + }, + "tail": { + "$ref": "AAAAAAFbHDibKUyHyzc=" + }, + "lineStyle": 1, + "points": "524:223;534:157", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHE+oT2OWNVs=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHE+oT2OXAgk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHE+oT2OYZSI=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHE+oT2OZSuw=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHE+oT2OaNrg=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHE+oT2Ob3sk=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHE+oT2OcHzI=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHE+oT2OdTXY=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHE+oT2OeuLo=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHE+oT2Ofd6E=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHE+oT2OglUk=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbJy96y08MtFk=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbJy96y08NDGA=", + "_parent": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "model": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbJy96y08Ovl8=", + "_parent": { + "$ref": "AAAAAAFbJy96y08NDGA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": -1440, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbJy96zE8PpTs=", + "_parent": { + "$ref": "AAAAAAFbJy96y08NDGA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 285, + "top": 119, + "width": 154, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wCvMatToOpOutput.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbJy96zE8QxXQ=", + "_parent": { + "$ref": "AAAAAAFbJy96y08NDGA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": -1440, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbJy96zE8RNX4=", + "_parent": { + "$ref": "AAAAAAFbJy96y08NDGA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": -1440, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 112, + "width": 164, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbJy96y08Ovl8=" + }, + "nameLabel": { + "$ref": "AAAAAAFbJy96zE8PpTs=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbJy96zE8QxXQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbJy96zE8RNX4=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbJy96zE8SzTI=", + "_parent": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "model": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 137, + "width": 164, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbJy96zE8TyS4=", + "_parent": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "model": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 147, + "width": 164, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbJy96zE8Ue9Q=", + "_parent": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "model": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 160, + "top": -952, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbJy96zU8Vo8I=", + "_parent": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "model": { + "$ref": "AAAAAAFbJy96yU8KINY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 160, + "top": -952, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 280, + "top": 112, + "width": 164, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbJy96y08NDGA=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbJy96zE8SzTI=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbJy96zE8TyS4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbJy96zE8Ue9Q=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbJy96zU8Vo8I=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbJy+z+E++48k=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbJy+z+E+/R2U=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "model": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbJy+z+E/Akt4=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E+/R2U=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 16, + "top": -1104, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbJy+z+U/BhKc=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E+/R2U=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 285, + "top": 231, + "width": 124, + "height": 13, + "autoResize": false, + "underline": false, + "text": "cvMatToOpOutput", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbJy+z+U/CePI=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E+/R2U=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 16, + "top": -1104, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbJy+z+U/D7rQ=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E+/R2U=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 16, + "top": -1104, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 224, + "width": 134, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbJy+z+E/Akt4=" + }, + "nameLabel": { + "$ref": "AAAAAAFbJy+z+U/BhKc=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbJy+z+U/CePI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbJy+z+U/D7rQ=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbJy+z+U/EQwQ=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "model": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 249, + "width": 134, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbJy+z+U/F0J8=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "model": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 259, + "width": 134, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbJy+z+U/Gicg=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "model": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 104, + "top": -696, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbJy+z+k/HtIM=", + "_parent": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "model": { + "$ref": "AAAAAAFbJy+z90+8J3g=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 104, + "top": -696, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 280, + "top": 224, + "width": 134, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbJy+z+E+/R2U=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbJy+z+U/EQwQ=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbJy+z+U/F0J8=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbJy+z+U/Gicg=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbJy+z+k/HtIM=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbJy/3wFDDdXc=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbJy/3vlDB8o0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJy/3wFDEI0k=", + "_parent": { + "$ref": "AAAAAAFbJy/3wFDDdXc=" + }, + "model": { + "$ref": "AAAAAAFbJy/3vlDB8o0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 655, + "top": 169, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJy/3wFDDdXc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJy/3wVDFC/c=", + "_parent": { + "$ref": "AAAAAAFbJy/3wFDDdXc=" + }, + "model": { + "$ref": "AAAAAAFbJy/3vlDB8o0=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 658, + "top": 154, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbJy/3wFDDdXc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJy/3wVDGAZc=", + "_parent": { + "$ref": "AAAAAAFbJy/3wFDDdXc=" + }, + "model": { + "$ref": "AAAAAAFbJy/3vlDB8o0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 650, + "top": 198, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJy/3wFDDdXc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "tail": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "lineStyle": 1, + "points": "444:150;863:230", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbJy/3wFDEI0k=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbJy/3wVDFC/c=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbJy/3wVDGAZc=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbJzA9ylTGfXg=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbJzA9yVTEB3o=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzA9ylTHaIE=", + "_parent": { + "$ref": "AAAAAAFbJzA9ylTGfXg=" + }, + "model": { + "$ref": "AAAAAAFbJzA9yVTEB3o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 271, + "top": 308, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJzA9ylTGfXg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzA9ylTIxfQ=", + "_parent": { + "$ref": "AAAAAAFbJzA9ylTGfXg=" + }, + "model": { + "$ref": "AAAAAAFbJzA9yVTEB3o=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 279, + "top": 320, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbJzA9ylTGfXg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzA9ylTJn4c=", + "_parent": { + "$ref": "AAAAAAFbJzA9ylTGfXg=" + }, + "model": { + "$ref": "AAAAAAFbJzA9yVTEB3o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 254, + "top": 283, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJzA9ylTGfXg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "tail": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "lineStyle": 1, + "points": "312:269;215:335", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbJzA9ylTHaIE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbJzA9ylTIxfQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbJzA9ylTJn4c=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbJzBZv1UhDK0=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvVUdaeg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwFUiIBM=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvVUdaeg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 338, + "top": 181, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwFUjBKk=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvVUdaeg=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 323, + "top": 179, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwFUkz6o=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvVUdaeg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 367, + "top": 186, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwFUlOmk=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUe8Yg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 337, + "top": 189, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwFUmyEA=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUe8Yg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 324, + "top": 185, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwFUnLD4=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUe8Yg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 364, + "top": 197, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwVUo980=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUfUq8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 339, + "top": 174, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwVUpNeE=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUfUq8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 326, + "top": 175, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBZwVUqh5U=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUfUq8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 367, + "top": 174, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbJzBZwVUrdwY=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUe8Yg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -200, + "top": -24, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbJzBZwVUswRk=", + "_parent": { + "$ref": "AAAAAAFbJzBZv1UhDK0=" + }, + "model": { + "$ref": "AAAAAAFbJzBZvlUfUq8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -200, + "top": -24, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "tail": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "lineStyle": 1, + "points": "349:223;358:157", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbJzBZwFUiIBM=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbJzBZwFUjBKk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbJzBZwFUkz6o=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbJzBZwFUlOmk=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbJzBZwFUmyEA=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbJzBZwFUnLD4=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbJzBZwVUo980=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbJzBZwVUpNeE=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbJzBZwVUqh5U=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbJzBZwVUrdwY=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbJzBZwVUswRk=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbJzBlhlWP66A=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbJzBlhVWNQPg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBlhlWQX4Q=", + "_parent": { + "$ref": "AAAAAAFbJzBlhlWP66A=" + }, + "model": { + "$ref": "AAAAAAFbJzBlhVWNQPg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 367, + "top": 185, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJzBlhlWP66A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBlh1WR+JM=", + "_parent": { + "$ref": "AAAAAAFbJzBlhlWP66A=" + }, + "model": { + "$ref": "AAAAAAFbJzBlhVWNQPg=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 382, + "top": 187, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbJzBlhlWP66A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbJzBlh1WSPXw=", + "_parent": { + "$ref": "AAAAAAFbJzBlhlWP66A=" + }, + "model": { + "$ref": "AAAAAAFbJzBlhVWNQPg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 338, + "top": 182, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbJzBlhlWP66A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbJy+z+E++48k=" + }, + "tail": { + "$ref": "AAAAAAFbJy96y08MtFk=" + }, + "lineStyle": 1, + "points": "358:157;349:223", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbJzBlhlWQX4Q=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbJzBlh1WR+JM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbJzBlh1WSPXw=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbgmAJRnJHsH0=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbgmAJRnJICKQ=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + "model": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnJJUsI=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJICKQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 742, + "top": -504, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnJKJ6A=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJICKQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 621, + "top": 231, + "width": 64, + "height": 13, + "autoResize": false, + "underline": false, + "text": "scalePose", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnJLRSs=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJICKQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 742, + "top": -504, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnJMgkY=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJICKQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 742, + "top": -504, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 616, + "top": 224, + "width": 74, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmAJRnJJUsI=" + }, + "nameLabel": { + "$ref": "AAAAAAFbgmAJRnJKJ6A=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbgmAJRnJLRSs=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmAJRnJMgkY=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbgmAJRnJNNiA=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + "model": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 616, + "top": 249, + "width": 74, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbgmAJRnJO5do=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + "model": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 616, + "top": 259, + "width": 74, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbgmAJRnJPX8g=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + "model": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 87, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbgmAJRnJQRfY=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + "model": { + "$ref": "AAAAAAFbHFygkJZojX8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 87, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 616, + "top": 224, + "width": 74, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbgmAJRnJICKQ=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbgmAJRnJNNiA=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbgmAJRnJO5do=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbgmAJRnJPX8g=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbgmAJRnJQRfY=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbgmAJRXI9LpI=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbgmAJRnI+ZCw=", + "_parent": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "model": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnI/wCA=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnI+ZCw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -329, + "top": -720, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnJAiyQ=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnI+ZCw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 661, + "top": 47, + "width": 114, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wArrayScaler.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnJBRoY=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnI+ZCw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -329, + "top": -720, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmAJRnJCTKk=", + "_parent": { + "$ref": "AAAAAAFbgmAJRnI+ZCw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -329, + "top": -720, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 656, + "top": 40, + "width": 124, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmAJRnI/wCA=" + }, + "nameLabel": { + "$ref": "AAAAAAFbgmAJRnJAiyQ=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbgmAJRnJBRoY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmAJRnJCTKk=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbgmAJRnJDZXo=", + "_parent": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "model": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 656, + "top": 65, + "width": 124, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbgmAJRnJE1zw=", + "_parent": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "model": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 656, + "top": 75, + "width": 124, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbgmAJRnJFglw=", + "_parent": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "model": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -480, + "top": -352, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbgmAJRnJGOdA=", + "_parent": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "model": { + "$ref": "AAAAAAFbHFydM5Y/IIc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -480, + "top": -352, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 656, + "top": 40, + "width": 124, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbgmAJRnI+ZCw=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbgmAJRnJDZXo=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbgmAJRnJE1zw=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbgmAJRnJFglw=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbgmAJRnJGOdA=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbgmChxK6eW+I=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbgmChw66cxFQ=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmChxK6fTdo=", + "_parent": { + "$ref": "AAAAAAFbgmChxK6eW+I=" + }, + "model": { + "$ref": "AAAAAAFbgmChw66cxFQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 708, + "top": 99, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmChxK6eW+I=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmChxK6gzzk=", + "_parent": { + "$ref": "AAAAAAFbgmChxK6eW+I=" + }, + "model": { + "$ref": "AAAAAAFbgmChw66cxFQ=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 721, + "top": 106, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbgmChxK6eW+I=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmChxK6hc8c=", + "_parent": { + "$ref": "AAAAAAFbgmChxK6eW+I=" + }, + "model": { + "$ref": "AAAAAAFbgmChw66cxFQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 681, + "top": 84, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmChxK6eW+I=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "tail": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "lineStyle": 1, + "points": "703:85;688:111", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbgmChxK6fTdo=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmChxK6gzzk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmChxK6hc8c=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbgmCzu67t9JE=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7pEyw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu67uJrI=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7pEyw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 682, + "top": 84, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu67vBEE=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7pEyw=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 669, + "top": 76, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu67w4/c=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7pEyw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 707, + "top": 99, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu67xOsw=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7qC10=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 687, + "top": 75, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu67ywaI=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7qC10=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 677, + "top": 66, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu67zeRc=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7qC10=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 709, + "top": 92, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu670zaM=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7rWko=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 677, + "top": 94, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu671S/8=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7rWko=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 664, + "top": 89, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmCzu672y4Q=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7rWko=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 703, + "top": 103, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbgmCzu673kUw=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7qC10=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -128, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbgmCzu674KBs=", + "_parent": { + "$ref": "AAAAAAFbgmCzu67t9JE=" + }, + "model": { + "$ref": "AAAAAAFbgmCzuq7rWko=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -128, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "tail": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "lineStyle": 1, + "points": "688:111;703:85", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbgmCzu67uJrI=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmCzu67vBEE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmCzu67w4/c=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbgmCzu67xOsw=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbgmCzu67ywaI=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbgmCzu67zeRc=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbgmCzu670zaM=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbgmCzu671S/8=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbgmCzu672y4Q=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbgmCzu673kUw=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbgmCzu674KBs=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbgmGCTLdh840=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbgmGCTLdfN0I=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmGCTLdit18=", + "_parent": { + "$ref": "AAAAAAFbgmGCTLdh840=" + }, + "model": { + "$ref": "AAAAAAFbgmGCTLdfN0I=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 820, + "top": 133, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmGCTLdh840=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmGCTLdjLNU=", + "_parent": { + "$ref": "AAAAAAFbgmGCTLdh840=" + }, + "model": { + "$ref": "AAAAAAFbgmGCTLdfN0I=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 830, + "top": 122, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbgmGCTLdh840=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmGCTLdkDU4=", + "_parent": { + "$ref": "AAAAAAFbgmGCTLdh840=" + }, + "model": { + "$ref": "AAAAAAFbgmGCTLdfN0I=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 799, + "top": 154, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmGCTLdh840=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDz5SlBBwM0=" + }, + "tail": { + "$ref": "AAAAAAFbgmAJRXI9LpI=" + }, + "lineStyle": 1, + "points": "741:85;880:215", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbgmGCTLdit18=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmGCTLdjLNU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmGCTLdkDU4=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbgmGMA7e9i94=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbgmGMA7e+LJ8=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "model": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbgmGMA7e/HJU=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e+LJ8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 128, + "top": -912, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmGMA7fAk0s=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e+LJ8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 637, + "top": 119, + "width": 75, + "height": 13, + "autoResize": false, + "underline": false, + "text": "ArrayScaler", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmGMA7fBEo0=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e+LJ8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 128, + "top": -912, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbgmGMA7fCY4Y=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e+LJ8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 128, + "top": -912, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 112, + "width": 85, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmGMA7e/HJU=" + }, + "nameLabel": { + "$ref": "AAAAAAFbgmGMA7fAk0s=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbgmGMA7fBEo0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmGMA7fCY4Y=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbgmGMA7fD4Kc=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "model": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 137, + "width": 85, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbgmGMBLfEln4=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "model": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 147, + "width": 85, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbgmGMBLfFS1E=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "model": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -544, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbgmGMBLfGbb0=", + "_parent": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "model": { + "$ref": "AAAAAAFbgmGMAre7gzc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -544, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHDZmRV12Zhg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 632, + "top": 112, + "width": 85, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbgmGMA7e+LJ8=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbgmGMA7fD4Kc=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbgmGMBLfEln4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbgmGMBLfFS1E=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbgmGMBLfGbb0=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbgmHTO7mP7ns=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbgmHTOrmNRog=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmHTO7mQybE=", + "_parent": { + "$ref": "AAAAAAFbgmHTO7mP7ns=" + }, + "model": { + "$ref": "AAAAAAFbgmHTOrmNRog=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 418, + "top": 307, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmHTO7mP7ns=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmHTO7mR4d8=", + "_parent": { + "$ref": "AAAAAAFbgmHTO7mP7ns=" + }, + "model": { + "$ref": "AAAAAAFbgmHTOrmNRog=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 421, + "top": 322, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbgmHTO7mP7ns=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmHTO7mSadU=", + "_parent": { + "$ref": "AAAAAAFbgmHTO7mP7ns=" + }, + "model": { + "$ref": "AAAAAAFbgmHTOrmNRog=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 411, + "top": 278, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmHTO7mP7ns=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHDiZhUxetSs=" + }, + "tail": { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + "lineStyle": 1, + "points": "615:254;215:345", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbgmHTO7mQybE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmHTO7mR4d8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmHTO7mSadU=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbgmHlS7nr418=", + "_parent": { + "$ref": "AAAAAAFbHDVYsl1GUQo=" + }, + "model": { + "$ref": "AAAAAAFbgmHlSrnppV8=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmHlS7nsyVQ=", + "_parent": { + "$ref": "AAAAAAFbgmHlS7nr418=" + }, + "model": { + "$ref": "AAAAAAFbgmHlSrnppV8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 677, + "top": 186, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmHlS7nr418=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmHlS7nthXg=", + "_parent": { + "$ref": "AAAAAAFbgmHlS7nr418=" + }, + "model": { + "$ref": "AAAAAAFbgmHlSrnppV8=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 692, + "top": 189, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbgmHlS7nr418=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbgmHlS7nuOWI=", + "_parent": { + "$ref": "AAAAAAFbgmHlS7nr418=" + }, + "model": { + "$ref": "AAAAAAFbgmHlSrnppV8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 648, + "top": 181, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbgmHlS7nr418=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbgmAJRnJHsH0=" + }, + "tail": { + "$ref": "AAAAAAFbgmGMA7e9i94=" + }, + "lineStyle": 1, + "points": "669:157;657:223", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbgmHlS7nsyVQ=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbgmHlS7nthXg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbgmHlS7nuOWI=" + } + } + ] + }, + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFbHDfDwV2pYSY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "thread", + "ownedElements": [ + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHD57HVDkPq4=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "name": "thread", + "ownedElements": [ + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEmZ6VPEs5k=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "subThreadQueueIn.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHFFI5mYsLlc=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "source": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "target": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFLbJGbpfa4=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "source": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFRirmuODQA=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "source": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "target": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEn5j1YD/pE=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "queueBase.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnx71Vfqh4=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "subThreadQueueOut.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHFE3zmYKLpE=", + "_parent": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "source": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "target": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFLOrmbH+pY=", + "_parent": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "source": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHFQoAmmeBgE=", + "_parent": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQoAmmfe+4=", + "_parent": { + "$ref": "AAAAAAFbHFQoAmmeBgE=" + }, + "reference": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQoAmmgGEA=", + "_parent": { + "$ref": "AAAAAAFbHFQoAmmeBgE=" + }, + "reference": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFQ49moO8PE=", + "_parent": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "source": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "target": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEn3l1XaxjA=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "subThreadQueueInOut.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHFEy7mX58e8=", + "_parent": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "source": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "target": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFLVg2bYTxg=", + "_parent": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "source": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFRdk2tBzNI=", + "_parent": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "source": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "target": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnwNlU2kqs=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "thread.hpp", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHFYjaXcfD9g=", + "_parent": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFYjaXcgThA=", + "_parent": { + "$ref": "AAAAAAFbHFYjaXcfD9g=" + }, + "reference": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFYjaXchb0I=", + "_parent": { + "$ref": "AAAAAAFbHFYjaXcfD9g=" + }, + "reference": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEntp1UNMvk=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "threadManager.hpp", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFZBb3gOsOg=", + "_parent": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "source": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "target": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFZIR3hqvUU=", + "_parent": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "source": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "target": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFamNXplyYs=", + "_parent": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "source": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "target": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFa6TnqjrOU=", + "_parent": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "source": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "target": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFhC54f7Eks=", + "_parent": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "source": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEn0GFWI6/o=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "wQueueOrderer.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHE4Su2KpLQ0=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "source": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEn2B1WxudQ=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "workerProducer.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHFXDcXLPDXQ=", + "_parent": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "source": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnk31Rp4JU=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "worker.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnr11TkZW0=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "workerConsumer.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHFXJlnMNtRc=", + "_parent": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "source": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnea1PuhXg=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "headers.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnoz1S7CCo=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "subThreadNoQueue.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHFFAV2Ybm/c=", + "_parent": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "source": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "target": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHFLJUWa2aeA=", + "_parent": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "source": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "target": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEngX1QXn1w=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "priorityQueue.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHEpxVVYxfn0=", + "_parent": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "source": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "target": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnin1RAI/M=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "queue.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHEp0tlZCQMA=", + "_parent": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "source": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "target": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHFQeVmiogQE=", + "_parent": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQeVmipwtU=", + "_parent": { + "$ref": "AAAAAAFbHFQeVmiogQE=" + }, + "reference": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQeVmiqFCU=", + "_parent": { + "$ref": "AAAAAAFbHFQeVmiogQE=" + }, + "reference": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHFQiRmjrWgc=", + "_parent": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQiRmjsEHI=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjrWgc=" + }, + "reference": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQiRmjtdWU=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjrWgc=" + }, + "reference": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHFQnLmk9eHc=", + "_parent": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQnL2k+i+w=", + "_parent": { + "$ref": "AAAAAAFbHFQnLmk9eHc=" + }, + "reference": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFQnL2k/CCk=", + "_parent": { + "$ref": "AAAAAAFbHFQnLmk9eHc=" + }, + "reference": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHFYzxnePusI=", + "_parent": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFYzxneQJ4U=", + "_parent": { + "$ref": "AAAAAAFbHFYzxnePusI=" + }, + "reference": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHFYzxneR2vE=", + "_parent": { + "$ref": "AAAAAAFbHFYzxnePusI=" + }, + "reference": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHEnm51SSihM=", + "_parent": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "name": "subThread.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + } + ], + "visible": true, + "defaultDiagram": false, + "ownedViews": [ + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHD57H1DmLb0=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHD57IFDnHUM=", + "_parent": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "model": { + "$ref": "AAAAAAFbHD57HVDkPq4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHD57IFDolHM=", + "_parent": { + "$ref": "AAAAAAFbHD57IFDnHUM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -288, + "top": -496, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHD57IFDpiQ4=", + "_parent": { + "$ref": "AAAAAAFbHD57IFDnHUM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 5, + "top": 22, + "width": 1223, + "height": 13, + "autoResize": false, + "underline": false, + "text": "thread", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHD57IFDqf98=", + "_parent": { + "$ref": "AAAAAAFbHD57IFDnHUM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -288, + "top": -496, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHD57IFDr61c=", + "_parent": { + "$ref": "AAAAAAFbHD57IFDnHUM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -288, + "top": -496, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": 15, + "width": 1233, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHD57IFDolHM=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHD57IFDpiQ4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHD57IFDqf98=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHD57IFDr61c=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + { + "$ref": "AAAAAAFbHEnwN1U4NBM=" + }, + { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + { + "$ref": "AAAAAAFbHEn0GFWK4v0=" + }, + { + "$ref": "AAAAAAFbHEn2CFWzvuI=" + }, + { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + { + "$ref": "AAAAAAFbHEnr2FTmbGs=" + }, + { + "$ref": "AAAAAAFbHEnea1PwDbU=" + }, + { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + { + "$ref": "AAAAAAFbHEngYFQZQQU=" + }, + { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 0, + "top": 0, + "width": 1233, + "height": 600, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHD57IFDnHUM=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEmZ6lPGa/A=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEmZ61PHIaE=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "model": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEmZ61PIGAg=", + "_parent": { + "$ref": "AAAAAAFbHEmZ61PHIaE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 744, + "top": -200, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEmZ61PJSpI=", + "_parent": { + "$ref": "AAAAAAFbHEmZ61PHIaE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 701, + "top": 263, + "width": 149, + "height": 13, + "autoResize": false, + "underline": false, + "text": "subThreadQueueIn.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEmZ61PK5W0=", + "_parent": { + "$ref": "AAAAAAFbHEmZ61PHIaE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 744, + "top": -200, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEmZ61PL3X0=", + "_parent": { + "$ref": "AAAAAAFbHEmZ61PHIaE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 744, + "top": -200, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 696, + "top": 256, + "width": 159, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEmZ61PIGAg=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEmZ61PJSpI=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEmZ61PK5W0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEmZ61PL3X0=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEmZ61PMz/U=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "model": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 696, + "top": 281, + "width": 159, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEmZ61PNm/8=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "model": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 696, + "top": 291, + "width": 159, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEmZ7FPOlMo=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "model": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 584, + "top": -16, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEmZ7FPPBmA=", + "_parent": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "model": { + "$ref": "AAAAAAFbHEmZ6VPEs5k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 584, + "top": -16, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 696, + "top": 256, + "width": 159, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEmZ61PHIaE=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEmZ61PMz/U=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEmZ61PNm/8=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEmZ7FPOlMo=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEmZ7FPPBmA=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEn5kFYFcRs=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEn5kFYGUks=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + "model": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn5kFYHgbs=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYGUks=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 384, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn5kFYIm88=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYGUks=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 269, + "top": 519, + "width": 99, + "height": 13, + "autoResize": false, + "underline": false, + "text": "queueBase.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn5kFYJUlI=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYGUks=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 384, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn5kFYKOek=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYGUks=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 384, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 264, + "top": 512, + "width": 109, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEn5kFYHgbs=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEn5kFYIm88=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEn5kFYJUlI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEn5kFYKOek=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEn5kFYLcbU=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + "model": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 264, + "top": 537, + "width": 109, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEn5kFYMrak=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + "model": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 264, + "top": 547, + "width": 109, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEn5kFYNKA0=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + "model": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": 240, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEn5kFYOnyE=", + "_parent": { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + "model": { + "$ref": "AAAAAAFbHEn5j1YD/pE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": 240, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 264, + "top": 512, + "width": 109, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEn5kFYGUks=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEn5kFYLcbU=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEn5kFYMrak=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEn5kFYNKA0=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEn5kFYOnyE=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHEpxVlYzHLg=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEpxVVYxfn0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHEpxV1Y0qkk=", + "_parent": { + "$ref": "AAAAAAFbHEpxVlYzHLg=" + }, + "model": { + "$ref": "AAAAAAFbHEpxVVYxfn0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 298, + "top": 471, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHEpxVlYzHLg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHEpxWFY1BUw=", + "_parent": { + "$ref": "AAAAAAFbHEpxVlYzHLg=" + }, + "model": { + "$ref": "AAAAAAFbHEpxVVYxfn0=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 310, + "top": 463, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHEpxVlYzHLg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHEpxWFY2byQ=", + "_parent": { + "$ref": "AAAAAAFbHEpxVlYzHLg=" + }, + "model": { + "$ref": "AAAAAAFbHEpxVVYxfn0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 273, + "top": 488, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHEpxVlYzHLg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + "tail": { + "$ref": "AAAAAAFbHEngYFQZQQU=" + }, + "lineStyle": 1, + "points": "269:461;303:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHEpxV1Y0qkk=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEpxWFY1BUw=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEpxWFY2byQ=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHEp0tlZEhJY=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEp0tlZCQMA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHEp0t1ZFc8g=", + "_parent": { + "$ref": "AAAAAAFbHEp0tlZEhJY=" + }, + "model": { + "$ref": "AAAAAAFbHEp0tlZCQMA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 351, + "top": 485, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHEp0tlZEhJY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHEp0t1ZGmyQ=", + "_parent": { + "$ref": "AAAAAAFbHEp0tlZEhJY=" + }, + "model": { + "$ref": "AAAAAAFbHEp0tlZCQMA=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 365, + "top": 491, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHEp0tlZEhJY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHEp0t1ZHdsc=", + "_parent": { + "$ref": "AAAAAAFbHEp0tlZEhJY=" + }, + "model": { + "$ref": "AAAAAAFbHEp0tlZCQMA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 324, + "top": 474, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHEp0tlZEhJY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEn5kFYFcRs=" + }, + "tail": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "lineStyle": 1, + "points": "348:461;328:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHEp0t1ZFc8g=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEp0t1ZGmyQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEp0t1ZHdsc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEnx8FVhJLU=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEnx8FViOPA=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "model": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnx8FVjG1M=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FViOPA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": -568, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnx8FVkXX4=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FViOPA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1045, + "top": 263, + "width": 159, + "height": 13, + "autoResize": false, + "underline": false, + "text": "subThreadQueueOut.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnx8FVlPmI=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FViOPA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": -568, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnx8FVmkfo=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FViOPA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": -568, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1040, + "top": 256, + "width": 169, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEnx8FVjG1M=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEnx8FVkXX4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEnx8FVlPmI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEnx8FVmkfo=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEnx8FVn774=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "model": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1040, + "top": 281, + "width": 169, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEnx8FVoqlE=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "model": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1040, + "top": 291, + "width": 169, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEnx8FVpV3o=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "model": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 464, + "top": -248, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEnx8FVqJm4=", + "_parent": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "model": { + "$ref": "AAAAAAFbHEnx71Vfqh4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 464, + "top": -248, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 1040, + "top": 256, + "width": 169, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEnx8FViOPA=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEnx8FVn774=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEnx8FVoqlE=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEnx8FVpV3o=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEnx8FVqJm4=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEn3mFXc1PI=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEn3mFXdXmQ=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "model": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn3mFXeV5Y=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXdXmQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": -584, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn3mFXfmHw=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXdXmQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 861, + "top": 263, + "width": 171, + "height": 13, + "autoResize": false, + "underline": false, + "text": "subThreadQueueInOut.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn3mFXgn7o=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXdXmQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": -584, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn3mFXhlqU=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXdXmQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": -584, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 856, + "top": 256, + "width": 181, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEn3mFXeV5Y=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEn3mFXfmHw=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEn3mFXgn7o=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEn3mFXhlqU=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEn3mFXieGI=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "model": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 856, + "top": 281, + "width": 181, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEn3mFXjW+w=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "model": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 856, + "top": 291, + "width": 181, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEn3mFXkHlI=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "model": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -472, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEn3mFXl6aQ=", + "_parent": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "model": { + "$ref": "AAAAAAFbHEn3l1XaxjA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -472, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 856, + "top": 256, + "width": 181, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEn3mFXdXmQ=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEn3mFXieGI=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEn3mFXjW+w=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEn3mFXkHlI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEn3mFXl6aQ=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEnwN1U4NBM=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEnwN1U5jZs=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U4NBM=" + }, + "model": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnwN1U6tlY=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U5jZs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1400, + "top": -336, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnwN1U7Yoo=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U5jZs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 29, + "top": 519, + "width": 69, + "height": 13, + "autoResize": false, + "underline": false, + "text": "thread.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnwN1U87ok=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U5jZs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1400, + "top": -336, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnwN1U9+Bk=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U5jZs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1400, + "top": -336, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 24, + "top": 512, + "width": 79, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEnwN1U6tlY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEnwN1U7Yoo=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEnwN1U87ok=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEnwN1U9+Bk=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEnwN1U+wIk=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U4NBM=" + }, + "model": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 24, + "top": 537, + "width": 79, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEnwN1U/+y4=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U4NBM=" + }, + "model": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 24, + "top": 547, + "width": 79, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEnwN1VAjfs=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U4NBM=" + }, + "model": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -576, + "top": -128, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEnwN1VBjok=", + "_parent": { + "$ref": "AAAAAAFbHEnwN1U4NBM=" + }, + "model": { + "$ref": "AAAAAAFbHEnwNlU2kqs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -576, + "top": -128, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 24, + "top": 512, + "width": 79, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEnwN1U5jZs=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEnwN1U+wIk=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEnwN1U/+y4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEnwN1VAjfs=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEnwN1VBjok=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEntqFUPpoU=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEntqFUQ2oI=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "model": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEntqFURlUA=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUQ2oI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -280, + "top": -904, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEntqFUS7Kk=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUQ2oI=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 301, + "top": 127, + "width": 125, + "height": 13, + "autoResize": false, + "underline": false, + "text": "threadManager.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEntqFUTm20=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUQ2oI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -280, + "top": -904, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEntqFUUZGM=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUQ2oI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -280, + "top": -904, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 296, + "top": 120, + "width": 135, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEntqFURlUA=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEntqFUS7Kk=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEntqFUTm20=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEntqFUUZGM=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEntqlUVTFg=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "model": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 296, + "top": 145, + "width": 135, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEntqlUWN4Q=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "model": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 296, + "top": 155, + "width": 135, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEntqlUX0lI=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "model": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": -368, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEntqlUYdyw=", + "_parent": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "model": { + "$ref": "AAAAAAFbHEntp1UNMvk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": -368, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 296, + "top": 120, + "width": 135, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEntqFUQ2oI=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEntqlUVTFg=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEntqlUWN4Q=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEntqlUX0lI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEntqlUYdyw=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEn0GFWK4v0=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEn0GFWLNio=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWK4v0=" + }, + "model": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn0GFWMI9U=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWLNio=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 240, + "top": -712, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn0GFWNFTY=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWLNio=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 503, + "top": 423, + "width": 130, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wQueueOrderer.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn0GFWOtDo=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWLNio=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 240, + "top": -712, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn0GFWP1A0=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWLNio=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 240, + "top": -712, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 498, + "top": 416, + "width": 140, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEn0GFWMI9U=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEn0GFWNFTY=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEn0GFWOtDo=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEn0GFWP1A0=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEn0GFWQxZU=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWK4v0=" + }, + "model": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 498, + "top": 441, + "width": 140, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEn0GFWR50w=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWK4v0=" + }, + "model": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 498, + "top": 451, + "width": 140, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEn0GVWSWMI=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWK4v0=" + }, + "model": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 272, + "top": -352, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEn0GVWTiAc=", + "_parent": { + "$ref": "AAAAAAFbHEn0GFWK4v0=" + }, + "model": { + "$ref": "AAAAAAFbHEn0GFWI6/o=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 272, + "top": -352, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 498, + "top": 416, + "width": 140, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEn0GFWLNio=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEn0GFWQxZU=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEn0GFWR50w=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEn0GVWSWMI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEn0GVWTiAc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEn2CFWzvuI=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEn2CFW0eLg=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFWzvuI=" + }, + "model": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn2CFW1Glk=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFW0eLg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 824, + "top": -392, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn2CFW2CBc=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFW0eLg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 797, + "top": 423, + "width": 130, + "height": 13, + "autoResize": false, + "underline": false, + "text": "workerProducer.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn2CFW3VV8=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFW0eLg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 824, + "top": -392, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEn2CFW4UJA=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFW0eLg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 824, + "top": -392, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 792, + "top": 416, + "width": 140, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEn2CFW1Glk=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEn2CFW2CBc=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEn2CFW3VV8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEn2CFW4UJA=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEn2CFW5KrA=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFWzvuI=" + }, + "model": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 792, + "top": 441, + "width": 140, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEn2CFW6Ky4=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFWzvuI=" + }, + "model": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 792, + "top": 451, + "width": 140, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEn2CFW7VDI=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFWzvuI=" + }, + "model": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 560, + "top": -184, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEn2CFW8SZw=", + "_parent": { + "$ref": "AAAAAAFbHEn2CFWzvuI=" + }, + "model": { + "$ref": "AAAAAAFbHEn2B1WxudQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 560, + "top": -184, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 792, + "top": 416, + "width": 140, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEn2CFW0eLg=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEn2CFW5KrA=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEn2CFW6Ky4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEn2CFW7VDI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEn2CFW8SZw=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEnk4FRra2Q=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEnk4FRsPH4=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "model": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnk4FRtkJ4=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRsPH4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 600, + "top": 448, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnk4FRu1YU=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRsPH4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 573, + "top": 519, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "worker.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnk4FRvSr8=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRsPH4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 600, + "top": 448, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnk4FRwOz4=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRsPH4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 600, + "top": 448, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 568, + "top": 512, + "width": 82, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEnk4FRtkJ4=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEnk4FRu1YU=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEnk4FRvSr8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEnk4FRwOz4=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEnk4FRx4zU=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "model": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 568, + "top": 537, + "width": 82, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEnk4VRyDu0=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "model": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 568, + "top": 547, + "width": 82, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEnk4VRzbKA=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "model": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 448, + "top": 352, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEnk4VR0dqg=", + "_parent": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "model": { + "$ref": "AAAAAAFbHEnk31Rp4JU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 448, + "top": 352, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 568, + "top": 512, + "width": 82, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEnk4FRsPH4=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEnk4FRx4zU=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEnk4VRyDu0=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEnk4VRzbKA=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEnk4VR0dqg=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEnr2FTmbGs=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEnr2FTn6SQ=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTmbGs=" + }, + "model": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnr2FToEEQ=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTn6SQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 976, + "top": -288, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnr2FTp/2Y=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTn6SQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 645, + "top": 423, + "width": 136, + "height": 13, + "autoResize": false, + "underline": false, + "text": "workerConsumer.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnr2FTqs5Y=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTn6SQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 976, + "top": -288, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnr2FTrzHQ=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTn6SQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 976, + "top": -288, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 640, + "top": 416, + "width": 146, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEnr2FToEEQ=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEnr2FTp/2Y=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEnr2FTqs5Y=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEnr2FTrzHQ=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEnr2FTsHDU=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTmbGs=" + }, + "model": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 640, + "top": 441, + "width": 146, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEnr2FTtxfU=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTmbGs=" + }, + "model": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 640, + "top": 451, + "width": 146, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEnr2FTunBg=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTmbGs=" + }, + "model": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 648, + "top": -144, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEnr2FTvKxE=", + "_parent": { + "$ref": "AAAAAAFbHEnr2FTmbGs=" + }, + "model": { + "$ref": "AAAAAAFbHEnr11TkZW0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 648, + "top": -144, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 640, + "top": 416, + "width": 146, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEnr2FTn6SQ=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEnr2FTsHDU=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEnr2FTtxfU=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEnr2FTunBg=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEnr2FTvKxE=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEnea1PwDbU=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnea1PuhXg=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEnea1PxXXU=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PwDbU=" + }, + "model": { + "$ref": "AAAAAAFbHEnea1PuhXg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnebFPyuC0=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PxXXU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -424, + "top": -360, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnebFPzhOQ=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PxXXU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 93, + "top": 63, + "width": 79, + "height": 13, + "autoResize": false, + "underline": false, + "text": "headers.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnebFP0c5s=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PxXXU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -424, + "top": -360, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnebFP1jBg=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PxXXU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -424, + "top": -360, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 88, + "top": 56, + "width": 89, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEnebFPyuC0=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEnebFPzhOQ=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEnebFP0c5s=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEnebFP1jBg=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEnebFP2FfY=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PwDbU=" + }, + "model": { + "$ref": "AAAAAAFbHEnea1PuhXg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 88, + "top": 81, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEnebFP3p5w=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PwDbU=" + }, + "model": { + "$ref": "AAAAAAFbHEnea1PuhXg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 88, + "top": 91, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEnebFP4q6E=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PwDbU=" + }, + "model": { + "$ref": "AAAAAAFbHEnea1PuhXg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -96, + "top": -144, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEnebFP5BIY=", + "_parent": { + "$ref": "AAAAAAFbHEnea1PwDbU=" + }, + "model": { + "$ref": "AAAAAAFbHEnea1PuhXg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -96, + "top": -144, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 88, + "top": 56, + "width": 89, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEnea1PxXXU=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEnebFP2FfY=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEnebFP3p5w=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEnebFP4q6E=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEnebFP5BIY=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEno0FS9jUU=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEno0FS+VdY=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + "model": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEno0FS/XGs=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS+VdY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": 136, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEno0FTAs1k=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS+VdY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1069, + "top": 423, + "width": 154, + "height": 13, + "autoResize": false, + "underline": false, + "text": "subThreadNoQueue.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEno0FTBeTM=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS+VdY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": 136, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEno0FTCmEM=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS+VdY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": 136, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1064, + "top": 416, + "width": 164, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEno0FS/XGs=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEno0FTAs1k=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEno0FTBeTM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEno0FTCmEM=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEno0FTDoM4=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + "model": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1064, + "top": 441, + "width": 164, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEno0FTEPZk=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + "model": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1064, + "top": 451, + "width": 164, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEno0FTFmZY=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + "model": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": 136, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEno0FTGJ3w=", + "_parent": { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + "model": { + "$ref": "AAAAAAFbHEnoz1S7CCo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": 136, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 1064, + "top": 416, + "width": 164, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEno0FS+VdY=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEno0FTDoM4=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEno0FTEPZk=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEno0FTFmZY=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEno0FTGJ3w=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEngYFQZQQU=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEngYFQapZA=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQZQQU=" + }, + "model": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEngYFQb0p8=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQapZA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -608, + "top": 448, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEngYVQcQ5M=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQapZA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 197, + "top": 423, + "width": 115, + "height": 13, + "autoResize": false, + "underline": false, + "text": "priorityQueue.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEngYVQdTsM=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQapZA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -608, + "top": 448, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEngYVQeMPk=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQapZA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -608, + "top": 448, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 192, + "top": 416, + "width": 125, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEngYFQb0p8=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEngYVQcQ5M=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEngYVQdTsM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEngYVQeMPk=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEngYVQfNmY=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQZQQU=" + }, + "model": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 192, + "top": 441, + "width": 125, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEngYVQgiTw=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQZQQU=" + }, + "model": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 192, + "top": 451, + "width": 125, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEngYVQhDzc=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQZQQU=" + }, + "model": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -352, + "top": 248, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEngYlQiwAw=", + "_parent": { + "$ref": "AAAAAAFbHEngYFQZQQU=" + }, + "model": { + "$ref": "AAAAAAFbHEngX1QXn1w=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -352, + "top": 248, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 192, + "top": 416, + "width": 125, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEngYFQapZA=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEngYVQfNmY=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEngYVQgiTw=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEngYVQhDzc=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEngYlQiwAw=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEnioFRCaRA=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEnioFRDKv4=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "model": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnioFREkic=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRDKv4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -824, + "top": 352, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnioFRFz50=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRDKv4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 325, + "top": 423, + "width": 68, + "height": 13, + "autoResize": false, + "underline": false, + "text": "queue.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnioFRGIVQ=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRDKv4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -824, + "top": 352, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnioFRHzX8=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRDKv4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -824, + "top": 352, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 320, + "top": 416, + "width": 78, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEnioFREkic=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEnioFRFz50=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEnioFRGIVQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEnioFRHzX8=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEnioFRI9Fg=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "model": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 320, + "top": 441, + "width": 78, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEnioFRJUvU=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "model": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 320, + "top": 451, + "width": 78, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEnioVRKoaw=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "model": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -456, + "top": 152, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEnioVRLRew=", + "_parent": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "model": { + "$ref": "AAAAAAFbHEnin1RAI/M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -456, + "top": 152, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 320, + "top": 416, + "width": 78, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEnioFRDKv4=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEnioFRI9Fg=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEnioFRJUvU=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEnioVRKoaw=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEnioVRLRew=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHEnm6FSU+Cc=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHEnm6FSVyd8=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "model": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnm6FSW87Q=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSVyd8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 680, + "top": 296, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnm6FSXl80=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSVyd8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 973, + "top": 519, + "width": 95, + "height": 13, + "autoResize": false, + "underline": false, + "text": "subThread.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnm6FSYpro=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSVyd8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 680, + "top": 296, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHEnm6FSZT0o=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSVyd8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 680, + "top": 296, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 968, + "top": 512, + "width": 105, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHEnm6FSW87Q=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHEnm6FSXl80=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHEnm6FSYpro=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHEnm6FSZT0o=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHEnm6FSaFHY=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "model": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 968, + "top": 537, + "width": 105, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHEnm6FSbAhI=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "model": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 968, + "top": 547, + "width": 105, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHEnm6VScCD0=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "model": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 144, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHEnm6VSdjck=", + "_parent": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "model": { + "$ref": "AAAAAAFbHEnm51SSihM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 144, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHD57H1DmLb0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 968, + "top": 512, + "width": 105, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHEnm6FSVyd8=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHEnm6FSaFHY=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHEnm6FSbAhI=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHEnm6VScCD0=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHEnm6VSdjck=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHE4SvGKriPI=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHE4Su2KpLQ0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE4SvGKsTCg=", + "_parent": { + "$ref": "AAAAAAFbHE4SvGKriPI=" + }, + "model": { + "$ref": "AAAAAAFbHE4Su2KpLQ0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 600, + "top": 473, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE4SvGKriPI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE4SvWKtAzU=", + "_parent": { + "$ref": "AAAAAAFbHE4SvGKriPI=" + }, + "model": { + "$ref": "AAAAAAFbHE4Su2KpLQ0=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 614, + "top": 467, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHE4SvGKriPI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHE4SvWKulD8=", + "_parent": { + "$ref": "AAAAAAFbHE4SvGKriPI=" + }, + "model": { + "$ref": "AAAAAAFbHE4Su2KpLQ0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 573, + "top": 486, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHE4SvGKriPI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEn0GFWK4v0=" + }, + "lineStyle": 1, + "points": "577:461;598:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHE4SvGKsTCg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHE4SvWKtAzU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHE4SvWKulD8=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHFEy7mX7MZk=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFEy7mX58e8=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFEy7mX8Fx0=", + "_parent": { + "$ref": "AAAAAAFbHFEy7mX7MZk=" + }, + "model": { + "$ref": "AAAAAAFbHFEy7mX58e8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 997, + "top": 395, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFEy7mX7MZk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFEy7mX9b8A=", + "_parent": { + "$ref": "AAAAAAFbHFEy7mX7MZk=" + }, + "model": { + "$ref": "AAAAAAFbHFEy7mX58e8=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1011, + "top": 391, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFEy7mX7MZk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFEy7mX+OoQ=", + "_parent": { + "$ref": "AAAAAAFbHFEy7mX7MZk=" + }, + "model": { + "$ref": "AAAAAAFbHFEy7mX58e8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 968, + "top": 404, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFEy7mX7MZk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "tail": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "lineStyle": 1, + "points": "953:301;1013:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFEy7mX8Fx0=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFEy7mX9b8A=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFEy7mX+OoQ=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHFE3zmYM/sU=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFE3zmYKLpE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFE3zmYNI3c=", + "_parent": { + "$ref": "AAAAAAFbHFE3zmYM/sU=" + }, + "model": { + "$ref": "AAAAAAFbHFE3zmYKLpE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1085, + "top": 405, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFE3zmYM/sU=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFE3zmYO0Cc=", + "_parent": { + "$ref": "AAAAAAFbHFE3zmYM/sU=" + }, + "model": { + "$ref": "AAAAAAFbHFE3zmYKLpE=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1099, + "top": 411, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFE3zmYM/sU=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFE3zmYPRzo=", + "_parent": { + "$ref": "AAAAAAFbHFE3zmYM/sU=" + }, + "model": { + "$ref": "AAAAAAFbHFE3zmYKLpE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1058, + "top": 394, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFE3zmYM/sU=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "tail": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "lineStyle": 1, + "points": "1115:301;1029:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFE3zmYNI3c=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFE3zmYO0Cc=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFE3zmYPRzo=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHFFAV2YdE9A=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFFAV2Ybm/c=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFFAV2YeqIY=", + "_parent": { + "$ref": "AAAAAAFbHFFAV2YdE9A=" + }, + "model": { + "$ref": "AAAAAAFbHFFAV2Ybm/c=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1091, + "top": 491, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFFAV2YdE9A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFFAV2YftCo=", + "_parent": { + "$ref": "AAAAAAFbHFFAV2YdE9A=" + }, + "model": { + "$ref": "AAAAAAFbHFFAV2Ybm/c=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1100, + "top": 503, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFFAV2YdE9A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFFAWGYgCiQ=", + "_parent": { + "$ref": "AAAAAAFbHFFAV2YdE9A=" + }, + "model": { + "$ref": "AAAAAAFbHFFAV2Ybm/c=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1072, + "top": 468, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFFAV2YdE9A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "tail": { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + "lineStyle": 1, + "points": "1115:461;1050:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFFAV2YeqIY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFFAV2YftCo=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFFAWGYgCiQ=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHFFI52YuT1M=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFFI5mYsLlc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFFI52YvCAU=", + "_parent": { + "$ref": "AAAAAAFbHFFI52YuT1M=" + }, + "model": { + "$ref": "AAAAAAFbHFFI5mYsLlc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 907, + "top": 389, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFFI52YuT1M=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFFI6GYwrOI=", + "_parent": { + "$ref": "AAAAAAFbHFFI52YuT1M=" + }, + "model": { + "$ref": "AAAAAAFbHFFI5mYsLlc=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 918, + "top": 379, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFFI52YuT1M=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFFI6GYx7ZI=", + "_parent": { + "$ref": "AAAAAAFbHFFI52YuT1M=" + }, + "model": { + "$ref": "AAAAAAFbHFFI5mYsLlc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 886, + "top": 410, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFFI52YuT1M=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnm6FSU+Cc=" + }, + "tail": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "lineStyle": 1, + "points": "797:301;998:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFFI52YvCAU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFFI6GYwrOI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFFI6GYx7ZI=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFLJUWa4bg0=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFLJUWa2aeA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLJUWa5U/4=", + "_parent": { + "$ref": "AAAAAAFbHFLJUWa4bg0=" + }, + "model": { + "$ref": "AAAAAAFbHFLJUWa2aeA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 858, + "top": 497, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLJUWa4bg0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLJUWa6X6E=", + "_parent": { + "$ref": "AAAAAAFbHFLJUWa4bg0=" + }, + "model": { + "$ref": "AAAAAAFbHFLJUWa2aeA=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 861, + "top": 512, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFLJUWa4bg0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLJUWa73h0=", + "_parent": { + "$ref": "AAAAAAFbHFLJUWa4bg0=" + }, + "model": { + "$ref": "AAAAAAFbHFLJUWa2aeA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 853, + "top": 468, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLJUWa4bg0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEno0FS9jUU=" + }, + "lineStyle": 1, + "points": "1063:453;650:526", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFLJUWa5U/4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFLJUWa6X6E=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFLJUWa73h0=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFLOrmbJ7YQ=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFLOrmbH+pY=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLOrmbKScA=", + "_parent": { + "$ref": "AAAAAAFbHFLOrmbJ7YQ=" + }, + "model": { + "$ref": "AAAAAAFbHFLOrmbH+pY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 870, + "top": 414, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLOrmbJ7YQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLOrmbLk18=", + "_parent": { + "$ref": "AAAAAAFbHFLOrmbJ7YQ=" + }, + "model": { + "$ref": "AAAAAAFbHFLOrmbH+pY=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 877, + "top": 427, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFLOrmbJ7YQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLOrmbMoOA=", + "_parent": { + "$ref": "AAAAAAFbHFLOrmbJ7YQ=" + }, + "model": { + "$ref": "AAAAAAFbHFLOrmbH+pY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 857, + "top": 387, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLOrmbJ7YQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "lineStyle": 1, + "points": "1078:301;650:513", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFLOrmbKScA=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFLOrmbLk18=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFLOrmbMoOA=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFLVhGbauTg=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFLVg2bYTxg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLVhGbb8tE=", + "_parent": { + "$ref": "AAAAAAFbHFLVhGbauTg=" + }, + "model": { + "$ref": "AAAAAAFbHFLVg2bYTxg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 786, + "top": 411, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLVhGbauTg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLVhGbcJHU=", + "_parent": { + "$ref": "AAAAAAFbHFLVhGbauTg=" + }, + "model": { + "$ref": "AAAAAAFbHFLVg2bYTxg=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 795, + "top": 423, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFLVhGbauTg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLVhGbdG/o=", + "_parent": { + "$ref": "AAAAAAFbHFLVhGbauTg=" + }, + "model": { + "$ref": "AAAAAAFbHFLVg2bYTxg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 767, + "top": 388, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLVhGbauTg=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "lineStyle": 1, + "points": "916:301;638:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFLVhGbb8tE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFLVhGbcJHU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFLVhGbdG/o=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFLbJWbr3kk=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFLbJGbpfa4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLbJWbsXj4=", + "_parent": { + "$ref": "AAAAAAFbHFLbJWbr3kk=" + }, + "model": { + "$ref": "AAAAAAFbHFLbJGbpfa4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 703, + "top": 408, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLbJWbr3kk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLbJWbt66c=", + "_parent": { + "$ref": "AAAAAAFbHFLbJWbr3kk=" + }, + "model": { + "$ref": "AAAAAAFbHFLbJGbpfa4=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 716, + "top": 416, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFLbJWbr3kk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFLbJWbuMUI=", + "_parent": { + "$ref": "AAAAAAFbHFLbJWbr3kk=" + }, + "model": { + "$ref": "AAAAAAFbHFLbJGbpfa4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 678, + "top": 391, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFLbJWbr3kk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "lineStyle": 1, + "points": "760:301;623:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFLbJWbsXj4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFLbJWbt66c=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFLbJWbuMUI=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHFQeV2isSK8=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiogQE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2itD50=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiogQE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 550, + "top": 341, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2iuDNY=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiogQE=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 545, + "top": 327, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2ivXyI=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiogQE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 561, + "top": 370, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2iw0mg=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmipwtU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 416, + "top": 393, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2ix8hs=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmipwtU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 414, + "top": 380, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2iyWqs=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmipwtU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 422, + "top": 420, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2izp58=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiqFCU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 685, + "top": 290, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2i0Kdw=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiqFCU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 678, + "top": 278, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQeV2i1pAg=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiqFCU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 699, + "top": 314, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHFQeV2i2W/I=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmipwtU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHFQeWGi3mw4=", + "_parent": { + "$ref": "AAAAAAFbHFQeV2isSK8=" + }, + "model": { + "$ref": "AAAAAAFbHFQeVmiqFCU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "tail": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "lineStyle": 1, + "points": "398:423;715:301", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFQeV2itD50=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFQeV2iuDNY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFQeV2ivXyI=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHFQeV2iw0mg=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHFQeV2ix8hs=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHFQeV2iyWqs=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHFQeV2izp58=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHFQeV2i0Kdw=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHFQeV2i1pAg=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHFQeV2i2W/I=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHFQeWGi3mw4=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHFQiRmjvWbM=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjrWgc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmjw1Zg=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjrWgc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 625, + "top": 343, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmjxmXo=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjrWgc=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 621, + "top": 329, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmjyrR8=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjrWgc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 372, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmjzvwU=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjsEHI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 419, + "top": 399, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmj0UHw=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjsEHI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 417, + "top": 386, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmj1uro=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjsEHI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 422, + "top": 427, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmj2EJw=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjtdWU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 831, + "top": 287, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmj3IpU=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjtdWU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 826, + "top": 275, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQiRmj4rc0=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjtdWU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 843, + "top": 312, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHFQiRmj5wmk=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjsEHI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHFQiRmj6dPU=", + "_parent": { + "$ref": "AAAAAAFbHFQiRmjvWbM=" + }, + "model": { + "$ref": "AAAAAAFbHFQiRmjtdWU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "tail": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "lineStyle": 1, + "points": "398:427;861:301", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFQiRmjw1Zg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFQiRmjxmXo=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFQiRmjyrR8=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHFQiRmjzvwU=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHFQiRmj0UHw=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHFQiRmj1uro=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHFQiRmj2EJw=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHFQiRmj3IpU=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHFQiRmj4rc0=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHFQiRmj5wmk=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHFQiRmj6dPU=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHFQnL2lBLAY=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnLmk9eHc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lCimE=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnLmk9eHc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 714, + "top": 342, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lDmqc=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnLmk9eHc=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 711, + "top": 327, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lEAh0=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnLmk9eHc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 721, + "top": 371, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lFCUk=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k+i+w=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 420, + "top": 404, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lGfOA=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k+i+w=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 419, + "top": 390, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lHpLU=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k+i+w=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 421, + "top": 431, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lI9wY=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k/CCk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1010, + "top": 280, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lJNEs=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k/CCk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1005, + "top": 268, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQnL2lK+lA=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k/CCk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1020, + "top": 306, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHFQnL2lLMzY=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k+i+w=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHFQnL2lMrW8=", + "_parent": { + "$ref": "AAAAAAFbHFQnL2lBLAY=" + }, + "model": { + "$ref": "AAAAAAFbHFQnL2k/CCk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": -200, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "tail": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "lineStyle": 1, + "points": "398:430;1039:296", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFQnL2lCimE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFQnL2lDmqc=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFQnL2lEAh0=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHFQnL2lFCUk=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHFQnL2lGfOA=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHFQnL2lHpLU=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHFQnL2lI9wY=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHFQnL2lJNEs=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHFQnL2lK+lA=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHFQnL2lLMzY=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHFQnL2lMrW8=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFQ49moQuhI=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFQ49moO8PE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQ49moRiNA=", + "_parent": { + "$ref": "AAAAAAFbHFQ49moQuhI=" + }, + "model": { + "$ref": "AAAAAAFbHFQ49moO8PE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 721, + "top": 371, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQ49moQuhI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQ492oSBSk=", + "_parent": { + "$ref": "AAAAAAFbHFQ49moQuhI=" + }, + "model": { + "$ref": "AAAAAAFbHFQ49moO8PE=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 724, + "top": 386, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFQ49moQuhI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFQ492oTIHc=", + "_parent": { + "$ref": "AAAAAAFbHFQ49moQuhI=" + }, + "model": { + "$ref": "AAAAAAFbHFQ49moO8PE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 714, + "top": 342, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFQ49moQuhI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "tail": { + "$ref": "AAAAAAFbHEnx8FVhJLU=" + }, + "lineStyle": 1, + "points": "1039:296;398:430", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFQ49moRiNA=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFQ492oSBSk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFQ492oTIHc=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFRdk2tDT7A=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFRdk2tBzNI=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFRdk2tEZ1c=", + "_parent": { + "$ref": "AAAAAAFbHFRdk2tDT7A=" + }, + "model": { + "$ref": "AAAAAAFbHFRdk2tBzNI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 372, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFRdk2tDT7A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFRdmmtFJVw=", + "_parent": { + "$ref": "AAAAAAFbHFRdk2tDT7A=" + }, + "model": { + "$ref": "AAAAAAFbHFRdk2tBzNI=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 636, + "top": 386, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFRdk2tDT7A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFRdmmtGb3M=", + "_parent": { + "$ref": "AAAAAAFbHFRdk2tDT7A=" + }, + "model": { + "$ref": "AAAAAAFbHFRdk2tBzNI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 625, + "top": 343, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFRdk2tDT7A=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "tail": { + "$ref": "AAAAAAFbHEn3mFXc1PI=" + }, + "lineStyle": 1, + "points": "861:301;398:427", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFRdk2tEZ1c=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFRdmmtFJVw=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFRdmmtGb3M=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFRirmuQiiM=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFRirmuODQA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFRirmuRq4o=", + "_parent": { + "$ref": "AAAAAAFbHFRirmuQiiM=" + }, + "model": { + "$ref": "AAAAAAFbHFRirmuODQA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 561, + "top": 369, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFRirmuQiiM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFRirmuStkk=", + "_parent": { + "$ref": "AAAAAAFbHFRirmuQiiM=" + }, + "model": { + "$ref": "AAAAAAFbHFRirmuODQA=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 566, + "top": 383, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFRirmuQiiM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFRirmuT0SQ=", + "_parent": { + "$ref": "AAAAAAFbHFRirmuQiiM=" + }, + "model": { + "$ref": "AAAAAAFbHFRirmuODQA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 550, + "top": 342, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFRirmuQiiM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "tail": { + "$ref": "AAAAAAFbHEmZ6lPGa/A=" + }, + "lineStyle": 1, + "points": "715:301;398:423", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFRirmuRq4o=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFRirmuStkk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFRirmuT0SQ=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHFXDcnLRtNk=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFXDcXLPDXQ=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFXDcnLS7eA=", + "_parent": { + "$ref": "AAAAAAFbHFXDcnLRtNk=" + }, + "model": { + "$ref": "AAAAAAFbHFXDcXLPDXQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 730, + "top": 496, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFXDcnLRtNk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFXDc3LTJYo=", + "_parent": { + "$ref": "AAAAAAFbHFXDcnLRtNk=" + }, + "model": { + "$ref": "AAAAAAFbHFXDcXLPDXQ=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 735, + "top": 510, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFXDcnLRtNk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFXDc3LUne0=", + "_parent": { + "$ref": "AAAAAAFbHFXDcnLRtNk=" + }, + "model": { + "$ref": "AAAAAAFbHFXDcXLPDXQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 719, + "top": 469, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFXDcnLRtNk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEn2CFWzvuI=" + }, + "lineStyle": 1, + "points": "800:461;650:518", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFXDcnLS7eA=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFXDc3LTJYo=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFXDc3LUne0=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHFXJlnMP9g0=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFXJlnMNtRc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFXJlnMQeXY=", + "_parent": { + "$ref": "AAAAAAFbHFXJlnMP9g0=" + }, + "model": { + "$ref": "AAAAAAFbHFXJlnMNtRc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 670, + "top": 491, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFXJlnMP9g0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFXJlnMRaxg=", + "_parent": { + "$ref": "AAAAAAFbHFXJlnMP9g0=" + }, + "model": { + "$ref": "AAAAAAFbHFXJlnMNtRc=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 680, + "top": 502, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFXJlnMP9g0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFXJlnMSsuU=", + "_parent": { + "$ref": "AAAAAAFbHFXJlnMP9g0=" + }, + "model": { + "$ref": "AAAAAAFbHFXJlnMNtRc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 649, + "top": 468, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFXJlnMP9g0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEnr2FTmbGs=" + }, + "lineStyle": 1, + "points": "687:461;633:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFXJlnMQeXY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFXJlnMRaxg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFXJlnMSsuU=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFamNnpnLb8=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFamNXplyYs=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFamNnpokyE=", + "_parent": { + "$ref": "AAAAAAFbHFamNnpnLb8=" + }, + "model": { + "$ref": "AAAAAAFbHFamNXplyYs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 374, + "top": 284, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFamNnpnLb8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFamNnpprvg=", + "_parent": { + "$ref": "AAAAAAFbHFamNnpnLb8=" + }, + "model": { + "$ref": "AAAAAAFbHFamNXplyYs=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 389, + "top": 284, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFamNnpnLb8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFamNnpqQBY=", + "_parent": { + "$ref": "AAAAAAFbHFamNnpnLb8=" + }, + "model": { + "$ref": "AAAAAAFbHFamNXplyYs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 345, + "top": 283, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFamNnpnLb8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnioFRCaRA=" + }, + "tail": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "lineStyle": 1, + "points": "363:165;358:415", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFamNnpokyE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFamNnpprvg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFamNnpqQBY=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFa6T3qlSqA=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFa6TnqjrOU=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFa6T3qmXZg=", + "_parent": { + "$ref": "AAAAAAFbHFa6T3qlSqA=" + }, + "model": { + "$ref": "AAAAAAFbHFa6TnqjrOU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 341, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFa6T3qlSqA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFa6T3qnYY8=", + "_parent": { + "$ref": "AAAAAAFbHFa6T3qlSqA=" + }, + "model": { + "$ref": "AAAAAAFbHFa6TnqjrOU=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 236, + "top": 350, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFa6T3qlSqA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFa6T3qoMuc=", + "_parent": { + "$ref": "AAAAAAFbHFa6T3qlSqA=" + }, + "model": { + "$ref": "AAAAAAFbHFa6TnqjrOU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 201, + "top": 322, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFa6T3qlSqA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnwN1U4NBM=" + }, + "tail": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "lineStyle": 1, + "points": "345:165;81:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFa6T3qmXZg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFa6T3qnYY8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFa6T3qoMuc=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHFhC6If9J/c=", + "_parent": { + "$ref": "AAAAAAFbHDfDwV2pYSY=" + }, + "model": { + "$ref": "AAAAAAFbHFhC54f7Eks=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFhC6If+xmU=", + "_parent": { + "$ref": "AAAAAAFbHFhC6If9J/c=" + }, + "model": { + "$ref": "AAAAAAFbHFhC54f7Eks=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 497, + "top": 324, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFhC6If9J/c=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFhC6If/tiE=", + "_parent": { + "$ref": "AAAAAAFbHFhC6If9J/c=" + }, + "model": { + "$ref": "AAAAAAFbHFhC54f7Eks=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 510, + "top": 316, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHFhC6If9J/c=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHFhC6IgAHIg=", + "_parent": { + "$ref": "AAAAAAFbHFhC6If9J/c=" + }, + "model": { + "$ref": "AAAAAAFbHFhC54f7Eks=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 472, + "top": 339, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHFhC6If9J/c=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHEnk4FRra2Q=" + }, + "tail": { + "$ref": "AAAAAAFbHEntqFUPpoU=" + }, + "lineStyle": 1, + "points": "377:165;594:511", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHFhC6If+xmU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFhC6If/tiE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFhC6IgAHIg=" + } + } + ] + }, + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFbHDdYEV2Qawk=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "pose", + "ownedElements": [ + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHFxkJJWoCjs=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "name": "pose", + "ownedElements": [ + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFyW9ZXECgk=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "bodyPartConnectorBase", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGLjx6FvWeI=", + "_parent": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "source": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "target": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGMlpKGFzvA=", + "_parent": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "source": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "target": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFyaDZXtVSk=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "wPoseExtractor.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHHCH1K22V0Q=", + "_parent": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "source": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "target": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHD7mq+0ft0=", + "_parent": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "source": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "target": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFyblZYWiRQ=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "wPoseRenderer.hpp", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHHB2E612aDc=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "source": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "target": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHD2Aq92KiE=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "source": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "target": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFyptZbjGLg=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "poseParameters.hpp", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHGw5J6MXrlI=", + "_parent": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHGw5J6MYVBM=", + "_parent": { + "$ref": "AAAAAAFbHGw5J6MXrlI=" + }, + "reference": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHGw5J6MZyXA=", + "_parent": { + "$ref": "AAAAAAFbHGw5J6MXrlI=" + }, + "reference": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFyjIpa6NmI=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "enumClasses.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFyhxZaRGg0=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "headers.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFytbZcMIfs=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "bodyPartConnectorCaffe", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGwQTKLXKW4=", + "_parent": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "source": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "target": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGwVTKL3GS0=", + "_parent": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "source": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "target": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGxt3qOc9Cg=", + "_parent": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "source": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "target": { + "$ref": "AAAAAAFbHFyjIpa6NmI=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHHIVkrSVUkA=", + "_parent": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHIVkrSW4DQ=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSVUkA=" + }, + "reference": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHIVkrSXJ+E=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSVUkA=" + }, + "reference": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFyvbZc1D+I=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "resizeAndMergeBase", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFy4FZeOtro=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "resizeAndMergeCaffe", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGnvtqGnGyg=", + "_parent": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "source": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "target": { + "$ref": "AAAAAAFbHFyvbZc1D+I=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHHIBi7QWc3M=", + "_parent": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHIBi7QXMuA=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QWc3M=" + }, + "reference": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHIBi7QYUYc=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QWc3M=" + }, + "reference": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFzELZhbldE=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "poseRenderGpu", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFzB0pgy9QE=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "poseExtractorCaffe", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHHDrEq8VKcc=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHDrEq8WF48=", + "_parent": { + "$ref": "AAAAAAFbHHDrEq8VKcc=" + }, + "reference": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHDrEq8X3Y0=", + "_parent": { + "$ref": "AAAAAAFbHHDrEq8VKcc=" + }, + "reference": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAFbHHGZKrGqXrE=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "source": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "target": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHIq0rUjTho=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "source": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "target": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHIvkrWOA8M=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "source": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "target": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHI0w7X5fe0=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "source": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "target": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHHKsO71y8uU=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHKsO71zxWo=", + "_parent": { + "$ref": "AAAAAAFbHHKsO71y8uU=" + }, + "reference": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHKsO710h4k=", + "_parent": { + "$ref": "AAAAAAFbHHKsO71y8uU=" + }, + "reference": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHTZc8YMcWg=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "source": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "target": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFy/tZgJmKs=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "poseRenderer", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHHDZ/K7DPvI=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHDZ/K7EAnY=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/K7DPvI=" + }, + "reference": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHDZ/K7FK4E=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/K7DPvI=" + }, + "reference": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHK6E74POAA=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "source": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "target": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHHSf7MWSFj4=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "source": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "target": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFzK5ZiEMoA=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "poseExtractor", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGqxTKG5wjw=", + "_parent": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "source": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "target": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGrME6HKk7E=", + "_parent": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "source": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "target": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFy7rZe3LU0=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "nmsBase", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbHFy95Zfg+a8=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "name": "nmsCaffe", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbHGnq5qGWd3A=", + "_parent": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "source": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "target": { + "$ref": "AAAAAAFbHFy7rZe3LU0=" + }, + "visibility": "public" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHHH8ArOmRco=", + "_parent": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHH8ArOnTL8=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOmRco=" + }, + "reference": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHHH8ArOo1Sw=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOmRco=" + }, + "reference": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHGJipqEm58o=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "name": "core", + "ownedElements": [ + { + "_type": "UMLClass", + "_id": "AAAAAAFbHGJ4XKFAf+Y=", + "_parent": { + "$ref": "AAAAAAFbHGJipqEm58o=" + }, + "name": "array.hpp", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAFbHGrWHKHbh/M=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHGrWHKHcSME=", + "_parent": { + "$ref": "AAAAAAFbHGrWHKHbh/M=" + }, + "reference": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "none", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAFbHGrWHKHd2lk=", + "_parent": { + "$ref": "AAAAAAFbHGrWHKHbh/M=" + }, + "reference": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visibility": "public", + "navigable": true, + "aggregation": "composite", + "isReadOnly": false, + "isOrdered": false, + "isUnique": false, + "isDerived": false, + "isID": false + }, + "visibility": "public", + "isDerived": false + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHG/kZKylPT8=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "name": "thread", + "ownedElements": [ + { + "_type": "UMLClass", + "_id": "AAAAAAFbHG/RJqxmjag=", + "_parent": { + "$ref": "AAAAAAFbHG/kZKylPT8=" + }, + "name": "worker.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + } + ], + "visible": true, + "defaultDiagram": false, + "ownedViews": [ + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHFxkJJWqH+E=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFxkJZWrwUc=", + "_parent": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "model": { + "$ref": "AAAAAAFbHFxkJJWoCjs=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFxkJZWsAEM=", + "_parent": { + "$ref": "AAAAAAFbHFxkJZWrwUc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -400, + "top": -304, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFxkJ5WtH/8=", + "_parent": { + "$ref": "AAAAAAFbHFxkJZWrwUc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 5, + "top": 22, + "width": 1127, + "height": 13, + "autoResize": false, + "underline": false, + "text": "pose", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFxkJ5WuAo4=", + "_parent": { + "$ref": "AAAAAAFbHFxkJZWrwUc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -400, + "top": -304, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFxkJ5WvYrw=", + "_parent": { + "$ref": "AAAAAAFbHFxkJZWrwUc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -400, + "top": -304, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": 15, + "width": 1137, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFxkJZWsAEM=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFxkJ5WtH/8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFxkJ5WuAo4=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFxkJ5WvYrw=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + { + "$ref": "AAAAAAFbHFyjI5a8Kvc=" + }, + { + "$ref": "AAAAAAFbHFyhxZaTi+g=" + }, + { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + { + "$ref": "AAAAAAFbHFyvbZc3RwA=" + }, + { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + { + "$ref": "AAAAAAFbHFzELphdmCE=" + }, + { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + { + "$ref": "AAAAAAFbHFy7rZe5yb0=" + }, + { + "$ref": "AAAAAAFbHFy95Zfi54c=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 0, + "top": 0, + "width": 1137, + "height": 625, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFxkJZWrwUc=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFyW9pXGlaM=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFyW9pXHj64=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "model": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyW9pXIA24=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXHj64=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 560, + "top": 152, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyW95XJedc=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXHj64=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 637, + "top": 463, + "width": 153, + "height": 13, + "autoResize": false, + "underline": false, + "text": "bodyPartConnectorBase", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyW95XKpHI=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXHj64=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 560, + "top": 152, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyW95XL7o8=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXHj64=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 560, + "top": 152, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 456, + "width": 163, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFyW9pXIA24=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFyW95XJedc=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFyW95XKpHI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFyW95XL7o8=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFyW95XMewg=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "model": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 481, + "width": 163, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFyW95XNtN4=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "model": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 632, + "top": 491, + "width": 163, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFyW95XO+CE=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "model": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 288, + "top": 48, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFyW+JXPekA=", + "_parent": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "model": { + "$ref": "AAAAAAFbHFyW9ZXECgk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 288, + "top": 48, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 632, + "top": 456, + "width": 163, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFyW9pXHj64=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFyW95XMewg=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFyW95XNtN4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFyW95XO+CE=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFyW+JXPekA=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFyaDpXvuYI=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFyaDpXwCEs=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "model": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyaDpXxuhY=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXwCEs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 336, + "top": -504, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyaDpXySIQ=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXwCEs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 653, + "top": 159, + "width": 127, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wPoseExtractor.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyaDpXzeyQ=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXwCEs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 336, + "top": -504, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyaDpX0VSw=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXwCEs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 336, + "top": -504, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 648, + "top": 152, + "width": 137, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFyaDpXxuhY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFyaDpXySIQ=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFyaDpXzeyQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFyaDpX0VSw=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFyaDpX1Aso=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "model": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 648, + "top": 177, + "width": 137, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFyaDpX2nYg=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "model": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 648, + "top": 187, + "width": 137, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFyaDpX3s8Y=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "model": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 208, + "top": -288, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFyaDpX4fmk=", + "_parent": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "model": { + "$ref": "AAAAAAFbHFyaDZXtVSk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 208, + "top": -288, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 648, + "top": 152, + "width": 137, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFyaDpXwCEs=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFyaDpX1Aso=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFyaDpX2nYg=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFyaDpX3s8Y=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFyaDpX4fmk=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFyblZYYzdE=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFyblZYZdp4=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "model": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyblZYa+Pg=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYZdp4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -568, + "top": -504, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyblpYbqOk=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYZdp4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 378, + "top": 159, + "width": 129, + "height": 13, + "autoResize": false, + "underline": false, + "text": "wPoseRenderer.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyblpYcoGk=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYZdp4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -568, + "top": -504, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyblpYdToA=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYZdp4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -568, + "top": -504, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 373, + "top": 152, + "width": 139, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFyblZYa+Pg=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFyblpYbqOk=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFyblpYcoGk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFyblpYdToA=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFyblpYeB4w=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "model": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 373, + "top": 177, + "width": 139, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFyblpYf788=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "model": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 373, + "top": 187, + "width": 139, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFyblpYgxEE=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "model": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -232, + "top": -288, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFyblpYh2tI=", + "_parent": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "model": { + "$ref": "AAAAAAFbHFyblZYWiRQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -232, + "top": -288, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 373, + "top": 152, + "width": 139, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFyblZYZdp4=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFyblpYeB4w=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFyblpYf788=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFyblpYgxEE=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFyblpYh2tI=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFyptpbluc8=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFypt5bm7YA=", + "_parent": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "model": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFypt5bnhj8=", + "_parent": { + "$ref": "AAAAAAFbHFypt5bm7YA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -496, + "top": 24, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFypt5boQvY=", + "_parent": { + "$ref": "AAAAAAFbHFypt5bm7YA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 717, + "top": 567, + "width": 131, + "height": 13, + "autoResize": false, + "underline": false, + "text": "poseParameters.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFypt5bp3gk=", + "_parent": { + "$ref": "AAAAAAFbHFypt5bm7YA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -496, + "top": 24, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFypt5bqBOw=", + "_parent": { + "$ref": "AAAAAAFbHFypt5bm7YA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -496, + "top": 24, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 712, + "top": 560, + "width": 141, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFypt5bnhj8=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFypt5boQvY=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFypt5bp3gk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFypt5bqBOw=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFypt5bra6Q=", + "_parent": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "model": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 712, + "top": 585, + "width": 141, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFypt5bsGF8=", + "_parent": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "model": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 712, + "top": 595, + "width": 141, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFypuJbtp1Y=", + "_parent": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "model": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -504, + "top": 0, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFypuJbu7BE=", + "_parent": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "model": { + "$ref": "AAAAAAFbHFyptZbjGLg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -504, + "top": 0, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 712, + "top": 560, + "width": 141, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFypt5bm7YA=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFypt5bra6Q=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFypt5bsGF8=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFypuJbtp1Y=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFypuJbu7BE=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFyjI5a8Kvc=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFyjIpa6NmI=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFyjI5a9GDw=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a8Kvc=" + }, + "model": { + "$ref": "AAAAAAFbHFyjIpa6NmI=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyjI5a+Amg=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a9GDw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 128, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyjI5a/XRk=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a9GDw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 877, + "top": 567, + "width": 111, + "height": 13, + "autoResize": false, + "underline": false, + "text": "enumClasses.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyjI5bA0nY=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a9GDw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 128, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyjI5bBIDk=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a9GDw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 128, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 872, + "top": 560, + "width": 121, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFyjI5a+Amg=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFyjI5a/XRk=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFyjI5bA0nY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFyjI5bBIDk=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFyjI5bC5g8=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a8Kvc=" + }, + "model": { + "$ref": "AAAAAAFbHFyjIpa6NmI=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 872, + "top": 585, + "width": 121, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFyjI5bDMpo=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a8Kvc=" + }, + "model": { + "$ref": "AAAAAAFbHFyjIpa6NmI=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 872, + "top": 595, + "width": 121, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFyjI5bEt24=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a8Kvc=" + }, + "model": { + "$ref": "AAAAAAFbHFyjIpa6NmI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 56, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFyjI5bFW0Q=", + "_parent": { + "$ref": "AAAAAAFbHFyjI5a8Kvc=" + }, + "model": { + "$ref": "AAAAAAFbHFyjIpa6NmI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 80, + "top": 56, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 872, + "top": 560, + "width": 121, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFyjI5a9GDw=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFyjI5bC5g8=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFyjI5bDMpo=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFyjI5bEt24=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFyjI5bFW0Q=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFyhxZaTi+g=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFyhxZaRGg0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFyhxZaUYZM=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaTi+g=" + }, + "model": { + "$ref": "AAAAAAFbHFyhxZaRGg0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyhxZaVJ84=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaUYZM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -936, + "top": -864, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyhxZaWako=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaUYZM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 77, + "top": 95, + "width": 79, + "height": 13, + "autoResize": false, + "underline": false, + "text": "headers.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyhxpaXwQE=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaUYZM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -936, + "top": -864, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyhxpaYN0M=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaUYZM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -936, + "top": -864, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 72, + "top": 88, + "width": 89, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFyhxZaVJ84=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFyhxZaWako=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFyhxpaXwQE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFyhxpaYN0M=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFyhxpaZ9ug=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaTi+g=" + }, + "model": { + "$ref": "AAAAAAFbHFyhxZaRGg0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 72, + "top": 113, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFyhxpaaNVI=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaTi+g=" + }, + "model": { + "$ref": "AAAAAAFbHFyhxZaRGg0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 72, + "top": 123, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFyhxpabYMc=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaTi+g=" + }, + "model": { + "$ref": "AAAAAAFbHFyhxZaRGg0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -496, + "top": -448, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFyhxpacmW4=", + "_parent": { + "$ref": "AAAAAAFbHFyhxZaTi+g=" + }, + "model": { + "$ref": "AAAAAAFbHFyhxZaRGg0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -496, + "top": -448, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 72, + "top": 88, + "width": 89, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFyhxZaUYZM=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFyhxpaZ9ug=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFyhxpaaNVI=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFyhxpabYMc=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFyhxpacmW4=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFytbpcOd/U=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFytbpcPX8s=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "model": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFytbpcQXNs=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcPX8s=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 752, + "top": -624, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFytbpcRAmU=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcPX8s=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 741, + "top": 367, + "width": 155, + "height": 13, + "autoResize": false, + "underline": false, + "text": "bodyPartConnectorCaffe", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFytbpcS4Xg=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcPX8s=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 752, + "top": -624, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFytbpcT5Us=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcPX8s=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 752, + "top": -624, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 736, + "top": 360, + "width": 165, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFytbpcQXNs=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFytbpcRAmU=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFytbpcS4Xg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFytbpcT5Us=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFytbpcU1BI=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "model": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 736, + "top": 385, + "width": 165, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFytbpcV3u8=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "model": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 736, + "top": 395, + "width": 165, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFytbpcWeGU=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "model": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 416, + "top": -336, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFytb5cXWA4=", + "_parent": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "model": { + "$ref": "AAAAAAFbHFytbZcMIfs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 416, + "top": -336, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 736, + "top": 360, + "width": 165, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFytbpcPX8s=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFytbpcU1BI=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFytbpcV3u8=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFytbpcWeGU=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFytb5cXWA4=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFyvbZc3RwA=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFyvbZc1D+I=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFyvbZc4C3A=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc3RwA=" + }, + "model": { + "$ref": "AAAAAAFbHFyvbZc1D+I=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyvbZc5kUI=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc4C3A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -656, + "top": -200, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyvbZc6THM=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc4C3A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 229, + "top": 567, + "width": 134, + "height": 13, + "autoResize": false, + "underline": false, + "text": "resizeAndMergeBase", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyvbZc7p48=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc4C3A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -656, + "top": -200, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFyvbZc8l9I=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc4C3A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -656, + "top": -200, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 560, + "width": 144, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFyvbZc5kUI=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFyvbZc6THM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFyvbZc7p48=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFyvbZc8l9I=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFyvbpc9Q/A=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc3RwA=" + }, + "model": { + "$ref": "AAAAAAFbHFyvbZc1D+I=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 585, + "width": 144, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFyvbpc+c/o=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc3RwA=" + }, + "model": { + "$ref": "AAAAAAFbHFyvbZc1D+I=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 595, + "width": 144, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFyvbpc/wXI=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc3RwA=" + }, + "model": { + "$ref": "AAAAAAFbHFyvbZc1D+I=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -536, + "top": -112, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFyvbpdAAyo=", + "_parent": { + "$ref": "AAAAAAFbHFyvbZc3RwA=" + }, + "model": { + "$ref": "AAAAAAFbHFyvbZc1D+I=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -536, + "top": -112, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 224, + "top": 560, + "width": 144, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFyvbZc4C3A=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFyvbpc9Q/A=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFyvbpc+c/o=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFyvbpc/wXI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFyvbpdAAyo=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFy4FZeQTuQ=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFy4FpeRMeY=", + "_parent": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy4FpeSFbU=", + "_parent": { + "$ref": "AAAAAAFbHFy4FpeRMeY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1000, + "top": -416, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy4FpeTkoY=", + "_parent": { + "$ref": "AAAAAAFbHFy4FpeRMeY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 229, + "top": 463, + "width": 136, + "height": 13, + "autoResize": false, + "underline": false, + "text": "resizeAndMergeCaffe", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy4FpeUTNc=", + "_parent": { + "$ref": "AAAAAAFbHFy4FpeRMeY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1000, + "top": -416, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy4FpeVlXs=", + "_parent": { + "$ref": "AAAAAAFbHFy4FpeRMeY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1000, + "top": -416, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 456, + "width": 146, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFy4FpeSFbU=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFy4FpeTkoY=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFy4FpeUTNc=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFy4FpeVlXs=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFy4FpeWkb8=", + "_parent": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 481, + "width": 146, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFy4FpeXKZk=", + "_parent": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": 491, + "width": 146, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFy4FpeYWpw=", + "_parent": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -712, + "top": -224, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFy4F5eZQQc=", + "_parent": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy4FZeOtro=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -712, + "top": -224, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 224, + "top": 456, + "width": 146, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFy4FpeRMeY=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFy4FpeWkb8=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFy4FpeXKZk=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFy4FpeYWpw=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFy4F5eZQQc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFzELphdmCE=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFzELZhbldE=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFzELpheFqI=", + "_parent": { + "$ref": "AAAAAAFbHFzELphdmCE=" + }, + "model": { + "$ref": "AAAAAAFbHFzELZhbldE=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzELphfvaU=", + "_parent": { + "$ref": "AAAAAAFbHFzELpheFqI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -984, + "top": -248, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzELphgEv8=", + "_parent": { + "$ref": "AAAAAAFbHFzELpheFqI=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 525, + "top": 567, + "width": 147, + "height": 13, + "autoResize": false, + "underline": false, + "text": "poseRenderGpu", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzELphhOIY=", + "_parent": { + "$ref": "AAAAAAFbHFzELpheFqI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -984, + "top": -248, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzEL5hiHSo=", + "_parent": { + "$ref": "AAAAAAFbHFzELpheFqI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -984, + "top": -248, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 520, + "top": 560, + "width": 157, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFzELphfvaU=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFzELphgEv8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFzELphhOIY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFzEL5hiHSo=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFzEL5hj/mI=", + "_parent": { + "$ref": "AAAAAAFbHFzELphdmCE=" + }, + "model": { + "$ref": "AAAAAAFbHFzELZhbldE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 520, + "top": 585, + "width": 157, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFzEL5hko7w=", + "_parent": { + "$ref": "AAAAAAFbHFzELphdmCE=" + }, + "model": { + "$ref": "AAAAAAFbHFzELZhbldE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 520, + "top": 595, + "width": 157, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFzEL5hlMOA=", + "_parent": { + "$ref": "AAAAAAFbHFzELphdmCE=" + }, + "model": { + "$ref": "AAAAAAFbHFzELZhbldE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -240, + "top": -240, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFzEL5hmQ8c=", + "_parent": { + "$ref": "AAAAAAFbHFzELphdmCE=" + }, + "model": { + "$ref": "AAAAAAFbHFzELZhbldE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -240, + "top": -240, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 520, + "top": 560, + "width": 157, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFzELpheFqI=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFzEL5hj/mI=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFzEL5hko7w=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFzEL5hlMOA=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFzEL5hmQ8c=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFzB0pg0a44=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFzB0pg1+dg=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "model": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzB05g2u1A=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg1+dg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1152, + "top": -1072, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzB05g3rcg=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg1+dg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 413, + "top": 311, + "width": 120, + "height": 13, + "autoResize": false, + "underline": false, + "text": "poseExtractorCaffe", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzB05g4+VU=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg1+dg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1152, + "top": -1072, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzB05g5atM=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg1+dg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1152, + "top": -1072, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": 304, + "width": 130, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFzB05g2u1A=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFzB05g3rcg=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFzB05g4+VU=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFzB05g5atM=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFzB05g6+M8=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "model": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": 329, + "width": 130, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFzB05g7NxU=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "model": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": 339, + "width": 130, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFzB05g8emo=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "model": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -600, + "top": -576, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFzB05g9l4g=", + "_parent": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "model": { + "$ref": "AAAAAAFbHFzB0pgy9QE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -600, + "top": -576, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 408, + "top": 304, + "width": 130, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFzB0pg1+dg=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFzB05g6+M8=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFzB05g7NxU=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFzB05g8emo=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFzB05g9l4g=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFy/tZgLHvQ=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFy/tZgM8Sw=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy/tZgN0qE=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgM8Sw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1248, + "top": -1192, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy/tpgOw7k=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgM8Sw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 250, + "top": 255, + "width": 89, + "height": 13, + "autoResize": false, + "underline": false, + "text": "poseRenderer", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy/tpgP1VA=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgM8Sw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1248, + "top": -1192, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy/tpgQIKk=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgM8Sw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1248, + "top": -1192, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 245, + "top": 248, + "width": 99, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFy/tZgN0qE=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFy/tpgOw7k=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFy/tpgP1VA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFy/tpgQIKk=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFy/tpgRD3I=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 245, + "top": 273, + "width": 99, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFy/tpgSS8U=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 245, + "top": 283, + "width": 99, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFy/tpgT52s=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -632, + "top": -640, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFy/tpgUfCU=", + "_parent": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "model": { + "$ref": "AAAAAAFbHFy/tZgJmKs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -632, + "top": -640, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 245, + "top": 248, + "width": 99, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFy/tZgM8Sw=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFy/tpgRD3I=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFy/tpgSS8U=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFy/tpgT52s=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFy/tpgUfCU=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFzK5piG7DA=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFzK5piHWYU=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "model": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzK5piImrY=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piHWYU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -856, + "top": -568, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzK5piJse4=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piHWYU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 426, + "top": 463, + "width": 87, + "height": 13, + "autoResize": false, + "underline": false, + "text": "poseExtractor", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzK5piKVAg=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piHWYU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -856, + "top": -568, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFzK5piLYAw=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piHWYU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -856, + "top": -568, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 421, + "top": 456, + "width": 97, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFzK5piImrY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFzK5piJse4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFzK5piKVAg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFzK5piLYAw=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFzK55iMy7I=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "model": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 421, + "top": 481, + "width": 97, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFzK55iN7WY=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "model": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 421, + "top": 491, + "width": 97, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFzK55iOXTg=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "model": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -696, + "top": -296, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFzK55iPcVc=", + "_parent": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "model": { + "$ref": "AAAAAAFbHFzK5ZiEMoA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -696, + "top": -296, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 421, + "top": 456, + "width": 97, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFzK5piHWYU=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFzK55iMy7I=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFzK55iN7WY=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFzK55iOXTg=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFzK55iPcVc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFy7rZe5yb0=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFy7rZe3LU0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFy7rpe6V8M=", + "_parent": { + "$ref": "AAAAAAFbHFy7rZe5yb0=" + }, + "model": { + "$ref": "AAAAAAFbHFy7rZe3LU0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy7rpe70Ts=", + "_parent": { + "$ref": "AAAAAAFbHFy7rpe6V8M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -440, + "top": -472, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy7rpe8JrM=", + "_parent": { + "$ref": "AAAAAAFbHFy7rpe6V8M=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 45, + "top": 567, + "width": 85, + "height": 13, + "autoResize": false, + "underline": false, + "text": "nmsBase", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy7rpe9fX8=", + "_parent": { + "$ref": "AAAAAAFbHFy7rpe6V8M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -440, + "top": -472, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy7rpe+Aic=", + "_parent": { + "$ref": "AAAAAAFbHFy7rpe6V8M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -440, + "top": -472, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 560, + "width": 95, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFy7rpe70Ts=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFy7rpe8JrM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFy7rpe9fX8=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFy7rpe+Aic=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFy7rpe/fWU=", + "_parent": { + "$ref": "AAAAAAFbHFy7rZe5yb0=" + }, + "model": { + "$ref": "AAAAAAFbHFy7rZe3LU0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 585, + "width": 95, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFy7rpfAyfc=", + "_parent": { + "$ref": "AAAAAAFbHFy7rZe5yb0=" + }, + "model": { + "$ref": "AAAAAAFbHFy7rZe3LU0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 595, + "width": 95, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFy7rpfBpkI=", + "_parent": { + "$ref": "AAAAAAFbHFy7rZe5yb0=" + }, + "model": { + "$ref": "AAAAAAFbHFy7rZe3LU0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -400, + "top": -256, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFy7rpfC4aM=", + "_parent": { + "$ref": "AAAAAAFbHFy7rZe5yb0=" + }, + "model": { + "$ref": "AAAAAAFbHFy7rZe3LU0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -400, + "top": -256, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 40, + "top": 560, + "width": 95, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFy7rpe6V8M=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFy7rpe/fWU=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFy7rpfAyfc=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFy7rpfBpkI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFy7rpfC4aM=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHFy95Zfi54c=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHFy95pfjA10=", + "_parent": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "model": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy95pfk5rs=", + "_parent": { + "$ref": "AAAAAAFbHFy95pfjA10=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1032, + "top": -768, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy95pflDeI=", + "_parent": { + "$ref": "AAAAAAFbHFy95pfjA10=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 45, + "top": 463, + "width": 87, + "height": 13, + "autoResize": false, + "underline": false, + "text": "nmsCaffe", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy95pfmtA4=", + "_parent": { + "$ref": "AAAAAAFbHFy95pfjA10=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1032, + "top": -768, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHFy95pfnV80=", + "_parent": { + "$ref": "AAAAAAFbHFy95pfjA10=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -1032, + "top": -768, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 456, + "width": 97, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHFy95pfk5rs=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHFy95pflDeI=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHFy95pfmtA4=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHFy95pfnV80=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHFy95pfogx8=", + "_parent": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "model": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 481, + "width": 97, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHFy95pfpvIw=", + "_parent": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "model": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 491, + "width": 97, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHFy95pfqAaA=", + "_parent": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "model": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -744, + "top": -432, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHFy95pfr/Ks=", + "_parent": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "model": { + "$ref": "AAAAAAFbHFy95Zfg+a8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -744, + "top": -432, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHFxkJJWqH+E=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 40, + "top": 456, + "width": 97, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHFy95pfjA10=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHFy95pfogx8=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHFy95pfpvIw=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHFy95pfqAaA=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHFy95pfr/Ks=" + } + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHGJip6EoNT0=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGJipqEm58o=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHGJiqKEpUGs=", + "_parent": { + "$ref": "AAAAAAFbHGJip6EoNT0=" + }, + "model": { + "$ref": "AAAAAAFbHGJipqEm58o=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJiqKEq9GM=", + "_parent": { + "$ref": "AAAAAAFbHGJiqKEpUGs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 448, + "top": -384, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJiqKErHZE=", + "_parent": { + "$ref": "AAAAAAFbHGJiqKEpUGs=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 501, + "top": 742, + "width": 191, + "height": 13, + "autoResize": false, + "underline": false, + "text": "core", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJiqKEso2w=", + "_parent": { + "$ref": "AAAAAAFbHGJiqKEpUGs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 448, + "top": -384, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJiqKEtkgk=", + "_parent": { + "$ref": "AAAAAAFbHGJiqKEpUGs=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 448, + "top": -384, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 496, + "top": 735, + "width": 201, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGJiqKEq9GM=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHGJiqKErHZE=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHGJiqKEso2w=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGJiqKEtkgk=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 496, + "top": 720, + "width": 201, + "height": 160, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHGJiqKEpUGs=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHGJ4XaFCtvY=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHGJ4XaFD3us=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "model": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJ4XqFEmic=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFD3us=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": -336, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJ4XqFFD/Y=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFD3us=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 573, + "top": 799, + "width": 61, + "height": 13, + "autoResize": false, + "underline": false, + "text": "array.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJ4XqFGd2A=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFD3us=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": -336, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from core)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHGJ4XqFHybI=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFD3us=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": -336, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 568, + "top": 792, + "width": 71, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGJ4XqFEmic=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHGJ4XqFFD/Y=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHGJ4XqFGd2A=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGJ4XqFHybI=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHGJ4XqFIVZg=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "model": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 568, + "top": 817, + "width": 71, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHGJ4XqFJEe0=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "model": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 568, + "top": 827, + "width": 71, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHGJ4X6FKx4o=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "model": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 128, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHGJ4X6FLYgE=", + "_parent": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "model": { + "$ref": "AAAAAAFbHGJ4XKFAf+Y=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 128, + "top": -160, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHGJip6EoNT0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 568, + "top": 792, + "width": 71, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHGJ4XaFD3us=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHGJ4XqFIVZg=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHGJ4XqFJEe0=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHGJ4X6FKx4o=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHGJ4X6FLYgE=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGLjx6Fxl7k=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGLjx6FvWeI=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGLjyKFyffk=", + "_parent": { + "$ref": "AAAAAAFbHGLjx6Fxl7k=" + }, + "model": { + "$ref": "AAAAAAFbHGLjx6FvWeI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 672, + "top": 644, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGLjx6Fxl7k=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGLjyKFzJeM=", + "_parent": { + "$ref": "AAAAAAFbHGLjx6Fxl7k=" + }, + "model": { + "$ref": "AAAAAAFbHGLjx6FvWeI=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 686, + "top": 649, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGLjx6Fxl7k=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGLjyKF0ltY=", + "_parent": { + "$ref": "AAAAAAFbHGLjx6Fxl7k=" + }, + "model": { + "$ref": "AAAAAAFbHGLjx6FvWeI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 643, + "top": 635, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGLjx6Fxl7k=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "tail": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "lineStyle": 1, + "points": "705:501;611:791", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGLjyKFyffk=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGLjyKFzJeM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGLjyKF0ltY=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGMlpKGHAQA=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGMlpKGFzvA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGMlpKGI1RY=", + "_parent": { + "$ref": "AAAAAAFbHGMlpKGHAQA=" + }, + "model": { + "$ref": "AAAAAAFbHGMlpKGFzvA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 759, + "top": 515, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGMlpKGHAQA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGMlpKGJiN4=", + "_parent": { + "$ref": "AAAAAAFbHGMlpKGHAQA=" + }, + "model": { + "$ref": "AAAAAAFbHGMlpKGFzvA=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 771, + "top": 506, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGMlpKGHAQA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGMlpKGKDAY=", + "_parent": { + "$ref": "AAAAAAFbHGMlpKGHAQA=" + }, + "model": { + "$ref": "AAAAAAFbHGMlpKGFzvA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 734, + "top": 532, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGMlpKGHAQA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "tail": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "lineStyle": 1, + "points": "728:501;767:559", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGMlpKGI1RY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGMlpKGJiN4=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGMlpKGKDAY=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGnq56GYALc=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGnq5qGWd3A=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGnq6KGZqFA=", + "_parent": { + "$ref": "AAAAAAFbHGnq56GYALc=" + }, + "model": { + "$ref": "AAAAAAFbHGnq5qGWd3A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 101, + "top": 523, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGnq56GYALc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGnq6KGafLE=", + "_parent": { + "$ref": "AAAAAAFbHGnq56GYALc=" + }, + "model": { + "$ref": "AAAAAAFbHGnq5qGWd3A=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 116, + "top": 523, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGnq56GYALc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGnq6KGbkos=", + "_parent": { + "$ref": "AAAAAAFbHGnq56GYALc=" + }, + "model": { + "$ref": "AAAAAAFbHGnq5qGWd3A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 72, + "top": 524, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGnq56GYALc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFy7rZe5yb0=" + }, + "tail": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "lineStyle": 1, + "points": "88:501;87:559", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGnq6KGZqFA=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGnq6KGafLE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGnq6KGbkos=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGnvt6Gp5ew=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGnvtqGnGyg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGnvt6GqbGE=", + "_parent": { + "$ref": "AAAAAAFbHGnvt6Gp5ew=" + }, + "model": { + "$ref": "AAAAAAFbHGnvtqGnGyg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 309, + "top": 523, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGnvt6Gp5ew=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGnvt6Grtqg=", + "_parent": { + "$ref": "AAAAAAFbHGnvt6Gp5ew=" + }, + "model": { + "$ref": "AAAAAAFbHGnvtqGnGyg=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 324, + "top": 523, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGnvt6Gp5ew=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGnvt6GsNlg=", + "_parent": { + "$ref": "AAAAAAFbHGnvt6Gp5ew=" + }, + "model": { + "$ref": "AAAAAAFbHGnvtqGnGyg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 524, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGnvt6Gp5ew=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyvbZc3RwA=" + }, + "tail": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "lineStyle": 1, + "points": "296:501;295:559", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGnvt6GqbGE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGnvt6Grtqg=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGnvt6GsNlg=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGqxTKG7bkA=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGqxTKG5wjw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGqxTaG8XBI=", + "_parent": { + "$ref": "AAAAAAFbHGqxTKG7bkA=" + }, + "model": { + "$ref": "AAAAAAFbHGqxTKG5wjw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 619, + "top": 505, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGqxTKG7bkA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGqxTaG9igY=", + "_parent": { + "$ref": "AAAAAAFbHGqxTKG7bkA=" + }, + "model": { + "$ref": "AAAAAAFbHGqxTKG5wjw=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 624, + "top": 491, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGqxTKG7bkA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGqxTaG+s6U=", + "_parent": { + "$ref": "AAAAAAFbHGqxTKG7bkA=" + }, + "model": { + "$ref": "AAAAAAFbHGqxTKG5wjw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 610, + "top": 534, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGqxTKG7bkA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "tail": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "lineStyle": 1, + "points": "518:494;713:559", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGqxTaG8XBI=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGqxTaG9igY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGqxTaG+s6U=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGrMFKHMaow=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGrME6HKk7E=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrMFKHNzoM=", + "_parent": { + "$ref": "AAAAAAFbHGrMFKHMaow=" + }, + "model": { + "$ref": "AAAAAAFbHGrME6HKk7E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 549, + "top": 634, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGrMFKHMaow=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrMFKHOvNI=", + "_parent": { + "$ref": "AAAAAAFbHGrMFKHMaow=" + }, + "model": { + "$ref": "AAAAAAFbHGrME6HKk7E=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 563, + "top": 628, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGrMFKHMaow=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrMFKHPiVU=", + "_parent": { + "$ref": "AAAAAAFbHGrMFKHMaow=" + }, + "model": { + "$ref": "AAAAAAFbHGrME6HKk7E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 522, + "top": 645, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGrMFKHMaow=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "tail": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "lineStyle": 1, + "points": "478:501;594:791", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGrMFKHNzoM=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGrMFKHOvNI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGrMFKHPiVU=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHGrWHaHfwls=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHbh/M=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHaHgtBU=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHbh/M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 522, + "top": 645, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHhSD4=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHbh/M=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 508, + "top": 651, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHirZI=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHbh/M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 549, + "top": 634, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHja2g=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHcSME=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 570, + "top": 766, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHkS3I=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHcSME=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 557, + "top": 769, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHllT0=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHcSME=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 597, + "top": 760, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHmElU=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHd2lk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 473, + "top": 524, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHnxtU=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHd2lk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 462, + "top": 531, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGrWHqHowKw=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHd2lk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 497, + "top": 510, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHGrWHqHpIPM=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHcSME=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -496, + "top": -96, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHGrWH6HqQKg=", + "_parent": { + "$ref": "AAAAAAFbHGrWHaHfwls=" + }, + "model": { + "$ref": "AAAAAAFbHGrWHKHd2lk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -496, + "top": -96, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "tail": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "lineStyle": 1, + "points": "594:791;478:501", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGrWHaHgtBU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGrWHqHhSD4=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGrWHqHirZI=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHGrWHqHja2g=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHGrWHqHkS3I=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHGrWHqHllT0=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHGrWHqHmElU=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHGrWHqHnxtU=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHGrWHqHowKw=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHGrWHqHpIPM=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHGrWH6HqQKg=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGwQTaLZZfc=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGwQTKLXKW4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGwQTaLaU44=", + "_parent": { + "$ref": "AAAAAAFbHGwQTaLZZfc=" + }, + "model": { + "$ref": "AAAAAAFbHGwQTKLXKW4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 775, + "top": 435, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGwQTaLZZfc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGwQTaLbjgM=", + "_parent": { + "$ref": "AAAAAAFbHGwQTaLZZfc=" + }, + "model": { + "$ref": "AAAAAAFbHGwQTKLXKW4=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 785, + "top": 446, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGwQTaLZZfc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGwQTaLc9A0=", + "_parent": { + "$ref": "AAAAAAFbHGwQTaLZZfc=" + }, + "model": { + "$ref": "AAAAAAFbHGwQTKLXKW4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 754, + "top": 412, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGwQTaLZZfc=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyW9pXGlaM=" + }, + "tail": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "lineStyle": 1, + "points": "793:405;738:455", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGwQTaLaU44=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGwQTaLbjgM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGwQTaLc9A0=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGwVTaL50Do=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGwVTKL3GS0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGwVTaL6WAw=", + "_parent": { + "$ref": "AAAAAAFbHGwVTaL50Do=" + }, + "model": { + "$ref": "AAAAAAFbHGwVTKL3GS0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 814, + "top": 478, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGwVTaL50Do=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGwVTaL75lI=", + "_parent": { + "$ref": "AAAAAAFbHGwVTaL50Do=" + }, + "model": { + "$ref": "AAAAAAFbHGwVTKL3GS0=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 829, + "top": 481, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGwVTaL50Do=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGwVTaL8zNw=", + "_parent": { + "$ref": "AAAAAAFbHGwVTaL50Do=" + }, + "model": { + "$ref": "AAAAAAFbHGwVTKL3GS0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 785, + "top": 473, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGwVTaL50Do=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyptpbluc8=" + }, + "tail": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "lineStyle": 1, + "points": "814:405;786:559", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGwVTaL6WAw=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGwVTaL75lI=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGwVTaL8zNw=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHGxt3qOegCY=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHGxt3qOc9Cg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGxt36OfnEY=", + "_parent": { + "$ref": "AAAAAAFbHGxt3qOegCY=" + }, + "model": { + "$ref": "AAAAAAFbHGxt3qOc9Cg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 888, + "top": 468, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGxt3qOegCY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGxt36OgDrc=", + "_parent": { + "$ref": "AAAAAAFbHGxt3qOegCY=" + }, + "model": { + "$ref": "AAAAAAFbHGxt3qOc9Cg=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 901, + "top": 461, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHGxt3qOegCY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHGxt36OhbhI=", + "_parent": { + "$ref": "AAAAAAFbHGxt3qOegCY=" + }, + "model": { + "$ref": "AAAAAAFbHGxt3qOc9Cg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 861, + "top": 483, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHGxt3qOegCY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyjI5a8Kvc=" + }, + "tail": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "lineStyle": 1, + "points": "831:405;919:559", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHGxt36OfnEY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHGxt36OgDrc=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHGxt36OhbhI=" + } + }, + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHG/kZKynkHQ=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHG/kZKylPT8=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHG/kZayohYE=", + "_parent": { + "$ref": "AAAAAAFbHG/kZKynkHQ=" + }, + "model": { + "$ref": "AAAAAAFbHG/kZKylPT8=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/kZaypHSw=", + "_parent": { + "$ref": "AAAAAAFbHG/kZayohYE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1968, + "top": -1104, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/kZayqMV4=", + "_parent": { + "$ref": "AAAAAAFbHG/kZayohYE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1157, + "top": 414, + "width": 199, + "height": 13, + "autoResize": false, + "underline": false, + "text": "thread", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/kZayrLik=", + "_parent": { + "$ref": "AAAAAAFbHG/kZayohYE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1968, + "top": -1104, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from pose)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/kZaysAlM=", + "_parent": { + "$ref": "AAAAAAFbHG/kZayohYE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1968, + "top": -1104, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1152, + "top": 407, + "width": 209, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHG/kZaypHSw=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHG/kZayqMV4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHG/kZayrLik=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHG/kZaysAlM=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 1152, + "top": 392, + "width": 209, + "height": 168, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHG/kZayohYE=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbHG/RJ6xo2hI=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHG/RJ6xpDDM=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + }, + "model": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/RKKxq450=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xpDDM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 2048, + "top": -888, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/RKKxrs6s=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xpDDM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1221, + "top": 463, + "width": 72, + "height": 13, + "autoResize": false, + "underline": false, + "text": "worker.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/RKKxsn6c=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xpDDM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 2048, + "top": -888, + "width": 73, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from thread)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHG/RKKxtXbA=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xpDDM=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 2048, + "top": -888, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1216, + "top": 456, + "width": 82, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHG/RKKxq450=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHG/RKKxrs6s=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHG/RKKxsn6c=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHG/RKKxtXbA=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbHG/RKKxurXM=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + }, + "model": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1216, + "top": 481, + "width": 82, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbHG/RKKxvzKM=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + }, + "model": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1216, + "top": 491, + "width": 82, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbHG/RKaxwRyc=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + }, + "model": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1032, + "top": -392, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbHG/RKaxxtCs=", + "_parent": { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + }, + "model": { + "$ref": "AAAAAAFbHG/RJqxmjag=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1032, + "top": -392, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHG/kZKynkHQ=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 1216, + "top": 456, + "width": 82, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHG/RJ6xpDDM=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbHG/RKKxurXM=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbHG/RKKxvzKM=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbHG/RKaxwRyc=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbHG/RKaxxtCs=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHHB2Fq14MJo=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHB2E612aDc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHB2F615c1c=", + "_parent": { + "$ref": "AAAAAAFbHHB2Fq14MJo=" + }, + "model": { + "$ref": "AAAAAAFbHHB2E612aDc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 864, + "top": 309, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHB2Fq14MJo=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHB2F616N3I=", + "_parent": { + "$ref": "AAAAAAFbHHB2Fq14MJo=" + }, + "model": { + "$ref": "AAAAAAFbHHB2E612aDc=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 869, + "top": 295, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHB2Fq14MJo=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHB2F617nKw=", + "_parent": { + "$ref": "AAAAAAFbHHB2Fq14MJo=" + }, + "model": { + "$ref": "AAAAAAFbHHB2E612aDc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 853, + "top": 338, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHB2Fq14MJo=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + }, + "tail": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "lineStyle": 1, + "points": "504:197;1215:463", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHB2F615c1c=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHB2F616N3I=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHB2F617nKw=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHHCH1K24vVY=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHCH1K22V0Q=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHCH1K25cGg=", + "_parent": { + "$ref": "AAAAAAFbHHCH1K24vVY=" + }, + "model": { + "$ref": "AAAAAAFbHHCH1K22V0Q=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 993, + "top": 306, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHCH1K24vVY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHCH1a26amA=", + "_parent": { + "$ref": "AAAAAAFbHHCH1K24vVY=" + }, + "model": { + "$ref": "AAAAAAFbHHCH1K22V0Q=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1000, + "top": 293, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHCH1K24vVY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHCH1a27Pvc=", + "_parent": { + "$ref": "AAAAAAFbHHCH1K24vVY=" + }, + "model": { + "$ref": "AAAAAAFbHHCH1K22V0Q=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 978, + "top": 333, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHCH1K24vVY=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHG/RJ6xo2hI=" + }, + "tail": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "lineStyle": 1, + "points": "757:197;1215:455", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHCH1K25cGg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHCH1a26amA=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHCH1a27Pvc=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHHDZ/a7HVbM=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7DPvI=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/a7IYeg=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7DPvI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 359, + "top": 203, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/a7JE0Y=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7DPvI=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 351, + "top": 190, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/a7KIGE=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7DPvI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 376, + "top": 228, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/q7L1+g=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7EAnY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 342, + "top": 214, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/q7MFrg=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7EAnY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 337, + "top": 201, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/q7N9/I=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7EAnY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 353, + "top": 239, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/q7OpJY=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7FK4E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 377, + "top": 192, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/q7PCYY=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7FK4E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 367, + "top": 182, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDZ/q7Qdr8=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7FK4E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 395, + "top": 213, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHDZ/q7R75I=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7EAnY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -336, + "top": -80, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHDZ/q7SvXQ=", + "_parent": { + "$ref": "AAAAAAFbHHDZ/a7HVbM=" + }, + "model": { + "$ref": "AAAAAAFbHHDZ/K7FK4E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -336, + "top": -80, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "tail": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "lineStyle": 1, + "points": "329:247;407:197", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHDZ/a7IYeg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHDZ/a7JE0Y=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHDZ/a7KIGE=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHHDZ/q7L1+g=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHHDZ/q7MFrg=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHHDZ/q7N9/I=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHHDZ/q7OpJY=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHHDZ/q7PCYY=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHHDZ/q7Qdr8=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHHDZ/q7R75I=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHHDZ/q7SvXQ=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHHDrE68ZoBE=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8VKcc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68adsE=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8VKcc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 580, + "top": 310, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68bB7M=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8VKcc=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 568, + "top": 301, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68c2s0=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8VKcc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 603, + "top": 329, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68dz0w=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8WF48=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 492, + "top": 419, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68eESM=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8WF48=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 483, + "top": 409, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68f3k0=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8WF48=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 511, + "top": 440, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68gyRw=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8X3Y0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 668, + "top": 201, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68hHGA=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8X3Y0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 657, + "top": 195, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHDrE68i5gI=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8X3Y0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 693, + "top": 215, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHDrE68jf8Q=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8WF48=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHDrE68kubs=", + "_parent": { + "$ref": "AAAAAAFbHHDrE68ZoBE=" + }, + "model": { + "$ref": "AAAAAAFbHHDrEq8X3Y0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "tail": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "lineStyle": 1, + "points": "488:455;697:197", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHDrE68adsE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHDrE68bB7M=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHDrE68c2s0=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHHDrE68dz0w=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHHDrE68eESM=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHHDrE68f3k0=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHHDrE68gyRw=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHHDrE68hHGA=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHHDrE68i5gI=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHHDrE68jf8Q=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHHDrE68kubs=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHHD2Aq94xHI=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHD2Aq92KiE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHD2Aq95ppo=", + "_parent": { + "$ref": "AAAAAAFbHHD2Aq94xHI=" + }, + "model": { + "$ref": "AAAAAAFbHHD2Aq92KiE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 376, + "top": 228, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHD2Aq94xHI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHD2Aq96k04=", + "_parent": { + "$ref": "AAAAAAFbHHD2Aq94xHI=" + }, + "model": { + "$ref": "AAAAAAFbHHD2Aq92KiE=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": 241, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHD2Aq94xHI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHD2Aq97XLY=", + "_parent": { + "$ref": "AAAAAAFbHHD2Aq94xHI=" + }, + "model": { + "$ref": "AAAAAAFbHHD2Aq92KiE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 359, + "top": 203, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHD2Aq94xHI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "tail": { + "$ref": "AAAAAAFbHFyblZYYzdE=" + }, + "lineStyle": 1, + "points": "407:197;329:247", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHD2Aq95ppo=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHD2Aq96k04=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHD2Aq97XLY=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHHD7mq+2IXM=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHD7mq+0ft0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHD7mq+3mv4=", + "_parent": { + "$ref": "AAAAAAFbHHD7mq+2IXM=" + }, + "model": { + "$ref": "AAAAAAFbHHD7mq+0ft0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 603, + "top": 329, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHD7mq+2IXM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHD7m6+4324=", + "_parent": { + "$ref": "AAAAAAFbHHD7mq+2IXM=" + }, + "model": { + "$ref": "AAAAAAFbHHD7mq+0ft0=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 615, + "top": 338, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHD7mq+2IXM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHD7m6+5leg=", + "_parent": { + "$ref": "AAAAAAFbHHD7mq+2IXM=" + }, + "model": { + "$ref": "AAAAAAFbHHD7mq+0ft0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 580, + "top": 310, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHD7mq+2IXM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "tail": { + "$ref": "AAAAAAFbHFyaDpXvuYI=" + }, + "lineStyle": 1, + "points": "697:197;488:455", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHD7mq+3mv4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHD7m6+4324=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHD7m6+5leg=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAFbHHGZKrGsQOQ=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHGZKrGqXrE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHGZKrGtPkg=", + "_parent": { + "$ref": "AAAAAAFbHHGZKrGsQOQ=" + }, + "model": { + "$ref": "AAAAAAFbHHGZKrGqXrE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 484, + "top": 396, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHGZKrGsQOQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHGZKrGuu2Q=", + "_parent": { + "$ref": "AAAAAAFbHHGZKrGsQOQ=" + }, + "model": { + "$ref": "AAAAAAFbHHGZKrGqXrE=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 499, + "top": 396, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHGZKrGsQOQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHGZKrGvTkE=", + "_parent": { + "$ref": "AAAAAAFbHHGZKrGsQOQ=" + }, + "model": { + "$ref": "AAAAAAFbHHGZKrGqXrE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 455, + "top": 395, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHGZKrGsQOQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFzK5piG7DA=" + }, + "tail": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "lineStyle": 1, + "points": "472:349;469:455", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHGZKrGtPkg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHGZKrGuu2Q=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHGZKrGvTkE=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHHH8ArOqILQ=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOmRco=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7OrREk=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOmRco=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 269, + "top": 384, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7Osjo4=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOmRco=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 263, + "top": 370, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7Ot5wI=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOmRco=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 411, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7Oup18=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOnTL8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 155, + "top": 429, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7OvGVc=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOnTL8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 152, + "top": 416, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7OwbLo=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOnTL8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 161, + "top": 456, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7Ox7vM=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOo1Sw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": 338, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7OyZWo=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOo1Sw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 377, + "top": 327, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHH8A7Oz/6g=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOo1Sw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 398, + "top": 362, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHH8A7O0MlY=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOnTL8=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHH8A7O1Xbs=", + "_parent": { + "$ref": "AAAAAAFbHHH8ArOqILQ=" + }, + "model": { + "$ref": "AAAAAAFbHHH8ArOo1Sw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "tail": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "lineStyle": 1, + "points": "137:459;414:349", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHH8A7OrREk=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHH8A7Osjo4=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHH8A7Ot5wI=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHHH8A7Oup18=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHHH8A7OvGVc=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHHH8A7OwbLo=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHHH8A7Ox7vM=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHHH8A7OyZWo=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHHH8A7Oz/6g=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHHH8A7O0MlY=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHHH8A7O1Xbs=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHHIBi7QajbM=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QWc3M=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7QbkGo=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QWc3M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 374, + "top": 384, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7Qc74o=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QWc3M=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 364, + "top": 373, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7QdBnw=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QWc3M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 393, + "top": 407, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7Qe1Gc=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QXMuA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 332, + "top": 420, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7QfrTw=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QXMuA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 325, + "top": 409, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7Qgqbs=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QXMuA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 347, + "top": 444, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7QhuXs=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QYUYc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 415, + "top": 348, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7Qi9mo=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QYUYc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 405, + "top": 340, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIBi7QjFDA=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QYUYc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 436, + "top": 366, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHIBi7Qk84c=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QXMuA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHIBi7QlFM0=", + "_parent": { + "$ref": "AAAAAAFbHHIBi7QajbM=" + }, + "model": { + "$ref": "AAAAAAFbHHIBi7QYUYc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "tail": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "lineStyle": 1, + "points": "323:455;445:349", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHIBi7QbkGo=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHIBi7Qc74o=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHIBi7QdBnw=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHHIBi7Qe1Gc=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHHIBi7QfrTw=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHHIBi7Qgqbs=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHHIBi7QhuXs=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHHIBi7Qi9mo=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHHIBi7QjFDA=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHHIBi7Qk84c=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHHIBi7QlFM0=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHHIVkrSZV7o=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSVUkA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVkrSaF+0=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSVUkA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 633, + "top": 361, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7SbH/k=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSVUkA=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 631, + "top": 376, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7Scx/Q=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSVUkA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 638, + "top": 332, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7SdTU4=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSW4DQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 706, + "top": 373, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7SeMd0=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSW4DQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 702, + "top": 386, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7SfyGM=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSW4DQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 715, + "top": 347, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7Sg/fk=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSXJ+E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 561, + "top": 349, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7ShD8g=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSXJ+E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 561, + "top": 363, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIVk7Sire8=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSXJ+E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 561, + "top": 322, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHIVk7Sj3tE=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSW4DQ=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -96, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHIVk7Sk1LE=", + "_parent": { + "$ref": "AAAAAAFbHHIVkrSZV7o=" + }, + "model": { + "$ref": "AAAAAAFbHHIVkrSXJ+E=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -96, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "tail": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "lineStyle": 1, + "points": "735:369;538:337", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHIVkrSaF+0=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHIVk7SbH/k=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHIVk7Scx/Q=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHHIVk7SdTU4=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHHIVk7SeMd0=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHHIVk7SfyGM=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHHIVk7Sg/fk=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHHIVk7ShD8g=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHHIVk7Sire8=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHHIVk7Sj3tE=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHHIVk7Sk1LE=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHHIq0rUlOjs=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHIq0rUjTho=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIq0rUm3rI=", + "_parent": { + "$ref": "AAAAAAFbHHIq0rUlOjs=" + }, + "model": { + "$ref": "AAAAAAFbHHIq0rUjTho=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 411, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIq0rUlOjs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIq0rUngO0=", + "_parent": { + "$ref": "AAAAAAFbHHIq0rUlOjs=" + }, + "model": { + "$ref": "AAAAAAFbHHIq0rUjTho=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 286, + "top": 425, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIq0rUlOjs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIq0rUoxCM=", + "_parent": { + "$ref": "AAAAAAFbHHIq0rUlOjs=" + }, + "model": { + "$ref": "AAAAAAFbHHIq0rUjTho=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 269, + "top": 384, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIq0rUlOjs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFy95Zfi54c=" + }, + "tail": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "lineStyle": 1, + "points": "414:349;137:459", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHIq0rUm3rI=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHIq0rUngO0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHIq0rUoxCM=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHHIvk7WQ8Us=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHIvkrWOA8M=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIvk7WRdTY=", + "_parent": { + "$ref": "AAAAAAFbHHIvk7WQ8Us=" + }, + "model": { + "$ref": "AAAAAAFbHHIvkrWOA8M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 393, + "top": 407, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIvk7WQ8Us=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIvk7WSxiM=", + "_parent": { + "$ref": "AAAAAAFbHHIvk7WQ8Us=" + }, + "model": { + "$ref": "AAAAAAFbHHIvkrWOA8M=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 403, + "top": 418, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHIvk7WQ8Us=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHIvk7WTBUE=", + "_parent": { + "$ref": "AAAAAAFbHHIvk7WQ8Us=" + }, + "model": { + "$ref": "AAAAAAFbHHIvkrWOA8M=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 374, + "top": 384, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHIvk7WQ8Us=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFy4FZeQTuQ=" + }, + "tail": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "lineStyle": 1, + "points": "445:349;323:455", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHIvk7WRdTY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHIvk7WSxiM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHIvk7WTBUE=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHHI0w7X7vM0=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHI0w7X5fe0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHI0w7X8Thg=", + "_parent": { + "$ref": "AAAAAAFbHHI0w7X7vM0=" + }, + "model": { + "$ref": "AAAAAAFbHHI0w7X5fe0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 638, + "top": 332, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHI0w7X7vM0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHI0w7X9S8I=", + "_parent": { + "$ref": "AAAAAAFbHHI0w7X7vM0=" + }, + "model": { + "$ref": "AAAAAAFbHHI0w7X5fe0=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 640, + "top": 317, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHI0w7X7vM0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHI0w7X+22E=", + "_parent": { + "$ref": "AAAAAAFbHHI0w7X7vM0=" + }, + "model": { + "$ref": "AAAAAAFbHHI0w7X5fe0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 633, + "top": 361, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHI0w7X7vM0=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFytbpcOd/U=" + }, + "tail": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "lineStyle": 1, + "points": "538:337;735:369", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHI0w7X8Thg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHI0w7X9S8I=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHI0w7X+22E=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAFbHHKsPL12RiI=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71y8uU=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPL13yWY=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71y8uU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 370, + "top": 304, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPL14FxE=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71y8uU=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 365, + "top": 318, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPb15dxE=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71y8uU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 379, + "top": 275, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPb16DB8=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71zxWo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 377, + "top": 306, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPb17wzI=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71zxWo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 371, + "top": 318, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPb18Uwg=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71zxWo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 390, + "top": 281, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 2, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPb19bus=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO710h4k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 364, + "top": 302, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPb1+CzE=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO710h4k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 362, + "top": 315, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHKsPb1/BVk=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO710h4k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 368, + "top": 274, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "edgePosition": 0, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHKsPb2ABmk=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO71zxWo=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -80, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAFbHHKsPb2BlHI=", + "_parent": { + "$ref": "AAAAAAFbHHKsPL12RiI=" + }, + "model": { + "$ref": "AAAAAAFbHHKsO710h4k=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": -80, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "tail": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "lineStyle": 1, + "points": "407:306;344:286", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHKsPL13yWY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHKsPL14FxE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHKsPb15dxE=" + }, + "showMultiplicity": true, + "showType": true, + "tailRoleNameLabel": { + "$ref": "AAAAAAFbHHKsPb16DB8=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAFbHHKsPb17wzI=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAFbHHKsPb18Uwg=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAFbHHKsPb19bus=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAFbHHKsPb1+CzE=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAFbHHKsPb1/BVk=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAFbHHKsPb2ABmk=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAFbHHKsPb2BlHI=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHHK6E74R1Ec=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHK6E74POAA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHK6E74SvC4=", + "_parent": { + "$ref": "AAAAAAFbHHK6E74R1Ec=" + }, + "model": { + "$ref": "AAAAAAFbHHK6E74POAA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 379, + "top": 275, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHK6E74R1Ec=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHK6FL4Tpuw=", + "_parent": { + "$ref": "AAAAAAFbHHK6E74R1Ec=" + }, + "model": { + "$ref": "AAAAAAFbHHK6E74POAA=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 383, + "top": 261, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHK6E74R1Ec=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHK6FL4Ueb4=", + "_parent": { + "$ref": "AAAAAAFbHHK6E74R1Ec=" + }, + "model": { + "$ref": "AAAAAAFbHHK6E74POAA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 370, + "top": 304, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHK6E74R1Ec=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHFzB0pg0a44=" + }, + "tail": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "lineStyle": 1, + "points": "344:286;407:306", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHK6E74SvC4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHK6FL4Tpuw=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHK6FL4Ueb4=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbHHSf7cWURUk=", + "_parent": { + "$ref": "AAAAAAFbHDdYEV2Qawk=" + }, + "model": { + "$ref": "AAAAAAFbHHSf7MWSFj4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHSf7cWVggM=", + "_parent": { + "$ref": "AAAAAAFbHHSf7cWURUk=" + }, + "model": { + "$ref": "AAAAAAFbHHSf7MWSFj4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 461, + "top": 528, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHSf7cWURUk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHSf7cWW5yo=", + "_parent": { + "$ref": "AAAAAAFbHHSf7cWURUk=" + }, + "model": { + "$ref": "AAAAAAFbHHSf7MWSFj4=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 474, + "top": 521, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbHHSf7cWURUk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbHHSf7cWXNhk=", + "_parent": { + "$ref": "AAAAAAFbHHSf7cWURUk=" + }, + "model": { + "$ref": "AAAAAAFbHHSf7MWSFj4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 434, + "top": 543, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbHHSf7cWURUk=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbHGJ4XaFCtvY=" + }, + "tail": { + "$ref": "AAAAAAFbHFy/tZgLHvQ=" + }, + "lineStyle": 1, + "points": "307:293;590:791", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbHHSf7cWVggM=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbHHSf7cWW5yo=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHHSf7cWXNhk=" + } + } + ] + }, + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFbHImRMcuZ6y8=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "utilities", + "ownedElements": [ + { + "_type": "UMLPackage", + "_id": "AAAAAAFbHInAVcvEP2c=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "name": "utilities", + "ownedElements": [ + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1K01c4qGfA=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "pointerContainer.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1K2dM5Tzpk=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "macros.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1Ku8c2vnbk=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "fastMath.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1Kyic4BM68=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "Class12", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KrWc2GeKg=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "string", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4Lrs9H3Qto=", + "_parent": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "source": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "target": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1Kncc00FC4=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "profiler", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4BsD9FeWAY=", + "_parent": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "source": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "target": { + "$ref": "AAAAAAFbH1K2dM5Tzpk=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4CBE9Fv0d4=", + "_parent": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "source": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "target": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KpWc1dlR0=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "fileSystem", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4Gy7dHE1fY=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "source": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "target": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KjOcziMM4=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "cuda.hu", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KhQcy5iag=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "openCv", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4E09tGR0l4=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "source": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "target": { + "$ref": "AAAAAAFbH1Ku8c2vnbk=" + }, + "visibility": "public" + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4E6fdGi9bg=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "source": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "target": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KlEc0Lyxc=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "enumClasses.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KdscyQvqc=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "errorAndLog", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4ING9HmZX0=", + "_parent": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "source": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "target": { + "$ref": "AAAAAAFbH1KlEc0Lyxc=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KarMxnJbU=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "cuda", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4Fr9NGzad4=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "source": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "target": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1KXxMw+M4c=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "check.hpp", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAFbH4Hu1NHV2CI=", + "_parent": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "source": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "target": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visibility": "public" + } + ], + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + }, + { + "_type": "UMLClass", + "_id": "AAAAAAFbH1Kwgc3Y4Vk=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "name": "headers.hpp", + "visibility": "public", + "isAbstract": false, + "isFinalSpecialization": false, + "isLeaf": false, + "isActive": false + } + ], + "visibility": "public" + } + ], + "visible": true, + "defaultDiagram": false, + "ownedViews": [ + { + "_type": "UMLPackageView", + "_id": "AAAAAAFbHInAVcvGkAM=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbHInAVsvHUjA=", + "_parent": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "model": { + "$ref": "AAAAAAFbHInAVcvEP2c=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbHInAVsvIu8A=", + "_parent": { + "$ref": "AAAAAAFbHInAVsvHUjA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -288, + "top": -144, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHInAVsvJ7wA=", + "_parent": { + "$ref": "AAAAAAFbHInAVsvHUjA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 5, + "top": 22, + "width": 663, + "height": 13, + "autoResize": false, + "underline": false, + "text": "utilities", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHInAVsvKUOk=", + "_parent": { + "$ref": "AAAAAAFbHInAVsvHUjA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -288, + "top": -144, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbHInAVsvLLGo=", + "_parent": { + "$ref": "AAAAAAFbHInAVsvHUjA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -288, + "top": -144, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 0, + "top": 15, + "width": 673, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbHInAVsvIu8A=" + }, + "nameLabel": { + "$ref": "AAAAAAFbHInAVsvJ7wA=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbHInAVsvKUOk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbHInAVsvLLGo=" + } + } + ], + "containedViews": [ + { + "$ref": "AAAAAAFbH1K01c4swqY=" + }, + { + "$ref": "AAAAAAFbH1K2dc5VSwA=" + }, + { + "$ref": "AAAAAAFbH1Ku8s2xHTc=" + }, + { + "$ref": "AAAAAAFbH1KrWs2IQv0=" + }, + { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + { + "$ref": "AAAAAAFbH1KpWc1fkwU=" + }, + { + "$ref": "AAAAAAFbH1KjOczkikk=" + }, + { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + { + "$ref": "AAAAAAFbH1KlEc0N0+0=" + }, + { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + { + "$ref": "AAAAAAFbH1KarMxpeN0=" + }, + { + "$ref": "AAAAAAFbH1KXx8xAegg=" + }, + { + "$ref": "AAAAAAFbH1Kwgs3av4U=" + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#e2e2e2", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 0, + "top": 0, + "width": 673, + "height": 417, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbHInAVsvHUjA=" + }, + "wordWrap": false + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1K01c4swqY=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1K01c4qGfA=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1K01s4tOrE=", + "_parent": { + "$ref": "AAAAAAFbH1K01c4swqY=" + }, + "model": { + "$ref": "AAAAAAFbH1K01c4qGfA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K01s4u+5Q=", + "_parent": { + "$ref": "AAAAAAFbH1K01s4tOrE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": -368, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K01s4vnZw=", + "_parent": { + "$ref": "AAAAAAFbH1K01s4tOrE=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 373, + "top": 343, + "width": 135, + "height": 13, + "autoResize": false, + "underline": false, + "text": "pointerContainer.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K01s4wkug=", + "_parent": { + "$ref": "AAAAAAFbH1K01s4tOrE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": -368, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K01s4xtAc=", + "_parent": { + "$ref": "AAAAAAFbH1K01s4tOrE=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 408, + "top": -368, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 368, + "top": 336, + "width": 145, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1K01s4u+5Q=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1K01s4vnZw=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1K01s4wkug=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1K01s4xtAc=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1K01s4yQdo=", + "_parent": { + "$ref": "AAAAAAFbH1K01c4swqY=" + }, + "model": { + "$ref": "AAAAAAFbH1K01c4qGfA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 368, + "top": 361, + "width": 145, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1K01s4zOB0=", + "_parent": { + "$ref": "AAAAAAFbH1K01c4swqY=" + }, + "model": { + "$ref": "AAAAAAFbH1K01c4qGfA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 368, + "top": 371, + "width": 145, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1K01s400Zk=", + "_parent": { + "$ref": "AAAAAAFbH1K01c4swqY=" + }, + "model": { + "$ref": "AAAAAAFbH1K01c4qGfA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 328, + "top": -224, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1K01s41rLU=", + "_parent": { + "$ref": "AAAAAAFbH1K01c4swqY=" + }, + "model": { + "$ref": "AAAAAAFbH1K01c4qGfA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 328, + "top": -224, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 368, + "top": 336, + "width": 145, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1K01s4tOrE=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1K01s4yQdo=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1K01s4zOB0=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1K01s400Zk=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1K01s41rLU=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1K2dc5VSwA=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1K2dM5Tzpk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1K2dc5WSt4=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5VSwA=" + }, + "model": { + "$ref": "AAAAAAFbH1K2dM5Tzpk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K2dc5X3Q8=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5WSt4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 360, + "top": -328, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K2dc5YIww=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5WSt4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 533, + "top": 343, + "width": 74, + "height": 13, + "autoResize": false, + "underline": false, + "text": "macros.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K2dc5ZFOY=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5WSt4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 360, + "top": -328, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1K2dc5a6Mg=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5WSt4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 360, + "top": -328, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 528, + "top": 336, + "width": 84, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1K2dc5X3Q8=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1K2dc5YIww=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1K2dc5ZFOY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1K2dc5a6Mg=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1K2dc5b8Z0=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5VSwA=" + }, + "model": { + "$ref": "AAAAAAFbH1K2dM5Tzpk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 528, + "top": 361, + "width": 84, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1K2dc5cwkQ=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5VSwA=" + }, + "model": { + "$ref": "AAAAAAFbH1K2dM5Tzpk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 528, + "top": 371, + "width": 84, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1K2ds5dEyY=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5VSwA=" + }, + "model": { + "$ref": "AAAAAAFbH1K2dM5Tzpk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": -184, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1K2ds5e3eI=", + "_parent": { + "$ref": "AAAAAAFbH1K2dc5VSwA=" + }, + "model": { + "$ref": "AAAAAAFbH1K2dM5Tzpk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": -184, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 528, + "top": 336, + "width": 84, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1K2dc5WSt4=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1K2dc5b8Z0=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1K2dc5cwkQ=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1K2ds5dEyY=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1K2ds5e3eI=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1Ku8s2xHTc=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1Ku8c2vnbk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1Ku8s2yIEA=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2xHTc=" + }, + "model": { + "$ref": "AAAAAAFbH1Ku8c2vnbk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Ku8s2zPBw=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2yIEA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 456, + "top": -200, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Ku8s20FrI=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2yIEA=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 269, + "top": 343, + "width": 81, + "height": 13, + "autoResize": false, + "underline": false, + "text": "fastMath.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Ku8s21Q+w=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2yIEA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 456, + "top": -200, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Ku8s22MnU=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2yIEA=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 456, + "top": -200, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 264, + "top": 336, + "width": 91, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1Ku8s2zPBw=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1Ku8s20FrI=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1Ku8s21Q+w=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1Ku8s22MnU=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1Ku8823brw=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2xHTc=" + }, + "model": { + "$ref": "AAAAAAFbH1Ku8c2vnbk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 264, + "top": 361, + "width": 91, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1Ku8824w58=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2xHTc=" + }, + "model": { + "$ref": "AAAAAAFbH1Ku8c2vnbk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 264, + "top": 371, + "width": 91, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1Ku88255K4=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2xHTc=" + }, + "model": { + "$ref": "AAAAAAFbH1Ku8c2vnbk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": -136, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1Ku8826veA=", + "_parent": { + "$ref": "AAAAAAFbH1Ku8s2xHTc=" + }, + "model": { + "$ref": "AAAAAAFbH1Ku8c2vnbk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 384, + "top": -136, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 264, + "top": 336, + "width": 91, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1Ku8s2yIEA=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1Ku8823brw=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1Ku8824w58=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1Ku88255K4=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1Ku8826veA=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KrWs2IQv0=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KrWs2JULk=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2IQv0=" + }, + "model": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KrWs2KKQY=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2JULk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -664, + "top": -208, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KrWs2Lzt0=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2JULk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 237, + "top": 159, + "width": 40, + "height": 13, + "autoResize": false, + "underline": false, + "text": "string", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KrWs2MG94=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2JULk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -664, + "top": -208, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KrWs2N77s=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2JULk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -664, + "top": -208, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": 152, + "width": 50, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KrWs2KKQY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KrWs2Lzt0=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KrWs2MG94=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KrWs2N77s=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KrWs2OxRg=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2IQv0=" + }, + "model": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": 177, + "width": 50, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KrWs2PXAg=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2IQv0=" + }, + "model": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": 187, + "width": 50, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1KrWs2QN9w=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2IQv0=" + }, + "model": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -264, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1KrWs2RYAs=", + "_parent": { + "$ref": "AAAAAAFbH1KrWs2IQv0=" + }, + "model": { + "$ref": "AAAAAAFbH1KrWc2GeKg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -264, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 232, + "top": 152, + "width": 50, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KrWs2JULk=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KrWs2OxRg=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KrWs2PXAg=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1KrWs2QN9w=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1KrWs2RYAs=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1Kncc02gVk=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1Kncs03gFU=", + "_parent": { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + "model": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kncs04bDY=", + "_parent": { + "$ref": "AAAAAAFbH1Kncs03gFU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1032, + "top": -208, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kncs05CB0=", + "_parent": { + "$ref": "AAAAAAFbH1Kncs03gFU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 549, + "top": 159, + "width": 46, + "height": 13, + "autoResize": false, + "underline": false, + "text": "profiler", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kncs06ibk=", + "_parent": { + "$ref": "AAAAAAFbH1Kncs03gFU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1032, + "top": -208, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kncs07GGE=", + "_parent": { + "$ref": "AAAAAAFbH1Kncs03gFU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 1032, + "top": -208, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 544, + "top": 152, + "width": 56, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1Kncs04bDY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1Kncs05CB0=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1Kncs06ibk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1Kncs07GGE=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1Kncs088O0=", + "_parent": { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + "model": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 544, + "top": 177, + "width": 56, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1Kncs09XXQ=", + "_parent": { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + "model": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 544, + "top": 187, + "width": 56, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1Kncs0+jHg=", + "_parent": { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + "model": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 680, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1Kncs0/RWM=", + "_parent": { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + "model": { + "$ref": "AAAAAAFbH1Kncc00FC4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 680, + "top": -104, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 544, + "top": 152, + "width": 56, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1Kncs03gFU=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1Kncs088O0=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1Kncs09XXQ=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1Kncs0+jHg=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1Kncs0/RWM=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KpWc1fkwU=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KpWc1g2ts=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1fkwU=" + }, + "model": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KpWc1hB04=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1g2ts=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 152, + "top": -248, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KpWs1iAvo=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1g2ts=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 325, + "top": 159, + "width": 66, + "height": 13, + "autoResize": false, + "underline": false, + "text": "fileSystem", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KpWs1jDbM=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1g2ts=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 152, + "top": -248, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KpWs1ka5Y=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1g2ts=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 152, + "top": -248, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 320, + "top": 152, + "width": 76, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KpWc1hB04=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KpWs1iAvo=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KpWs1jDbM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KpWs1ka5Y=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KpWs1l/fg=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1fkwU=" + }, + "model": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 320, + "top": 177, + "width": 76, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KpWs1m9eg=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1fkwU=" + }, + "model": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 320, + "top": 187, + "width": 76, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1KpWs1nI70=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1fkwU=" + }, + "model": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": -144, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1KpWs1ozx4=", + "_parent": { + "$ref": "AAAAAAFbH1KpWc1fkwU=" + }, + "model": { + "$ref": "AAAAAAFbH1KpWc1dlR0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 224, + "top": -144, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 320, + "top": 152, + "width": 76, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KpWc1g2ts=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KpWs1l/fg=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KpWs1m9eg=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1KpWs1nI70=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1KpWs1ozx4=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KjOczkikk=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KjOcziMM4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KjOczlmqY=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczkikk=" + }, + "model": { + "$ref": "AAAAAAFbH1KjOcziMM4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KjOszmAhY=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczlmqY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -344, + "top": 304, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KjOsznFaQ=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczlmqY=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 37, + "top": 343, + "width": 51, + "height": 13, + "autoResize": false, + "underline": false, + "text": "cuda.hu", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KjOszo2ZY=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczlmqY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -344, + "top": 304, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KjOszpCoA=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczlmqY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -344, + "top": 304, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 336, + "width": 61, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KjOszmAhY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KjOsznFaQ=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KjOszo2ZY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KjOszpCoA=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KjOszqmag=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczkikk=" + }, + "model": { + "$ref": "AAAAAAFbH1KjOcziMM4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 361, + "width": 61, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KjOszr+l4=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczkikk=" + }, + "model": { + "$ref": "AAAAAAFbH1KjOcziMM4=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 371, + "width": 61, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1KjOszscnw=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczkikk=" + }, + "model": { + "$ref": "AAAAAAFbH1KjOcziMM4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -32, + "top": 136, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1KjOsztBoE=", + "_parent": { + "$ref": "AAAAAAFbH1KjOczkikk=" + }, + "model": { + "$ref": "AAAAAAFbH1KjOcziMM4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -32, + "top": 136, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 32, + "top": 336, + "width": 61, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KjOczlmqY=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KjOszqmag=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KjOszr+l4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1KjOszscnw=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1KjOsztBoE=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KhQcy7aPg=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KhQcy8sZI=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + "model": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KhQcy9Ub8=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy8sZI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 744, + "top": 0, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KhQsy+VSE=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy8sZI=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 445, + "top": 159, + "width": 48, + "height": 13, + "autoResize": false, + "underline": false, + "text": "openCv", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KhQsy/1Dw=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy8sZI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 744, + "top": 0, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KhQszAxeA=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy8sZI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 744, + "top": 0, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 440, + "top": 152, + "width": 58, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KhQcy9Ub8=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KhQsy+VSE=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KhQsy/1Dw=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KhQszAxeA=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KhQszBvuw=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + "model": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 440, + "top": 177, + "width": 58, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KhQszCmpw=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + "model": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 440, + "top": 187, + "width": 58, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1KhQszDaqk=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + "model": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 552, + "top": 24, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1KhQszEXgU=", + "_parent": { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + "model": { + "$ref": "AAAAAAFbH1KhQcy5iag=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 552, + "top": 24, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 440, + "top": 152, + "width": 58, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KhQcy8sZI=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KhQszBvuw=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KhQszCmpw=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1KhQszDaqk=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1KhQszEXgU=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KlEc0N0+0=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KlEc0Lyxc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KlEs0Oktw=", + "_parent": { + "$ref": "AAAAAAFbH1KlEc0N0+0=" + }, + "model": { + "$ref": "AAAAAAFbH1KlEc0Lyxc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KlEs0PWMc=", + "_parent": { + "$ref": "AAAAAAFbH1KlEs0Oktw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -736, + "top": 312, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KlEs0Qdfk=", + "_parent": { + "$ref": "AAAAAAFbH1KlEs0Oktw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 125, + "top": 343, + "width": 111, + "height": 13, + "autoResize": false, + "underline": false, + "text": "enumClasses.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KlEs0RMAk=", + "_parent": { + "$ref": "AAAAAAFbH1KlEs0Oktw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -736, + "top": 312, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KlEs0SehU=", + "_parent": { + "$ref": "AAAAAAFbH1KlEs0Oktw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -736, + "top": 312, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": 336, + "width": 121, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KlEs0PWMc=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KlEs0Qdfk=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KlEs0RMAk=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KlEs0SehU=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KlEs0Tmvs=", + "_parent": { + "$ref": "AAAAAAFbH1KlEc0N0+0=" + }, + "model": { + "$ref": "AAAAAAFbH1KlEc0Lyxc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": 361, + "width": 121, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KlEs0UIgM=", + "_parent": { + "$ref": "AAAAAAFbH1KlEc0N0+0=" + }, + "model": { + "$ref": "AAAAAAFbH1KlEc0Lyxc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 120, + "top": 371, + "width": 121, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1KlEs0VZm8=", + "_parent": { + "$ref": "AAAAAAFbH1KlEc0N0+0=" + }, + "model": { + "$ref": "AAAAAAFbH1KlEc0Lyxc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -312, + "top": 144, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1KlEs0WULQ=", + "_parent": { + "$ref": "AAAAAAFbH1KlEc0N0+0=" + }, + "model": { + "$ref": "AAAAAAFbH1KlEc0Lyxc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -312, + "top": 144, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 120, + "top": 336, + "width": 121, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KlEs0Oktw=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KlEs0Tmvs=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KlEs0UIgM=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1KlEs0VZm8=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1KlEs0WULQ=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KdscySwQk=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KdscyT+vw=", + "_parent": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "model": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KdssyUZ6M=", + "_parent": { + "$ref": "AAAAAAFbH1KdscyT+vw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -328, + "top": 416, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KdssyVOFw=", + "_parent": { + "$ref": "AAAAAAFbH1KdscyT+vw=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 237, + "top": 263, + "width": 80, + "height": 13, + "autoResize": false, + "underline": false, + "text": "errorAndLog", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KdssyW6es=", + "_parent": { + "$ref": "AAAAAAFbH1KdscyT+vw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -328, + "top": 416, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KdssyXkAM=", + "_parent": { + "$ref": "AAAAAAFbH1KdscyT+vw=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -328, + "top": 416, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": 256, + "width": 90, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KdssyUZ6M=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KdssyVOFw=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KdssyW6es=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KdssyXkAM=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KdssyYCdk=", + "_parent": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "model": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": 281, + "width": 90, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KdssyZccY=", + "_parent": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "model": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 232, + "top": 291, + "width": 90, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1Kdssyakz4=", + "_parent": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "model": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -48, + "top": 240, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1Kdssyb1+w=", + "_parent": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "model": { + "$ref": "AAAAAAFbH1KdscyQvqc=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -48, + "top": 240, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 232, + "top": 256, + "width": 90, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KdscyT+vw=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KdssyYCdk=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KdssyZccY=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1Kdssyakz4=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1Kdssyb1+w=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KarMxpeN0=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KarMxqp8A=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxpeN0=" + }, + "model": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KarMxrrSo=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxqp8A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -112, + "top": 208, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KarMxsPz8=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxqp8A=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 141, + "top": 159, + "width": 40, + "height": 13, + "autoResize": false, + "underline": false, + "text": "cuda", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KarMxtygM=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxqp8A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -112, + "top": 208, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KarMxu1XY=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxqp8A=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -112, + "top": 208, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": 152, + "width": 50, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KarMxrrSo=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KarMxsPz8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KarMxtygM=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KarMxu1XY=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KarMxvqPk=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxpeN0=" + }, + "model": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": 177, + "width": 50, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KarMxwU/Y=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxpeN0=" + }, + "model": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 136, + "top": 187, + "width": 50, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1KarcxxIy8=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxpeN0=" + }, + "model": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 64, + "top": 128, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1KarcxymOo=", + "_parent": { + "$ref": "AAAAAAFbH1KarMxpeN0=" + }, + "model": { + "$ref": "AAAAAAFbH1KarMxnJbU=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 64, + "top": 128, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 136, + "top": 152, + "width": 50, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KarMxqp8A=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KarMxvqPk=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KarMxwU/Y=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1KarcxxIy8=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1KarcxymOo=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1KXx8xAegg=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1KXx8xBHCg=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xAegg=" + }, + "model": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KXyMxCMr8=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xBHCg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -32, + "top": 184, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KXyMxDUz4=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xBHCg=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 37, + "top": 159, + "width": 65, + "height": 13, + "autoResize": false, + "underline": false, + "text": "check.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KXyMxEMW0=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xBHCg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -32, + "top": 184, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1KXyMxFJIo=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xBHCg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -32, + "top": 184, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 152, + "width": 75, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1KXyMxCMr8=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1KXyMxDUz4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1KXyMxEMW0=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1KXyMxFJIo=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1KXyMxGVe4=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xAegg=" + }, + "model": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 177, + "width": 75, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1KXycxHW14=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xAegg=" + }, + "model": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 32, + "top": 187, + "width": 75, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1KXycxIQTQ=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xAegg=" + }, + "model": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 128, + "top": 120, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1KXycxJfUY=", + "_parent": { + "$ref": "AAAAAAFbH1KXx8xAegg=" + }, + "model": { + "$ref": "AAAAAAFbH1KXxMw+M4c=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 128, + "top": 120, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 32, + "top": 152, + "width": 75, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1KXx8xBHCg=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1KXyMxGVe4=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1KXycxHW14=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1KXycxIQTQ=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1KXycxJfUY=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAFbH1Kwgs3av4U=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH1Kwgc3Y4Vk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAFbH1Kwgs3b5Ko=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3av4U=" + }, + "model": { + "$ref": "AAAAAAFbH1Kwgc3Y4Vk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kwgs3cEHY=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3b5Ko=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -384, + "top": -704, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kwgs3dciw=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3b5Ko=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;1", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 45, + "top": 71, + "width": 79, + "height": 13, + "autoResize": false, + "underline": false, + "text": "headers.hpp", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kwgs3eO0Q=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3b5Ko=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -384, + "top": -704, + "width": 78, + "height": 13, + "autoResize": false, + "underline": false, + "text": "(from utilities)", + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "LabelView", + "_id": "AAAAAAFbH1Kwgs3f4dg=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3b5Ko=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -384, + "top": -704, + "width": 0, + "height": 13, + "autoResize": false, + "underline": false, + "horizontalAlignment": 1, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 64, + "width": 89, + "height": 25, + "autoResize": false, + "stereotypeLabel": { + "$ref": "AAAAAAFbH1Kwgs3cEHY=" + }, + "nameLabel": { + "$ref": "AAAAAAFbH1Kwgs3dciw=" + }, + "namespaceLabel": { + "$ref": "AAAAAAFbH1Kwgs3eO0Q=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH1Kwgs3f4dg=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAFbH1Kwgs3gldc=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3av4U=" + }, + "model": { + "$ref": "AAAAAAFbH1Kwgc3Y4Vk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 89, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAFbH1Kwgs3hYiQ=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3av4U=" + }, + "model": { + "$ref": "AAAAAAFbH1Kwgc3Y4Vk=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 40, + "top": 99, + "width": 89, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAFbH1Kwgs3iFWs=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3av4U=" + }, + "model": { + "$ref": "AAAAAAFbH1Kwgc3Y4Vk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -56, + "top": -384, + "width": 10, + "height": 10, + "autoResize": false + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAFbH1Kwgs3jwjk=", + "_parent": { + "$ref": "AAAAAAFbH1Kwgs3av4U=" + }, + "model": { + "$ref": "AAAAAAFbH1Kwgc3Y4Vk=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": -56, + "top": -384, + "width": 10, + "height": 10, + "autoResize": false + } + ], + "containerView": { + "$ref": "AAAAAAFbHInAVcvGkAM=" + }, + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": true, + "containerExtending": false, + "left": 40, + "top": 64, + "width": 89, + "height": 45, + "autoResize": false, + "stereotypeDisplay": "label", + "showVisibility": true, + "showNamespace": false, + "showProperty": true, + "showType": true, + "nameCompartment": { + "$ref": "AAAAAAFbH1Kwgs3b5Ko=" + }, + "wordWrap": false, + "suppressAttributes": false, + "suppressOperations": false, + "suppressReceptions": true, + "showMultiplicity": true, + "showOperationSignature": true, + "attributeCompartment": { + "$ref": "AAAAAAFbH1Kwgs3gldc=" + }, + "operationCompartment": { + "$ref": "AAAAAAFbH1Kwgs3hYiQ=" + }, + "receptionCompartment": { + "$ref": "AAAAAAFbH1Kwgs3iFWs=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAFbH1Kwgs3jwjk=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4BsENFgLzs=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4BsD9FeWAY=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4BsENFhdlY=", + "_parent": { + "$ref": "AAAAAAFbH4BsENFgLzs=" + }, + "model": { + "$ref": "AAAAAAFbH4BsD9FeWAY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 584, + "top": 260, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4BsENFgLzs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4BsENFiNmE=", + "_parent": { + "$ref": "AAAAAAFbH4BsENFgLzs=" + }, + "model": { + "$ref": "AAAAAAFbH4BsD9FeWAY=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 599, + "top": 260, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4BsENFgLzs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4BsEdFjFAA=", + "_parent": { + "$ref": "AAAAAAFbH4BsENFgLzs=" + }, + "model": { + "$ref": "AAAAAAFbH4BsD9FeWAY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 555, + "top": 259, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4BsENFgLzs=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1K2dc5VSwA=" + }, + "tail": { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + "lineStyle": 1, + "points": "571:197;569:335", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4BsENFhdlY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4BsENFiNmE=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4BsEdFjFAA=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4CBE9FxtfM=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4CBE9Fv0d4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4CBE9FyVXY=", + "_parent": { + "$ref": "AAAAAAFbH4CBE9FxtfM=" + }, + "model": { + "$ref": "AAAAAAFbH4CBE9Fv0d4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 437, + "top": 231, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4CBE9FxtfM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4CBE9Fzf68=", + "_parent": { + "$ref": "AAAAAAFbH4CBE9FxtfM=" + }, + "model": { + "$ref": "AAAAAAFbH4CBE9Fv0d4=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 442, + "top": 245, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4CBE9FxtfM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4CBE9F0nnM=", + "_parent": { + "$ref": "AAAAAAFbH4CBE9FxtfM=" + }, + "model": { + "$ref": "AAAAAAFbH4CBE9Fv0d4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 426, + "top": 202, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4CBE9FxtfM=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "tail": { + "$ref": "AAAAAAFbH1Kncc02gVk=" + }, + "lineStyle": 1, + "points": "543:184;322:262", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4CBE9FyVXY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4CBE9Fzf68=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4CBE9F0nnM=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4E0+NGTP+8=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4E09tGR0l4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4E0+NGUMlE=", + "_parent": { + "$ref": "AAAAAAFbH4E0+NGTP+8=" + }, + "model": { + "$ref": "AAAAAAFbH4E09tGR0l4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 399, + "top": 269, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4E0+NGTP+8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4E0+dGV+Ow=", + "_parent": { + "$ref": "AAAAAAFbH4E0+NGTP+8=" + }, + "model": { + "$ref": "AAAAAAFbH4E09tGR0l4=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 410, + "top": 279, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4E0+NGTP+8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4E0+dGWcts=", + "_parent": { + "$ref": "AAAAAAFbH4E0+NGTP+8=" + }, + "model": { + "$ref": "AAAAAAFbH4E09tGR0l4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 376, + "top": 250, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4E0+NGTP+8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1Ku8s2xHTc=" + }, + "tail": { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + "lineStyle": 1, + "points": "448:197;329:335", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4E0+NGUMlE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4E0+dGV+Ow=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4E0+dGWcts=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4E6fdGklB8=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4E6fdGi9bg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4E6fdGlbKw=", + "_parent": { + "$ref": "AAAAAAFbH4E6fdGklB8=" + }, + "model": { + "$ref": "AAAAAAFbH4E6fdGi9bg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 385, + "top": 229, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4E6fdGklB8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4E6ftGmO7g=", + "_parent": { + "$ref": "AAAAAAFbH4E6fdGklB8=" + }, + "model": { + "$ref": "AAAAAAFbH4E6fdGi9bg=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 392, + "top": 242, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4E6fdGklB8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4E6ftGnFJI=", + "_parent": { + "$ref": "AAAAAAFbH4E6fdGklB8=" + }, + "model": { + "$ref": "AAAAAAFbH4E6fdGi9bg=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 370, + "top": 202, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4E6fdGklB8=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "tail": { + "$ref": "AAAAAAFbH1KhQcy7aPg=" + }, + "lineStyle": 1, + "points": "439:190;318:255", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4E6fdGlbKw=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4E6ftGmO7g=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4E6ftGnFJI=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4Fr9NG1RIQ=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4Fr9NGzad4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Fr9dG2390=", + "_parent": { + "$ref": "AAAAAAFbH4Fr9NG1RIQ=" + }, + "model": { + "$ref": "AAAAAAFbH4Fr9NGzad4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 228, + "top": 208, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4Fr9NG1RIQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Fr9dG3O08=", + "_parent": { + "$ref": "AAAAAAFbH4Fr9NG1RIQ=" + }, + "model": { + "$ref": "AAAAAAFbH4Fr9NGzad4=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 238, + "top": 197, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4Fr9NG1RIQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Fr9dG4NUk=", + "_parent": { + "$ref": "AAAAAAFbH4Fr9NG1RIQ=" + }, + "model": { + "$ref": "AAAAAAFbH4Fr9NGzad4=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 207, + "top": 231, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4Fr9NG1RIQ=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "tail": { + "$ref": "AAAAAAFbH1KarMxpeN0=" + }, + "lineStyle": 1, + "points": "186:197;250:255", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4Fr9dG2390=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4Fr9dG3O08=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4Fr9dG4NUk=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4Gy7dHGzzo=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4Gy7dHE1fY=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Gy7dHHlHQ=", + "_parent": { + "$ref": "AAAAAAFbH4Gy7dHGzzo=" + }, + "model": { + "$ref": "AAAAAAFbH4Gy7dHE1fY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 327, + "top": 229, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4Gy7dHGzzo=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Gy7dHIT5k=", + "_parent": { + "$ref": "AAAAAAFbH4Gy7dHGzzo=" + }, + "model": { + "$ref": "AAAAAAFbH4Gy7dHE1fY=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 339, + "top": 238, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4Gy7dHGzzo=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Gy7dHJKCc=", + "_parent": { + "$ref": "AAAAAAFbH4Gy7dHGzzo=" + }, + "model": { + "$ref": "AAAAAAFbH4Gy7dHE1fY=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 304, + "top": 210, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4Gy7dHGzzo=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "tail": { + "$ref": "AAAAAAFbH1KpWc1fkwU=" + }, + "lineStyle": 1, + "points": "339:197;294:255", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4Gy7dHHlHQ=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4Gy7dHIT5k=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4Gy7dHJKCc=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4Hu1NHXdIA=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4Hu1NHV2CI=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Hu1NHYER0=", + "_parent": { + "$ref": "AAAAAAFbH4Hu1NHXdIA=" + }, + "model": { + "$ref": "AAAAAAFbH4Hu1NHV2CI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 175, + "top": 204, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4Hu1NHXdIA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Hu1dHZv38=", + "_parent": { + "$ref": "AAAAAAFbH4Hu1NHXdIA=" + }, + "model": { + "$ref": "AAAAAAFbH4Hu1NHV2CI=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 182, + "top": 191, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4Hu1NHXdIA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4Hu1dHaviE=", + "_parent": { + "$ref": "AAAAAAFbH4Hu1NHXdIA=" + }, + "model": { + "$ref": "AAAAAAFbH4Hu1NHV2CI=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 162, + "top": 231, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4Hu1NHXdIA=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "tail": { + "$ref": "AAAAAAFbH1KXx8xAegg=" + }, + "lineStyle": 1, + "points": "107:193;231:255", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4Hu1NHYER0=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4Hu1dHZv38=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4Hu1dHaviE=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4INHNHo6s4=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4ING9HmZX0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4INHNHpeYU=", + "_parent": { + "$ref": "AAAAAAFbH4INHNHo6s4=" + }, + "model": { + "$ref": "AAAAAAFbH4ING9HmZX0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 237, + "top": 323, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4INHNHo6s4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4INHNHq3gY=", + "_parent": { + "$ref": "AAAAAAFbH4INHNHo6s4=" + }, + "model": { + "$ref": "AAAAAAFbH4ING9HmZX0=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 247, + "top": 334, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4INHNHo6s4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4INHNHrebU=", + "_parent": { + "$ref": "AAAAAAFbH4INHNHo6s4=" + }, + "model": { + "$ref": "AAAAAAFbH4ING9HmZX0=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 218, + "top": 300, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4INHNHo6s4=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1KlEc0N0+0=" + }, + "tail": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "lineStyle": 1, + "points": "248:301;208:335", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4INHNHpeYU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4INHNHq3gY=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4INHNHrebU=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAFbH4LrtNH5rUE=", + "_parent": { + "$ref": "AAAAAAFbHImRMcuZ6y8=" + }, + "model": { + "$ref": "AAAAAAFbH4Lrs9H3Qto=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4LrtNH66bA=", + "_parent": { + "$ref": "AAAAAAFbH4LrtNH5rUE=" + }, + "model": { + "$ref": "AAAAAAFbH4Lrs9H3Qto=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 280, + "top": 216, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4LrtNH5rUE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4LrtNH7PTw=", + "_parent": { + "$ref": "AAAAAAFbH4LrtNH5rUE=" + }, + "model": { + "$ref": "AAAAAAFbH4Lrs9H3Qto=" + }, + "visible": null, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 295, + "top": 213, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFbH4LrtNH5rUE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFbH4LrtNH89TQ=", + "_parent": { + "$ref": "AAAAAAFbH4LrtNH5rUE=" + }, + "model": { + "$ref": "AAAAAAFbH4Lrs9H3Qto=" + }, + "visible": false, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "left": 251, + "top": 223, + "width": 0, + "height": 13, + "autoResize": false, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFbH4LrtNH5rUE=" + }, + "edgePosition": 1, + "underline": false, + "horizontalAlignment": 2, + "verticalAlignment": 5, + "wordWrap": false + } + ], + "visible": true, + "enabled": true, + "lineColor": "#000000", + "fillColor": "#ffffff", + "fontColor": "#000000", + "font": "Arial;13;0", + "showShadow": true, + "containerChangeable": false, + "containerExtending": false, + "head": { + "$ref": "AAAAAAFbH1KdscySwQk=" + }, + "tail": { + "$ref": "AAAAAAFbH1KrWs2IQv0=" + }, + "lineStyle": 1, + "points": "260:197;272:255", + "stereotypeDisplay": "label", + "showVisibility": true, + "showProperty": true, + "nameLabel": { + "$ref": "AAAAAAFbH4LrtNH66bA=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAFbH4LrtNH7PTw=" + }, + "propertyLabel": { + "$ref": "AAAAAAFbH4LrtNH89TQ=" + } + } + ] + } + ], + "visibility": "public" + } + ] +} \ No newline at end of file diff --git a/doc/UML/1_0_0rc1/UML.pdf b/doc/UML/1_0_0rc1/UML.pdf new file mode 100644 index 0000000000000000000000000000000000000000..60481c2103a7c6f802e66e54b078cd6ea3e14710 GIT binary patch literal 38863 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 literal 0 HcmV?d00001 diff --git a/doc/UML/1_0_0rc1/UML.png b/doc/UML/1_0_0rc1/UML.png new file mode 100644 index 0000000000000000000000000000000000000000..383c762c4fab5c3030fa91203544796730a46d05 GIT binary patch literal 103002 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 I?NsRh0#jVeO#lD@ literal 0 HcmV?d00001 diff --git a/doc/demo_overview.md b/doc/demo_overview.md new file mode 100644 index 00000000..909408cc --- /dev/null +++ b/doc/demo_overview.md @@ -0,0 +1,68 @@ +OpenPose Demo - Overview +==================================== + +Forget about the OpenPose library code, just compile the library and use the demo `./build/examples/openpose/rtpose.bin`. + +In order to learn how to use it, run `./build/examples/openpose/rtpose.bin --help` in your bash and read all the available flags (check only the flags for `examples/openpose/rtpose.cpp` itself, i.e. the section `Flags from examples/openpose/rtpose.cpp:`). We detail some of them in the following sections. + +## Quick Start +Check that the library is working properly by using any of the following commands. Note that `examples/media/video.avi` and `examples/media` exist, so you do not need to change the paths. + +1. Running on Video +``` +./build/examples/openpose/rtpose.bin --video examples/media/video.avi +``` + +2. Running on Webcam +``` +./build/examples/openpose/rtpose.bin +``` + +3. Running on Images +``` +./build/examples/openpose/rtpose.bin --image_dir examples/media/ +``` + +## Other Important Options +Please, in order to check all the real time pose demo options and their details, run `./build/examples/openpose/rtpose.bin --help`. We describe here some of the most important ones. + +`--video input.mp4`: Input video. If omitted, it will use the webcam. + +`--camera 3`: Choose webcam number (default: 0). If `--camera`, --image_dir` and `--write_video` are omitted, it is equivalent to use `--camera 0`. + +`--image_dir path_to_images/`: Run on all images (jpg, png, bmp, etc.) in `path_to_images/`. You can test the program with the image directory `examples/media/`. + +`--write_video path.avi`: Render images with this prefix: `path.avi`. You can test the program with the example video `examples/media/video.avi`. + +`--write_pose path/`: Output JSON, XML or YML files with the people pose data on the `path/` folder. + +`--process_real_time`: It might skip frames in order to keep the final output displaying frames on real time. + +`--no_display`: Display window not opened. Useful if there is no X server and/or to slightly speed up the processing if visual output is not required. + +`--num_gpu 2 --start_gpu 0`: Parallelize over this number of GPUs starting by the desired device id. Default is 1 and 0, respectively. + +`--num_scales 3 --scale_gap 0.15`: Use 3 scales, 1, (1-0.15), (1-0.15*2). Default is one scale. If you want to change the initial scale, you actually want to multiply your desired initial scale by the `net_resolution`. + +`--net_resolution 656x368 --resolution 1280x720`: For HD images and video (default values). + +`--net_resolution 496x368 --resolution 640x480`: For VGA images and video. + +`--model_pose MPI`: It will use MPI (15 body keypoints). Default: COCO (18 body keypoints). MPI is slightly faster. The variation `MPI_4_layers` sacrifies accuracy in order to further increase speed. + +`--logging_level 3`: Logging messages threshold, range [0,255]: 0 will output any message & 255 will output none. Current messages in the range [1-4], 1 for low priority messages and 4 for important ones. + +## Multiple Scales +Running at multiple scales might drastically slow down the speed, but it will increase the accuracy. Given the CNN input size (set with `net_resolution`), `num_scales` and `scale_gap` configure the number of scales to use and the gap between them, respectively. For instance, `--num_scales 3 --scale_gap 0.15` means using 3 scales at resolution: (1), (1-0.15) and (1-2*0.15) times the `net_resolution`. + +## Heat Maps Storing +The following command will save all the body part heat maps, background heat map and Part Affinity Fields (PAFs) in the folder `output_heatmaps_folder`. It will save them on PNG format. Instead of individually saving each of the 67 heatmaps (18 body parts + background + 2 x 19 PAFs) individually, the library concatenate them vertically into a huge (width x #heatmaps) x (height) matrix. The PAFs channels are multiplied by 2 because there is one heatmpa for the x-coordinates and one for the y-coordinates. The order is body parts + bkg + PAFs. It will follow the sequence on POSE_BODY_PART_MAPPING in [include/openpose/pose/poseParameters.hpp](../include/openpose/pose/poseParameters.hpp). +``` +./build/examples/openpose/rtpose.bin --video examples/media/video.avi --heatmaps_add_parts --heatmaps_add_bkg --heatmaps_add_PAFs --write_heatmaps output_heatmaps_folder/ +``` + +## Example +The following example runs the video `vid.mp4`, renders image frames on `output/result.avi`, and outputs JSON files as `output/%12d.json`, parallelizing over 2 GPUs: +``` +./build/examples/openpose/rtpose.bin --video examples/media/video.avi --num_gpu 2 --write_video output/result.avi --write_json output/ +``` diff --git a/doc/doc_autogeneration.doxygen b/doc/doc_autogeneration.doxygen new file mode 100644 index 00000000..5818a283 --- /dev/null +++ b/doc/doc_autogeneration.doxygen @@ -0,0 +1,2479 @@ +# Doxyfile 1.8.11 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = OpenPose + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 1.0.0rc1 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "OpenPose: A Real-Time Multi-Person Key-Point Detection And Multi-Threading C++ Library" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = /home/gines/Dropbox/Perceptual_Computing_Lab/cpm/cpm/doc/doxygen + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = /home/gines/Dropbox/Perceptual_Computing_Lab/cpm/cpm/include + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.as \ + *.js + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /

    + +

    + + + +## Main Modules +In order to use and/or slightly extend the OpenPose library, we try to explain the 2 main components on this section. [doc/UML/](../doc/UML/) contains the class diagram of all these modules. + +1. The basic module: `core`. + +2. The multi-threading module: `thread`. + +3. The multi-person key-point detection module: `pose`. + + +## Basic Module: `core` +### Array - The OpenPose Basic Raw Data Container +This template class implements a multidimensional data array. It is our basic data container, analogous to `cv::Mat` in OpenCV, Tensor in Torch and TensorFlow or Blob in Caffe. It wraps a `cv::Mat` and a `boost::shared_ptr`, both of them pointing to the same raw data. I.e. they both share the same memory, so we can read this data in both formats, while there is no performance impact. For instance, `op::Datum` has several `op::Array`, for instance the `op::Datum pose` with the pose data. + +#### Construction And Data allocation +There are 4 different ways to allocate the memory: + +1. The constructor `Array(const std::vector& size)`, which calls `reset(size)`. + +2. The constructor `Array(const int size)`, which calls `reset(size)`. + +3. The `reset(const std::vector& size)` function: It allocates the memory indicated for size. The allocated memory equals the product of all elements in the size vector. Internally, it is saved as a 1-D boost::shared_ptr. + +4. The `reset(const int size)` function: equivalent for 1-dimension data (i.e. vector). + +5. The `setFrom(const cv::Mat& cvMat)` function: It calls `reset()` and copies the data from `cvMat`. + +#### Data access +The data can be access as a raw pointer, shared pointer or `cv::Mat`. So given your `Array` array: + +1. Similar to the std::vector: `array[index]` or `array.at(index)`. If the code is in debug mode, they both has the same functionality. In release mode, the only difference is that the `at` function checks whether the index is within the limits of the data. + +2. As `const cv::Mat`: `array.getConstCvMat()`. We do not allow to directly modify the `cv::Mat`, since some operations might change the dimensional size of the data. If you want to do so, you can clone this `cv::Mat`, perform any desired operation, and copy it back to the array class with `setFrom()`. + +3. As raw pointer: `T* getPtr()` and `const T* const getConstPtr()`. Similar to std:: and boost::shared_ptr::get(). For instance, CUDA code usually requires raw pointers to access its data. + +#### Dimensionality Information +There are several functions to get information about the allocated data: + +1. `bool empty()`: Similar to `cv::Mat::empty()`. It checks whether internal data has been allocated. + +2. `std::vector getSize()`: It returns the size of each dimension. + +3. `int getSize(const int index)`: It returns the size of the `index` dimension. + +4. `size_t getNumberDimensions()`: It returns the number of dimensions (i.e. getSize().size()). + +5. `size_t getVolume()`: It returns the total internal number of T objects, i.e. the product of all dimensions size. + + +### Datum - The OpenPose Basic Piece of Information Between Threads +The `Datum` class has all the variables that our Workers need to share to each other. The user can inherit from `op::Datum` in order to add extra functionality (e.g. if he want to add new Workers and they require extra information between them). We highly recommend not to modify the `op::Datum` source code. Instead, just inherit it and tell the Workers and `ThreadManager` to use your inherited class. No changes are needed in the OpenPose source code for this task. +``` +UserDatum : public op::Datum {/* op::Datum + extra variables */} + +// Worker and ThreadManager example initialization +op::WGui> userGUI(/* constructor arguments */); +op::ThreadManager> userThreadManager; +``` + +Since `UserDatum` inherits from `op::Datum`, all the original OpenPose code will compile and run with your inherited version of `op::Datum`. + + + +## Multi-Threading Module - `thread` +### The ThreadManager Template Class +It manages and automates the multi-threading configuration and execution. The user just needs to add the desired Worker classes to be executed and the parallelization mode, and this class will take care of it. + +#### Constructor +Just call `op::ThreadManager threadManager`. + +#### Adding a Worker Sequence +There are 4 ways to add sequence of workers: + +1. `void add(const std::vector, unsigned long long, unsigned long long>>& threadWorkerQueues)`. + +2. `void add(const std::vector>& threadWorkerQueues)`. + +3. `void add(const unsigned long long threadId, const std::vector& tWorkers, const unsigned long long queueInId, const unsigned long long queueOutId)`. + +4. `void add(const unsigned long long threadId, const TWorker& tWorker, const unsigned long long queueInId, const unsigned long long queueOutId)`. + +#### Threading Configuration Modes +There are 3 basic configuration modes: single-threading, multi-threading and smart multi-threading (mix of single- and multi-threading): + +1. Single-threading, with 2 variations: + 1. Just call `threadManager.add(0, std::vector VECTOR_WITH_ALL_WORKERS, 0, 1);` + 2. Add the workers one by one, but keeping the same threadId: + ``` + auto threadId = 0; + auto queueIn = 0; + auto queueOut = 0; + threadManager.add(threadId, {wDatumProducer, wCvMatToOpInput}, queueIn++, queueOut++); // Thread 0, queues 0 -> 1 + threadManager.add(threadId, wPose, queueIn++, queueOut++); // Thread 0, queues 1 -> 2 + ``` + +2. Multi-threading: Just increase the thread id for each new sequence: + ``` + auto threadId = 0; + auto queueIn = 0; + auto queueOut = 0; + threadManager.add(threadId++, wDatumProducer, queueIn++, queueOut++); // Thread 0, queues 0 -> 1 + threadManager.add(threadId++, wCvMatToOpInput}, queueIn++, queueOut++); // Thread 1, queues 1 -> 2 + threadManager.add(threadId++, wPose, queueIn++, queueOut++); // Thread 2, queues 3 -> 3 + ``` + +3. Smart multi-threading: Some classes are much more faster than others (e.g. pose estimation takes ~100 ms while extracting frames from a video only ~10 ms). In addition, any machine has a limited number of threads. Therefore, the library allows the user to merge the faster threads in order to potentially speed up the code. Check the [real-time pose demo](../examples/openpose/rtpose.cpp) too see a more complete example. + ``` + auto threadId = 0; + auto queueIn = 0; + auto queueOut = 0; + threadManager.add(threadId++, {wDatumProducer, wCvMatToOpInput}, queueIn++, queueOut++); // Thread 0, queues 0 -> 1, 2 workers merged together into 1 thread + threadManager.add(threadId++, wPose, queueIn++, queueOut++); // Thread 1, queues 1 -> 2, 1 worker + ``` + +#### Thread Id: +In order to have X different threads, you just need X different thread ids in the `add()` function. There should not be any missing thread or queue id. I.e., when `start` is called, all the thread ids from 0 to max_thread_id must have been added with the `add()` function, as well as all queue ids from 0 to the maximum queue id introduced. + +The threads will be started following the thread id order (first the lowest id, last the highest one). In practice, thread id ordering might negatively affect the program execution by adding some lag. I.e., if the thread ids are assigned in complete opposite order to the temporal order of the Workers (e.g. first the GUI and lastly the webcam reader), then during the first few iterations the GUI Worker will have an empty queue until all other Workers have processed at least one frame. + +Within each thread, the Workers are executed in the order that they have been added to `ThreadManager` by the `add()` function. + +#### Queue Id: +In addition, each queue id is forced to be the input and output of at least 1 Worker sequence. Special cases are the queue id 0 (only forced to be input of >= 1 Workers) and max_queue_id (forced to be output of >=1 Workers). This prevent users from accidentally forgetting connecting some queue ids. + +Recursive queuing is allowed. E.g. a Worker might work from queue 0 to 1, another one from 1 to 2, and a third one from 2 to 1, creating a recursive queue/threading. However, the index 0 is reserved for the first queue, and the maximum index for the last one. + + +### The Worker Template Class - The Parent Class of All Workers +Classes starting by the letter `W` + upper case letter (e.g. `WGui`) directly or indirectly inherit from Worker. They can be directly added to the `ThreadManager` class so they can access and/or modify the data as well as be parallelized automatically. + +The easiest way to create your own Worker is to inherit Worker, and implement the work() function such us it just calls a wrapper to your desired functionality (check the source code of some of our basic Workers). Since the Worker classes are templates, they are always compiled. Therefore, including your desired functionality in a different file will let you compile it only once. Otherwise, it would be compiled any time that any code which uses your worker is compiled. + +All OpenPose Workers are templates, i.e. they are not only limited to work with the default std::vector. However, if you intend to use some of our Workers, your custom `TDatums` class (the one substituting std::vector) should implement the same variables and functions that those Workers use. The easiest solution is to inherit from `op::Datum` and extend its functionality. + + +### Creating New Workers +Users can directly implement their own `W` from Worker or any other sub-inherited Worker[...] class and add them to `ThreadManager`. For that, they just need to: inherit those classes from... + +1. Inherit from `Worker` and implement the functionality `work(T& tDatum)`, i.e. it will use and modify tDatum. + +2. Inherit from `WorkerProducer` and implement the functionality `T work()`, i.e. it will create and return tDatum. + +3. Inherit from `WorkerConsumer` and implement the functionality `work(const T& tDatum)`, i.e. it will use but will not modify tDatum. + +We suggest users to also start their inherited `Worker` classes with the `W` letter for code clarity, required if they want to send us a pull request. + + +### All Workers Wrap a Non-Worker Class +All Workers wrap and call a non-Worker non-template equivalent which actually performs their functionality. E.g. `WPoseExtractor` and `PoseExtractor`. In this way, threading and functionality are completely decoupled. This gives us the best of templates and normal classes: + +1. Templates allow us to use different classes, e.g. the user could use his own specific equivalent to `op::Datum`. However, they must be compiled any time that any function that uses them changes. + +2. Classes can be compiled only once, and later the algorithm just use them. However, they can only be used with specific arguments. + +By separating functionality and their `Worker` wrappers, we get the good of both points, eliminating the cons. In this way, the user is able to: + +1. Change `std::vector` for a custom class, implementing his own `Worker` templates, but using the already implemented functionality to create new custom `Worker` templates. + +2. Create a `Worker` which wraps several non-`Worker`s classes. + + + +## Multi-Person Key-Point Detection module - `pose` +The human body pose detection is wrapped into the `WPoseExtractor` worker and its equivalent non-template PoseExtractor. In addition, it can be rendered and/or blended into the original frame with `(W)PoseRenderer` class. + +### PoseExtractor Class +Currently, only `PoseExtractorCaffe` is implemented, which uses the Caffe framework. We might add other famous frameworks later (e.g. Torch or TensorFlow). If you compile our library with any other framework, please email us or make a pull request! We are really interested in adding any other Deep Net framework, and the code is mostly prepared for it. Just create the equivalent `PoseExtractorDesiredFramework` and make the pull request! + +#### Constructor +In order to be initialized, `PoseExtractorCaffe` has the following constructor and parameters: `PoseExtractorCaffe(const cv::Size& netInputSize, const cv::Size& netOutputSize, const cv::Size& outputSize, const int scaleNumber, const double scaleGap, const PoseModel poseModel, const std::string& modelsFolder, const int gpuId)`. + +1. `netInputSize` is the resolution of the first layer of the deep net. I.e., the frames given to this class must have that size. + +2. `netOutputSize` is the resolution of the last layer of the deep net. I.e., the resulting heatmaps will have this size. Currently, it must be set to the same size as `netInputSize`. + +3. `outputSize` is the final desired resolution to be used. The human pose key-point locations will be scaled to this output size. However, the heat-maps will have the `netOutputSize` size due to performance. + +4. `scaleNumber` and `scaleGap` specify the multi-scale parameters. Explained in the [README.md](../README.md), in the demo section. + +5. `poseModel` specifies the model to load (e.g. COCO or MPI). + +6. `modelsFolder` is the resolution of the last layer of the deep net. I.e., the resulting heat-maps will have this size. + +7. `gpuId` specifies the GPU where the deep net will run. To parallelize the process along the number of available GPUs, just create the class with the same number of parameters but a different GPU id. + +#### Detect Human Pose +In order to detect the human pose: + +1. First run the deep net over the desired target image, by using `forwardPass(const Array& inputNetData, const cv::Size& inputDataSize)`. `inputNetData` is the input image scaled to `netInputSize`, while `inputDataSize` indicates the original frame resolution before being rescaled to `netInputSize` (this is required given that we resize the images keeping the original aspect ratio). + +2. After, you can choose either to get: + 1. The people pose as a op::Array: `Array getPose()`. + 2. The scale used (keeping the aspect ratio) to rescale from `netOutputSize` to `outputSize`: `double getScaleNetToOutput()`. + 3. The people pose as a constant GPU float pointer (not implemented yet): `const float* getPoseGpuConstPtr()`. + 4. The heatmap data as a constant CPU or GPU float pointer: `const float* getHeatMapCpuConstPtr()` and `const float* getHeatMapGpuConstPtr()`. + +Due to performance reasons, we only copy the people pose data given by `getPose()`. However, we do not copy the heatmap and GPU pose values and just give you a raw pointer to them. Hence, you need to manually copy the data if you pretend to use it later, since we reuse that memory on each `forwardPass`. + +### PoseRenderer Class +After estimating the pose, you usually desired to visualize it. `PoseRenderer` does this work for you. + +#### Constructor +In order to be initialized, `PoseRenderer` has the following constructor and parameters: `PoseRenderer(const cv::Size& netOutputSize, const cv::Size& outputSize, const PoseModel poseModel, const std::shared_ptr& poseExtractor, const float alphaPose, const float alphaHeatmap)`. + +1. `netOutputSize`, `outputSize` and `poseModel` are the same as the ones used for `PoseExtractorCaffe`. + +2. `poseExtractor` is the pose extractor used previously. It is only used for heatmap and PAFs rendering, since the GPU data is not copied to `op::Datum` for performance purposes. If any of the heatmaps are gonna be rendered, `PoseRenderer` must be placed in the same thread as `PoseExtractor`. Otherwise, it will throw a runtime exception. + +3. `alphaPose` and `alphaHeatMap` controls the blending coefficient between original frame and rendered pose or heatmap/PAF respectively. A value `alphaPose = 1` will render the pose with no transparency at all, while `alphaPose = 0` will not be visible. In addition, `alphaHeatMap = 1` would only show the heatmap, while `alphaHeatMap = 0` would only show the original frame. + +#### Render Human Pose +In order to render the detected human pose, run `std::pair renderPose(Array& outputData, const Array& pose, const double scaleNetToOutput)`. + +1. `outputData` is the Array where the original image resized to `outputSize` is located. + +2. `pose` is given by `PoseExtractor::getPose()`. + +3. `scaleNetToOutput` is given by `PoseExtractor::getScaleNetToOutput()`. + +4. The resulting std::pair has the element rendered id, and its name. E.g. <0, "Nose"> or <19, "Part Affinity Fields">. diff --git a/doc/media/dance.gif b/doc/media/dance.gif new file mode 100644 index 0000000000000000000000000000000000000000..82fa0f967e94c909b0981223ea43a66fe5ceeb21 GIT binary patch literal 2086052 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

    u^cY~ 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Αq1oG_4+we1^5#7nb?TEjOcf@TAM-v|^(T#!az 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%0DjWjIKKpOfRn-Dz{1s?sBFm3Fw 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∾PesOPL6o;WEXK*CZ$`#RW9HwY;o~pUuGg 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

    q@RhLkcUCBFJj#4b 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 z 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%0DpCxh4xv%Mf>MF-Vr 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

    ONzyJViv0jw)<|^gN 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 urZ7mma|-`+qt$OKiIwp&ok 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�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

  2. s>6tw?L(Z%?;i0LLYhAxFCxi_3$1M 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

    f57mFmQaC>lKh=JYM_hW4c)P>;Fwg`*|3ec5 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