text:
ABOUT SANDS
Sands Hotel & Spa Accessibility Statement
Sands Hotel & Spa is committed to producing digital products and to adopting technologies that are accessible to everyone. We will make every reasonable effort to ensure that we conform to the Web Content Accessibility Guidelines (WCAG) 2.1, Level AA and comply with the Department of Justice's Americans with Disabilities Act (ADA) Standards for Accessible Design, and other applicable regulations.
Should you have difficulty using or accessing any section of our website, please contact us immediately at brios@sandshotelandspa.com. Aside from working with you to ensure you are provided with the information and assistance you need, we're committed to ensuring that each feature on our site is accessible for everyone and will take the appropriate steps to address any shortcomings.
GOAL OF ACCESSIBILITY FOR EVERYONE
It is our goal to ensure that we are providing a seamless experience for everyone. We aim to ensure that everyone is able to access all areas of our website.
Digital Partner Commitment
Sands Hotel & Spa sources TravelClick's iHotelier booking engine for digital room reservation transactions. We are proud to partner with TravelClick as they have also committed to digital accessibility and understand the importance of maintaining full accessibility compliance with the current standards. With more than 30 years of industry expertise and over 25,000 customers, TravelClick is a recognized leader in digital room reservations.
TAKING ACTION & ONGOING EFFORTS
Sands Hotel & Spa has partnered with eSSENTIAL Accessibility to administer our digital accessibility program and oversee its governance. Their accessibility program evaluates and audits our digital products on an ongoing basis in accordance with best practices and is supported by a diverse team of accessibility professionals, including users of assistive technologies. We are in the first stage of our accessibility journey and are currently working with eSSENTIAL Accessibility to ensure our digital content is meeting the required accessibility standards. The platform, moreover, goes beyond minimum compliance requirements by making an assistive CX technology application available to customers who have trouble typing, gesturing, moving a mouse, or reading. The application is free to download from our digital properties and incorporates tools such as mouse and keyboard replacements, voice recognition, speech enablement, hands-free/touch-free navigation, and more.
Please contact brios@sandshotelandspa.com if you have any feedback or suggestions on how we can improve the accessibility of our website.
Accessibility Features at Sands Hotel & Spa
Accessible rooms upon request featuring raised toilet shower seats and grab bars in the shower and toilet.
Accessible ramps to the entrance and access to all public areas.
Chair lift available at the pool and jacuzzi.
Accessible rooms can be booked and guaranteed online or by phone at 760-321-3771
If you have any questions about our ability to accommodate, please contact us directly at 760-321-3771. We look forward to being of service.
© 2020 Sands Hotel & Spa
ADA Statement Accessible Policies Contact Email Sign Up Site Credits
© 2020 Sands Hotel & Spa 44-985 Province Way Indian Wells, CA 92210 +1-760-321-3771
email hidden
Design by Amy Risley | Web Development by piroc media


Nov. 9, 2017 9:26 a.m.
I find the "Shocked, Shocked..." line so apropos to today's political scene.
I recall reading somewhere that Ronald Reagan and Ann Sheridan were initially considered for leads. Wouldn't have been the same.
Is Dr. Strangelove on the list? I get a kick out of that movie.
Nov. 8, 2017 8:19 p.m.
Beautiful movie that stands the test of time. I miss simpler times and this always takes me back.
Nov. 8, 2017 3:08 p.m.
A great movie about some incredibly important themes but presented in such an unpretentiously entertaining way, one hardly notices the emotional attachments the movie produces.
I was about 7-8 the first time I saw Casablanca and therefore didn't really understand a lot of the intrigue that simmers throughout the movie. The thing that stuck with me from that first viewing and hits me every time since is the amazingly stirring rendition of "La Marseillaise" that rose from the Nazis singing "Die Wacht Am Rhein". I just **loved** it!! Initially, I was mostly amazed by the composer's ability to transition from the one to the other with the same beat and chords. It wasn't until subsequent viewings much later that I understood the wartime political relationship between the parties singing the contrasting songs and their implications that provoked obvious emotional responses. It's one of the most memorable and pivotal moments of the movie and certainly stands the test of time.
Nov. 8, 2017 2:16 p.m.
Best film of all time. Indeed, I'm afraid Major Stroessner would insist.
Nov. 8, 2017 12:13 p.m.
The movie made "As Time Goes By" a very popular song in late 1942, the problem was, the musicians union had struck the recording companies, so one of the record companies reissued an early 1930s recording of the song by Rudee Vallee.
Maybe it doesn't matter for a film that's 75 years old, but the exact nature of Ilsa and Victor Lazlo's relationship is a minor spoiler (at least it's played that way in the film).
Casablanca is number one on my list and likely always will be.
For anyone who's ever had their heart broken: "Mostly I remember the last one. The wow finish. A guy standing on a station platform in the rain with a comical look in his face because his insides have been kicked out." That scene always gets me.
Also, "I'm shocked, shocked to find that gambling is going on in here!"
Nov. 8, 2017 8:55 a.m.
One of my favorites. Always brings a smile and a tear.
Nov. 8, 2017 7:36 a.m.
48 years ago, my girlfriend was thinking about breaking up with me. One afternoon, she came to my apartment while I was watching Casablanca. We watched the movie together. At the end of it, she told me she was staying with me. She looks a bit like Ingrid Bergman. I'm no Bogart, Now, after all these years together, three children, eight grandchildren, we still watch Casablanca together as time goes by.


text:
Davis, McCloud help Green Bay hold off Detroit Mercy 83-80
No. 9 FSU stages late game comeback to beat Miami in…
Florida 69, Auburn 47: Omar Payne brings Gators their first truly…
2020 Notre Dame Fighting Irish Football Schedule
The Hornets need Miles Bridges to step up as a playmaker
Miles Bridges had a solid yet unspectacular rookie year for the Charlotte Hornets. The box score numbers won't wow you with their volume, but they do show an impressive amount of versatility for a rookie. Bridges is going to...
Original Article Source Author:
Hornets season opener and other schedule things released
The NBA released the schedule for the 2019-20 season today. The Charlotte Hornets unveiled theirs in a nifty, movie-themed presentation: Here are some key dates on the schedule: The Hornets open the season at home on the second day of the...
Hornets sign Thomas Welsh
The Charlotte Hornets bolstered their front court rotation yesterday by signing free agent center Thomas Welsh. Terms of the deal were not disclosed, but it's likely a minimum contract, and there's no guarantee that the 23-year-old pro will still...
Joe Chealey and Josh Perkins sign contracts with the Hornets
Distinct Athlete - August 6, 2019 0
The Charlotte Hornets announced today that guards Joe Chealey and Josh Perkins signed with the team. You can read the full story here. The team did not disclose the nature of the contracts, but if I had to guess, they're...
A way-too-early look at an ideal 2020 NBA Draft candidate
With most of the NBA's notable free agents having been officially signed with a club; and, since training camp doesn't begin until a month from now, it's a perfect time to speculate the future endeavors of the Charlotte Hornets. Today,...
Five questions with CelticsBlog about Terry Rozier
I reached out to Jeff Clark, CEO of CelticsBlog, to ask him some questions about new Charlotte Hornets point guard Terry Rozier. A huge thank you to him. He and the rest of his staff do a great job...
The Hornets have announced their full preseason schedule
The Charlotte Hornets announced their full slate of preseason games via the Twitter machine. Here's the tweet. For anyone that can't see the Tweet, here's the schedule: October 6th, 6:00 p.m., at Boston Celtics October 9th, 7:30 p.m., vs. Miami Heat October...
The Hornets have signed both Cody and Caleb Martin
Distinct Athlete - July 31, 2019 0
Hey we have some news! The Charlotte Hornets have signed second round pick Cody Martin, along with his brother Caleb Martin, according to Shams Charania of The Athletic. Sources: Twins Cody and Caleb Martin of Nevada have agreed to...
The Hornets are projected to lose a lot of games next season
A number of sports books and betting sites have released their projected win totals for NBA teams next season. They almost unanimously project the Hornets to be the worst team in the league next season. Here's a table. ...
NCAADistinct Athlete - January 18, 2020 0
GREEN BAY, Wis. (AP) — Amari Davis scored 19 points, JayQuan McCloud brushed up against a triple-double and Green...

redpajama_set_name: RedPajamaCommonCrawl


Double Oak Student Ministry's purpose is to lead students to Christ, helping them to grow spiritually and develop community while serving others. We are also committed to walking alongside parents in their journey as the chief disciple makers in their home. Our desire is to equip parents with resources and to reinforce what students have learned at home to help them in their walk with Christ.
We accomplish these things in a number of different ways. We offer community groups designed specifically for the season of life the student is in. We also have a mid-week worship service geared just for teens. We have camps, retreats, fun outings, and more. Discipleship and community are very important to us. We want to grow closer to Jesus and have fun doing it.
We offer classes at Double Oak University for parents to help equip and encourage them. We believe parents are called to be the chief disciple makers of their child, and it is our desire to walk alongside parents to assist in this. We also offer lots of impactful, insightful, and free resources for parents.
We offer a lot more for both students and parents. If you have any questions please email students@doubleoakcc.org.


Prime Capital Investment Advisors LLC purchased a new position in shares of iShares Russell Mid-Cap ETF (NYSEARCA:IWR) during the first quarter, according to its most recent 13F filing with the Securities and Exchange Commission. The fund purchased 4,837 shares of the company's stock, valued at approximately $261,000.
Several other hedge funds also recently added to or reduced their stakes in IWR. Bank of New York Mellon Corp raised its position in shares of iShares Russell Mid-Cap ETF by 3.5% during the 3rd quarter. Bank of New York Mellon Corp now owns 211,015 shares of the company's stock worth $46,529,000 after buying an additional 7,172 shares in the last quarter. BlackRock Inc. raised its position in shares of iShares Russell Mid-Cap ETF by 12.9% during the 3rd quarter. BlackRock Inc. now owns 97,923 shares of the company's stock worth $21,592,000 after buying an additional 11,187 shares in the last quarter. Glenmede Trust Co. NA bought a new stake in shares of iShares Russell Mid-Cap ETF during the 3rd quarter worth about $2,699,000. B. Riley Wealth Management Inc. bought a new stake in shares of iShares Russell Mid-Cap ETF during the 3rd quarter worth about $4,325,000. Finally, Garde Capital Inc. raised its position in shares of iShares Russell Mid-Cap ETF by 300.0% during the 3rd quarter. Garde Capital Inc. now owns 9,648 shares of the company's stock worth $493,000 after buying an additional 7,236 shares in the last quarter.
IWR stock opened at $55.56 on Wednesday. iShares Russell Mid-Cap ETF has a 52 week low of $43.64 and a 52 week high of $56.23.
The firm also recently announced a quarterly dividend, which was paid on Tuesday, March 26th. Investors of record on Thursday, March 21st were issued a $0.1848 dividend. The ex-dividend date was Wednesday, March 20th. This represents a $0.74 dividend on an annualized basis and a dividend yield of 1.33%.
ILLEGAL ACTIVITY NOTICE: This piece of content was first reported by Modern Readers and is owned by of Modern Readers. If you are reading this piece of content on another website, it was illegally copied and republished in violation of US and international copyright & trademark laws. The correct version of this piece of content can be viewed at https://www.modernreaders.com/news/2019/04/17/prime-capital-investment-advisors-llc-purchases-shares-of-4837-ishares-russell-mid-cap-etf-iwr.html.
Netflix, Inc. (NFLX) Stake Decreased by Sumitomo Life Insurance Co.


The Belle of Belfast - Did He Like It?
In 1985 Belfast, fiery and profane Anne Malloy drinks and smokes her days away with her chubby curry chip-addicted best mate. When she turns to her parish priest, Father Reilly, seeking the comforts of the flesh in addition to the comforts of the soul, she discovers her troubles have just begun. A wry and bittersweet portrait of a city at war, The Belle of Belfast forces us to consider what is wrong and what is righteous.
April 24, 2015: Just before Nate Rufus Edelman's winning drama "The Belle of Belfast" begins, the buzz saw intensity of Stiff Little Fingers' republican anthem "Alternative Ulster" and John McDermott's set — an imposing exposed-brick wall covered with graffiti and topped with barbed wire — signal that you're in the caldron of Belfast, Northern Ireland, in 1985. Add John Larson's black-and-white projections from the bloodstained history of the Troubles, and throw in the hormones and caustic temperament of a 17-year-old live wire, and you're in a pressure cooker at steam heat. The Belle of Belfast Anne Malloy (Kate Lydic), a red-haired teenage bundle of rage, profanity and casual lust, has been raised by her dotty great-aunt Emma (an artfully amusing Patricia Conolly). Emma seeks social companionship in the confession booth with the patient priest Ben Reilly (Hamish Allan-Headley); Anne seeks Ben's companionship as well, but not of the ecclesiastical variety, and Ben, who merely wants to tend a flock rattled by the city's endemic violence, must keep her at bay.


