首页 技术 正文
技术 2022年11月15日
0 收藏 663 点赞 2,337 浏览 24664 个字

#include “stdafx.h”
#include <Windows.h>
#include <float.h>

DWORD Filter (LPEXCEPTION_POINTERS, LPDWORD);
double x = 1.0, y = 0.0;

int _tmain (int argc, LPTSTR argv[])
{
    DWORD eCategory, i = 0, ix, iy = 0;
    LPDWORD pNull = NULL;
    BOOL done = FALSE;
    unsigned int fpOld, fpNew, fpOldDummy;
    //__try { /* Try-Finally block. */
                        /* Save old control mask. */
    _controlfp_s (&fpOld, 0, 0);
                        /* Enable floating-point exceptions. */
    fpNew = fpOld & ~(EM_OVERFLOW | EM_UNDERFLOW | EM_INEXACT
            | EM_ZERODIVIDE | EM_DENORMAL | EM_INVALID);
                        /* Set new control mask. */
    _controlfp_s (&fpOldDummy, fpNew, MCW_EM);
    while (!done) __try {
        _tprintf (_T(“Enter exception type:\n”));
        _tprintf (_T(“1: Mem, 2: Int, 3: Flt 4: User 5: _leave 6: return\n”));
        _tscanf_s (_T(“%d”), &i);
        __try { /* Try-Except block. */
            switch (i) {
            case 1: /* Memory reference. */
                ix = *pNull;
                *pNull = 5;
                break;
            case 2: /* Integer arithmetic. */
                ix = ix / iy;
                break;
            case 3: /* floating-point exception. */
                x = x / y;
                _tprintf (_T(“x = %20e\n”), x);
                break;
            case 4: /* User generated exception. */
                //ReportException (_T(“Raising user exception.\n”), 1); //这个暂时没有写
                break;
            case 5: /* Use the _leave statement to terminate. */
                done = TRUE;
                __leave;
            case 6: /* Use the return statement to terminate. */
                return 1;
            default: done = TRUE;
            }
        } /* End of inner __try. */

__except (Filter (GetExceptionInformation (), &eCategory)){
            switch (eCategory) {
            case 0:    _tprintf (_T(“Unknown exception.\n”));
                break;
            case 1:    _tprintf (_T(“Memory ref exception.\n”));
                break;
            case 2:    _tprintf (_T(“Integer arithmetic exception.\n”));
                break;
            case 3:    
                 _tprintf (_T(“floating-point exception.\n”));
                break;
            case 10: _tprintf (_T(“User generated exception.\n”));
                break;
            default: _tprintf (_T(“Unknown exception.\n”));
                break;
            }
            _tprintf (_T(“End of handler.\n”));
        } /* End of inner __try __except block. */

//} /* End of exception generation loop. */

//return; /* Cause an abnormal termination. */

} /* End of outer __try __finally */
    __finally {
        BOOL AbTerm; /* Restore the old mask value. */
        _controlfp_s (&fpOldDummy, fpOld, MCW_EM);
        AbTerm = AbnormalTermination();
        _tprintf (_T(“Abnormal Termination?: %d\n”), AbTerm);
     }
    return 0;
}

static DWORD Filter (LPEXCEPTION_POINTERS pExP, LPDWORD eCategory)

/*    Categorize the exception and decide whether to continue execution or
    execute the handler or to continue the search for a handler that
    can process this exception type. The exception category is only used
    by the exception handler. */
{
    DWORD exCode;
    DWORD_PTR readWrite, virtAddr;
    exCode = pExP->ExceptionRecord->ExceptionCode;
    _tprintf (_T(“Filter. exCode: %x\n”), exCode);
    if ((0x20000000 & exCode) != 0) {
                /* User Exception. */
        *eCategory = 10;
        return EXCEPTION_EXECUTE_HANDLER;
    }

switch (exCode) {
        case EXCEPTION_ACCESS_VIOLATION:
                /* Determine whether it was a read, write, or execute
                    and give the virtual address. */
            readWrite =
                (DWORD)(pExP->ExceptionRecord->ExceptionInformation [0]);
            virtAddr =
                (DWORD)(pExP->ExceptionRecord->ExceptionInformation [1]);
            _tprintf
                (_T(“Access Violation. Read/Write/Execute: %d. Address: %x\n”),
                readWrite, virtAddr);
            *eCategory = 1;
            return EXCEPTION_EXECUTE_HANDLER;
        case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
            *eCategory = 1;
            return EXCEPTION_EXECUTE_HANDLER;
                    /* Integer arithmetic exception. Halt execution. */
        case EXCEPTION_INT_DIVIDE_BY_ZERO:
        case EXCEPTION_INT_OVERFLOW:
            *eCategory = 2;
            return EXCEPTION_EXECUTE_HANDLER;
                    /* Float exception. Attempt to continue execution. */
                    /* Return the maximum floating value. */
        case EXCEPTION_FLT_DIVIDE_BY_ZERO:
        case EXCEPTION_FLT_OVERFLOW:
            _tprintf (_T(“Flt Exception – Large result.\n”));
            *eCategory = 3;
            _clearfp();
            return EXCEPTION_EXECUTE_HANDLER;
        case EXCEPTION_FLT_DENORMAL_OPERAND:
        case EXCEPTION_FLT_INEXACT_RESULT:
        case EXCEPTION_FLT_INVALID_OPERATION:
        case EXCEPTION_FLT_STACK_CHECK:
            _tprintf (_T(“Flt Exception – Unknown result.\n”));
            *eCategory = 3;
            return EXCEPTION_CONTINUE_EXECUTION;
                    /* Return the minimum floating value. */
        case EXCEPTION_FLT_UNDERFLOW:
            _tprintf (_T(“Flt Exception – Small result.\n”));
            *eCategory = 3;
            return EXCEPTION_CONTINUE_EXECUTION;
        case EXCEPTION_DATATYPE_MISALIGNMENT:
            *eCategory = 4;
            return EXCEPTION_CONTINUE_SEARCH;
        case STATUS_NONCONTINUABLE_EXCEPTION:
            *eCategory = 5;
            return EXCEPTION_EXECUTE_HANDLER;
        case EXCEPTION_ILLEGAL_INSTRUCTION:
        case EXCEPTION_PRIV_INSTRUCTION:
            *eCategory = 6;
            return EXCEPTION_EXECUTE_HANDLER;
        case STATUS_NO_MEMORY:
            *eCategory = 7;
            return EXCEPTION_EXECUTE_HANDLER;
        default:
            *eCategory = 0;
            return EXCEPTION_CONTINUE_SEARCH;
    }
}