text:
/***********************************************************************
*  Xplot11 C-level Win32 interface
C     Version 4.43  3/5/99
*
*  Status: This code is still pretty rough, it works but there are some
*          rough edges (some of which result from problems with the Win32
*          API).  This is the interface code to create, draw to, refresh,
*          destroy a graphics window on a Win32 machine running a Fortran
*          application (like XFOIL) making Pltlib calls.
*
*          The refresh problem for Win32 (as the Xwindows option for a
*          automatic refresh using the server's backing store startup
*          option is not available under Win32) is dealt with by creating
*          a plot thread that monitors the Windoze events and does window
*          refresh.  This is done by doing plotting to a memory bitmap and
*          writing the bitmap to the screen whenever the window needs
*          refresh.
*
*          Note that several problems arise in supporting the Xwindows
*          plotting functionality under Win32.  Colors are handled differently
*          than under Xwindows, for color name compatibility I have included
*          a color table lookup routine that maps Xwindows color names into
*          RGB values.  A more serious problem is the inconsistency of the
*          Win32 API itself, specifically the functionality varies with the
*          version of the Microsoft OS you are running.  The most serious
*          problem showed up in drawing lines with arbitrary patterns and
*          widths.  The Win32 API apparently does not support drawing these
*          types of lines (used in Pltlib for background grids, among other
*          things) satisfactorily.  There appears to be no way to draw a line
*          with an arbitrary pattern and width.  Also it appears that drawing
*          patterned lines with transparent background color is not supported.
*
*          Harold Youngren 10/01
***********************************************************************/

/***********************************************************************
* Defines graphics primitives for window management and line drawing
*  Primitives include:
*   gwxrevflag - checks environment variables for background color
*   gwxopen    - initializes X display and returns size and depth of display
*   gwxwinopen - opens X plotting window with specified x,y size and position
*   gwxclear   - clears plotting window
*   gwxstatus  - gets current window size and location
*   gwxresize  - resizes current window to specified size

*   gwxreset   - resets plotting defaults for window
*   gwxclose   - closes plotting to X display
*   gwxflush   - flushes out graphics primitives in buffers
*   gwxline    - plots line segment

*   gwxdash    - sets line pattern from integer mask
*   gwxcurs    - gets graphics cursor position and key pressed
*   gwxcursc   - gets graphics cursor position while mouse is pressed
*   gwxpen     - sets line width in pixels
*
* More advanced routines beyond the original PLOT-10 requirements
*   gwxdestroy  - closes plot window
*   gwxlinez    - plots polyline
*   gwxpoly     - plots filled polygon
*   gwxstring  - plots string
*
*  Color routines
*   gwxsetcolor      - sets foreground color from color map
*   gwxsetbgcolor    - sets background color from color map
*   gwxcolorname2rgb - find color components of color specified by name string
*   gwxallocrgbcolor - allocate a color specified by r,g,b components
*   gwxfreecolor     - frees an allocated color from colormap
*
* Utility routines
*   mskbits    - converts integer mask into dot/dash array
*
* Double-buffer routines
*   gwxdisplaybuffer - switches background buffer with foreground window
*   gwxdrawtobuffer  - sets drawing to background buffer
*   gwxdrawtowindow  - sets drawing to foreground window
************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <windows.h>
#include <process.h>

#include "rgbtbl.h"
#include "Xdefs.h"

#ifdef UNDERSCORE

#define MSKBITS          mskbits_
#define GWXREVFLAG       gwxrevflag_
#define GWXOPEN          gwxopen_
#define GWXWINOPEN       gwxwinopen_
#define GWXCLEAR         gwxclear_
#define GWXSTATUS        gwxstatus_
#define GWXRESIZE        gwxresize_
#define GWXRESET         gwxreset_
#define GWXCLOSE         gwxclose_
#define GWXFLUSH         gwxflush_
#define GWXLINE          gwxline_
#define GWXDASH          gwxdash_
#define GWXCURS          gwxcurs_
#define GWXCURSC         gwxcursc_
#define GWXPEN           gwxpen_
#define GWXDESTROY       gwxdestroy_
#define GWXLINEZ         gwxlinez_
#define GWXPOLY          gwxpoly_
#define GWXSTRING        gwxstring_
#define GWXSETCOLOR      gwxsetcolor_
#define GWXSETBGCOLOR    gwxsetbgcolor_
#define GWXCOLORNAME2RGB gwxcolorname2rgb_
#define GWXALLOCRGBCOLOR gwxallocrgbcolor_
#define GWXFREECOLOR     gwxfreecolor_
#define GWXDISPLAYBUFFER gwxdisplaybuffer_
#define GWXDRAWTOBUFFER  gwxdrawtobuffer_
#define GWXDRAWTOWINDOW  gwxdrawtowindow_

#else

#define MSKBITS          mskbits
#define GWXREVFLAG       gwxrevflag
#define GWXOPEN          gwxopen
#define GWXWINOPEN       gwxwinopen
#define GWXCLEAR         gwxclear
#define GWXSTATUS        gwxstatus
#define GWXRESIZE        gwxresize
#define GWXRESET         gwxreset
#define GWXCLOSE         gwxclose
#define GWXFLUSH         gwxflush
#define GWXLINE          gwxline
#define GWXDASH          gwxdash
#define GWXCURS          gwxcurs
#define GWXCURSC         gwxcursc
#define GWXPEN           gwxpen
#define GWXDESTROY       gwxdestroy
#define GWXLINEZ         gwxlinez
#define GWXPOLY          gwxpoly
#define GWXSTRING        gwxstring
#define GWXSETCOLOR      gwxsetcolor
#define GWXSETBGCOLOR    gwxsetbgcolor
#define GWXCOLORNAME2RGB gwxcolorname2rgb
#define GWXALLOCRGBCOLOR gwxallocrgbcolor
#define GWXFREECOLOR     gwxfreecolor
#define GWXDISPLAYBUFFER gwxdisplaybuffer
#define GWXDRAWTOBUFFER  gwxdrawtobuffer
#define GWXDRAWTOWINDOW  gwxdrawtowindow

#endif

typedef struct {
    HWND   window;
    HPEN   pen;
    HBRUSH fgbrush;
    HBRUSH bgbrush;
    int    fg;
    int    bg;
    int    font;
    int    fun;
} GC;

typedef struct {
    int    ic;
    int    rgb;
    HPEN   pen;
    HBRUSH brush;
} COLTBL;

typedef struct Event {
    HWND   window;
    int    type;
    int    x;
    int    y;
    int    state;
    struct Event *next;
} Event;

/* Calling convention, Intel Fortran is simple, call is same as Unix
                       CVF requires Microsoft call  */
#ifdef _CVF
#define W32CALL __stdcall
#else
#define W32CALL
#endif

/* Maximum number of polyline points per polyline call,
   increase if necessary */
#define MAXPTS 1000

/* Maximum number of colors */
#define MAXCOLS 256

static char *gwxClass = "PltLib";
static char *gwxName  = "PltLib";

/*
BYTE ANDMask[128], ORNMask[128], ORWMask[128];
static BYTE ANDMsk16[]     = { 0xfe, 0x00,
                               0xfe, 0x00,
                               0xfe, 0x00,
                               0xff, 0x80,
                               0xff, 0x80,
                               0xff, 0x00,
                               0xfe, 0x00,
                               0xfc, 0x18,
                               0xf8, 0x38,
                               0xf0, 0x7f,
                               0xe0, 0xff,
                               0xc1, 0xff,
                               0x83, 0xff,
                               0x07, 0xff,
                               0x0f, 0xff,
                               0x1f, 0xff };
    static BYTE ORNMsk16[] = { 0x00, 0x00,
                               0x00, 0xfe,
                               0x00, 0x7e,
                               0x00, 0x3e,
                               0x00, 0x3e,
                               0x00, 0x7e,
                               0x00, 0xe6,
                               0x01, 0xc2,
                               0x03, 0x80,
                               0x07, 0x00,
                               0x0e, 0x00,
                               0x1c, 0x00,
                               0x38, 0x00,
                               0x70, 0x00,
                               0x60, 0x00,
                               0x00, 0x00 };
    static BYTE ORWMsk16[] = { 0x01, 0xff,
                               0x01, 0x01,
                               0x01, 0x01,
                               0x00, 0x41,
                               0x00, 0x41,
                               0x00, 0x81,
                               0x01, 0x19,
                               0x02, 0x25,
                               0x04, 0x47,
                               0x08, 0x80,
                               0x11, 0x00,
                               0x22, 0x00,
                               0x44, 0x00,
                               0x88, 0x00,
                               0x90, 0x00,
                               0xe0, 0x00 };
*/

/* Window and graphics global data */
HWND     gwxWin;
HDC      gwxHDC, gwxmemHDC;
HBITMAP  gwxBMAP;
HCURSOR  gwxNormalC, gwxWaitC, gwxCurrentC;

GC       *gwxGC;

COLTBL   RGBmap[MAXCOLS];
int      nRGBmap;

/* int      xcsize,ycsize; */
int      wxstart,wystart,wxsize,wysize;
int      xrootsize, yrootsize, rootdepth;
int      gwxSize[5];
int      gwxXmatte, gwxYmatte, gwxYbar;
int      reversevideo;
int      initthread;
int      penwidth, penpattern, ndash, pendash[16];

HINSTANCE  gwxInstance;
ATOM	   gwxRegister;
WNDCLASSEX gwxWndClass;
MSG        Message;

Event    *gwxEvents, *gwxLEvent, gwxLast;

/*static PARAMS params;*/

void MSKBITS(int*,int*,int*);
int gwxlookupcolor (char*,int*);

/**********************************************************************/
/************************Internal Event Code***************************/

/*These routines simulate the Xwindows XEvents to do user interaction.
  This is done here by collecting a list of relevant events from Windoze
  and managing these for the user who deals only with the simulated XEvents.
  This is probably a grungy hack (it was copied from Bob Haimes Visual3 and
  pV3 ports to Win32) but it works.  It may be better to get rid of the
  extra event layer and deal directly with Win32 events.
  HHY */

void
gwxAddEvent(int type, int x, int y, int state)
{
    Event *event;

    event = (Event *) malloc(sizeof(Event));
    if (event == NULL) return;

    event->window = gwxWin;
    event->type   = type;
    event->x      = x;
    event->y      = y;
    event->state  = state;
    event->next   = NULL;

    if (gwxLEvent != NULL) gwxLEvent->next = event;
    gwxLEvent = event;
    if (gwxEvents == NULL) gwxEvents = event;
    gwxLast = *event;
}

void
gwxRemEvent(int *type, int *x, int *y, int *state)
{
    Event *event;

    if (gwxEvents == NULL) {
      printf("Warning: No Events to remove!\n");
      return;
    }

    event = gwxEvents;
    if (event == gwxLEvent) gwxLEvent = NULL;
    gwxEvents = event->next;

    *type  = event->type;
    *x     = event->x;
    *y     = event->y;
    *state = event->state;
    free(event);
}

/**********************************************************************/
/**********************************************************************/

LRESULT CALLBACK
gwxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int         i, ix, iy;
    PAINTSTRUCT paint;
    HDC         hdc;
    POINT       point;
    RECT        rect;

    switch (message) {

    case WM_USER:
        return 0;

    case WM_SIZE:
          if (hWnd == gwxWin) {
            if (gwxSize[4]) {
              ix = LOWORD(lParam);
              iy = HIWORD(lParam);
              if ((ix != gwxSize[0]) || (iy != gwxSize[1])) {
                gwxSize[0] = ix;
                gwxSize[1] = iy;
                gwxAddEvent(XExpose, ix, iy, 1);
              }
            } else {
              ix = gwxSize[0] + 2*gwxXmatte;
              iy = gwxSize[1] + 2*gwxYmatte + gwxYbar;
              SetWindowPos(hWnd, HWND_TOP, gwxSize[2], gwxSize[3],
                           ix, iy, SWP_NOMOVE|SWP_NOZORDER);
            }
            return 0;
          }
        return 0;

    case WM_MOVE:
          if (hWnd == gwxWin) {
            gwxSize[2] = LOWORD(lParam);
            gwxSize[3] = HIWORD(lParam);
            return 0;
          }
        return 0;

    case WM_PAINT:
        printf("WM_PAINT\n");
        /*
         *  Validate the region even if there are no DisplayFunc.
         *  Otherwise, USER will not stop sending WM_PAINT messages.
         */
        hdc = BeginPaint(hWnd, &paint);
        BitBlt(hdc,0,0,xrootsize,yrootsize,gwxmemHDC,0,0,SRCCOPY);
        EndPaint(hWnd, &paint);
          if (hWnd == gwxWin) {
            gwxAddEvent(XExpose, gwxSize[0], gwxSize[1], 1);
            return 0;
          }
        return 0;

    case WM_PALETTECHANGED:
	printf("WM_PALETTECHANGED\n");
        return 0;

    case WM_ACTIVATE:
        printf("WM_ACTIVATE\n");
        break;

    case WM_MOUSEMOVE:
/* printf("mousemove active %d focus %d\n",GetActiveWindow(),GetFocus()); */
        if (GetActiveWindow() != hWnd) {
           SetForegroundWindow(hWnd);
           SetActiveWindow(hWnd);
        }
        if (GetFocus() != hWnd) SetFocus(hWnd);
/*	printf("mousemove %d  %d\n",hWnd,gwxWin);  */
        gwxAddEvent(XMotionNotify, LOWORD(lParam), HIWORD(lParam), 2);
        return 0;

    case WM_LBUTTONDOWN:
	if (GetAsyncKeyState(VK_RBUTTON) < 0) {
         gwxAddEvent(XButtonPress, LOWORD(lParam), HIWORD(lParam), 2);
	} else {
         gwxAddEvent(XButtonPress, LOWORD(lParam), HIWORD(lParam), 1);
	}
        return 0;

    case WM_LBUTTONUP:
	if (GetAsyncKeyState(VK_RBUTTON) < 0) {
	  gwxAddEvent(XButtonRelease, LOWORD(lParam), HIWORD(lParam), 2);
	} else {
	  gwxAddEvent(XButtonRelease, LOWORD(lParam), HIWORD(lParam), 1);
	}
        return 0;

    case WM_MBUTTONDOWN:
        gwxAddEvent(XButtonPress, LOWORD(lParam), HIWORD(lParam), 2);
        return 0;

    case WM_MBUTTONUP:
        gwxAddEvent(XButtonRelease, LOWORD(lParam), HIWORD(lParam), 2);
        return 0;

    case WM_RBUTTONDOWN:
	if (GetAsyncKeyState(VK_LBUTTON) < 0) {
	 gwxAddEvent(XButtonPress, LOWORD(lParam), HIWORD(lParam), 2);
	} else {
         gwxAddEvent(XButtonPress, LOWORD(lParam), HIWORD(lParam), 3);
	}
        return 0;

    case WM_RBUTTONUP:
	if (GetAsyncKeyState(VK_LBUTTON) < 0) {
	 gwxAddEvent(XButtonRelease, LOWORD(lParam), HIWORD(lParam), 2);
	} else {
         gwxAddEvent(XButtonRelease, LOWORD(lParam), HIWORD(lParam), 3);
	}
        return 0;

    case WM_KEYDOWN:
        GetCursorPos(&point);
        GetWindowRect(hWnd, &rect);
        ix = point.x - rect.left - gwxXmatte;
        iy = point.y - rect.top  - gwxYmatte - gwxYbar;
	/*        gwxAddEvent(XKeyPress, ix, iy, wParam+256); */
        return 0;

    case WM_KEYUP:
        GetCursorPos(&point);
        GetWindowRect(hWnd, &rect);
        ix = point.x - rect.left - gwxXmatte;
        iy = point.y - rect.top  - gwxYmatte - gwxYbar;
        i  = wParam+256;
	/*        if (i == 300) gwxAddEvent(XKeyPress, ix, iy, i);
        gwxAddEvent(XKeyRelease, ix, iy, i); */
        return 0;

    case WM_CHAR:
        if (wParam == 27) return 0;
        if ((gwxLast.type !=   2) || (gwxLast.state < 352) ||
            (gwxLast.state > 361) || (gwxLast.state-wParam != 304)) {
          GetCursorPos(&point);
          GetWindowRect(hWnd, &rect);
          ix = point.x - rect.left - gwxXmatte;
          iy = point.y - rect.top  - gwxYmatte - gwxYbar;
          gwxAddEvent(XKeyPress, ix, iy, wParam);
        } else {
          printf("Double Hit: state = %d\n", wParam);
        }
        return 0;

    case WM_SYSCOMMAND:
        /* special code for F10 */
        if ((lParam == 0) && (wParam == 61696)) {
          GetCursorPos(&point);
          GetWindowRect(hWnd, &rect);
          ix = point.x - rect.left - gwxXmatte;
          iy = point.y - rect.top  - gwxYmatte - gwxYbar;
          gwxAddEvent(XKeyPress, ix, iy, 377);
          return 0;
        }
        break;

    case WM_CLOSE:
        gwxAddEvent(XKeyPress, 0, 0, 283);
        exit;
        return 0;

    case WM_DESTROY:
        PostQuitMessage (0) ;
        return 0 ;
   }
    return DefWindowProc( hWnd, message, wParam, lParam);
}

int
rgb2winrgb(int acol)
{
    int    col, r, g, b;

    col = acol & 0x00ffffff;
    r   =  col >> 16;
    g   = (col >>  8) & 0xff;
    b   =  col        & 0xff;
    col = b << 16 | g << 8 | r;
    return col;
}

/* gwxrevflag
   Get XPLOT11 background default from users environment
   Parameters:
     revflag          (int*)   reverse video flag (0 for white, 1 for black)
*/
void W32CALL
GWXREVFLAG(revflag)
   int   *revflag;
{
   char *bufp, *tmp;
/* check environment variable XPLOT11_BACKGROUND for background color
   XPLOT11_BACKGROUND  = white gives black on white plotting (like paper)
   XPLOT11_BACKGROUND != white gives white on black plotting (reverse video)
*/
   *revflag = 1;
   bufp = getenv("XPLOT11_BACKGROUND");

/* check lowercased environment for "black" to reverse video */
   if(bufp) {
      for(tmp = bufp; *tmp; tmp++)
         *tmp = tolower(*tmp);
      *revflag = (strcmp(bufp,"white")!=0);
   }
}

/* gwxopen
   Open X window display and get size and depth of root window
   Parameters:
     xsize,ysize            (int*)   root window size
     depth                  (int*)   screen color depth (pixel depth)
*/
void W32CALL
GWXOPEN(int *xsize, int *ysize, int *depth)
{
	int i, j, k;

/* set depth arbitrarily to 8 bits to work like Xwindows colormaps */
    rootdepth = 8;
    xrootsize = GetSystemMetrics(SM_CXSCREEN);
    yrootsize = GetSystemMetrics(SM_CYSCREEN);

    *depth = rootdepth;
    *xsize = xrootsize;
    *ysize = yrootsize;

    gwxXmatte = GetSystemMetrics(SM_CXFRAME);
    gwxYmatte = GetSystemMetrics(SM_CYFRAME);
    gwxYbar   = GetSystemMetrics(SM_CYCAPTION) -
                GetSystemMetrics(SM_CYBORDER);
    /*
    printf("Screen is %d x %d\n", *xsize, *ysize);
    if (gwxXmatte == gwxYmatte) {
      printf("Window matte is %d\n",gwxXmatte);
    } else {
      printf("Window matte is %d x %d\n", gwxXmatte, gwxYmatte);
    }
    printf("Title bar height = %d\n", gwxYbar);
    */

/* check environment variables for default background color
   XPLOT11_BACKGROUND != black gives black on white plotting (like paper)
   XPLOT11_BACKGROUND  = black gives white on black plotting (reverse video) */
   GWXREVFLAG(&reversevideo);

/* set up cursor bitmap arrays */
   /*	xcsize = GetSystemMetrics(SM_CXCURSOR);
	ycsize = GetSystemMetrics(SM_CYCURSOR);
	if ((xcsize != 16) && (xcsize != 32)) {
        printf("Unkown Xcursor Size %d\n", xcsize);
	    exit(1);
    }
	if ((ycsize != 16) && (ycsize != 32)) {
        printf("Unkown Ycursor Size %d\n", ycsize);
	    exit(1);
    }
	for (i = 0; i < 128; i++) {
        ANDMask[i] = 0xff;
		ORNMask[i] = 0;
		ORWMask[i] = 0;
	}
	j = 3;
	if (xcsize == 16) j = 1;
    for (k = i = 0; i < 16; i++) {
		ANDMask[k] = ANDMsk16[i*2];
	    ORNMask[k] = ORNMsk16[i*2];
		ORWMask[k] = ORWMsk16[i*2];
	    k++;
	    ANDMask[k] = ANDMsk16[i*2+1];
	    ORNMask[k] = ORNMsk16[i*2+1];
		ORWMask[k] = ORWMsk16[i*2+1];
	    k += j;
	}
	*/

/* set cursor */
    gwxWaitC   = LoadCursor(NULL, IDC_WAIT);
    gwxNormalC = LoadCursor(NULL, IDC_CROSS);
/*  gwxNormalC = CreateCursor( gwxInstance, 14, 1, xcsize, ycsize,
                               ANDMask, ORNMask);  */
/*  gwxInputC  = CreateCursor( gwxInstance, 14, 1, xcsize, ycsize,
                               ANDMask, ORWMask); */
    gwxCurrentC = gwxNormalC;

/* Define window class */
    gwxInstance = GetModuleHandle(NULL);

    gwxWndClass.cbSize        = sizeof(gwxWndClass);
    gwxWndClass.style         = CS_HREDRAW | CS_VREDRAW;
    gwxWndClass.lpfnWndProc   = (WNDPROC)gwxWndProc;
    gwxWndClass.cbClsExtra    = 0;
    gwxWndClass.cbWndExtra    = 0;
    gwxWndClass.hInstance     = gwxInstance;
    gwxWndClass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    gwxWndClass.hCursor       = gwxNormalC;
    if(reversevideo) {
      gwxWndClass.hbrBackground = GetStockObject(BLACK_BRUSH); }
    else {
      gwxWndClass.hbrBackground = GetStockObject(WHITE_BRUSH); }
    gwxWndClass.lpszMenuName  = NULL;
    gwxWndClass.lpszClassName = (LPCSTR)gwxClass;

 /* Register the window class */
	gwxRegister = RegisterClassEx(&gwxWndClass);

 /* Check for window register, bomb if no joy... */
    if(gwxRegister == 0) {
        printf("Failed to register window class\n");
	    exit(1);
    }

/* initialize private Xevents loop pointers */
    gwxEvents   = NULL;
    gwxLEvent   = NULL;

}

GC*
gwxgc(HWND *window, int *fontsize)
{
    GC *gc;
    int r, g, b, ic;

    gc = (GC *) malloc(sizeof(GC));

    gc->window = *window;
    if(reversevideo) {
      gc->fg     = RGB(255,255,255);
      gc->bg     = RGB(0  ,0  ,0  );
    }
    else {
      gc->fg     = RGB(0  ,0  ,0  );
      gc->bg     = RGB(255,255,255);
    }
    gc->pen      = CreatePen(PS_SOLID, penwidth, gc->fg);
    gc->fgbrush  = CreateSolidBrush(gc->fg);
    gc->bgbrush  = CreateSolidBrush(gc->bg);
    gc->font     = *fontsize;
    gc->fun      = GXcopy;                 /* copy */

    return gc;
}

void
gwxfreegc(GC **gc)
{
    GC *gcontext;

    gcontext = *gc;
    DeleteObject(gcontext->pen);
    DeleteObject(gcontext->fgbrush);
    DeleteObject(gcontext->bgbrush);
    free(*gc);
}

void
gwxgcfun(int *fun)
{
    GC *gcontext;

    gcontext = gwxGC;
    gcontext->fun = *fun;
}