运行结果如下:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdAAAAGTCAIAAAAX89SVAAAgAElEQVR4nO2d2VsjR5ru9SeesdsuX51ebPfVjD1tu/+P09Mz7TN9etp2VVEsRbFvxSYh0C4W7Tsg0A5agaqyuy/OhYRIMpaMSGWmBLy/J556UpGRX7zflxmvEpGibJ5M05NuuFN1d6ruSTU86YY73fCkm55005tp3bVcy5tr+XJt/3EncNwJnnT2Tzr7p539k87BSevgpH1w3NzPNYLZy/1sfT9XP8zVD48bRyfNUL4VzrcjZ53I+VXkvBM560TO2uF8O3TaOjyu7+cugulaIF31p8q+RNmbKPWbL1H2Jcq+ZLm3kSh74kVPvOCJFTzxgjtWcMeKnnjRkyh7EmVvsuxNVn2pbqv50jV/+sKfvvCnL/2ZS3/60p++9KUv/em6P1v3Z5uBXDOQawVy7WCuFcy1ArmWP9f0Zxv+bNOfbfpzrcBxO3jcCZ50giftwHEneNzxH7f9ubY/2/RlGp503Z263EvU9uKV3VhlJ1rutcjtRrSyE604omV7pGwPl7a7LVTaCpW2w2V7tGKP1nbilzuJ+m6yuZduu7IdT+76tt0o2rXn+Fqxi9LcIi177cpeu7LXe/2Wud7LXO/eNmf62pm+3hlWS107UleOZMeR7DgSbXuivZ1obcebvZZQtdZ2onX3Mt7YitU3o5cb0Yv1SG09XHsbqqwfVd4eVdYOy2uH5bWD0upBcXW/uLJfWN4vLAcLy4HCcuB8qdv850v+syV/ftGfX/Lnl/z5xduX3bagbL78gu90wXe64Msv+vNLgfOlYGFlv7R6WF4LVddDtfXw5Xqk3m0bkfp65HI9fLEeqr0N1d6GqmuhytrhrarD8iqrHZRX90ur+8WVYGE5cL7kzy/6Tuc9x/Oe3JwrO7uXmd1Lz9xrmW6b3cvMurKzruysOzvnzs26c3OazZOb9xzPe066SS0Fzpf3iyv7pdWD8tpRZT1UXe/lVduIXGxGL7ei9e1YfTvecCSajkRrJ9neSbWd6fZuurObvtrLXHWvq+415jKz7WWv9zJXe+nObrq9m247021nqu1MtYjWlddvnd10Zy/d2Utf7aWv9jLXe+mrnVTbkWhtxxvr4Yvl/dKsJz/lzLzciv24evC3Be/30zv/NbX9X5Ob/zWx/pfxt399vfXjomt8fX9mJ7Hkza3un2+EKo5EYyfZ2km2dpLNnYSqtW7/bTkSTZs30/Kku57bcCsNN9PyZlqevuFme57rz7X9uU7guBM47gRO2sHjdiDXDh63ArlmIFv3Zy796YtAth7I1oPZxn6ueXDcPDxtHebbh/nOYb5zmG8fnrYPT1r73fHpmi9Z8SQr7njJHSu6ogVXtOiKFl2xkitWciuaK1baixZ3I4XdSGE3cr4bOXdGCs5IcTdS3IuW9mIlV7zsildciW6ruhM1d6LmTtbcyZrrtrmTF+7khTtVd6e6Od41d7rpTjXd6YY73XRnmp5My5NtebNtT691PJmWO93cSzX2ko3d5OVOvOaI1rYjle1weStc3gyVeu1IsXFU2jgqrR8Wu23ttq0flddD1c1wbTNyaY83HMnmTrLtTF8509dOwgS7nWTb4TfC0XZS1w5Fs6eu7clre/J6O3m9nbzeSl5122a/JSxs8auNeGcj1t6ItTeirfVocz3SfBtpvo00iNZ8e3/XWqS+Fr5cDdVWj2orh9Xlw8rSQXlpv7QYLC0GS4uBbivO+8/n/edzvrM539mct9vys93myc+68zPu026bdZ/OuE/euE/euI97zXU87TqeduWmXbnXe7027TqecZ/OevOzvsK8v7QYLC8eVJcPa8uHF922cnixfFhbPqwtHdaWDqqLB5XF/bJCUmkhUFS00m0rLgSK8/7CvP98zns268nPuk9n3MfTrtzUbnZqJz21k5raSU3upCZ3kpO9jdTkTnqytyvda87M1E5maidzt7GTudvba5kpZ2bKmX29m5t25d64T2bc+Vnf2by/sBAoLQZLi/vlpf3y0kFl+bCyclhdPaytHdXWQhdvI5frkfpGtLEZbW7Gmpvx1laitZ1s25Mde7JjT145kleO1FX3qjOpdd+h7cmOPdneTra2E62tRHMrTmt3b9Kt7UR7O9G2J3pSHcmr7URnM95ajzTWwvXFg+qMrzCxe/JiK/X3t5G/Lh58P+v985TzTxPb/zG++efxzT+/2vh+aut/5t0v3x5OORJz7tyi/2z1sLwRqW/GGpvR23fZ+22jV6vGRqRh82Vb3mzLk2l6Mg1PuunNND2Z3r2tR3GH68m2vNmWN9vy5dq+XNvfbd2bvt7tYdObaXjTl570pS996ct07yUbgVwzeNwKnrQVrRXINX2Zui996U3WXImKK17ejZWckYIzXHCGC85I8a5FS70WKTkjxZ1wwRE67zb7UcERKjjCxZ1wyRkp7URKO9GSM1p2xio70YozWtmJVZyx6k6/Ras70epOrOZMXDoTdWey7kzWd5P13WTTmWw4kw1nst7t3002nanmbrK1m2o5k01nsulMtpzJpjNRd8Tr9njdHrvcCtc2jirrR6X1o9Lbo9LaYWntoLR6UFo9vP33sLS6X1rdLy3vF5eDxeVgcSlQWAoUloLF5YPSymFl7ai2Frpcj9Q3Yo3NRHsr2dlOXm0nr+zJq21u25JppIFuKFv8av22vY11um2t26KdtWhn1aq2EmmvRNqr4dZKuLUSai6HGstHjaWj+tJRfSlU723Q2+Xi4cXiQW3hoDq/X5kLlucCpVl/acZXmvWVZn2lGV9pxld84z2f9p5Pu8/ut/xrd/61Kz/lOp3aO5ncO5naPZnaPZncPZ5w9tq4MzfuzL1yZl/tZF/tZMYc6W57tZMddx5P7p1MufLTnsIbX2nGX54LVOaCtW6bD9bmgtW5YHUuUJkNlGf95Rl/V0zpja/4xlec9hamu6q8BUXr6jyfdp+9duVf751O7Z1MOI/Hnbez21Nj9tTYdrLbXm4nb3u6naney26P/f7L7bsD7w3up7N7MrV3+tp9Nu09f+MrdtXO+kqz/tJcoDwfLC8EK4v71aWD2tLRxfLR5Uqovhqur3XfCKOt9VhrI9beiLc34p2NeGcj0dkw7U16I9HZSHQ24u2NeGsj1lqPtdajzfVo82208TbafTOuv43U30Yab6ON7q71aHM92lqPtjairY1oeyPW3oh11qPt1XBj6ai+cHDxxl+ecJ09dxz/fSP53yuRvywe/nnW/6fXrv8ztfunKeefpnb+Y8rx/fTu/yz5n6+HJ3dS066TOd/54n555ehyNXS5cnS5dFhb2q8sdd+o9itLB5Wlw+ryYW3l6HLl6HI5VLf5su2u5977ACHb8mTVL7vNl237su2u7fpybV+u5cu2vdmWN9P0ZhqeVN2TvvSk65503ZtpeDMNX7bpy7X8t82Xa/myLW+24U3XPcm6K1Hbi1ec0fJOpGgPF+zhgiNccISLjkjRES46IiVHtOSIlnciJUek5IiU7OHidriwHSpshYpboeJ2t/V+Zi9vR8rbkbI9UtlWt+pWr1W2o7Xt6IU9emmPXdpjdUes7kjU7fGGPd6wx+rb8bo91ui9TDTtiZY93rTHmtux7s+t9c1ofSN6uRG5WA9dvA1VVw8rKwfllZ6rlpaCpaX90tJBt9ylxf3SYrC4GCwuBgoLgcKCvzDvL8wHigvB8uJ+Zemwtnx0uRqqr0Yab6Ot9Wh7I9ZZj7U3Yh11i/faOr/F7rW3ZIt23kZ7Tqo005Veay9Hem2p28LtpXB70YIWai+EWguh1sJRc/6ouXDUWDhszB/W5w96be6wPndYnztQtstum92/mN2vzQZrs4HqjL/yxl9+4ytNe0vT3qKyvfYWpjznk57zSffZpKvf8hOu/MRefmLvdHzvdHz39NXu6Svn6ZjzdGzneGzn+OXO8UtH7oU9+8Keeb6deb6dfr6V/mkz9dNm6vlW+oU9+3LnZMx5Or53NukuTHlL077yG19l2leZ9lXe+KrdjWlv+bW3/Npbeu0tvvYWp7yFKXdhyl2YdJ9PuM4mXPkJ15mi5bttfPd0fPd03Hn6ynk8tpN76ci+sGdebKefb6Wfb6Web6V+2kr9tJV63mvp55vp55v9l6nnW+nnW+nnmyll+2kz+dNm8qcNRdtM/rSZfL6Ver6VeWHPvnQcjzlPX+2eTuzlJ93nXZ1TnsJrb2HaW5z2lt74yjP+8mygMhuszu3X5g8uFw4vF4/qS0f15VBjOdxciTRXI63VaGst2l6LtteivavO8HYbv7Uaba1Gm6uR5mqkuRJprIQbK+HGcri+HKovh+rL4fpyuN7tXAk3VsLNlXBzNdxcDbdWI63VSGsl3Fw8qs8dXL4J1Ca95Ze7+R+2c/+9nvp+JfaXpfB/Lhz9eTb451n/f876/jLr+37W+98Lgb+vhl5sJSacuWl3fsZbnAtUFg8uFg8v5oPVWX9pxlt44z2f8Z7PeAsz3sKsvzQbqMwHqwsHlwsHl7aeb2bb3myr57zZtjfX9uba3q6TKlr3p+x+82XbvU8bst2fyhuudN2dbvR+ME83PemWp3un3D8q0+r+bO5KNfZS9d3EhTNe3YlV7JGyPVy0h0v2cKn7uac9XLZHyvZoxR6p2KMVe6TcbV173QqXtrobofJWuNsq2+HKVqSyHa5shiub4cpWuLIZqm7evtwIVTbC3R/kLzYjF1v9D6Rija14czvW3Io1tmKNrVh9K9bYijW3Yq3NWHMz1tyMNtaj9Y3bT+Xehi/WQrXVo9rq0e0PsMHyQrC8GCwvBCuKjcpCsDwfLM8HSvOB0lygNOe/bcHy/H51Yb+2cHCxdFRfDjdWwq3VSLvXou01hS1q32ZG7rUVzRbuLN+2pXBnKdRZCnUWQ53FUGfhqN1v89122J4/bM+Z3GYPW3ftoDlz0Jw9aMzuN2b2GzPB+kywPhO8fBO8fLN/+SbYbxfdNh24mA7Upv3V1/7qa19lyleZ8pYnveVJb2nSW5rqNk9p0lOa9BQn3MUJd3HC1W+FV67zV3v9dja2mx/bzY85T8ecpy8dJy8cJy/suef27I/27I/bmR+20j9spX/YTP19I/XDZurH7cxz+/HLndMxZ35s9/yVqzjhKU96K5Oe8oSquUvj3eYqjrsKr/YKr3bPX+2eje2ejTnz99tpb/ad05c7Jy8dJy8dxy/txy/suZ/s2Z+2Mz9uZ37cTv+4db9tp3/s7lL1b6Z/3Ez9oGwbvfb3jaSipX7YSv+0nXluz72wH79wnIztnI515e2evdo9H987H98rTLgKk67ipLs05Sm/9panfZU3/tpMoDYbvJgLXs7v1+cPGguHzcWj1lKotRxqL4fby+HOSljgmpRrd3cGy5H2cri11G2h5lKouRhqLh41Fo/qC0f1hcP6wlF98ai+eNS4bc3Fo+bSUXPpqLUUai2FWotHzbmD+pvgxZSv9spdfuE8/8F+/NeNzPdrqe9XE39Zif9lOfr9cuT/Lkf+uhL+22r4h7exF9upMUdu0nU27S2+8ZdnA9W5/dpcsPbGV37tKUzs5cd3Tya6b1qu/JT7fNpbeuMvzwZrs8ELm/+44891CvUP5ea9VhJvjW57XyRaqdc+lBsfyo27kaXG+1LjXbH+rnj5rnB5U7i4KVxcn6vbDaPdjTlTt5vbdp2/azfddqrYzl/c5C/esdv72/Yuf/HutNduehu1m5Nuq94c37Zc9ZrastWbbOX6XqteZ6s3uepN999c7d3xxft+O7n4oGrH5rScstU+5Gofsr32Xt2q77PV95khtHe9VnmXqdykKzfp6k26wmnX6fJ1itbu91+lSuqW7LVOsthJFDuJYjtRbCcK7XihHT9vxc9b8fNm/LwZO2vEzhrRs0Y034jmG7GzRvy8FT9vxwvtRLGdKHaSpatU6VoRkGydZLGTLHYShXa3xdWtddfOla0ZP2/GzpuxM35r8Fq+pzyar99vjWh3wHkzft7sT9oX2WvFdrLYSZY6qVKnW7d0+Tpdvs5UbjKVm0z1Jlu9yVbfZWvvcrX3vXbxPmfaNXx88aG7anL91pv3Xa72Llt7dytG2d7fbx9ytffZ6rtM9SZVuUmWrhPFTrzQjp63ImfN6FkzetavTCN+3oifNxLnzWSxnSp1MuXrTOUmW+lmfZOt3KTLV6lSO1loJQrNZKGVLLSSxVaq2E6XOt0qZas3Nv/xVaHx4f+9mP7s99/da19+99mX3z273z77sj/gj7ftbvyzL7979uW3z778lhhMjO+O/OLbT7/45tPPv/nk8z988vkfPvndv9+1bk+vffPp591hzPapsn3Ba8++6Cmk5aJq3332+9uk+hF6s/zhEx1NnVpP7a0kRd2eZFNcad/etS8UxWe1zyUacfGInrhf/e7rX/221z7+7dcf//brX/3269sT2lVydxL7p/LZIHkNnCxrPGX5fHGbwsO5GgVr+6y7xL5QDLh/7KdffPvJ59/86vNvPv7dHz767b//y2++/l+//qrb/uXXX/3Lr7/66DdfffSbrz+6f9LvWc3n33zy+R9+9buvP/7NVx/9+l8/+t//+tGvu+3fPv7NV3eHfPGNzX98VW79/Nnv/2gDAABgKv7jTrn1AYYLAACm4z/u4A4XAACsAB8pAACARQRuDddBY9jqRhFUBgCgk4DiDldlJSK28lith5OXqYb7WOsJALDZ7n+kIGslj/Veb1h5WTAvfnYBYJiwDFe5Qf2QgfP5A7/TJuwsnDjUl9TxmnFUu2Tz0sxXR7KaOXL0c3RSBwMArIM0XKoBkdvkS/HxIstePA5/vKB+zjCOMH3zCkbWN4WOeQEAFhE4vRG5wyW3yZfKTiXkLtaxgnFUoThiRPRopkkNKBVEM1mRFAS3+XUDAAyTwOlNhfsZLsc4NMeL75IdzHdPHXrE/ZEzr76AUilobsvWDQBgHcHTm0rrF85TChzjoC5ykfEiGDWvoB5x85INworDSZkc71DAn5o/LxkEAGAdwfxNpf0L5zlcHQuY4w5Sq13TZajyBPWo+mXz0pyXHCCVMmevpn5WUgCAIdM33GELGQIPy5JYbwDDUQMA0MGTNdyHchuoeQ8+4voBAHcoP8MFAABgIoGTu6cUAAAAmEjg5Bp/LQwAAKwAf54RAAAsAoYLAAAWEThRG+6Av/XmPI5qNkb94n5YDwAYMq+DhoHxybkGP3ZYF4lJ847gAySjpufpovoM10C3sll7mo1dwLIRBs/RQP38UNTgOqYb8OQO13Af00SaDFHJiFRghAieXFeI//GBHCa+uhw0jFbNnJfcVqnSEc3YwfoCSulXjdQ0XB36WSdX9jrRLUA3/LkMvGKtTEq3DFNX6IhUYLQIntx7DpdVI9mFpILcxRk/YEbULGSDcyKMvn5VzfnBdejvDxtEp0okSxI1OHUwVQ9/XtZes0+ieF7UUPpOFmeveBxqnfnnRbWLv03GpwZ5wOyfChmuOMqq2RiLk7pNPZeDCDA2CEu/UTMqQxlSAVYofmqCwXUcKBhHdttGXGN8SfziGAjnImFNPWAdODIMyZdaZ5HzQg3CGS8Y/0Gyn3+n/GqvgWdF9dJBQA4YXIBRp4SMI3thGTu77sP5V7yO6cjzqE+qbD05kyp7dOSiQ7yO4CL6WTUht8WLz6mzvoxUddbMS1wPJ74h+kcCQcMVPLtkBGrhqOP5w0TgHCuunxVK80KRFKtndsFZ+CP5qUkxiE7NhSRe5KHolw3OCsuqg8i2rAwzrivZ88LRIzv+QTIUw6Vuk8N0zzvghcWJQN1LzXGI+vkjOalJlWhAnax8ZbdlZRtYZ/GJOPNq5iUYR0TGgPlSR4qcl0HOo2y+o04wf1Npq59SGCQxzeuDX2XqSxExRukX0UnGZ00qJcY88eQu3XU2UC0rglS/DhmG1FkwvnIWzbxsMh4krt+QfDlBRHaxOlUbrMHk9kMleNoz3GELofDQ6/vQ9QMODgbD1gVGm+DpNf5aGAAAWEH/iw/DFgIAAI8dGC4AAFhE8PSJ/hc7AABgNftP9f80AwAAq4HhAgCARZCGi0dbAADAFA7yN1VD/5YCAAAAOn3DxcPbAABgLgdnuMMFAABLODx7B8MFAAArgOECAIBFwHABAMAijs7f1TowXAAAMJ+j83fVjvopBdguAAAYz9H5jfIOFwAAgFnAcAEAwCJC9z/DBQAAYBbh8/e1zj9guAAAYDowXAAAsIhw4T0+UgAAACuIFN5dwHABAMAC+oar+X8+s3oe9EO7OlKwPmXWSRlKv4PAjJQBeJxEiu8urnp3uOS6Uo5krS5q/4NYh/x8BQ80G6oJjk4/AECCaPHuIwVyjYlEELfmkYJlKDqO1Rw5SDXIdwXS+IbVDwCQI8q+w+2PcSggI1Cdi3oIv5MMJQsnPvmSMxcrX6m8VLsG16/aO/R+AIA0sdL7y6t/KA2X5RGslUb2ax6uGkCubR2JiMcXT2eQbaP0K8VTcxlKfx99yQLwRCENt9tPriXWAiP7qSMdBOQuziyacOKrphBPR3x7cA/i6yHrM6x+Ec0AADqxMt1wSfiOoDmSE9yQdSsi3sE2XKqzyG6LzCurXxWBNESL+0U0AwDoxEsfzDNc1opVHcKZV7XsOYjE58wrpVkwL0P0y+ZiZb9gagCAHonyh8vrf/D/114HAb/fxjAa/kjq0uXs4gymOgXnpaAkZSerDiI6pfTbiDqPVP8g+QLw5EiWP9Sv8bcUAADAfGC4AABgEakKDBcAACwhVfnQgOECAIAFpGG4AABgDTBcAACwiEz1Q+MGhgsAAOajMtzRf7iSfACWM0AklFEpW1w6B4FRAUWGsV6KH2gUZB1G/AIWx8CkOBFY8Ue/mA/ypGdrd4b7INQr5XEuFH0BRQYbEscQNEsxSEDqXnKM+LyskyWpkXIsKUl3TN0azIisr86sUJwIrF2jbAUG1sdSsrWfmzd33zTrdo6yeotdRt9Ia7CyFP1dhhvB4McO67zomJdvfKzg4keJxOGPEek3D+vrYzW5C23DdShQHmt2PxUDdVKDsMY7CPTNywqiA1YpZOugKYk1kfKl8nCR+jgINHVS9ZDyRMaI14eVuz79/LyoOWpWQzCOjXteNPuVLwXzle23DaM+VnN88XOLa7jD2mahOV7VKTteMJTU4EHy5eC4j3h8qfGsvPr/koerJLGCa04nosfGqAOpRzx3wfro0y8Ip8764gy4bWOcXwPj68trwPpYzcnlPcNV0h3AyoTfT8bREYqKpjbOpCLjyRQEdQrOK1JbQfqHkzE5+lX9fD2cHs7UsqHITqp+/iH9bWo0zfjUyNQEB9EvjiqC7lAi+Yps2xjnl5OvSEl1Y1R9rOb08uf2O9E7XCW6qzngadDUxjnrA47nKxSMI1JbQaihRMorqEcz1CD1YY3nBBFJjbpLKilOv0gokSKInHTVSMGjWHEG32Zp0BQmVXDr62M1p3UJw7Vym4NDAWsv9aXIFcMZ3385SBy+Hk5eJNRQRtWfI4NVB75yVrIG6um/HDC+oAap+MoeTpU4SZEvZeMYla9J8XXnxdI2imgark1RBVZ1TOrnwDn3ZDSReanjOaXQPS85gBpKsALUUJr5ssYr+zka+EHIA1n1YeXLGsmvg+oo6kSC9WH1s8IKxpGFVTTWvJwg5LZN/npgTaq7nubVZ3TJ3xrusIUAAMBj5wyGCwAA1nDe+LnzHoYLAADmA8MFAACLKDZhuAAAYAnF5s9XMFwAALCAUqtruN8NWwgAADx2yq1frj7887Pff0d9Rm9osozmgT2sR+Oh6wcA2MqtX64//KNvuKqHnIcsziCoT3ePJhx5oy8eAKBBtf3L9Yd/fvblneE+vC9vaPFQcnkoOgEAOqkIGC7VgjnuzO+0Mb5iSG5T0YxDRpA1Mo5+jmbWvKwDVbscBIJ5cQZLZQ0AMJ3uHe6zL+8+w3Xc9zLSFFTbguPJMfywHKhx+AHFDUhcP3+8SByp3HUEEUwZAGAR1fbPN/cNtwtpairPUg4gx6vGKF+KexYLahyWTsGYZHAyjmpqfnBBPeK56wgilTgAwHRqYoZLHqgcwBov5U38MazxmsEFYwoO5runDj3iuXPm1RcQAGA1tfYv4oZL3XYMbLg2hZGJGAR1mL55+cF110RcD6uk/AT1zWtT1JldAACAaVx0une432quZ76LCY7nr3YRL+DE0T2veBzqS9YUIv2sXZzx/HnJAZrxAQAWcdHp3uF+O2whFHd4rDydTAEA97jo/PLu538++3JoX+1l3es9Vp5avgCAOy6vhmy4AADwVKhf/+Pdz//8DIYLAABmU2n3/pbCsIUAAMBjZz9/U2n/AsMFAADTeRtrn15+gOECAIDprMU6JxcflH+eUfbX6Ib8zl08iOG/4mc9yooHCQAABnNruH+00Z7tFwwyoDf1D5fyXN3TCQaE4QIADGb19g7XNoDFGGW41kwnGBCGCwAwmNUo3XAdtO+POrhfOdWcix9HXDPrjpgaX7d+/niyU0ciAICnBWm4Kk+R3WbBP5blepxQHI8zRD/VWPm7pLIAADw5VqOdY4E7XPFtFiKGJQhfhsr1jDVcMr5N4A0AAABsNpttJUI33D4PxXAHMVlxw9XUAwAATDiGq8/IWDwmw5X1YtgxAMBms9lWIu1j7nO4mkZDDmOhiszpFAlCSqLq0aGfWgd9+qVSAwA8cpbD7eOLD/jjNQAAYDo9w8VXewEAwGyWIzBcAACwBBguAABYxLLiKQUAAAAmstL74sMfhy0EAAAeOyuxKxguAABYwUrsWmm45EOjI/gkqdSju6yHak1SZVJwQ+IbVQRr6gnAI2Qlfn18+bPy7+GyPHco8jiIG67t/vcghqtHM4hJ8ZWHDxJKdexoXhsAjCir8ZuTy58/+/0fOQtyNBeVlKrRTEGFZSJZ76mCb2Cq62T0CwvAqCBuuKrVRe0kd5GdNsai5RxCXdJSS5062FSdunddZyoAABkJSURBVOsjXgfZeUVKQY5nHc6fBQBAQfYOV7XeOAM4cZQLVblBHkKNw+lkQQ42XKdI0fiq+BkJxufPK1U0vgzO+QIA0FmN35xc3Bmukv4Y6hrWseCVkakb1MNJPdTgfFjWw8lXXCcnWX4dOIdopsCKz5lXcwoRVMoHDwjAE2I1ds9wu50ia1vHgqcuTmVAkfj8aCykrEdKJ+soo+pjYHwOjltkR0qdBQCeOquxaxjuIDpZRw1SH5F8dcRnRe73i9RTpFYAADor0etjruGqXEDcOEQ6WceqDmH1C9oEf2oDdfIFk1Pwd1ElseblCONkoQ+qGACANstRfNMMAAAsAYYLAAAWAcMFAACLgOECAIBFLN/+0mzYQgAA4LGzHIPhAgCAJazEbmC4AABgBX3DJR/2xCOWVFAZAIBOVuJ3d7jkI/Sahz9W6+HkZarhPtZ6AgBsNq7havJY7/WGlZcF8+JnFwCGifIzXNW3QvsbnK+Qau4iO23CzsKJQ31JHa8ZR7VLNi/NfHUkq5kjRz9HJ3UwAMA6SMOlGhC5Tb4UHy+y7MXj8McL6ucM4wjTN69gZH1T6JgXAGARysfCVGu1vyFiWKpOJeQu1rGCcVShOGJE9GimSQ0oFUQzWZEUBLf5dQMADJPl6N3/2ktdnxzj0Bwvvkt2MN89degR90fOvPoCSqWguS1bNwCAdSi/2ktaiU3McAWNRmqpGzWvoB5x85INworDSZkc71DAn5o/LxkEAGAdS5Gr3MUHznO4OhYwxx2kVrumy1DlCepR9cvmpTkvOUAqZc5eTf2spAAAQ2Yp0sldfPjs998NW8gQeFiWxHoDGI4aAIAOFsPtXO3DZ18+OcN9KLeBmvfgI64fAHDHwlEzV3v/7Mtvhy0EAAAeO3MH9Wz13bMvYLgAAGAyM4FqpnLz6effDFsIAAA8dqa8xXT5+pPP/zBsIQAA8NgZ382nip1PfvfvwxYCAACPnZf2bLLQ/tVvv+73DPhbb87jqGZj1C/uh/UAgCHzOmgYGJ+ca/Bjh3WRmDTvCD5AMmp6ni4/bSYT562Pf/tV96WBbmWz9jQbu4BlIwyeo4H6+aGowXVMN+DJHa7hPqaJNBmikhGpwAjx9/VY/Kzx0W/+jf+2LL66HDSMVs2cl9xWqdIRzdjB+gJK6VeN1DRcHfpZJ1f2OtEtQDf8uQy8Yq1MSrcMU1foiFRgtPiftWj8rPHRr/+t+5JVI9mFpILcxRk/YEbULGSDcyKMvn5VzfnBdejvDxtEp0okSxI1OHUwVQ9/XtZes0+ieF7UUPpOFmeveBxqnfnnRbWLv03GpwZ5wPxtNRLLaxuuOMqq2RiLk7pNPZeDCDA2CEu/UTMqQxlSAVYofmqCwXUcKBhHdttGXGN8SfziGAjnImFNPWAdODIMyZdaZ5HzQg3CGS8Y/0Fya7j/2n1p4FlRvXQQkAMGF2DUKSHjyF5Yxs6u+3D+Fa9jOvI86pMqW0/OpMoeHbnoEK8juIh+Vk3IbfHic+qsLyNVnTXzEtfDiW+I/pHgb2uRmAkfKZAv+ZFtRhgu51hx/axQmheKpFg9swvOwh/JT02KQXRqLiTxIg9Fv2xwVlhWHUS2ZWWYcV3JnheOHtnxD5K/v412f2nWfcm/LESyZRVR8wIih+med8ALixOBupea4xD180dyUpMq0YA6WfnKbsvKNrDO4hNx5tXMSzCOiIwB86WOFDkvg5xH2XxHnR83EvHz5se/+cpBoC+g5vXBrzL1pYgYo/SL6CTjsyaVEmOeeHKX7jobqJYVQapfhwxD6iwYXzmLZl42GQ8S129IvpwgIrtYnaoN1mBy+6Hy01Y6UWh9rPjiw+jw0Ov70PUDDg4Gw9YFRpuXjuNk8d43zQAAAJjC+F4+VcLfUgAAAPOZdBfSpSv8tTAAADCdKU8pXcKfZwQAAPOZ8pTT5ZtP8AfIAQDAbKY8ZdzhAgCAFUy67z5SwNMtAABgIhPuUqp0/cnnf3hsDxgDAMCoMeEqpkrXn/wOhgsAACYz7ip0DVfZCcMFAADjGd8rpEpXSsOF2wIAgCmoDBduCwAAZjG+V0gVe4YLtwUAABPpGy5+aQYAAOaiMlw8igsAAGah/EgBAACAicBwAQDAImC4AABgEeN7hVRR/cUHAAAAxjOxVyS/aQYAAMB4Jl29P14zbCEAAPDYmXSXU6UbGC4AAJjOlLfa/R8fNP/PZ1bPg35oV0cK1qfMOilW9nOEGZIjAE+CaX8tU7n59PNvbPfXD8teyQjU/gexDvn5Ch5oNlQTtLifdYphuADIMRO8zFTeffqF2nBtwqYpbs0jBctodByrOXKQapDGxzJEs/upeY3+iQZghJg7qGer75598a2NWGP9MfzVRXUu6iH8TjKULJz45EvOXKx8pfJS7Rpcv2qvZf1krahjAADazB81s9X3z768M1yWR7BWF9mveTh/Aetbw7IGIZLOINtG6VeKp+ZiUr9NcTrMyBeAp8hCqJWrfXj25Xc29h1uv4e6ush+6kgHAbmLM4smnPiqKcTTEd9mzSurn5+XjTBK8/pZwsh8dacMwJNjMdSmGi4J3xE0R3KCG7JoRcSTxkG+VPbLbovMK6tfFUGl07x+TWH8XQAACkvhTq724TNzDFfQpDSXtKxhseJz5pXSLJiXIfplczGqn5URSzMAQJu+4ToUqMY4CPj9NobR8EdSly5nF2ewuINISVJ2suogolNKv42os/X9UmoBAEyUd7gAAABMBIYLAAAWAcMFAACLgOECAIBFwHABAMAiYLgAAGARMFwAALAI8osPT+3JSsF8LavMY63/Y80LAAlUd7iyq+IRLCFqytS8DLQMTpwHbUyPNS8AjGEQw32sS4iVl1H5PrW6AQB6aBqu4z6sftYuaijVRPwgVFVUZOPoy4sj3pD4ZLKsfh11oL6UmldVBN11EKyPSL4APBgEDZe6l7okWONlt23sta2JVByRHmW/MpRqg9rP0SMlXvNAzfGa2kS2xYfpy0s2XwAeEiYZrhJ+HNZ45S7WXPypBeOI9HBSUG6Q/Rw9/CwEB7MOp85ru18KfnxB/axtqbz0BQTg4bFo5h2uSBzOopJab7I6OXulUlBuUPtFZuTslTUdkeAi8QX1C55Kcq9IENncARh1DDFcwQXjuI94fBF0x+GkLOIRyg3WsSJ1Y+nhxNFMR2Re2W2RYYPkxc/XcQu7AACMMF3DfcZ+DlfHAqDGIQfwx2sGYYVVrXlOHAcBJy9VDzkRmZrI1CJ6ZEvByUhKp0g/a5fuvMgBmvEBeDAoDddU+AsJPCBw+gDQiWWGa9N10wpGDZxEAPRjpeECAMCTBoYLAAAWAcMFAACLgOECAIBFwHABAMAi+oZLPiwp+GtoQ35nLR7E8F+Rsx4FxS/iAQAGQ37xob9L3G4G9Kb+4VKeq3s6wYAwXACAwSyGO1mG4YpjlOFaM51gQBguAMBgWIbroH3/0sH4nqXUnSkrjrhm1h0xNb5u/fzxZKeORAAATwvScFWeIrvNgn8sy/U4oTgeZ4h+qrHyd0llAQB4cgje4YpvsxAxLEH4MlSuZ6zhkvFtAm8AAABgswl8hvtQDHcQkxU3XE09AADAhGO4+oyMxWMyXFkvhh0DAGw2heE6aNgEjIYcxkIVmdMpEoSURNWjQz+1Dvr0S6UGAHjkKO9wAQAAmAgMFwAALGIBhgsAANYAwwUAAItYCMFwAQDAEmC4AABgETBcAACwCJXhkg+NjuCTpFKP7rIeqjVJlUnBDYlvVBGsqScAjxCl4bJW0WiuK3HDtd3/HsRw9WgGMSm+8vBBQqmOHc1rA4ARpW+4nAU5motKStVopqDCMpGs91TBNzDVdTL6hQVgVBA3XNXqonaSu8hOG2PRcg6hLmmppU4dbKpO3fURr4PsvCKlIMezDufPAgCgIHuHq1pvnAGcOMqFqtwgD6HG4XSyIAcbrlOkaHxV/IwE4/PnlSoaXwbnfAEA6KgMV0l/DHUN61jwysjUDerhpB5qcD4s6+HkK66Tkyy/DpxDNFNgxefMqzmFCCrlgwcE4AmxEGpbf4erRBlQJD4/Ggsp65HSyTrKqPoYGJ+D4xbZkVJnAYCnDgx3QJ2sowapj0i+OuKzIvf7ReopUisAAB1Nw1W5gLhxiHSyjlUdwuoXtAn+1Abq5Asmp+DvokpizcsRxslCH1QxAABt+oY7bCEAAPDYuTXcb4ctBAAAHjswXAAAsAgYLgAAWAQMFwAALAKGCwAAFgHDBQAAi+gbLvmwJx6xpILKAAB0orzDJR+h1zz8sVoPJy9TDfex1hMAYLNxDVeTx3qvN6y8LJgXP7sAMExYhkv9/ij5FVLNXWSnTdhZOHGoL6njNeOodsnmpZmvjmQ1c+To5+ikDgYAWAdpuFQDIrfJl+LjRZa9eBz+eEH9nGEcYfrmFYysbwod8wIALELwDpfcJl8qO5WQu1jHCsZRheKIEdGjmSY1oFQQzWRFUhDc5tcNADBMND/D5RiH5njxXbKD+e6pQ4+4P3Lm1RdQKgXNbdm6AQCsQ/MpBY5xUBe5yHgRjJpXUI+4eckGYcXhpEyOdyjgT82flwwCALAOzedwdSxgjjtIrXZNl6HKE9Sj6pfNS3NecoBUypy9mvpZSQEAhsxT/qbZw7Ik1hvAcNQAAHTwZA33odwGat6Dj7h+AMAdT9ZwAQDAamC4AABgEQuhdrYKwwUAAPOB4QIAgEXAcAEAwCLmCcMd8LfenMdRzcaoX9wP6wEAQ+Z10DAwPjnX4McO6yIxad4RfIBk1PQ8XVSGa6Bb2aw9zcYuYNkIg+dooH5+KGpwHdMNeHKHa7iPaSJNhqhkRCowQvQNl/+2LL66HDSMVs2cl9xWqdIRzdjB+gJK6VeN1DRcHfpZJ1f2OtEtQDf8uQy8Yq1MSrcMU1foiFRgtBC8w5VdSCrIXZzxA2ZEzUI2OCfC6OtX1ZwfXIf+/rBBdKpEsiRRg1MHU/Xw52XtNfskiudFDaXvZHH2iseh1pl/XlS7+NtkfGqQB4xJHynYbpc6p4j88YMLMDYIS79RMypDGVIBVih+aoLBdRwoGEd220ZcY3xJ/OIYCOciYU09YB04MgzJl1pnkfNCDcIZLxj/QWKe4apeOgjIAYMLMOqUkHFkLyxjZ9d9OP+K1zEdeR71SZWtJ2dSZY+OXHSI1xFcRD+rJuS2ePE5ddaXkarOmnmJ6+HEN0T/SGDSRwrkS35kmxGGyzlWXD8rlOaFIilWz+yCs/BH8lOTYhCdmgtJvMhD0S8bnBWWVQeRbVkZZlxXsueFo0d2/INk/qhlveFSt8lhuucd8MLiRKDupeY4RP38kZzUpEo0oE5WvrLbsrINrLP4RJx5NfMSjCMiY8B8qSNFzssg51E231Fn7qiVrb6n/j1cfQE1rw9+lakvRcQYpV9EJxmfNamUGPPEk7t019lAtawIUv06ZBhSZ8H4ylk087LJeJC4fkPy5QQR2cXqVG2wBpPbD5W5w2am+n40v2n20Ov70PUDDg4Gw9YFRpu5w2amMqKGCwAAjwoYLgAAWMQsDBcAAKxh9qABwwUAACuYOWhkKu9guAAAYDoz+3UYLgAAWMGb4GXfcPF0CwAAmMh04CJdvul/8aHbCc8FAADjeX1ruMpOGC4AABjPa38NhgsAAFYw5a+lFIaLz3ABAMAspnzVVOkad7gAAGA6k94KDBcAAKxgwltJlq7xlAIAAJjOhKeSLF7hOVwAADCdCU+5b7gAAABMZNwNwwUAAEsYd5cSMFwAALCAVzBcAACwBhguAABYxCtXKVHswHABAMB0xlzFRAGGCwAA5gPDZSH+MHL/yWXVI8zU55pZLzn/5za1k9Mvi2x8o+YF4MkBw6UiZSUswxXpIY2VH1OzXxbZ+EbNC8BTZGyvGIfhKpC9d3PQUO2ljicHkMdSB/D7BQVTX4rE1z0vAMD2cq8QL3SeffGtauWILCSO0Tx0pNKhmhErjqpcpH/1t6nByQPJ+vPPCOtEC8bnzAsA0KBvuDaucTw1pCrAqRurRwV1FxmcOhern5ydOq/u+KyUAQBMlIZr0/XDKekRjwCpdKhmx4qjGszyRwfNhTmHU/upWag6B4kvWygAnjov9wrxQluf4T5ixItAGhxpZ6zIqvEcfyTH8PvFU9MXn68ZAEBHabjii/bRw6oAaak2bt00ewQNV3Muar/IeRwkvuAUAIAefcPFQuriIKDuJTttDDPiF1Z1LLXsLD0i/TpS1t0PANBA9ZECAAAAs4DhAgCARcBwAQDAImC4AABgETBcAACwiDEYLgAAWEPvj9fAcAEAwGzGXEXyq73KASP4uKXUQ6AOAlNVmRTckPhGFQHP4QKgE6XhslbRaK4rccO13f9+wXD1aAYxKb7y8EFCqY4dzWsDgBGlb7icBTmai0pK1WimoMIykaz3VME3MNV1MvqFBWBUEDdc1eqidpK7yE4bY9FyDqEuaamlTh1sqk7d9RGvg+y8IqUgx7MO588CAKAge4erWm+cAZw4yoWq3CAPocbhdLIgBxuuU6RofFX8jATj8+eVKhpfBud8AQDoqAxXSX8MdQ3rWPDKyNQN6uGkHmpwPizr4eQrrpOTLL8OnEM0U2DF58yrOYUIKuWDBwTgCTGUO1wlyoAi8fnRWEhZj5RO1lFG1cfA+Bwct8iOlDoLADx1YLgD6mQdNUh9RPLVEZ8Vud8vUk+RWgEA6GgarsoFxI1DpJN1rOoQVr+gTfCnNlAnXzA5BX8XVRJrXo4wThb6oIoBAGij+uIDAAAAs4DhAgCARcBwAQDAIl65SgkYLgAAWEDXcD+F4QIAgNmMwXABAMAaYLgAAGARY65Sotj5lPbVXjxiSQWVAQDopG+4NtpD+JqHP1br4eRlquE+1noCAGw2m23MVWQZriaP9V5vWHlZMC9+dgFgmLAMl/r9UfIrpJq7yE6bsLNw4lBfUsdrxlHtks1LM18dyWrmyNHP0UkdDACwDtJwqQZEbpMvxceLLHvxOPzxgvo5wzjC9M0rGFnfFDrmBQBYhOAdLrlNvlR2KiF3sY4VjKMKxREjokczTWpAqSCayYqkILjNrxsAYJhofobLMQ7N8eK7ZAfz3VOHHnF/5MyrL6BUCprbsnUDAFgHx3DJBczyGkGjkVrqRs0rqEfcvGSDsOJwUibHOxTwp+bPSwYBAFhH33AdNGy6FjDHHaRWu6bLUOUJ6lH1y+alOS85QCplzl5N/aykAABDRnmH+9R4WJbEegMYjhoAgA7G9p6o4T6U20DNe/AR1w8AuOPJGi4AAFjN2F4Rf7wGAACsAIYLAAAWAcMFAACLgOECAIBFjLnUhjvgb705j6OajVG/uB/WAwCGzOugYWB8cq7Bjx3WRWLSvCP4AMmo6Xm6qP5PMwPdymbtaTZ2ActGGDxHA/XzQ1GD65huwJM7XMN9TBNpMkQlI1KBEaJvuPy3ZfHV5aBhtGrmvOS2SpWOaMYO1hdQSr9qpKbh6tDPOrmy14luAbrhz2XgFWtlUrplmLpCR6QCo4XgHa7sQlJB7uKMHzAjahaywTkRRl+/qub84Dr094cNolMlkiWJGpw6mKqHPy9rr9knUTwvaih9J4uzVzwOtc7886Laxd8m41ODPGBeuUqJwpXhHynYbpc6p4j88YMLMDYIS79RMypDGVIBVih+aoLBdRwoGEd220ZcY3xJ/OIYCOciYU09YB04MgzJl1pnkfNCDcIZLxj/QWKe4apeOgjIAYMLMOqUkHFkLyxjZ9d9OP+K1zEdeR71SZWtJ2dSZY+OXHSI1xFcRD+rJuS2ePE5ddaXkarOmnmJ6+HEN0T/SGDSRwrkS35kmxGGyzlWXD8rlOaFIilWz+yCs/BH8lOTYhCdmgtJvMhD0S8bnBWWVQeRbVkZZlxXsueFo0d2/INkKIZL3SaH6Z53wAuLE4G6l5rjEPXzR3JSkyrRgDpZ+cpuy8o2sM7iE3Hm1cxLMI6IjAHzpY4UOS+DnEfZfEcd6lMKgySmeX3wq0x9KSLGKP0iOsn4rEmlxJgnntylu84GqmVFkOrXIcOQOgvGV86imZdNxoPE9RuSLyeIyC5Wp2qDNZjcfqio7nBHiode34euH3BwMBi2LjDajLLhAgDAowKGCwAAFnFruN8MWwgAADx2YLgAAGARMFwAALAIGC4AAFjEK1cpUYThAgCA+bxyw3ABAMASxt1lGC4AAFgBDBcAACxi3F1OFK9guAAAYDrjHhguAABYwrinAsMFAAArgOECAIBF9A0Xf24OAADMBYYLAAAWAcMFAACLgOECAIBF4JdmAABgETBcAACwCBguAABYBAwXAAAsAoYLAAAWMeGpJGG4AABgARNeGC4AAFgCDBcAACwChgsAABYBwwUAAIuY8FaSxWsYLgAAmA4MFwAALAKGCwAAFgHDBQAAi5j0VmG4AABgBZM+GC4AAFgCDBcAACwChgsAABYx6asmSzBcAAAwHxguAABYBAwXAAAsAoYLAAAWAcMFAACLmPTVYLgAAGAFUzBcAACwBhguAABYxJQfhgsAAJYAwwUAAGv4/5yy1T2O5Z7kAAAAAElFTkSuQmCC" alt="" />

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,401
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,896