void
Thread1(PVOID pvoid)
{
    HWND winFocus, winFG, win;
//    HWND winF77;
    RECT WinRect ,oldrect;
    POINT point;
    int  fontsize;
//    int  lunit;

    /*    printf("\nEntering display thread\n"); */
    /*
     *  Make window large enough to hold a client area compensating for borders
     */
    WinRect.left   = wxstart;
    WinRect.right  = wxstart + wxsize + 2*gwxXmatte;
    WinRect.top    = wystart;
    WinRect.bottom = wystart + wysize + 2*gwxYmatte + gwxYbar;

    /*
    printf("\nwxstart %d wystart %d \n",wxstart,wystart);
    printf("\nwxsize  %d wysize  %d \n",wxsize,wysize);

    printf("\nsetting rectangle left %d right %d \n",WinRect.left,WinRect.right);
    printf("\nsetting rectangle top  %d bot   %d \n",WinRect.top,WinRect.bottom);
    */

    winFG    = GetForegroundWindow();
    winFocus = GetActiveWindow();
    GetWindowRect(winFG, &oldrect);
    /*
    printf("Entry conditions:\n foreground %d/n orig focus %d\n",winFG,winFocus);
    printf("\nold rectangle left %d right %d \n",oldrect.left,oldrect.right);
    printf("\nold rectangle top  %d bot   %d \n",oldrect.top,oldrect.bottom);
    */

    /*    lunit = 5;
    winF77 = fgethwndqq(&lunit);
    printf("\nEntry conditions DVF window: %d/n",winF77);
    */

/* Must use WS_CLIPCHILDREN and WS_CLIPSIBLINGS styles. */

    gwxWin   = CreateWindow( gwxClass, gwxClass,
               WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
               WinRect.left, WinRect.top,
               WinRect.right - WinRect.left, WinRect.bottom - WinRect.top,
               NULL, NULL, gwxInstance, NULL );

    if (gwxWin == NULL)  {
        fprintf(stderr, "Error: NULL window handle.\n");
        exit(1);
    }

    ShowWindow(gwxWin, SW_SHOWDEFAULT);
    UpdateWindow(gwxWin);

    gwxHDC = GetDC(gwxWin);
    if (gwxHDC == NULL) {
        fprintf(stderr, "Error: NULL window DC.\n");
        exit(1);
    }

    /* Create compatible window bitmap */
    gwxmemHDC = CreateCompatibleDC(gwxHDC);
    gwxBMAP   = CreateCompatibleBitmap(gwxHDC,xrootsize,yrootsize);
    SelectObject(gwxmemHDC, gwxBMAP);

    SelectObject(gwxmemHDC, GetStockObject(ANSI_VAR_FONT));
    SetTextAlign(gwxmemHDC, TA_LEFT | TA_BASELINE | TA_NOUPDATECP);
    SetBkMode(gwxmemHDC, TRANSPARENT);

    gwxSize[0] = wxsize;
    gwxSize[1] = wysize;
    gwxSize[2] = wxstart + 2*gwxXmatte;
    gwxSize[3] = wystart + 2*gwxYmatte + gwxYbar;
    gwxSize[4] = 1;
    SetWindowPos(gwxWin, HWND_TOP, gwxSize[2], gwxSize[3],
                           wxsize, wysize, SWP_NOMOVE|SWP_NOZORDER);

    /* SetWindowPos(gwxWin, HWND_TOP, 0,0, 0,0, SWP_NOMOVE | SWP_NOSIZE ); */
    SetForegroundWindow(gwxWin);

    nRGBmap     = 0;
    penwidth    = 0;
    penpattern  = -1;
    ndash    = 0;
    fontsize = 1;

    gwxGC = gwxgc(&gwxWin, &fontsize);
    SelectObject(gwxmemHDC, gwxGC->pen);

    /* initially clear the background bitmap */
    SelectObject(gwxmemHDC, gwxGC->bgbrush);
    PatBlt(gwxmemHDC, 0, 0, xrootsize, yrootsize, PATCOPY);

    SelectObject(gwxmemHDC, gwxGC->fgbrush);

    /* allocate black and white colors */
/*    r = 0;
      g = 0;
      b = 0;
      GWXALLOCRGBCOLOR(&r,&g,&b,&ic);
      r = 0;
      g = 0;
      b = 0;
      GWXALLOCRGBCOLOR(&r,&g,&b,&ic);
*/

    /*    printf("entering message loop\n\n"); */

    initthread = 1;

    /*    while (GetMessage(&Message, NULL, 0, 0)) { */

    /* Custom message loop to check cursor window to do X-style focus */

    while (1) {
      if(PeekMessage(&Message, gwxWin, 0, 0, PM_REMOVE)) {

	if(Message.message==WM_QUIT)
          break;

       TranslateMessage(&Message);
       DispatchMessage(&Message);
       Sleep(1);
      }
      else {
       GetCursorPos(&point);
       win = WindowFromPoint(point);
       /*       printf("pos x %d y %d win %d\n",point.x,point.y,win);  */

       /*       if(win==winF77) {
        SetActiveWindow(win);
        SetFocus(win);
        SetForegroundWindow(win);
       } */
       /*       if(win == winFG) {
	 printf("pos x %d y %d win %d winFG %d\n",point.x,point.y,win,winFG);
         SetActiveWindow(winFG);
         SetFocus(winFG);
         SetForegroundWindow(winFG);
       } */
       Sleep(1);
      }
    }

    /*    printf("window thread ending\n"); */
/*  return Message.wParam;
    exit; */

    _endthread();
}

/* gwxwinopen
   Open window of specified size and position, return size and depth
   Parameters:
     xstart,ystart          (int*)   upper left corner coordinates in root
     xsize,ysize            (int*)   desired window size
*/

void W32CALL
GWXWINOPEN (int *xstart, int *ystart, int *xsize, int *ysize)
{
  /*
    printf("GWXOPEN\nxstart %d\nystart %d\nxsize %d\nysize %d\n",*xstart,*ystart,*xsize,*ysize);
  */
    wxstart  = *xstart;
    wystart  = *ystart;
    wxsize   = *xsize;
    wysize   = *ysize;

    /* Start the window thread */
    initthread = 0;
    _beginthread(Thread1,0,NULL);
    /*    printf("beginthread called\n"); */

    while(!initthread) {
      Sleep(5);
    }

}

void W32CALL
GWXDESTROY()
{
    ReleaseDC( gwxWin, gwxHDC );
    ReleaseDC( gwxWin, gwxmemHDC );
}

void W32CALL
GWXCLOSE()
{
    PostQuitMessage (0) ;
    /*    DestroyCursor(gwxNormalC);
          DestroyCursor(gwxInputC); */
    UnregisterClass((LPCSTR)gwxClass, gwxInstance);
}

void W32CALL
GWXFLUSH()
{
    BitBlt(gwxHDC,0,0,xrootsize,yrootsize,gwxmemHDC,0,0,SRCCOPY);
    /*    InvalidateRect(gwxWin,NULL,1); */
}

/* gwxreset
   Reset graphics context to default
   Parameters:   None
*/
void W32CALL
GWXRESET()
{
}

/* getPEN
   Creates pen using type, color, width, pattern
*/
HPEN
makenewpen()
{
    HPEN newpen;
    LOGBRUSH lb;
    GC  *gcontext;

    gcontext = gwxGC;

    /*  printf("makenewpen\n ndash %d\n lmask %d\n fg %d\n width %d\n",ndash,penpattern,gcontext->fg,penwidth); */

    if(ndash == 0) {
      if(penpattern == 0) {
	/*        printf("making penpattern 0\n"); */
        newpen = CreatePen(PS_SOLID, penwidth, gcontext->bg);
      }
      if (penpattern == -1) {
	/*        printf("making penpattern -1\n"); */
        newpen = CreatePen(PS_SOLID, penwidth, gcontext->fg);
      }
    }
    else {
      /*      printf("making dash pen\n"); */
      newpen = CreatePen(PS_DOT, 0, gcontext->fg);
/*
      lb.lbStyle = BS_SOLID;
      lb.lbColor = gcontext->fg;
      lb.lbHatch   = 0;
      newpen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE,
                            penwidth, &lb, ndash, pendash);
			    */
    }
    return newpen;
}

int
GWXNUMEVENTS()
{
    int stat;

    stat = 1;
    if (gwxEvents == NULL) stat = 0;
    return stat;
}

void
GWXEVENT(int *type, int *x, int *y, int *state)
{
    gwxRemEvent(type, x, y, state);
}

int
GWXGETEVENT(int *type, int *x, int *y, int *state)
{
    int   stat;
    Event *event;

    stat  = -1;
    event = gwxEvents;
    gwxLEvent = NULL;
    while (event != NULL) {
      if ((*type == event->type) && (stat == -1)) {
        *x     = event->x;
        *y     = event->y;
        *state = event->state;
        stat   = 0;
        if (gwxLEvent == NULL) {
          gwxEvents = event->next;
        } else {
          gwxLEvent->next = event->next;
        }
        free(event);
        event = NULL;
        if (gwxLEvent != NULL) event = gwxLEvent->next;
      } else {
        gwxLEvent = event;
        event = event->next;
      }
    }
    return stat;
}

/* gwxstatus
   Return current window status (position, size)
   Parameters:
     xstart,ystart          (int*)   upper left corner coordinates in root
     xsize,ysize            (int*)   desired window size
*/
void W32CALL
GWXSTATUS(int *xstart, int *ystart, int *xsize, int *ysize)

{
    RECT  rect;

    /*
    GetClientRect(gwxWin, &rect);
    printf("\nstatus rectangle left %d right %d \n",rect.left,rect.right);
    printf("\n                 top  %d bot   %d \n",rect.top,rect.bottom);
    */
    GetWindowRect(gwxWin, &rect);
    *xstart = rect.left;
    *ystart = rect.top;
    *xsize = rect.right  - rect.left - 2*gwxXmatte;
    *ysize = rect.bottom - rect.top  - 2*gwxYmatte - gwxYbar;

    /*
    printf("\nstatus xstart %d ystart %d \n",*xstart,*ystart);
    printf("\n       xsize  %d ysize  %d \n",*xsize,*ysize);
    printf("\nstatus rectangle left %d right %d \n",rect.left,rect.right);
    printf("\n                 top  %d bot   %d \n",rect.top,rect.bottom);
    */
}

/* gwxresize
   Resize screen window to x width, y height
   Parameters:
     x           (int*)   new width
     y           (int*)   new height
*/
void W32CALL
GWXRESIZE(x, y)
   int     *x, *y;
{
   int ix, iy;

    gwxSize[0] = *x;
    gwxSize[1] = *y;
    ix = gwxSize[0] + 2*gwxXmatte;
    iy = gwxSize[1] + 2*gwxYmatte + gwxYbar;
    SetWindowPos(gwxWin, HWND_TOP, gwxSize[2], gwxSize[3],
                           ix, iy, SWP_NOMOVE|SWP_NOZORDER);
}

/* gwxclear
   Clear current plot window
   Parameters:  None
*/
void W32CALL
GWXCLEAR()
{
    int  i;
    RECT WinRect;

    WinRect.left   = 0;
    WinRect.right  = gwxSize[0] + 2*gwxXmatte;
    WinRect.top    = 0;
    WinRect.bottom = gwxSize[1] + 2*gwxYmatte + gwxYbar;
    FillRect(gwxmemHDC, &WinRect, gwxGC->bgbrush);
    return;
}

/* gwxdisplaybuffer
   Switches background buffer onto foreground window, displaying accumulated
   graphics
   Parameters:  None
*/
void W32CALL
GWXDISPLAYBUFFER()
{
}

/* gwxdrawtobuffer
   Switches graphics to draw to the background buffer
   Parameters:  None
*/
void W32CALL
GWXDRAWTOBUFFER()
{
/* printf("called gwxdrawtobuffer\n"); */
}

/* gwxdrawtowindow
   Switches graphics to draw to the foreground window
   Parameters:  None
*/
void W32CALL
GWXDRAWTOWINDOW()
{
/* printf("called gwxdrawtowindow\n"); */
}

void W32CALL
GWXSTRING(int *x, int *y, char *text, int *length)
{
    int i, xs, ys;
    GC  *gcontext;

    xs = *x + gwxXmatte;
    ys = *y + gwxYmatte;

    gcontext = gwxGC;
    if (gcontext->font != 3) {
      SelectObject(gwxmemHDC, GetStockObject(ANSI_VAR_FONT));
    } else {
      SelectObject(gwxmemHDC, GetStockObject(SYSTEM_FONT));
    }
    SetTextColor(gwxmemHDC, gcontext->fg);
    SetBkColor  (gwxmemHDC, TRANSPARENT);
    TextOut(gwxmemHDC, xs, ys, text, *length);
}

/* gwxline
   Draw line from x1,y1 to x2,y2
   Parameters:
     x1,y1            (int*)   starting position for line
     x2,y2            (int*)   ending position for line
*/
void W32CALL
GWXLINE(int *x1, int *y1, int *x2, int *y2)
{
    int  i, xs, ys;

    xs = *x1;
    ys = *y1;
    MoveToEx(gwxmemHDC, xs, ys, NULL);
    xs = *x2;
    ys = *y2;
    LineTo(gwxmemHDC, xs, ys);
}

/* gwxlinez
   Draw polyline on window in current color and pen
   Parameters:
     ix           (int*)   array of x coordinates on polyline
     iy           (int*)   array of y coordinates on polyline
     n            (int*)   number of coordinate points
    (see define for MAXPTS at start of this file)
*/
void W32CALL
GWXLINEZ(int *ix, int *iy, int *n)
{
    int  i, xs, ys;

    POINT points[MAXPTS];

   if (*n > MAXPTS) {
    fprintf(stderr,"Xplot11.gwxlinez: Too many points in polyline\n");
    printf("Xplot11.gwxlinez: Too many points in polyline\n");
    return;
   }

   for(i=0; i < *n; i++) {
      points[i].x = ix[i];
      points[i].y = iy[i];
/*    printf("gwxlinez x %d y %d \n",ix[i],iy[i]); */
    }
    Polyline(gwxmemHDC, points, *n);
}

/* gwxpoly
   Draw filled polyline on window in current color and pen
   Parameters:
     x_coord      (int*)   array of x coordinates on polyline
     y_coord      (int*)   array of y coordinates on polyline
     n_coord      (int*)   number of coordinate points
    (see define for MAXPTS at start of this file)
*/
void W32CALL
GWXPOLY(x_coord, y_coord, n_coord)
   int     *x_coord, *y_coord, *n_coord;

{  POINT  points[MAXPTS];
   int  i,n;

   if (*n_coord >= MAXPTS) {
      fprintf(stderr,"Xplot11.gwxpoly: Too many points in polyline\n");
      printf("Xplot11.gwxpoly: Too many points in polyline\n");
      return;
    }

   for (i=0; i < *n_coord; i++) {
       points[i].x = x_coord[i];
       points[i].y = y_coord[i];

     }
   n = *n_coord;
/* if the polyline is not closed, duplicate first point to ensure closed

   perimeter (speeds up X graphics drastically) */
   if ( (points[n-1].x != points[0].x) ||
        (points[n-1].y != points[0].y) ) {
       points[n].x = points[0].x;
       points[n].y = points[0].y;
       n++;
      }
    Polygon(gwxmemHDC, points, n);
}

void W32CALL
GWXARC(int *xc, int *yc,
        int *xr, int *yr, float *alpha, float *beta)
{
    int  i, j, xs, ys;

    /* only does circles! */

    xs = *xc + *xr;
    ys = *yc;
    MoveToEx(gwxmemHDC, xs, ys, NULL);
    for (j = 2; j <= 360; j += 2) {
      xs = (int) ((double)*xc + (double)*xr*cos((double)j*0.017453292));
      ys = (int) ((double)*yc + (double)*yr*sin((double)j*0.017453292));
      LineTo(gwxmemHDC, xs, ys);
    }
}

void W32CALL
GWXCURS(int *x, int *y, int *state)
{
int type;

/* Eat up all the current events first */
   while(GWXNUMEVENTS()) {
     GWXEVENT(&type, x, y, state);
     printf("GWXCURS eat up event %d\n",type);
   }
/* Now run an event loop until a buttonpress or keypress is found */
  while(1) {
    if(GWXNUMEVENTS()) {
      GWXEVENT(&type, x, y, state);
      /*      printf("get event %d\n",type); */
      switch (type) {
       case XKeyPress:
         return;

       case XButtonPress:
         return;
      }
    }
  }
}

void W32CALL
GWXCURSC(int *x, int *y, int *state)
{
int type;

/* Eat up all the current events first */
   while(GWXNUMEVENTS()) {
     GWXEVENT(&type, x, y, state);
     printf("GWXCURSC eat up event %d\n",type);
   }
/* Now run an event loop until a buttonpress or keypress is found */
  while(1) {
    if(GWXNUMEVENTS()) {
      GWXEVENT(&type, x, y, state);
      /*      printf("get event %d\n",type); */
      switch (type) {
       case XMotionNotify:
         *state = 1;
	 if((GetAsyncKeyState(VK_LBUTTON) < 0) ||
            (GetAsyncKeyState(VK_MBUTTON) < 0) ||
            (GetAsyncKeyState(VK_RBUTTON) < 0)) *state = 1;
         return;

       case XButtonRelease:
         *state = 0;
         return;
      }
    }
  }
}

void W32CALL
GWXCURS2(int *x, int *y, int *state)
{
  int   i, key;
  POINT point;

  key = 0;
  if  (GetAsyncKeyState(VK_SHIFT)   < 0)  key += 1;
  if  (GetAsyncKeyState(VK_CONTROL) < 0)  key += 4;
  if  (GetAsyncKeyState(VK_MENU)    < 0)  key += 8;
  if  (GetAsyncKeyState(VK_LBUTTON) < 0)  key += 256;
  if  (GetAsyncKeyState(VK_MBUTTON) < 0)  key += 512;
  if  (GetAsyncKeyState(VK_RBUTTON) < 0)  key += 1024;
  if ((GetAsyncKeyState(VK_LBUTTON) < 0) &&
      (GetAsyncKeyState(VK_RBUTTON) < 0)) key -= 768;

  GetCursorPos(&point);

  *x     = -1;
  *y     = -1;
  *state =  0;
  *x     = point.x - gwxSize[2];
  *y     = point.y - gwxSize[3];
  *state = key;
}

HWND W32CALL
GWXCURRENTPOINTER(int *x, int *y)
{
    POINT point;
    RECT  rect;
    HWND  win;

    GetCursorPos(&point);
    win = WindowFromPoint(point);
    GetWindowRect(win, &rect);
    *x = point.x - rect.left;
    *y = point.y - rect.top;
    return win;
}

void W32CALL
GWXSETPOINTER(HWND win, int *x, int *y)
{
    int   ix, iy;
    RECT  rect;

    if (GetActiveWindow() != win) SetActiveWindow(win);
    if (GetFocus() != win) SetFocus(win);
    if (GetForegroundWindow() != win) SetForegroundWindow(win);
    GetWindowRect(win, &rect);
    ix = *x + rect.left;
    iy = *y + rect.top;
    SetCursorPos(ix, iy);
}

/* gwxdash
   Set line drawing pattern to mask pattern
   Parameters:
     mask     (int*)  integer mask value (bits set pen pattern for lines)
*/
void W32CALL
GWXDASH(int* lmask)
{
GC *gcontext;
int   i, ndsh;
HPEN  oldpen;

    penpattern = *lmask;
    gcontext = gwxGC;

    if(*lmask==0) {
      ndash = 0;
    }
    else if(*lmask==-1) {
      ndash = 0;
    }
    else {
      (void) MSKBITS(lmask,pendash,&ndsh);
      ndash = ndsh;
/*      for(i=1; i<=ndash; i++) printf("%d dashes %d\n",i,pendash[i-1]);  */
    }
    oldpen = gcontext->pen;
    gcontext->pen = makenewpen();
    oldpen = SelectObject(gwxmemHDC, gcontext->pen);
    DeleteObject(oldpen);
}

/* gwxpen
   Set pen width for line drawing
   Parameters:
     ipen     (int*)  integer pen width
*/
void W32CALL
GWXPEN(int* ipen)
{
GC *gcontext;
HPEN oldpen;

    penwidth = *ipen;
    gcontext = gwxGC;
    oldpen = gcontext->pen;
    gcontext->pen = makenewpen();
    oldpen = SelectObject(gwxmemHDC, gcontext->pen);
    DeleteObject(oldpen);
}

/* mskbits
   Utility routine to convert lower 16 bits of pattern mask
    into pattern array of on/off bit lengths.  The 16
    bits of ipat can contain up to 16 on/off bit lengths.
    i.e. 0XAAAAAAA produces ibits=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
    i.e. 0XCCCCCCC produces ibits=(2,2,2,2,2,2,2,2)
    The output pattern stored in integer array ibits=(#on,#off,#on,#off,etc.)
   Parameters:
     mask           (int*)   input mask
     ibits          (int*)   output pattern string (#on, #off...)
     ndash          (int*)   number of entries in pattern array
*/
void
MSKBITS(int* mask, int* ibits, int* ndash)
{
#define BITSINMASK 16       /* use only lower 16 bits of mask word */

int            i,ic,ibit,ibitold;
int            nbits, nshft;
unsigned short lmask;

/* shift mask until low bit is 1, filling high bits with 0's */
	  lmask = *mask;
          nshft = 0;

	  if(lmask!=0) {
 	    while (!(ibitold = (lmask & 0x01)))
              lmask >>= 1;
              nshft++;
	  }
/* if no 1 bits just exit with no dashes set */
          if(ibitold==0) {
	    *ndash = 0;
	    exit;
	  }

/*  cycle through the lower 'length-nshft' bits
    checking for number of contiguous same bits,
    store into ibits array  */
    	  nbits = ic = 0;

	  for (i=0; i<(BITSINMASK-nshft); ++i) {

	    ibit=(lmask & 0x01);

	    if(ibit != ibitold) {
	      ibits[ic++] = nbits;
	      nbits = 0;
	     }

            ibitold = ibit;
            nbits++;

	    lmask >>= 1;
	  }

/* add bits at end of shifted bits including any initial shift
   to find the first 1 in the low bit */
	  if(ibit==1) {

            ibits[ic++] = nbits;
            if(nshft>0)
              ibits[ic++] = nshft;

	    }
           else
    	    ibits[ic++] = nbits + nshft;

	  *ndash = ic;
}

/* gwxsetcolor
   Set foreground color to stored colormap pixel value
   Parameters:
     icol     (int*)   index of pixel value (mapped in colormap)
*/
void W32CALL
GWXSETCOLOR(icol)
   int *icol;
{
   int ic, n, fg;
    GC *gcontext;
  HPEN oldpen;

/* is the color index in range for stored colormap data? */
    ic = *icol;
/* find the color in the table */
    for (n=0; n < nRGBmap; n++) {
      if(ic == RGBmap[n].ic) {
        fg = RGBmap[n].rgb;
        gcontext = gwxGC;
        gcontext->fg  = rgb2winrgb(fg);
/*    printf("gwxsetfgcolor fg %d  wfg %d\n",*fg,gcontext->fg); */
        gcontext->pen = makenewpen();
        gcontext->fgbrush = RGBmap[n].brush;
        oldpen = SelectObject(gwxmemHDC, gcontext->pen);
        DeleteObject(oldpen);
        SelectObject(gwxmemHDC, gcontext->fgbrush);
        return;
      }
    }
    fprintf(stderr,"Xplot11.gwxsetcolor: color index %d out of range\n",*icol);

    printf("Xplot11.gwxsetcolor: color index %d out of range\n",*icol);
}

/* gwxsetbgcolor
   Set background color to pixel value
   Parameters:
     pixel     (int*)   pixel value (mapped in colormap)
*/
void W32CALL
GWXSETBGCOLOR(icol)
   int *icol;
{
   int ic, n, bg;
    GC *gcontext;
/* is the color index in range for stored colormap data? */
    ic = *icol;
/* find the color in the table */
    for (n=0; n < nRGBmap; n++) {
      if(ic == RGBmap[n].ic) {
        bg = RGBmap[n].rgb;
        gcontext = gwxGC;
        gcontext->bg  = rgb2winrgb(bg);
        gcontext->bgbrush = RGBmap[n].brush;
        return;
      }
    }
    fprintf(stderr,"Xplot11.gwxsetbgcolor: color index %d out of range\n",*icol);
    printf("Xplot11.gwxsetbgcolor: color index %d out of range\n",*icol);
}

/* gwxcolorname2rgb
   Find r,g,b components for color specified by name string
   Parameters:
     red,grn,blu   (int*)  output color components (0-255)
     nc            (int*)  string length (# of chars)
     colorname     (char*) string containing name of valid color
                           Note: color names are not case sensitive
     len           (int)   fortran appended string length (passed by value)

   Valid color names are any color name that is known to X11 color database
   Examples are "Black","White","Yellow","Orange","Red","Green",
                "Cyan","Blue","Magenta", "ivory", etc.
*/
void W32CALL
GWXCOLORNAME2RGB(int *red, int *grn, int *blu,
                 int *nc, char *colorname, int len)
{
  char cname[32];
  int i,n;
  int irgb;

  n = *nc;
  /* copy string to avoid overwriting possibly static input string
     Note that string length is explicitly passed to avoid compatibility
     problems with by fortran character arg length */
  if(n>31)  {
    n = 31;
    fprintf(stderr,"Xplot11.gwxcolorname2rgb: color name '%s' truncated\n",
	    cname);
    printf("Xplot11.gwxcolorname2rgb: color name '%s' truncated\n",cname);
  }
  strncpy(cname,colorname,n);
  cname[n] = '\0';

  *red = -1;
  *grn = -1;
  *blu = -1;
  if (!gwxlookupcolor(cname,&irgb)) {
    fprintf(stderr,"Xplot11.gwxcolorname2rgb: color name '%s' not found\n",
	    cname);
    printf("Xplot11.gwxcolorname2rgb: color name '%s' not found\n",cname);
    return;
  }
  *red = 0x000000ff & (irgb >> 16);
  *grn = 0x000000ff & (irgb >> 8);
  *blu = 0x000000ff & (irgb);

  /*
   printf("gwxcolorname2rgb red = %d\ngrn = %d\nblu = %d\n",*red,*grn,*blu);
  */
}

int
gwxlookupcolor (char *colorname, int *irgb)
{
  int IC,ic,ncolors;
  int i;
  char cname[32], *ctmp;

  IC = sizeof(Colordef);
  ic = sizeof(colordef);
  ncolors = ic/IC;

  /*
  printf("Colordef %d\n",IC);
  printf("colordef %d\n",ic);
  printf("#entries %d\n",ncolors);
  */

  if(ctmp=strcpy(cname,colorname)) {
    for(ctmp = cname; *ctmp; ctmp++)
       *ctmp = tolower(*ctmp);
  }
  /*  printf("cname %s\n",cname); */

  for (i=0; i < ncolors; i++) {
   if(!strcmp(colordef[i].name,cname)) {
   /* printf("found string %s code %d\n",colordef[i].name,colordef[i].rgb); */
    *irgb = colordef[i].rgb;
    return(1);
   }
  }
  return(0);
}

/* gwxallocrgbcolor
   Allocate a color in colormap specified by r,g,b components

   Parameters:
     red,grn,blu   (int*)  input color components (0-255)
     ic            (int*)  returned color index or pixel value
*/
void W32CALL
GWXALLOCRGBCOLOR(int *red, int *grn, int *blu, int *ic)
{
  int  rgb,col;
  int i;

  rgb = ((0xff & *red) << 16) | ((0xff & *grn) << 8) | (0xff & *blu);
  *ic = -1;

  /*  printf("red %d\ngrn %d\nblu %d\nrgb %d\n",*red,*grn,*blu,rgb); */

/* check for rgb color already allocated in table */

  if(nRGBmap > 0) {
    for (i=0; i < nRGBmap; i++) {
      if(rgb == RGBmap[i].rgb) {
        *ic = RGBmap[i].ic;
       /*       printf("found color %d in table at %d index %d\n",rgb,i+1,*ic);  */
        return;
      }
    }
  }
/* this color's RGB was not in table, allocate it to table
   if there is room allocate a new color */

  if(nRGBmap < MAXCOLS) {
    RGBmap[nRGBmap].rgb = rgb;
    RGBmap[nRGBmap].ic  = nRGBmap+1;
    col = rgb2winrgb(rgb);
    RGBmap[nRGBmap].pen   = NULL;
    RGBmap[nRGBmap].brush = CreateSolidBrush(col);
    nRGBmap++;
    *ic = nRGBmap;
    /*    printf("allocating color table entry %d at %d\n",*ic,nRGBmap-1); */
  }
  else {
    fprintf (stderr,"Xplot11.gwxallocrgbcolor: can't allocate color.\n");
    printf ("Xplot11.gwxallocrgbcolor: can't allocate color.\n");
  }
}

/* gwxfreecolor
   Free a color from color map
   Parameters:
     pix (int*)  pixel in colormap
*/
void W32CALL
GWXFREECOLOR(int *icol)
{
  int i,ic,n;

/* is the color index in range for stored colormap data? */
    ic = *icol;
/*    printf("color to delete %d\n",ic);  */
    if((ic > 0) && (ic <= MAXCOLS)) {

/* find the color in the table */
/*      printf("checking colortable of size %d\n",nRGBmap); */
      for (n=0; n < nRGBmap; n++) {
/*        printf("comparing RGBmap %d with %d to %d\n",n,RGBmap[n].ic,ic); */
        if(ic == RGBmap[n].ic) {
/* delete the table entry */
/*          printf("found color %d to delete at %d\n",ic,n); */

          if(RGBmap[n].pen)   DeleteObject(RGBmap[n].pen);
          if(RGBmap[n].brush) DeleteObject(RGBmap[n].brush);

          if(n < nRGBmap-1) {
           for (i=n; i < nRGBmap; i++) {
            RGBmap[i-1].rgb = RGBmap[i].rgb;
            RGBmap[i-1].ic  = RGBmap[i].ic;
            RGBmap[i-1].pen   = RGBmap[i].pen;
            RGBmap[i-1].brush = RGBmap[i].brush;
           }
          }
          nRGBmap--;
/*          printf("deleted color %d\n",*icol);  */
          return;
	}
      }
    }
    fprintf(stderr,"Xplot11.gwxfreecolor: color index %d out of range\n",*icol);
    printf("Xplot11.gwxfreecolor: color index %d out of range\n",*icol);
}

redpajama_set_name: RedPajamaGithub


For a needs assessment for your flute and/or piccolo, please complete and send the form below. Your name and e-mail address must be completed in order to ensure that this form will reach me.
- then fax it to me at (301) 927-9569.
2. PHONE: (301) 775-5242 to verbally give me your order.
Please be assured that all information you give me will be held in the strictest confidence and will not be shared with anyone else.
Thank you for your needs assessment inquiry. I will review your information and will respond to you shortly.


Executive Chef Myles Lucero invites you to dine with us. His menus feature sustainable, fairly traded, humanely raised, non-GMO, organic and locally sourced ingredients, including the bounty of the Santa Ana Pueblo. Chef Myles and his team put as much care into obtaining wholesome ingredients as they do in preparing them.
The dining rooms present incredible and dramatic views of the Sandia Mountains or the casual and cozy ambiance of historic New Mexican Mission style architecture. Come enjoy the Prairie Star difference. We pride ourselves on tailoring each visit to fulfill our guest's needs and desires. Whether it is an anniversary dinner for two, or dinner with your closest friends, we delight in assisting in the selection of the right wines and creating the magical ambience for each occasion.
We look forward to working with you in creating the magic that is the four-star Prairie Star experience.
wild rice risotto cake • grilled broccolini • citrus "beer blanc"


text:
Lost Books – The Alienist
For a Brazilian writer of the 1800s, it is perhaps remarkable how much of Machado de Assis' work has stayed in print in English. His masterpiece, Epitaph of a Small Winner, appeared in a new edition only a few years ago, and, more recently, a number of his short stories have been made available to download. Of the translations which have fallen out of print, the most difficult to source for a number of years has been The Alienist which originally appeared in 1963 (in the same translation by W. L. Grossman) in The Psychiatrist and Other Stories. Luckily Melville House have re-issued it as part of their 'Art of the Novella' series which has so far provided an interesting mix of the renowned and the less well known.
The story is easily summarised: famous physician Simao Bacamarte, having studied extensively abroad, returns to his hometown of Itaguai determined to make a significant scientific impact in the area of psychology:
"The health of the soul! The loftiest possible goal for a doctor!"
(Interestingly, his determination is explained in psychological terms, as a result of five years of marriage without children). He asks the council for permission to construct an asylum where those deemed insane will be treated together. Despite local misgivings – "Whoever heard of putting a lot of crazy people together in one house?" – the plan goes ahead and the first patients are admitted. Soon, however, Bacamarte comes to suspect that madness is more widespread than he first thought:
"Till now madness has been thought a small island in an ocean of insanity. I am beginning to suspect it is not an island at all but a continent."
Anyone, he feels, who lacks "equilibrium of the mental faculties" must be insane. As equilibrium is hard to find, the asylum quickly fills up until the townspeople rebel. Bacamarte attempts reversing his definition of madness and imprisoning those who show too much equilibrium, but again he is not satisfied. By this point, you can probably guess where the story is heading.
Despite its age (psychiatry was clearly in its infancy when it was written) de Assis provides an amusing satire on the difficulties in deciding who is sane and who isn't (and how this power can be abused). He also combines this with a dig at local politics with various groups coalescing for and against the asylum. A blind respect for science (or perhaps simply fame) seems to be another target as Bacamarte is allowed to do much as he pleases simply because he is held in such esteem. Even when he is eventually challenged (by an angry mob – and it doesn't get much more challenging than that!) he is able to skilfully deflect the blame and carry on as he wishes. De Assis may deliver the tale in a deceptively light tone but this does not prevent it from being both thought-provoking and relevant.
Tags:alienist, machado de assis
Posted in Lost Books, Machado de Assis | 1 Comment »
Philippe Claudel's novels have always tended towards the generalised and emblematic: in Brodeck's Report the Second World War is never actually mentioned; in Monsieur Linh and his Child, which focuses on the experience of an immigrant arriving in Europe, no countries are specified. The Investigation (already published in America and due from MacLehose Press in January) takes this one step further by transporting us into a world of Kafkaesque farce.
The novel begins with the Investigator's arrival in an unnamed city (characters are known by their purpose rather than by name). An East European atmosphere is created by his arrival by train, snow in the air, and the fact that "a giant billboard displayed the hugely enlarged photograph of an old man". However, this is countered by the Investigator's task (the Investigator is quite unlike K in that he is very clear about his purpose): to investigate a number of suicides at an all-encompassing company known as the Enterprise. Are we satirising totalitarianism or rampant capitalism? There's no time to consider this as the Investigator is immediately faced with one problem after another. He cannot get into the Enterprise as it is after nine o'clock and must search for a hotel. The only one he can find is the ironically named Hope Hotel where he is not allowed a room until he has memorised the rules and been tested on them. Even at this early point the Investigator wonders if he might be in hell:
"Then with brutal abruptness a thought came to him, a luminous, self-evident, indubitable thought: He was dead. He'd died without noticing it."
In another novel we might take this as an indication that the author intends the experience to represent his vision of hell, or his view that that life is hell, but here it already feels more in keeping with a literary in-joke. The hotel will offer numerous comic set pieces: later he will have to lift his bed in order to open the door to a luxurious bathroom where he discovers the only water is scalding.
The Enterprise is equally, though less explicitly, inhospitable. A Guide provides him with a white coat and hard hat (completely unnecessary) and conducts him to an office where he is soon abandoned. Later the same man, returns as the Watchman and threatens him with a gun. If Claudel's intention is to satirise big business then his targets seem very small scale. We are offered a few deliberately two dimensional characters to laugh at but no sense of how the Enterprise works.
The novel does build towards a symbolic conclusion, but by that point it is difficult to say what Claudel's target is. Perhaps he is simply suggesting that any search for the truth will be hampered and obstructed. We see this more explicitly in the Investigator's search for food, something that touches on Claudel's previous concerns as, when he finally feasts, it is in the company of immigrants who are given nothing. This is a rare moment when the novel seems politicised. Otherwise it is thoroughly entertaining, often amusing, but only occasionally unsettling. Claudel has taken his generalising to the point where any connection with the real world has been lost: yes, it is clothed in reality but it seems more fantasy than satire. This is perhaps why Claudel seems to insist on its fictionality a little too forcefully at the end. It's great fun to read, and perhaps a little too much fun to write, but, like the Investigator, the Reader leaves the novel none the wiser.
Tags:philippe claudel, the investigation
Posted in Philippe Claudel | Leave a Comment »
Emmaus by Alessandro Baricco (translated into English by Ann Goldstein and published by McSweeney's Books) is a short novel set in post-war Italy about four boys coming to terms with adulthood. Far from following the well-worn path of the coming-of-age story, however, the novel adopts a strange dream-like quality that might remind the reader of a fable – and indeed its title comes from the Biblical story when a post-crucifix Jesus is met but not recognised. This tale is referred to in the narrative but it is difficult to pin down its exact association to the four boys. Certainly religion and faith are important to all of them, particularly to the one who is nicknamed the Saint, but it seems likely that the unknowing is also key as this is a novel where characters remain opaque, both to the reader and each other.
Though the novel is presented as memoir ("The boy was me. It was many years ago.") there is little sense of an older narrator looking back. This preserves the boys' narrow understanding of life; the rich in particular are distant and unknowable:
"The result is lives that we do not understand – writings to which the key is lost."
Andre is from that world, a girl whom all the boys become obsessed with (or at least the narrator does as the narrative keeps returning to her). Even her name is unusual:
"…in our families it's a boys' name, but not in hers, which even when it comes to names demonstrates an instinctive inclination to privilege."
Though she is beautiful, she has no boyfriend; instead she simply makes herself available to the boys around her:
"She waits in the bathroom at the movie theatre, leaning against a wall, and they go in one after the other to take her: she doesn't even turn around."
Her attitude contrasts with that of the boys who regard sex as a sin and whose physical relationship with their girlfriends consists of touching each other under a blanket. Slowly Andre's past is revealed: her sister's death, her attempted suicide. Almost always this is done distantly through a story or comment that the boys have heard. They observe Andre from afar, only occasionally coming close to her.
Andre is also instrumental in the friends becoming more distant with each other. The first sign of this is probably when three of them go to Andre's house to talk with her mother and discover the other's bass guitar there (they also play in a band together). It becomes increasingly clear that the boys do not know each other as well as they think. When the Saint's mother asks the other boys about him, the narrator senses her unknowing:
"She must have wondered if they (parents) were all blind in the face of our mystery."
However, it later transpires that perhaps the other boys did not know the Saint as well as they thought: far from becoming a priest, he ends up in prison.
Perhaps the most tragic misunderstanding relates to Luca's father. Luca tells the other boys his father often goes out onto the balcony at meal times and thinks about throwing himself off. When the narrator has the chance to ask him about this he reveals the true reason:
"It's just that it relaxes me to look at things from above."
The unknowing penetrates the narrative itself where youthfulness is revealed with little sense of irony and our awareness that the boys change is difficult to map. This can make the novel frustrating (and its conclusion is no more revealing) but it is also what makes it interesting.
Tags:alessandro baricco, emmaus
Posted in Alessandro Baricco | 3 Comments »
The Shadow Girls
Henning Mankell apparently wrote the first Wallander novel, Faceless Killers, to engage with issues surrounding immigration in Sweden. Ten years later, having brought the Wallander series to an end, he wrote Tea-Bag (translated in to English by Ebba Segerberg as The Shadow Girls despite its already English title) which seeks to tackle exactly the same issue both more directly and more obliquely.
The novel opens in the voice of Tea-Bag, an African refugee who makes her way first to Europe and then to Sweden after a chance encounter with a Swedish journalist. That she does this largely by walking and hitching across the continent after a near fatal crossing from Africa gives some indication of her strength of character. It is well known that Mankell has spent much of his time in Africa and he has written about it extensively, both in the Wallander novels and in stand-alone works like Chronicler of the Wind; I therefore fully expected this to be Tea-Bag's story. An abrupt change takes place, however, twenty pages in when we are introduced to the character of Jesper Humlin.
Humlin is a Swedish poet whose life seems to consist of a number of antagonistic relationships. His girlfriend, Andrea, is insistent that they either have a child or separate, his mother demands he visit her only to insult him, his accountant has lost most of his money in a bad investment, and his agent will not listen to him. Humlin's introduction marks a change in tone as Mankell introduces a number of running jokes, first and foremost Humlin's publisher's insistence that he write a crime novel. Humlin refuses:
"I don't like crime fiction. I think whodunits are boring. I couldn't care less about reading a book where the only point is to guess who the murderer is before the book is over."
However, as the novel progresses, press announcements, plot synopsises, and proposed titles follow. Humlin also discovers that everyone around him is also writing a book: Andrea, his mother, his accountant; a fellow poet already has a crime novel in development. The novel is therefore partly a satire on the world of writing and publishing – as is evident from scenes of Humlin's readings, another task the modern writer must undertake.
In the midst of all this, however, Humlin becomes embroiled in a project to offer writing classes to immigrants. He sees this as a chance to tell their stories:
"…no-one has heard stories like these before. It is a book about what is happening in this country. Real voices."
Three women attend Humlin's writing class, the public nature of which is in itself an example of cultural difference. As well as Tea-Bag, there is Tanya, on the run form an Eastern European brothel, and Leyla, a legal immigrant from Iran who suffers from the tyranny of her family. Slowly their stories unfold, sometimes told in their own words, at others through conversation and comments from the other women.
Mankell's decision to use Humlin as an intermediary may initially seem strange, but it is likely he wanted to focus as much on the difficulty in understanding as on the understanding. Tea-Bag, for example, remains unknowable to some extent throughout, appearing and disappearing at will. The 'monkey' which she refers to seems to sum up her otherness – a symbol from another genre of writing all together. Mankell also seems to have intended to leaven his serious theme with humour, in the same way he used police procedural in the Wallander novels to tackle a number of important issues. In this he has certainly succeeded. Whatever else you may think of the novel, no-one could accuse it of being gloomy.
Tags:henning mankell, shadow girls
Posted in Henning Mankell | Leave a Comment »


text:
Saoirse Ronan on How Fashion and Clothing Can Affect Confidence
"I don't think clothing needs to make a political statement. I think clothing is about a business, it's about feeling confident, it's about giving you power," Saltzman told THR.
By Ciara McVey
Ciara McVey
More Stories by Ciara McVey
Lana Condor Teases Third and Final 'To All the Boys' Film
How 'Broad City' Helped Ilana Glazer Embrace Her Queerness
'See' Star Archie Madekwe Says Apple TV+ Series Is "Something Nobody Has Seen Before"
Right off the bat, it's easy to see that actress Saoirse Ronan and stylist Elizabeth Saltzman have a special bond. While talking about her stylist, Ronan speaks of her more as a friend, saying, "E can always tell when I love something because I'll stand up in it in a certain way and I think I sort of naturally know how to move in an outfit when it's something I like."
Feeling confident in what you're wearing seems to be the big motivator when it comes to fashion for Ronan and Saltzman. "I've always liked clothes, but I didn't realize how much of an effect it could have on your confidence," the actress told The Hollywood Reporter for its 2018 Power Stylists issue. "There's other friends of mine where they sort of transform in their look, but I think that's the thing about feminism is that it isn't just one thing and it's different for everyone."
Ronan and Saltzman also spoke about the parallels between fashion and feminism. For the stylist, fashion is all about giving you the power to feel strong.
"It's just how you feel and what you believe in and what you believe in is what you believe in – that doesn't have to be about your clothing," Saltzman said. "I don't think clothing needs to make a political statement. I think clothing is about a business, it's about feeling confident, it's about giving you power."
The 25 Most Powerful Stylists in Hollywood 2018
For Ronan, colors can play a huge part in letting her confidence shine through.
"I find even when I'm just at home, there's certain colors I'm drawn to on certain days and that will bring a certain thing out in me on any given day," she told THR. "If it something that's important to you, it can sort of influence how confident you are in yourself too."
Hollywood's Most Powerful Stylists Pose With Their Star Clients (Exclusive Photos)
This story first appeared in the March 21 issue of The Hollywood Reporter magazine. To receive the magazine, click here to subscribe.
Power Stylists
Power Stylists 2018


text:
Morat Swoboda Motion opens production plant for electric drive solutions
Since July 2019, Morat Swoboda Motion – the joint venture between Swoboda and the Franz Morat Group – has been producing geared drive components for electric mobility at its new plant in Nowa Ruda, Poland. The 4,500 square meter plant was officially opened on October 11 with representatives from politics and business.
E-mobility is regarded as a key technology and promising solution for sustainable mobility. In addition to electric cars, electric scooters and electric buses, electrically powered bicycles are particularly popular. In 2018 their sales in Europe exceeded the 2 million mark for the first time – in Germany alone almost one million e-bikes were sold. Whether city bikes for urban areas, mountain & trekking bikes for leisure use or cargo bikes for transport over the last mile. Further growth is expected for this segment in the coming years.
Swoboda and the Franz Morat Group recognized this trend at an early stage and with the founding of Morat Swoboda Motion dedicated themselves to the production of toothed drive components for electro-mobile applications. In 2017, the joint venture was nominated for the first major project. The ground-breaking ceremony in June 2018 marked the start of construction of the new production plant in Nowa Ruda, Lower Silesia. The first machines were delivered in November 2018 and the first sample parts left the plant in March 2019. On 1 July 2019, series production of various gears and shafts started on an area of 4,500 m².
The new plant accommodates the quality-critical manufacturing technologies of gear hobbing, vacuum hardening, centerless grinding, hard turning and gear grinding in-house. The automation concept intelligently links the processing machines with each other. The parts are stocked using push-in trolleys with identical system pallets. At the same time, numerous robots take care of the machine loading. The flexibility of the automation solution allows production to be modularly expanded. For further large-volume orders, the production area can be enlarged to around 7,500 m² by a new hall. In addition to gear components for e-bike motors, Morat Swoboda Motion's product range also covers wheel sets for electric steering systems, rotor shafts for electric cars or planetary gears for e-scooters.
Further information here: https://www.morat-swoboda.com/
Franz Morat Group Heading to a 100 Million Euro Turnover January 7, 2019


Cocina Zanussi Zcv540g1wa have some images associated each other. Obtain the most recent images of Cocina Zanussi Zcv540g1wa on this page, and you can get the pictures from this page for personal usage. Cocina Zanussi Zcv540g1wa images are posted by Admin on April 25, 2018 at 5:25 pm. The image collection of Cocina Zanussi Zcv540g1wa appeared here is a few of the greatest photos around the internet and has been viewed by 78 viewers.
We get several amazing photos that you can manage as design ideas and/or for informational usage of Cocina Zanussi Zcv540g1wa. The team wish that you are all enjoying our gallery of the most wonderful photo of Cocina Zanussi Zcv540g1wa here and utilize them for personal usage. We also give the pictures in High Quality (HQ) Resolution which can be downloaded to your laptop. What you need is only click on the compilation of Cocina Zanussi Zcv540g1wa beneath.


 It's June already. Time flies. Here's the highlights of what happen in my life in the past six months.
Bad decision (offline business). not doing well.
I've been a smoker for 15 years (half of my life). Finally stop on February. It's very hard. I can't concentrate working. I feel like drowning all day. It's a problem when the biggest accomplishment is not doing stuff and fixing past mistake.
Home cooked food is just too good. I gain about 10kgs last year. Lost 4kgs this year. So that is a decline. (I'm overweight btw, so, progress? ).
I think I got it, the ups and downs, and slowly understand more about my physical and emotional state. As always, all I need is to understand the problem, and (hopefully) my brain will solve it. If I feel like being underwater all I need is simply swim. 6 months left this year. I think it's going to be a fun year.
Actually, personally I think there isn't any startling change. Just that I'm getting better in cherishing my memories each day more and more as the days go by. Fighting!
Previous: I have to work hard and change these bubbles into solid soap.


text:
David Alan Chipperfield (London, 1953. december 18. –) Pritzker-díjas brit építész, a kortárs minimalista építészet egyik legismertebb alakja.

Pályafutása
A Londonban született Chipperfield 23 évesen, az Architectural Association építészeti iskolájában szerzett diplomát, majd 1978- 1984 között Douglas Stephen, Richard Rogers és Norman Foster irodájában dolgozott. 1984-ben alapította saját műhelyét, David Chipperfield Architects  néven. A David Chipperfield Architects mára több mint 250 szakembert foglalkoztat, és három városban: Londonban, Milánóban és Berlinben tart fenn irodát.

Első komolyabb saját megbízása egy Issey Miyake számára tervezett divatüzlet volt a londoni Sloane Streeten, 1985-ben. Ennek sikere nyomán több megbízást kapott Japánban, a nyolcvanas évek nagy nyugati építészhullámának előhírnökeként. Itt kezdődött nemzetközi karrierje, amelynek köszönhetően ma is számottevően több épülete áll Nagy-Britannián kívül, mint szülőföldjén.

Az 1990-es években kezdett el Németországban dolgozni; 1999-ben neki ítélték a Heinrich Tessenowról elnevezett, a nemzetközi építészvilág kiemelkedő tehetségeinek elismerésére alapított kitüntetést. 2000-ben egyike volt a brit pavilon kiállítóinak a Velencei Építészeti Biennálén, 2012-ben pedig ő maga volt a rendezvény kurátora.

2003-ban A Brit Birodalom Érdemrendjének parancsnoki fokozatával tüntették ki, 2010-ben II. Erzsébet lovaggá ütötte. 2012-ben a 13. Velencei Nemzetközi Építészeti Kiállítás központi kurátorának kérték fel, amelyhez a "Common Ground" mottót választotta.

Legfontosabb művei

2002-2006 között a tervei szerint épült fel a Modern Irodalom Múzeuma Friedrich Schiller szülővárosában, Marbach am Neckarban. A horizontális tömegekből álló épületbővítés oszlopsorai a klasszicizmus méltóságteljes portikuszait idézik. 2005-2006-ban az Atlanti-óceánon rendezett vitorlásverseny, az Amerika Kupa rendkívül látványos, konzolosan egymás felett lebegő tömegekből építkező központi épülete készült el a spanyolországi Valenciában. 2007-ben mindkét házat Stirling-díjra jelölték, amelyet végül a németországi épület kapott meg.

A kétezres évek második felében két nagyméretű igazságügyi komplexumra kapott megbízást. A 2002-2009 között elkészült barcelonai, illetve a 2011-ben elkészülő salernói alapvetően hasonló formajegyeket mutat: a nagyméretű, geometrikus tömböket csak a csíkszerűen elhelyezett vertikális ablaksávok tagolják, az épületegyüttesek távlati képét pedig az egyes tömbök eltérő színezése teszi változatossá.

1994-ben Chipperfield volt az egyetlen brit építész, aki bejutott a londoni Tate Modern tervezésére kiírt nemzetközi pályázat döntőjébe. A megbízást végül nem ő nyerte el, de ezt követően számos múzeumépület tervezésére kapott felkérést. A sikeresebbek közül kiemelkedik a Gotoh Museum (Csiba, Japán, 1988-1991), az alaszkai Anchorage városi múzeuma (2003-2009), a Turner Contemporary a britanniai Margate-ben (2006-2011). 2010-re készült el a németországi Essenben található Museum Folkwang bővítése, amelyet az Európa kulturális fővárosa programsorozat keretében avattak fel.

Városi léptékű tervei közül kiemelkedik Sanghaj neves sétálóutcája, a Rockbund rendezése, illetve a berlini Múzeum-sziget rekonstrukciójára készített terv. Ez utóbbi keretében készült el legismertebb műve, a Neues Museum helyreállítása 1997-2009 között. A második világháborúban súlyosan megsérült, ezt követően évtizedekig romosan álló épületet Chipperfield eredeti tömegében állította helyre, ám célja nem a teljes rekonstrukció volt. Az újjáépített termekben és homlokzatokon visszahelyezték a megmaradt és fellelhető eredeti maradványokat, de nagyobb részük kétségtelenül új. A végeredmény éppúgy emlékeztet az épület eredeti állapotára, mint a háború és az azóta eltelt évek pusztítására.

A Neues Museum felújítása Chipperfieldnek komoly szakmai sikert hozott. A munkát Europa Nostra-díjjal, valamint az Európai Unió legkomolyabb építészeti kitüntetésével, Mies van der Rohe-díjjal ismerték el. A múzeum felújítása 2010-ben bejutott a Stirling-díjra jelölt alkotások fináléjába is. A Múzeum-sziget helyreállítása a következő években folytatódik az ugyancsak Chipperfield tervei alapján készülő, James Simonról elnevezett bejárati épülettel. Emellett 2012-ben irodája megnyerte a nemzetközi pályázatot a berlini Neue Nationalgaleria Ludwig Mies van der Rohe tervezte, híres épületének felújítására.

A nagy léptékű megbízások mellett Chipperfield rendszeresen tervez családi házakat, illetve irodájának tervei alapján épült a világhírű brit szobrász, Antony Gormley műterme Londonban.

Források

Külső hivatkozások
 America's Cup Building, Valencia
 Museum Folkwang, Essen
 Az Igazság Városa, Barcelona
 Anchorage Museum
 Neues Museum, Berlin

Angol építészek
1953-ban született személyek
Élő személyek
Londoniak
Pritzker-díjasok

redpajama_set_name: RedPajamaWikipedia


The Audit Committee provides an independent assurance of the adequacy of the risk management framework and corporate governance arrangements including anti-fraud and corruption.
The responsibilities of the Audit Committee are contained in Part 3 - Responsibility for Functions contained in the Council's Constitution (see 'Downloads').
The Audit Committee has a politically balanced membership of seven non-Executive Councillors.
For a full listing of Mole Valley District Councillors, see Who are your Councillors.


text:
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Serilog;

namespace MessageVault.Server.Election {

	/// <summary>
	///   Wrapper around a Windows Azure Blob Lease
	/// </summary>
	public class BlobLeaseWrapper {
		readonly CloudPageBlob _leaseBlob;
		readonly int _size;
		readonly ILogger _logger;

		public BlobLeaseWrapper(CloudPageBlob leaseBlob, int size) {
			_leaseBlob = leaseBlob;
			_size = size;
			_logger = Log.ForContext<BlobLeaseWrapper>();
		}

		public void ReleaseLease(string leaseId) {
			try {
				_leaseBlob.ReleaseLease(new AccessCondition {LeaseId = leaseId});
			}
			catch (StorageException e) {
				// Lease will eventually be released.
				_logger.Error(e, e.Message);
			}
		}

		public async Task<string> AcquireLeaseAsync(CancellationToken token) {
			bool blobNotFound = false;
			try {
				return await _leaseBlob.AcquireLeaseAsync(Constants.AcquireLeaseFor, null, token);
			}
			catch (StorageException storageException) {
				var webException = storageException.InnerException as WebException;

				if (webException != null) {
					var response = webException.Response as HttpWebResponse;
					if (response != null) {
						if (response.StatusCode == HttpStatusCode.NotFound) {
							blobNotFound = true;
						}

						if (response.StatusCode == HttpStatusCode.Conflict) {
							return null;
						}
					} else {
						return null;
					}
				}
			}

			if (blobNotFound) {
				await CreateBlobAsync(token);
				return await AcquireLeaseAsync(token);
			}

			return null;
		}

		public async Task<bool> RenewLeaseAsync(string leaseId, CancellationToken token) {
			try {
				await _leaseBlob.RenewLeaseAsync(new AccessCondition {LeaseId = leaseId}, token);
				return true;
			}
			catch (StorageException e) {
				// catch (WebException webException)
				_logger.Error(e, e.Message);

				return false;
			}
		}

		async Task CreateBlobAsync(CancellationToken token) {
			await _leaseBlob.Container.CreateIfNotExistsAsync(token);
			if (!await _leaseBlob.ExistsAsync(token)) {
				try {
					await _leaseBlob.CreateAsync(_size, token);
				}
				catch (StorageException e) {
					if (e.InnerException is WebException) {
						var webException = e.InnerException as WebException;
						var response = webException.Response as HttpWebResponse;

						if (response == null || response.StatusCode != HttpStatusCode.PreconditionFailed) {
							throw;
						}
					}
				}
			}
		}
	}

}


Ice cream is among those few items that are always loved to eat by people from any age group. It is equally famous in all regions of the world and you can never decide which age group is the greatest fan of this food item. This is truly among very few universally liked foods in the world. There are a lot of flavors that are famous in different regions because of their tastes or names, but we are sharing some weirdest ice cream flavors we collected from around the world.
Though the list of weirdest ice cream flavors is very long and we can list more than 100 in this category. But we end up our list with the inclusion of Garlic Ice Cream flavor at No. 10. You will be amazed reading garlic as the main ingredient of an ice cream flavor? This could be your next summer delight, but it may be nasty for a few ice cream lovers around the world. Believe me it is prepared perfectly to give you an amazingly unique taste. So give it a try.
[caption id="attachment_3076" align="aligncenter" width="397"] Pizza Ice Cream[/caption] Though Pizza Ice Cream is very famous in England but it is also eaten frequently by the ice cream lovers in United States. It is the specialty of Max & Mina's Homemade Ice Cream shop. This unique ice cream flavor includes the Becker brother's pizza as its ingredient to bring a really different taste for the customers. This weirdest ice cream flavor also includes mozzarella, garlic and fresh tomato. Can you believe that?
[caption id="attachment_3077" align="aligncenter" width="397"] Octopus Ice Cream[/caption] Octopus is literally very famous seafood in some Eastern Asian countries including Japan, North and South Korea. There are many who find it very difficult when they attempt eating an octopus but now everyone can enjoy this seafood as the part of an ice cream flavor. This is truly an amazing use of the octopus which is uniqueness of Japanese people. Just give it a try and it is just an ice cream you eat in any ice cream parlor across the globe, but with an octopus flavor.
[caption id="attachment_3078" align="aligncenter" width="396"] Smoked Salmon Ice Cream[/caption] All the ice cream flavors prepared and offered in Flushing, Queens, England at the Max & Mina's Homemade Ice Cream but the one named as "Smokes Salmon Ice Cream" is literally on top. This unusual creation of the ice cream shop is equally famous among people along with other flavors like chocolate-covered potato-chip fudge and beer ice cream. It was started creating after a customer suggestion and now have become their specialty.
[caption id="attachment_3080" align="aligncenter" width="249"] Bacon Ice Cream[/caption] Though people eating bacon after frying them properly, but what if you can eat candied bacon as a prominent, main part of an ice cream flavor? Well, Bacon Ice Cream is an equally famous ice cream flavor in London, England. This 5th top-rated ice cream flavor is prepared by David Lebovitz, a notable American cook and baker in London. He uses brown sugar to make candied strips of bacon.
[caption id="attachment_3081" align="aligncenter" width="360"] Sardines & Brandy Ice Cream[/caption] Sardines & Brandy Ice Cream is at No. 4 in our list. Can you believe sardines as the prominent part of an ice cream flavor? Well, what can I say about that? Well, there are a lot of weirdest ice cream flavors that can be easily found in Japan and Sardines & Brandy Ice Cream flavor is among one of those. Since fish is widely eaten by Japanese across the nation throughout the year, therefore its inclusion in ice cream should not be an amazing thing for many.
[caption id="attachment_3087" align="aligncenter" width="341"] Coronation Chicken Ice Cream[/caption] Have you ever heard of chicken as ingredient of an ice cream flavor? Well, coronation chicken ice cream is really a very unique and yet very tasty ice cream flavor in the world which is available to eat by everyone in London, England. It is created mainly with coronation and chicken as its prominent ingredients. Initially it was created for the first time during the Diamond Jubilee celebrations of the England's Queen.
[caption id="attachment_3083" align="aligncenter" width="378"] Spaghetti and Cheese Ice Cream[/caption] Spaghetti and Cheese Ice Cream flavor is the second weirdest flavor in our list. This is actually a cheese flavored ice cream which is prepared after grounding it u with spaghetti pieces. It is widely loved and ate by people in United States. You will find it really tasty and quite nice in its look. I must suggest you give it a try and decide for yourself.
[caption id="attachment_3084" align="aligncenter" width="408"] Breast Milk Ice Cream[/caption] This is the weirdest ice cream flavor which is very famous across United Kingdom (Britain). When the breast milk ice cream flavor was started in "The Icecreamists", London it caused a stir all over the world. This top-rated ice cream flavor is actually prepared with freshly-expressed real break milk of different women. This breast milk is collected as a donation from several public members of the shop which is then blended with lemon zest and vanilla pods.
Top 10 Famous Christmas Horror Movies – Must-Watch!


text:
Q: Proving that if $a_n\in\mathbb{Z}$ for all $n$ then it's limit is also in $\mathbb{Z}$? Edit: Well, this is awkward, after asking the question (that did frustrate me for a few days) I was able to solve it myself without using (and even before looking at) the solutions provided. What am I supposed to do now?

Let $\{a_n\}_{n=1}^\infty$ a sequence converging to $L$. Prove that: c) If $\forall n\in\mathbb{N}$,$a_n\in\mathbb{Z}$ then $L\in\mathbb{Z}$

What I think I should do is: Assume for contradiction that $L\notin\mathbb{Z}$, Therefore exists $a\in\mathbb{Z}$ such that $a-1<L<a$. And since the sequence is converging I can choose an epsilon such that:
$L-\epsilon<a_n<L+\epsilon$
Therefore I need to find an epsilon such that:
$a-1\leq L-\epsilon<a_n<L+\epsilon\leq a$
But I really have no idea what to do here, I can only think of epsilons that are true for one side ($\epsilon=L-a+1$ or $\epsilon=a-L$)

A: HINT
If $L\notin \mathbb Z$ then $\exists \varepsilon > 0 : |L-x|<\varepsilon \Rightarrow x \notin \mathbb Z$.

A: Hint: prove that, under the given data, the sequence $\,\{a_n\}\,\subset \Bbb Z\,$ is eventually constant, meaning:
$$\{a_n\}\subset\Bbb Z\,\,,\,\,\lim_{n\to\infty}a_n=L\Longleftrightarrow\,\exists \,N\in\Bbb N\,\,s.t.\,\,n>N\Longrightarrow a_n=L$$

redpajama_set_name: RedPajamaStackExchange


Leading the way in all aspects of joinery, Think kitchens is committed to bring to its customers the very latest in custom design using the most versatile 3D software available to show you your brand new kitchen before it is even built.
Think kitchens will explain clearly the maze of products that are currently trending in the industry and advise you on the correct choice for your new kitchen. Think kitchens will install kitchens from north Brisbane to Ballina and as far west as Ipswich.
Think kitchens only use master craftsmen for all our projects and strive to give the absolute best service we can deliver. Both directors David and Simon are lifetime cabinet makers and really do care about what they build.
They are both hands on and work closely with our other trades to guaranty that your new kitchen is hassle free and exactly what you were expecting.
Think Kitchens specialises in all custom built interiors and renovations including kitchens, wardrobes, vanities, media cabinets, and custom furniture. We also customise home offices, wet bars, garage storage and commercial shops and offices.
sound advice and merging the latest technical manufacturing with old fashion human interaction.
In combining these ideas we are able to provide a great quality product on a personal level at competitive prices.
During our many years within the cabinetry and design field, we have become aware of a lack of variety in kitchen cabinetry, mainly through not being able to procure stylish, functional doors.