When your stomach grumbles for a slice of meaty, veggie-loaded, cheesy goodness, we know you're not craving any old pizza near 89107. You're looking for a delectable pizza with freshly made tomato sauce, generous heaps of mozzarella and asiago, expertly diced pepperoni, and a golden crust that's simultaneously chewy and crispy. You want to take a bite out of the perfect pizza. You want Domino's.
At Domino's near 89107, it's never been easier to get the fast and fresh pizza your tastebuds are begging you for! Visit your nearest Domino's location to place a carryout order, give us a call, or order your pizza online!
First, start by selecting your favorite crust. Pick from a hand-tossed crust that's seasoned with the perfect balance of garlic and butter, a pan crust featuring two whopping layers of cheese, a crunchy thin crust, or even a gluten-free pizza crust! Next, pick your sauce and start piling on your favorite toppings. Don't be shy! Choose as many as you want. Whether you're a serious fan of mushrooms and spinach or love spicy pepperoni and tangy asiago cheese, you can be sure your nearest Domino's has it all.
Here at Domino's near 89107, we're serious about pizza delivery. In fact, we promise your pizza will arrive hot and fresh at your door, right out of our oven. Can't wait for your pie to arrive? Use our patented Pizza TrackerⓇ system and follow your pizza order as it's prepped, baked, and headed out the door for delivery... and in the meantime, try not to drool on your phone or computer.
You already know we deliver pizza, but did you know we rock at fast pizza takeout near 89107 too? Feel free to order from our pizza menu or take home something more! Satisfy everyone's cravings with one of our handcrafted sandwiches, oven-baked pastas, tasty bread bites, fresh salads, and a dangerously sweet helping of dessert. You can't go wrong with an order of Domino's Marbled Cookie Brownie™, Cinna StixⓇ, or Chocolate Lava Crunch Cake.
With more than 12,000 stores around the world, we know customer service and quality. Our aim is to not only be the best pizza delivery company in Las Vegas, but also the world, and everything from our courteous delivery drivers to our stellar pizza coupons reflects this commitment. Order online, call your local Domino's restaurant near 89107, or use our free smartphone app for hot, fast, and delicious pizza carryout and delivery today! Trust us, we're different than other pizza restaurants. We're your go-to, hands down, favorite pizza place near 89107!


text:
Q: vue3 use aggrid Data is not synchronized after the table view is updated "@ag-grid-enterprise/all-modules": "^27.2.0"
"ag-grid-enterprise": "^27.2.0"
"ag-grid-vue3": "^27.2.0"
 <ag-grid ref="apiTableRef" table-height="120px" :column-defs="columnApiDefs" :row-
 data="apiFormData"...... />

 const selectedData = apiTableRef.value.gridApi.getSelectedRows();
 apiTableRef.value.gridApi.applyTransaction({ remove: selectedData });

when I use applyTransaction to add or update or remove table rowData, the apiFormData dont synchronizing updates, I dont know why?

redpajama_set_name: RedPajamaStackExchange


You don't have to come here. We're ready to process your order via regular mail service or (inside the borders of Budapest) by motorbike courrier service.
We converting and transferring a wide range of cine film, video tapes, audio cassettes, and digital media such as DAT or DCC cassettes.


text:
This document contains information and guidelines about contributing to this project.
Please read it before you start participating.

**Topics**

* [Asking Questions](#asking-questions)
* [Reporting Security Issues](#reporting-security-issues)
* [Reporting Issues](#reporting-other-issues)
* [Submitting Pull Requests](#submitting-pull-requests)
* [Developers Certificate of Origin](#developers-certificate-of-origin)
* [Code of Conduct](#code-of-conduct)

## Asking Questions

**We don't use GitHub as a support forum.**
For any usage questions that are not specific to the project itself, please ask on [Stack Overflow](https://stackoverflow.com) instead. By doing so, you'll be more likely to quickly solve your problem, and you'll allow anyone else with the same question to find the answer. This also allows maintainers to focus on improving the project for others.

## Reporting Security Issues

The developers of CDMarkdownKit takes security seriously.
If you discover a security issue, please bring it to our attention right away!

Please **DO NOT** file a public issue,
instead send your report privately to <contact@christopherdehaan.me>.
This will help ensure that any vulnerabilities that _are_ found
can be [disclosed responsibly](http://en.wikipedia.org/wiki/Responsible_disclosure)
to any affected parties.

## Reporting Other Issues

A great way to contribute to the project is to send a detailed issue when you encounter an problem. We always appreciate a well-written, thorough bug report.

Check that the project issues database doesn't already include that problem or suggestion before submitting an issue. If you find a match, feel free to vote for the issue by adding a reaction. Doing this helps prioritize the most common problems and requests.

When reporting issues, please fill out our issue template. The information the template asks for will help us review and fix your issue faster.

## Submitting Pull Requests

You can contribute by fixing bugs or adding new features. For larger code changes, we recommend first discussing your ideas on our [GitHub Discussions](https://github.com/chrisdhaan/CDMarkdownKit/discussions).

## Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

- (a) The contribution was created in whole or in part by me and I
      have the right to submit it under the open source license
      indicated in the file; or

- (b) The contribution is based upon previous work that, to the best
      of my knowledge, is covered under an appropriate open source
      license and I have the right under that license to submit that
      work with modifications, whether created in whole or in part
      by me, under the same open source license (unless I am
      permitted to submit under a different license), as indicated
      in the file; or

- (c) The contribution was provided directly to me by some other
      person who certified (a), (b) or (c) and I have not modified
      it.

- (d) I understand and agree that this project and the contribution
      are public and that a record of the contribution (including all
      personal information I submit with it, including my sign-off) is
      maintained indefinitely and may be redistributed consistent with
      this project or the open source license(s) involved.

## Code of Conduct

The Code of Conduct governs how we behave in public or in private
whenever the project will be judged by our actions.
We expect it to be honored by everyone who contributes to this project.

We strive to:

* **Be open**: We invite anybody to participate in any aspect of our projects.
  Our community is open, and any responsibility can be carried
  by any contributor who demonstrates the required capacity and competence.
* **Be empathetic**: We work together to resolve conflict,
  assume good intentions,
  and do our best to act in an empathic fashion.
  By understanding that humanity drops a few packets in online interactions,
  and adjusting accordingly,
  we can create a comfortable environment for everyone to share their ideas.
* **Be collaborative**: We prefer to work transparently
  and to involve interested parties early on in the process.
  Wherever possible, we work closely with others in the open source community
  to coordinate our efforts.
* **Be decisive**: We expect participants in the project to resolve disagreements constructively.
  When they cannot, we escalate the matter to structures
  with designated leaders to arbitrate and provide clarity and direction.
* **Be responsible**: We hold ourselves accountable for our actions.
  When we make mistakes, we take responsibility for them.
  When we need help, we reach out to others.
  When it comes time to move on from a project,
  we take the proper steps to ensure that others can pick up where we left off.

This code is not exhaustive or complete.
It serves to distill our common understanding of a
collaborative, shared environment and goals.
We expect it to be followed in spirit as much as in the letter.

---

*The CDMarkdownKit Code of Conduct is licensed under the [Creative Commons Attribution-Share Alike 3.0 License](https://creativecommons.org/licenses/by-sa/3.0/us/).*

*Some of the ideas and wording for the statements above were based on work by [Mozilla](https://wiki.mozilla.org/Code_of_Conduct/Draft), [Ubuntu](http://www.ubuntu.com/about/about-ubuntu/conduct), and [Twitter](https://github.com/twitter/code-of-conduct). We thank them for their work and contributions to the open source community.*

---

*Some of the ideas and wording for the statements above were based on work by the [Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) and [Linux](http://elinux.org/Developer_Certificate_Of_Origin) communities. We commend them for their efforts to facilitate collaboration in their projects.*

redpajama_set_name: RedPajamaGithub


text:
Tag: Direct Instruction
Thales Academy Opens First Rural County School in Pittsboro, North Carolina
April 14, 2022 April 13, 2022 Susan Berry, PhD
Thales Academy opened the doors of its brand new building in Pittsboro, North Carolina, Monday, as about 100 students from the academy's Cary campus moved to the new facility in rural Chatham County.
"Chatham is the first time that Thales has been in a rural county," Bob Luddy, the founder and chairman of Thales Academy, told The Star News Network. "So, my thought was having a facility of that quality in a rural county that's a private initiative is going to change the way people think about K-12 education."
National, NewsBob Luddy, Chatham County, classical curriculum, Direct Instruction, North Carolina, private schools, rural schools, school choice, Thales AcademyLeave a comment
Thales Academy Glen Allen Adds Third Grade After Huge Success of K-2 Programs That Opened in July
October 2, 2020 October 1, 2020 Corinne Murdock
Thales Academy Glen Allen will add the third grade to their K-2 programs in the 2021-2022 school year, after a successful first quarter. Applications are accepted on a first-come, first-serve basis.
The Glen Allen location first opened on July 20 of this year – it is the first Thales Academy in Virginia.
News, School, The South, VirginiaAshley Dundas, CDC, Center for Disease Control, COVID-19, Direct Instruction, Thales Academy, Thales Academy Glen Allen, ventilation system COVIDLeave a comment

redpajama_set_name: RedPajamaCommonCrawl


text:
Home News Dr. Walter Brumskine, Liberia's Only Urologist, Cared for His Patients Though Most...
Dr. Walter Brumskine, Liberia's Only Urologist, Cared for His Patients Though Most Couldn't Afford
Webmaster Admin
The funeral mass of Dr. Walter L. Brumskine, Liberia's only urologist, was held yesterday at Our Lady of Lebanon Catholic Church at Capitol Hill, Monrovia.
In his eulogy to his fallen uncle, Counselor Charles W. Brumskine, now head of the Brumskine family, said "So many of God's people could not afford the cost of Dr. Brumskine's medical services, but he cared for them.
Cllr. Brumskine recalled that his uncle was a very jovial doctor, always joking with his patients. "We don't know if it was your jokes or your medicine that made them well," he stated.
He walked mourners through a series of conversations that his uncle could be having with an Angel as the two reflected on Brumskine's life on Earth. The Angel,Cllr. Brumskine said, would commend the doctor on a life well lived in service to God, country and humanity.
Hundreds attended the funeral, including former Minister of Health & Social Welfare, Martha Sendolo Belleh and Dr. Vuyu Golokai, Dean of the A.M. Dogliotti College of Medicine and former Chief Medical Officer, John F. Kennedy Medical Center.
One of the nation's eminent medical practitioners, who once served as Chief Executive Officer and Deputy Chief Medical Officer of the John F. Kennedy Medical Center, Dr. Walter Brumskine died on Friday, February 12, 2016 at the St. Joseph Catholic Hospital, Monrovia. He was in his 85th year.
During the funeral Mass, the government of Liberia, former patients, students, the clergy and Brumskine's family recalled his passion for medicine, his love for life, how he charmed with his jokes his patients and all who came in contact with him. A recurrent theme in the tributes was his love of life and his firm belief that one of his callings was to make people laugh, using all the facial muscles that God gave them.
Brumskine's daughter, Dr. Euphemia Brumskine-Borrowes, said her father was God's greatest gift to her family and thanked the Almighty for giving him to them for 84 years.
Rev. Monsignor Robert Tikpor recalled fond memories of Dr. Brumskine at St. Peter Claver Junior High School. Tikpor was one of the older boys assigned to care for young Brumskine in the late 1940s. The two shared a friendship that lasted a lifetime. When Tikpor decided to join the Catholic Priesthood, Brumskine teased him. "Why you want to join that thing? You mean you're leaving all these fine, fine girls here,'' Brumskine told Tikpor.
"I told him it was God's gift for me to be a priest."
A native son of Grand Bassa County, Dr. Walter Lysandas Brumskine was the fifth of seven children, six of whom predeceased him. He began his education at the St. Peter Claver Junior High School in Buchanan and later matriculated to St. Patrick's High School in Monrovia, where he graduated the second of his class in 1952.
He was raised in the Methodist Church (son Methodist pastor), but the Catholic education influenced his life so much that he converted to the faith and remained a devout Catholic until his death.
Growing up, Dr. Burmskine dreamed of becoming a doctor. After high school, he enrolled at the University of Liberia where he graduated with a Bachelor's degree in biology. Brumskine's hard work and excellent grades earned him a scholarship to pursue his medical studies at the Valencia Medical School in Spain.
After his studies in Spain, Dr. Brumskine returned to Liberia to serve his country. He held numerous positions, including Associate Dean, A.M. Dogliotti College of Medicine, University of Liberia; Private Physician to President W.V.S. Tubman; Council Member and Examiner, West African Council of Surgeons; former President, Liberia Medical and Dental Board; Founder and Medical Director, Brumskine Clinic, Liberia; Medical Director, Liberian Government Hospital, Grand Bassa County.
One of his special attributes was that he became Liberia's first urologist, and for many years remained the only specialist who provided medical and surgical care to people facing problems in the urinary tract system.
During his professional life, Dr. Brumskine regularly participated in Annual General Meetings of the West African College of Surgeons; British Urological Association, the Royal College of Surgeons.
He authored several medical and professional articles, including "Incidence of Schistosomaisis in Liberian Children and "Squamous Cell Carcinoma in a Five-Year-Old Liberian Male."
Dr. Brumskine remdered voluntary service as Observer Doctor to the Liberian Daily Observer newspaper.
In recognition of his outstanding services to the government and people of Liberia and humanity in general, through his practice of medicine, Dr. Brumskine received many state decorations, including Knight Grand Commander of the Most Venerable Order of Knighthood of the Pioneers.
Following the funeral mass, the cortege departed for Upper Buchanan, Grand Bassa County where his remains were interred alongside his parents and ancestors.
Survivors include his widow of 60 years, Mrs. Euphemia Lomax Brumskine, nine children—Mrs. Euphemia Brumskine Burrowes, Mrs. Ursula Brumskine Bonar, Mrs. Jacquelyn Brumskine Anderson, Linda Brumskine, Worteji Brumskine, Walta Brumskine, Delaruelle Brumskine, Mrs. Margaret Brumskine Bonar and William Brumskine; 12 grandchildren, one great-grandson; sister Mayme Brumskine; and many other relatives.
Previous articleSomalia Drive Traffic Jam Leaves Many Stranded
Next articleUrey Senses Plot to Frustrate 2017 Elections


We are often asked if professional SEO (search engine optimization) can be done effectively utilizing in-house talent. Despite our obvious self-interests on the subject, our answer is always a qualified "yes"- you can achieve professional SEO results using existing talent. However, for every company we have known that has met with great in-house SEO success, we know of many more that have seen their in-house efforts fail. We have also discovered the companies that have succeeded share some common traits.
If your company is considering doing SEO in-house, there are some critical questions that you should address before you proceed.
Do I have the proper resources at my disposal to achieve professional SEO results?
Search engine optimization takes time, and your internal SEO expert will need to have a great deal of it at his or her disposal - especially at the project's outset when target audiences, keyphrases, and optimization schemes are first being established. Even after the initial optimization effort, the nature of SEO will require this person to spend ample time keeping up with industry trends, monitoring campaign progress, performing A/B testing, and expanding the campaign as new product and service areas are added.
Perhaps even more important than time, achieving professional SEO results requires a unique set of aptitudes. The person responsible for your internal SEO initiative must possess the ability to learn quickly and to look at your website from a macro-perspective, marrying together the needs of sales, marketing, and IT. He or she can not be an aggressive risk taker, as this is often a surefire way to get your website penalized and potentially removed from the major search engines. These gifted people exist in many companies, but given the unique attributes that these individuals possess, their time is often already spent in other crucial areas of the business.
Without enough time to invest in the project or the right type of person to execute it, an internal SEO initiative is likely doomed to fail.
Do I know which departments of my company should be involved, and will they work with an insider?
As mentioned above, professional SEO, by necessity, involves marketing, sales, and IT. The SEO expert must work with marketing to find out what types of offers and initiatives are working offline to help translate them effectively online. He or she must work with sales to identify the types of leads that are most valuable so that you can target the right people in the keyphrase selection process. And, finally, your SEO expert will need to work with IT to determine any technical limitations to the SEO recommendations, learn of any past initiatives based on a technical approach, and get the final optimization schemes implemented on the website.
Sadly, in many businesses, these departments have a somewhat adversarial relationship. However, it is the duty of the SEO expert to act as a project manager and coordinate the efforts of all three departments if you are going to get the most out of your campaign. No professional SEO project can be completed in a vacuum. For whatever reason, it is often easier for an outsider to get adversarial departments on the same page, in the same way that a marriage counselor might convince a woman of her undying love for her husband while the husband is still grimacing from a well-placed knee in the parking lot.
Will someone be held accountable for the results?
This may seem like a small consideration, but it can have a tremendous impact on the success of the campaign. If you have added this responsibility to some poor soul's job description with the direction that he or she should "do the best you can," you'll be lucky to make any headway at all (especially if the person is not enthusiastic about SEO). Whether SEO is done in-house or outsourced, someone will have to take responsibility for showing progress, explaining setbacks, and continually improving results. Without this accountability, it is very common to see an initiative fade as the buck is passed.
Can I afford delayed results based on a learning curve?
It's a reality - professional SEO expertise has a steep learning curve. While the information on how to perform the basics of optimization are freely available on the web, much of the information out there is also contradictory, and some of it is actually dangerous. It takes time for someone unfamiliar with the discipline to sort the SEO wheat from the SEO chaff (on a side note, a "quoted" search of Google reveals that this may actually mark the first occasion in human history that the phrase "SEO chaff" has been used - we're betting it's also the last). Simply put, if the person you are putting on the job has no experience, it will take longer to get results. This may not be a consideration if you aren't counting on new business from SEO any time soon. However, if you are losing business to your competition due to their professional SEO initiatives, time might be a larger factor.
Will it cost me less to do it in house than it would to choose a professional SEO firm?
Often, companies will attempt this specialized discipline in-house in order to save money, and sometimes this works out as intended. However, accurate calculations of the cost of in-house labor that would be involved versus the price of the firm you would otherwise hire should be performed to make an accurate comparison. When making this calculation, also factor in the opportunity cost of the resource - the tasks that your in-house people are not able to perform because they are involved in SEO.
In addition, if worse comes to worst and your in-house SEO expert is led astray by some of the more dangerous "how-to" guides available, it can cost even more to repair the damage than it would have to hire a professional SEO firm to perform the optimization from the outset. And an internal SEO campaign gone wrong can cost even more than the stated fee - websites that violate the terms of service of the major search engines (whether intentional or not) can be severely penalized or even removed, costing you a lot of lost revenue when potential customers can not find your website for a period of time.
Do I believe that the end result I'll get in-house will be equal to or greater than the results I would have gotten from a professional SEO firm?
Search engine optimization can create huge sales opportunities, and slight increases in overall exposure can have not-so-slight increases in your bottom-line revenue. If you believe that your talented in-house resource will, given enough time, achieve results equal to or greater than those that could have been achieved by the professional SEO firm you might have chosen, it may make sense to do it internally.
However, in addition to a better knowledge of industry trends, one clear advantage that search engine optimization firms have is the benefit of the experience and macro-perspective that comes from managing many different websites over time. Professional SEO firms can watch a wide range of sites on a continual basis to see what trends are working, what trends aren't, and what formerly recommended tactics are now actually hurting results.
This macro-perspective allows professional SEO firms to test new tactics as they appear on a case-by-case basis and apply those results across a wide range of clients to determine what the benefit is. It is harder for an individual with access to only one site to perform enough testing and research to achieve optimum results all the time, something that should also factor into the equation.
Do I have at least a slight tolerance for risk?
Neophytes to SEO can make mistakes that can lead to search engine penalization or removal. This happens most commonly when they have an IT background and treat SEO as a strictly technical exercise. We are often called in to assist companies who have had an internal initiative backfire, leaving them in a worse position than the one they were in before they started. The simple truth is that you cannot perform effective SEO without marrying your efforts to the visitor experience, but this is not something that is intuitively understood when people approach SEO for the first time.
However, professional SEO firms are not perfect either. Some firms use those same optimization methods that violate the search engines' terms of service and can get your site penalized. So, if you do decide to outsource, educate yourself on SEO and do some research on the firm. Know the basics of the business, find out who the firm's clients are and how long they've been in business, and ask for professional references - just like you would do with any major business purchase.
If you have considered all of the above questions, and your answers to all seven are "yes," your company may be uniquely equipped to achieve professional SEO results in-house. If you answered "no" to any of the first three questions but "yes" to the rest, it does not necessarily mean that you can't perform SEO in-house - just that you may not be in a position to do so at this time. Taking the actions required to get you in the right position to answer in the affirmative might be worth your while. However, if you answered "no" to any of the last four questions, you may want to consider outsourcing the project to a professional SEO firm.
A professional SEO firm has the resources, the time, the expertise, and, most importantly, the experience, to launch an SEO initiative for your website that will have a positive effect on your bottom line. Whichever option you choose, it is important that you fully embrace the channel. A half-hearted initiative, whether done internally or outsourced, can be as ineffective as taking no action at all.
Scott Buresh is the CEO of Medium Blue Search Engine Marketing. He has contributed content to many publications including Building Your Business with Google For Dummies (Wiley, 2004), MarketingProfs, ZDNet, SEO Today, WebProNews, DarwinMag, SiteProNews, ISEDB.com, and Search Engine Guide. Medium Blue, an Atlanta search engine optimization company, serves local and national clients, including Boston Scientific, DuPont, and Georgia-Pacific. To receive internet marketing articles and search engine news in your email box each month, register for Medium Blue's newsletter, Out of the Blue.
Search engine optimization this and search engine optimization that. You read and hear about it all day, but what about your site? While there are plenty of articles providing useful information, this article shows you how a real world example met with success.
Its a matter of here today, gone tomorrow at the moment with Google so don't get complacent if you are on the first few pages of the searches. Its great, you are making money and think now you can relax and forget about it for a while.
It's common knowledge - we all know that it is important to rank well in search engines. Doing so can bring qualified, interested visitors to the web site you create.
Unfortunately, not many Search Engine Optimization companies know what this involves. You may see a "one size fits all" package, link popularity development in the form of submitting to link farms, or even the dreaded "Submit Your Site to 1000's of Search Engines" scam.
For anyone looking to enhance their Google Page Rank (PR) to get a better place in the search results, we now have software that makes finding good links so much easier.In case you didn't know, to get your PR rating up it is essential to have a significant number of good quality links to your site (the techy bit).
Why is it that webmasters are so quick to blame Google if their website falls down the search rankings, or out of the rankings altogether? Can it never be their own fault?I read an amusing forum post headed "What's up with Google?". The writer had a website just 2 months old, which had only had 2 visits from Googlebot, a Google robot.
Having a Google Sitemap just got better! Not only does the search engine company check your sitemap, but now they give you feedback! The new feature was quickly noticed by many users of the service recently as a way for Google to alert the webmaster about possible problem pages that they have had trouble indexing.I had the wonderful experience of getting to know this service first hand when I logged in to Google Sitemaps to check on the status of one of my many sitemaps.
Many marketers know that search engine marketing is among one of the best methods to get visitors to their websites. It's a profitable way to reach new subscribers and new customers.
You finally have a website and you are ready to sit back and let the visitors start rolling in. How does that saying go? "If you build it they will come.
In October 2002, the Yahoo! portal changed the way it delivers search results. In the past, the most prominent results were exclusively culled from websites listed in the Yahoo directory itself.
Keyword optimization involves vital keyword selection and placement strategy depends on successfully identifying your industry related important keywords and then where you can place those keyword for maximum effectiveness.Effective use of keywords optimization and Phrases on your websiteKey to successful web optimization begins with effective use of keywords selection and placement.


Hey there my pretty merry goers! Time for another #MiriamBeauty post and this time round let's talk about the Mary Kay TimeWise® Microdermabrasion Plus Set.
I received this duo set a while back and have been incorporating both these products into my daily skin care regime so here are my thoughts about it and if it really works to get the look of polished, younger skin and significantly smaller pores.
So first up we have the TimeWise® Microdermabrasion Refine 70g, RM175 which aims to give you polished, smooth skin in an instant. It has the same key exfoliating ingredient used by many dermatologists.
Before I tried this product, I thought it would be just like some other exfoliating cleansing foam but I was surprised that I was not able to see any exfoliating ingredients when I squeezed the product out. It is white and has a slight creamy texture which spreads easily. Once I applied it on my face I finally realized why it was called the microdermabrasion because the exfoliating ingredient is seriously micro-fine. It has a similar texture to fine sand and you can feel it really 'polishing' your face just like sand. It is not harsh and just gently exfoliates your skin leaving it feeling super smooth like after being polished. I seriously love the gentle exfoliation from this product because especially for sensitive skin, gentle exfoliation is very important. I'm taking note to leave this product and give it to my sister to try out since she has sensitive skin.
After cleansing, 2-3 times a week apply a small amount of TimeWise® Microdermabrasion Refine to wet face with fingertips. Using circular motions, gently massage over face. Rinse thoroughly with warm water and pat dry.
After cleansing, the next step is the TimeWise® Pore Minimizer 29ml, RM175 which aims to give smaller-looking pores for flawless looking skin. This is a NEW twice-daily defense against the look of enlarged pores.
This product is more of a serum type of product where you use it after your toner and before moisturizing. It easily absorbs into the skin which is good because I do not like thick serum products. The Pore Minimizer does not leave a sticky feeling after applying too. I like how it instantly creates a smooth and polished skin surface after application but I would have to use it for a longer period to actually judge if my pores are reducing.
Use fingertips to apply 2-3 pumps of TimeWise® Pore Minimizer to face in an upward and outward motion. Follow with your regular moisturizer. The Pore Minimizer can also be used daily, twice a day, to reduce the appearance of pores.
You desire smooth, polished skin and/or you're concerned about the visible number or size of your pores.
You want an affordable, at-home solution for gentle exfoliation that can help combat some of the visible early-to-moderate signs of aging.


text:
Famous People:
Relationships, Real Names, Movies, Bands, Rappers, Ancestry, ...
Connect ...
Titles, Groups
Fame, Honors ...
Honors Awarded
Birthday ...
Month and Day
Month and Year
Search Death Day
Same Event
40 Persons in the National Polish-American Sports Hall of Fame:
Al Simmons
baseball, coach, hall of fame
Real/Birth Name:
Aloisius Szymanski
Nickname(s):
Bucketfoot Al
Age at Death:
54, 4 days after his birthday
Traditional Zodiac Sign:
Gemini ♊ - the Twins - people born May 22 through June 21
Milwaukee, Wisconsin, USA
Brief Facts:
Outfielder. Teams Philadelphia Athletics, Chicago White Sox, Detroit Tigers, Washington Senators, Boston Braves, Cincinnati Reds, Boston Red Sox. Wisconsin Athletic Hall of Fame 1951. National Baseball Hall of Fame 1953. National Polish-American Sports Hall of Fame. Philadelphia Sports Hall of Fame 2006. Philadelphia Baseball Wall of Fame 1981.
Alan Kulwicki
auto racing, accident, air crash, NASCAR, hall of fame
Alan Dennis Kulwicki
Polish Prince
Sagittarius ♐ - the Archer or Centaur - people born November 23 through December 22
Greenfield, Wisconsin, USA
NASCAR Winston Cup driver. International Motorsports Hall of Fame 2002. Lowe's Motor Speedway Court of Legends 1993. Wisconsin Athletic Hall of Fame 1993. Talladega Walk of Fame 1996. Bristol Motor Speedway Heroes of Bristol Hall of Fame 1997. National Polish-American Sports Hall of Fame 2001. Motorsports Hall of Fame of America 2010. National Motorsports Press Association Hall of Fame 1999. Daytona Beach Stock Car Racing Hall of Fame 2013. NASCAR Hall of Fame 2019. Charlotte Motor Speedway Court of Legends.
Alan Trammell
baseball, manager, coach, hall of fame
Alan Stuart Trammell
Age today:
61, 35 days before his 62nd birthday
Pisces ♓ - the Fish - people born February 20 through March 20
Garden Grove, California, USA
Shortstop, then manaager, coach. Team Detroit Tigers then as manager, also at team Arizona Diamondbacks and first base coach at team San Diego Padres. Breitbard Hall of Fame 1998. Michigan Sports Hall of Fame 2000. National Baseball Hall of Fame 2018. National Polish-American Sports Hall of Fame.
Alex Wojciechowicz
football, hall of fame
Alexander Francis Wojciechowicz
Wojie
76, 30 days before his 77th birthday
Leo ♌ - the Lion - people born July 23 through August 21
South River, New Jersey, USA
Offensive lineman and linebacker. Teams Fordham University, Detroit Lions, Philadelphia Eagles. Eagles Hall of Fame 1987. College Football Hall of Fame 1955. National Polish-American Sports Hall of Fame. New Jersey Sports Hall of Fame 1995. Pro Football Hall of Fame 1968.
Bill Mazeroski
baseball, hall of fame
William Stanley Mazeroski
Virgo ♍ - the Virgin - people born August 22 through September 23
Wheeling, West Virginia, USA
Second baseman. Team Pittsburgh Pirates. Babe Ruth Award 1960. National Baseball Hall of Fame 2001. National Polish-American Sports Hall of Fame. Pennsylvania Sports Hall of Fame 1985. Ohio Valley Athletic Conference Hall of Fame 2004.
Bill Osmanski
football, coach, hall of fame
William Thomas Osmanski
December 25, 1996 (Christmas Day)
80, 4 days before his 81st birthday
Capricorn ♑ - the Sea-Goat - people born December 23 through January 20
Providence, Rhode Island, USA
Fullback. Teams College of the Holy Cross, Chicago Bears. Chicagoland Sports Hall of Fame. College Football Hall of Fame 1973. National Polish-American Sports Hall of Fame.
Bob Brudzinski
Robert Louis Brudzinski
65, 16 days after his birthday
Fremont, Ohio, USA
Linebacker. Teams Ohio State University, Los Angeles Rams, Miami Dolphins. National Polish-American Sports Hall of Fame. Ohio State Men's Varsity "O" Hall of Fame 1993. Orange Bowl Hall of Fame 2012.
Carl Michael Yastrzemski
Southampton, New York, USA
Team Boston Red Sox. Boston Red Sox Hall of Fame 1995. National Baseball Hall of Fame 1989. National Polish-American Sports Hall of Fame. Hutch Award 1967. Sports Illustrated Sportsperson of the Year 1967. Suffolk Sports Hall of Fame 1990.
Carol Blazejowski
basketball, hall of fame
Carol Ann Blazejowski
Libra ♎ - the Scales - people born September 24 through October 23
Elizabeth, New Jersey, USA
College team Montclair State College. Pro team New Jersey Gems. Naismith Memorial Basketball Hall of Fame 1994. National Polish-American Sports Hall of Fame. New Jersey Sports Hall of Fame 1995. Women's Basketball Hall of Fame 1999. Wade Trophy 1978. New Jersey Hall of Fame 2016.
Christian Donald Laettner
Angola, New York, USA
6 feet 11 inches (210.82 cm)
Power forward / center. Teams Duke University, Minnesota Timberwolves, Atlanta Hawks, Detroit Pistons, Dallas Mavericks, Washington Wizards, Miami Heat, Jacksonville Giants. Adolph F Rupp Trophy 1992. National Collegiate Basketball Hall of Fame 2010. National Polish-American Sports Hall of Fame. John R Wooden Award 1992. Naismith College Player of the Year 1992. Duke Athletics Hall of Fame 2007.
Danny Abramowicz
football, coach, sports analyst, hall of fame
Daniel Stanley Abramowicz
Cancer ♋ - the Crab - people born June 22 through July 22
Steubenville, Ohio, USA
Wide receiver, teams Xavier University, New Orleans Saints, San Francisco 49ers. Greater New Orleans Sports Hall of Fame 1984. Louisiana Sports Hall of Fame 1992. National Polish-American Sports Hall of Fame. New Orleans Saints Hall of Fame 1988. Xavier University Athletic Hall of Fame 1981.
Dick Modzelewski
Richard Blair Modzelewski
Aquarius ♒ - the Water-Carrier - people born January 21 through February 19
West Natrona, Allegheny County, Pennsylvania, USA
Defensive tackle. Teams University of Maryland, Washington Redskins, Pittsburgh Steelers, New York Giants, Cleveland Browns. College Football Hall of Fame 1993. Knute Rockne Memorial Trophy 1952. National Polish-American Sports Hall of Fame. Outland Trophy 1952. Pennsylvania Sports Hall of Fame 2000. Southern Conference Hall of Fame 2012.
Forest Evashevski
Quarterback. Teams University of Michigan, Iowa Pre-Flight Seahawks. Coach, teams Washington State University, University of Iowa. College Football Hall of Fame 2000. Iowa Sports Hall of Fame 1989. National Polish-American Sports Hall of Fame. University of Michigan Athletic Hall of Honor 1990.
Frank Kush
Frank Joseph Kush
Windber, Pennsylvania, USA
Defensive lineman, team Michigan State University. Coach, teams Arizona State University, Hamilton Tiger-Cats, Baltimore/Indianapolis Colts, Arizona Outlaws. Chick-fil-A Peach Bowl Hall of Fame 2007. College Football Hall of Fame 1995. MSU Athletics Hall of Fame 2000. National Polish-American Sports Hall of Fame. Walter Camp Coach of the Year Award 1975.
Frank Tripucka
Francis Joseph Tripucka
Bloomfield, New Jersey, USA
Quarterback. Teams University of Notre Dame, Detroit Lions, Chicago Cardinals, Dallas Texans, Ottawa Rough Riders, Denver Broncos, Saskatchewan Roughriders. Colorado Sports Hall of Fame 1983. Denver Broncos Ring of Fame 1986. National Polish-American Sports Hall of Fame. New Jersey Sports Hall of Fame 1999.
football, coach, hall of fame, sports analyst
Henry Louis Stram
Coach of team Kansas City Chiefs. Pro Football Hall of Fame 2003. Missouri Sports Hall of Fame 1996. Chiefs Hall of Fame 1987. National Polish-American Sports Hall of Fame. Purdue Intercollegiate Athletic Hall of Fame 1996. Indiana Football Hall of Fame.
Jack Ham
football, sports analyst, hall of fame
Jack Raphael Ham Jr.
Dobre Shunka
Johnstown, Pennsylvania, USA
Outside linebacker. Teams Pennsylvania State University, Pittsburgh Steelers. College Football Hall of Fame 1990. National Polish-American Sports Hall of Fame. Pittsburgh Steelers Hall of Honor 2017. Pro Football Hall of Fame 1988.
Jim Dombrowski
James Matthew Dombrowski
Williamsville, New York, USA
Guard and offensive tackle. Teams University of Virginia, New Orleans Saints. Greater Buffalo Sports Hall of Fame 2009. National Polish-American Sports Hall of Fame 2013. College Football Hall of Fame 2008. New Orleans Saints Hall of Fame 2003. Virginia Sports Hall of Fame 2010.
Jim Grabowski
James S. Grabowski
Running back. Teams University of Illinois, Green Bay Packers, Chicago Bears. College Football Hall of Fame 1995. National Polish-American Sports Hall of Fame. Rose Bowl Hall of Fame 1997. Academic All-America Hall of Fame 1993. Chicagoland Sports Hall of Fame. Illinois Athletics Hall of Fame 2018.
Joe Niekro
Joseph Franklin Niekro
Scorpio ♏ - the Scorpion - people born October 24 through November 22
Martins Ferry, Ohio, USA
younger brother of
Phil Niekro
Younger than Phil Niekro by 5 years.
Details - all relationships
List - people connecting
Pitcher. Teams Chicago Cubs, San Diego Padres, Detroit Tigers, Atlanta Braves, Houston Astros, New York Yankees, Minnesota Twins. National Polish-American Sports Hall of Fame. Ohio Valley Athletic Conference Hall of Fame 2010.
Johnny Lujack
John Christopher Lujack Jr.
Connellsville, Pennsylvania, USA
Won the Heisman Trophy 1947, team University of Notre Dame, as quarterback. Team Chicago Bears. National Polish-American Sports Hall of Fame 1978. College Football Hall of Fame 1960. Pennsylvania Sports Hall of Fame 1965.
Johnny Podres
John Joseph Podres
Witherbee, New York, USA
Left-handed pitcher. Teams Brooklyn Dodgers, Los Angeles Dodgers, Detroit Tigers, San Diego Padres. Pitching coach after retirement. Babe Ruth Award 1955. National Polish-American Sports Hall of Fame. Sports Illustrated Sportsperson of the Year 1955.
Hollywood Walk of Fame:
A star at 6807 Hollywood Boulevard for involvement with team Los Angeles Dodgers; ceremony: 20 June 2008.
Leon Hart
Leon Joseph Hart
Pittsburgh, Pennsylvania, USA
Won the Heisman Trophy 1949, team University of Notre Dame, as end. Team Detroit Lions. College Football Hall of Fame 1973. Michigan Sports Hall of Fame 1997. National Polish-American Sports Hall of Fame. Pennsylvania Sports Hall of Fame 1985. Maxwell Award 1949. Knute Rockne Memorial Trophy 1949.
Lou Creekmur
Louis Creekmur
Hopelawn, New Jersey, USA
Left offensive tackle/guard. Team Detroit Lions. Michigan Sports Hall of Fame 2003. National Polish-American Sports Hall of Fame 2001. New Jersey Sports Hall of Fame 1999. Pro Football Hall of Fame 1996. Virginia Sports Hall of Fame 1989.
Lou Michaels
Louis Andrew Michaels
Swoyersville, Pennsylvania, USA
Placekicker, defensive end. Teams University of Kentucky, Los Angeles Rams, Pittsburgh Steelers, Baltimore Colts, Green Bay Packers. College Football Hall of Fame 1992. Kentucky Athletic Hall of Fame 1993. Knute Rockne Memorial Trophy 1957. National Polish-American Sports Hall of Fame. Pennsylvania Sports Hall of Fame 1989.
Mark Fidrych
baseball, accident, hall of fame
Mark Steven Fidrych
Worcester, Massachusetts, USA
Pitcher for AL team Detroit Tigers from 1976 through 1980. AL Rookie of the Year 1976. All Star team 2 years. Died on his farm when a dump truck he was working on fell on him. National Polish-American Sports Hall of Fame. American League Rookie of the Year Award 1976.
Mark Rypien
Mark Robert Rypien
father of
Angela Rypien
Descendants:
Quarterback. Teams Washington State University, Washington Redskins, Cleveland Browns, St. Louis Rams, Philadelphia Eagles, Indianapolis Colts, Rochester Raiders. Inland Northwest Sports Hall of Fame. National Polish-American Sports Hall of Fame. NFL Player of the Year 1991. Senior Bowl Hall of Fame 1994. East-West Shrine Game Hall of Fame 2017. State of Washington Sports Hall of Fame 2008. Washington State University Athletic Hall of Fame 1993. Washington State Athletics Hall of Fame 1993.
Michael Gminski
basketball, sports analyst, hall of fame
Michael Thomas Gminski
Monroe, Connecticut, USA
Center. Teams Duke University, New Jersey Nets, Philadelphia 76ers, Charlotte Hornets, Milwaukee Bucks. Academic All-America Hall of Fame 2006. Duke Athletics Hall of Fame 1996. National Polish-American Sports Hall of Fame 2003.
Michael K. Ditka
Carnegie, Pennsylvania, USA
Coach of team Chicago Bears. College Football Hall of Fame 1986. Chicagoland Sports Hall of Fame. Pro Football Hall of Fame 1988. National Polish-American Sports Hall of Fame. Paul Brown Trophy 1985.
basketball, coach, hall of fame
Michael William Krzyzewski
72, 27 days before his 73rd birthday
Team United States Military Academy. Coach, teams US national men's basketball team, United States Military Academy, Duke University. Olympic Gold Medal 1984. Olympic Gold Medal 1992. Olympic Gold Medal 2008. Olympic Gold Medal 2012. Olympic Gold Medal 2016. National Collegiate Basketball Hall of Fame 2006. National Polish-American Sports Hall of Fame. North Carolina Sports Hall of Fame 2000. Sports Illustrated Sportsperson of the Year 2011. Chicagoland Sports Hall of Fame. John R Wooden Legends of Coaching Award 2000. Duke Athletics Hall of Fame 2011.
Michael Anthony Munchak
Scranton, Pennsylvania, USA
Offensive lineman, college team Pennsylvania State University. Pro team Houston Oilers. Coach, teams Houston Oilers, Tennessee Oilers/Titans, Pittsburgh Steelers. National Polish-American Sports Hall of Fame. Pennsylvania Sports Hall of Fame 1997. Pro Football Hall of Fame 2001. Texas Sports Hall of Fame. Titans/Oilers Hall of Fame 1999.
Philip Henry Niekro
Knucksie
Aries ♈ - the Ram - people born March 21 through April 20
Blaine, Ohio, USA
older brother of
Older than Joe Niekro by 5 years.
Pitcher. 318 career victories, the most by a knuckleball pitcher. Teams Milwaukee Braves, New York Yankees, Cleveland Indians, Toronto Blue Jays, Atlanta Braves. Braves Hall of Fame 1999. Georgia Sports Hall of Fame 1985. National Baseball Hall of Fame 1997. National Polish-American Sports Hall of Fame. Roberto Clemente Award 1980. Lou Gehrig Memorial Award 1979. Atlanta Sports Hall of Fame. Ohio Valley Athletic Conference Hall of Fame 2006.
Ron Jaworski
Ronald Vincent Jaworski
Lackawanna, New York, USA
Quarterback. Teams Youngstown State University, Los Angeles Rams, Philadelphia Eagles, Miami Dolphins, Kansas City Chiefs. Co-owner, arena football team Philadelphia Soul. Bert Bell Award 1980. Eagles Hall of Fame 1992. National Polish-American Sports Hall of Fame. Philadelphia Sports Hall of Fame 2017. Senior Bowl Hall of Fame 2001. Greater Buffalo Sports Hall of Fame 1994.
Stan Coveleski
Stanislaus Kowalewski
Stanley Anthony Coveleski
Shamokin, Pennsylvania, USA
Pitcher, primarily threw the spitball. It was outlawed in 1920, but he was one of 17 pitchers permitted to continue throwing the pitch. Teams Lancaster Red Roses, Atlantic City Lanks, Spokane Indians, Portland Beavers, Philadelphia Athletics, Cleveland Indians, Washington Senators, New York Yankees. Cleveland Indians Hall of Fame 1966. National Baseball Hall of Fame 1969. National Polish-American Sports Hall of Fame.
Stanley Frank Musial
Donora, Pennsylvania, USA
Outfielder for team St. Louis Cardinals for 22 seasons, from 1941 through 1963. National Baseball Hall of Fame 1969. Missouri Wall of Fame 1969. Presidential Medal of Freedom 2011. Missouri Sports Hall of Fame 1963. Hall of Famous Missourians 2000. Pennsylvania Sports Hall of Fame 1963. National Polish-American Sports Hall of Fame. St. Louis Cardinals Hall of Fame. Lou Gehrig Memorial Award 1957. St. Louis Sports Hall of Fame 2009. Sports Illustrated Sportsperson of the Year 1957.
St. Louis Walk of Fame:
A star at 6502 Delmar Boulevard.
Steve Bartkowski
Steven Joseph Bartkowski
Des Moines, Iowa, USA
Quarterback. Teams Atlanta Falcons, Washington Redskins, Los Angeles Rams. Atlanta Falcons Ring of Honor 2004. Cal Athletic Hall of Fame 1990. College Football Hall of Fame 2012. Georgia Sports Hall of Fame 2007. National Polish-American Sports Hall of Fame 1993. Atlanta Sports Hall of Fame. NFL Player of the Year 1980. East-West Shrine Game Hall of Fame 2013.
Ted Kluszewski
Theodore Bernard Kluszewski
Big Klu
Argo, Illinois, USA
First base. teams Cincinnati Reds, Cincinnati Redlegs, Pittsburgh Pirates, Chicago White Sox, Los Angeles Angels. Cincinnati Reds Hall of Fame 1962. IU Athletics Hall of Fame 1982. National Polish-American Sports Hall of Fame.
Vic Janowicz
Victor Felix Janowicz
66, 1 day after his birthday
Elyria, Ohio, USA
Won the Heisman Trophy 1950, team Ohio State University, as halfback/punter. Team Washington Redskins. Baseball team Pittsburgh Pirates. College Football Hall of Fame 1976. National Polish-American Sports Hall of Fame.
Walt Michaels
Walter Edward Michaels
Fullback, then linebacker. Teams Washington & Lee University, Green Bay Packers, Cleveland Browns, New York Jets. Coach, teams Philadelphia Eagles, New York Jets, New Jersey Generals. National Polish-American Sports Hall of Fame. Pennsylvania Sports Hall of Fame 1986. Virginia Sports Hall of Fame 1977.
Zeke Bratkowski
Edmund Raymond Bratkowski
Danville, Illinois, USA
Quarterback. Teams University of Georgia, Chicago Bears, Los Angeles Rams, Green Bay Packers. Georgia Sports Hall of Fame 1980. Green Bay Packers Hall of Fame 1989. National Polish-American Sports Hall of Fame. University of Georgia Athletic Association Circle of Honor 2006. Florida-Georgia Hall of Fame.
GuessWhoThisIs.com has real names of 14,183 famous people, 1,744 rappers. #GuessWhoThisIs
Copyright © 2003-2020 GuessWhoThisIs.com - All Rights Reserved


Have you all recovered yet and had a good nights sleep? At 7 and a half hours in total, this was the longest wrestling PPV of all time. One can argue that over 4 hours is long enough and with the crowd definitely feeling the fatigue as the night went one, we cannot take away the special feel of the event and what went down. So let's now breakdown and recap the key moments and events that occurred this past Sunday from the sold-out MetLife Stadium.
Following the surprising but most welcome appearance of Hulk Hogan to kick off the PPV portion of the show, we saw Paul Heyman saunter to the ring and within minutes, we were watching the Universal title match between champion Brock Lesnar and Seth Rollins. A great story was told here from both men and say what you will about Lesnar, he gave Rollins the rub here cleanly as the new champion finally took his place as the new King of Monday nights.
In what was a throwback to matches of old, AJ Styles and Randy Orton put on the PPV battle reminiscent of what we would have seen in the late '90s. By that we mean short but full of action that was enough to keep the crowd interested throughout. With the Superstar Shake Up looming, maybe its time to finally see AJ move to Raw and have fresh matches with the likes of Rollins, Elias and more.
The Doctor of Thuganomics will see you now! Yes for what may have been one night only, John Cena took us back in time with a true WrestleMania moment alongside Elias. Even all of the Cena haters were popping for this as his appearance felt like a special moment and proved that his presence will definitely be missed when he does indeed leave for good.
It felt like a throwback to 2005 when Triple H and Batista took to the ring one last time in their feud that has lasted the test of time. Whilst not as good as their battles from the past, the sight of these two WWE greats battling one more time at WrestleMania was something to behold as nostalgia was in the air here. The subsequent official retirement of Batista was not a surprise but one that has been appreciated by the WWE Universe and perhaps paves the way for a Hall Of Fame induction next year in Tampa.
KofiMania! Yep, the result here was never in doubt as the 80,000 plus inside the stadium erupted when Kofi Kingston pinned Daniel Bryan to become the WWE champion. Again, that is something this writer never thought we would write up! Deserving of a run on top is something fans have felt of a decade and when you look back at the reaction he received, it's hard to really think otherwise.
History was being made in the Main event when Ronda Rousey, Becky Lynch and Charlotte Flair battled in the winner takes all triple threat match. Let's look at this shall we? Did the match live up to the hype? Sadly not. Were the crowd burnt out by this point? Oh yes. Did the finish look a little 'botched'? A little. That withstanding, it was a surreal sight to see Women main event Mania and it may be a sight that perhaps may never be repeated.
That's WrestleMania weekend over for another year. One that was created to eliminate the concept of sleeping but one that once again gave wrestling fans moments they will never forget.


WOPR | Where is @rusnivek?
Not going to lie…I think DuPage County Homeland Security and Emergency Management has some of the neatest stuff.
Like legit old school Civil Defense stuff!
Fact: Did you know DuPage County used to have an underground impervious EOC bunker? Seriously just like the old War Games EOC "Crystal Palace". Probably didn't have a WOPR.
Great to briefly chat with DuPage County HSEM Director William Babyar too. Lots in common.
Special thanks to DuPage County HSEM PIO John Nebl for the grand tour and meetings.
Looking forward to supporting DuPage County operations.


We currently have over 3000 coloring pages for you to view and print out for free ranging from sesame street coloring pages to disney coloring pages. We have a lot of animal coloring pages around here but these cute cartoon anime style animal coloring pages are my favorites. Super coloring free printable coloring pages for kids coloring sheets free colouring book illustrations printable pictures clipart black and white pictures line art and drawings.
And all of a sudden it would come on the screen tom jerry and the yell that went up would make you feel good for 20 years.
Cartoon network printable coloring pages. Check out our free printable coloring pages organized by category. Every time we previewed a cartoon people didnt know what they were going to get. Free printable kentucky derby coloring pages of horse racing horse jumping trophies and fancy hats too.


text:
What To Do In Australia
13 December 2021 Simon Petersen 0
Australia is a vast and wondrous land with plenty of things to do. The question really is where to start?
Discovering Australia through its impressive road trips
25 June 2021 Simon Petersen 0
Australia is a country with a huge variety of attractions, landscapes and experiences. You will be happy to discover that the experiences and memories that you will gain from this country are constantly changing.
Top 5 Sports Events You Shouldn't Miss This Year
13 September 2019 Simon Petersen 0
Let's round up some of the best sporting action going on for the rest of the year.
Add these awesome events to your Melbourne bucket list
4 July 2019 Simon Petersen 0
Check out these awesome events next time you're in Melbourne, Australia
Australia's Eumundi Markets are awesome
11 November 2018 Simon Petersen 0
I've visited a ton of good ones at home and abroad, but I reckon the Eumundi Markets in Queensland, Australia, are next level.
Mooloolaba's best bars & restaurants
2 September 2018 Simon Petersen 0
In many ways, Mooloolaba on Australia's Sunshine Coast is your typical tourist town. Please allow me to help you avoid its tourist trap restaurants…
5 surprising things about Australia Zoo
Including a severe lack of elephants and a raunchy adults-only otter show.
16 May 2016 Simon Petersen 0
When I flew into Sydney I was met with meteorological conditions that could best be described as Apocalyptic.
Best Melbourne city walks for tourists
11 February 2016 Simon Petersen 0
Check out these top three self-guided walks for visitors to Melbourne, Australia.
5 reasons why Melbourne could be the best city ever
For five years in a row now Melbourne has topped The Economist's list of the most liveable cities in the world. After spending just five days there, I can see why…
Cricket World Cup 2015 host cities: highlights for travellers
14 January 2015 Simon Petersen 1
A look at all of the host cities for the 2015 ICC Cricket World Cup in Australia and New Zealand.
My 30 before 30 (all the awesome countries I've visited)
It seems like now, on the eve of my 30th birthday, is a better time than most to reflect on my world travels and all the awesome countries that I've visited.


Malaysian cops have reported that a ghostly apparition of a woman with long hair in a white dress has been haunting their police lock-up.According to the Harian Metro, the ghost has apparently been disturbing officers on night duty at the Betong district police headquarters about 150km from Kuching, and it has also been seen around the police station.
via Female ghost in Malaysian police lock-up giving cops nightmares.
June 5, 2010 Posted by oldstersview | ghost	| Comments Off on That's the spirit, guys…literally.
How do you not notice a 54 foot tall statue?
Indira Gandhi International Airport has a new runway 29/11, commissioned in August 2008. Runway 29 is the end cleared for Category III Landing in foggy conditions, making it one of most modern in Asia.
But while the runway is technically 14,000 feet long, only 8,500 feet is available for aircraft landing from the 29 end, probably owing to a massive 54 feet (four storey) Shiva statue which sits on the flight path.
This means all flights land almost 2 km after the runway actually starts, forcing the pilots to use full brakes and reverse thrust to slow down in time for the turn off.
via Lord Shiva threatens Delhi runway.


text:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#define __STDC_FORMAT_MACROS

#include <cstring>
#include <cstdio>
#include <cerrno>

#include <exception>

#include "RDD6MetadataExpat.h"
#include "RDD6MetadataXML.h"
#include <bmx/Utils.h>
#include <bmx/BMXException.h>
#include <bmx/Logging.h>

using namespace std;
using namespace bmx;

#define START_EXPAT_CALLBACK                            \
    try                                                 \
    {

#define END_EXPAT_CALLBACK                              \
    }                                                   \
    catch (const BMXException &ex)                      \
    {                                                   \
        log_error("%s\n", ex.what());                   \
        XML_StopParser(mParser, XML_FALSE);             \
    }                                                   \
    catch (const std::exception &ex)                    \
    {                                                   \
        log_error("Exception: %s\n", ex.what());        \
        XML_StopParser(mParser, XML_FALSE);             \
    }                                                   \
    catch (...)                                         \
    {                                                   \
        log_error("Unknown exception thrown\n");        \
        XML_StopParser(mParser, XML_FALSE);             \
    }

static const char NAMESPACE_SEPARATOR = ' ';

static void split_qname(const char *qname, string *ns, string *name)
{
    const char *ptr = qname;
    while (*ptr && *ptr != NAMESPACE_SEPARATOR)
        ptr++;

    if (!(*ptr)) {
        ns->clear();
        name->assign(qname);
    } else {
        ns->assign(qname, (size_t)(ptr - qname));
        name->assign(ptr + 1);
    }
}

static void expat_StartElement(void *user_data, const char *qname, const char **atts)
{
    string ns, name;
    split_qname(qname, &ns, &name);
    reinterpret_cast<RDD6MetadataExpat*>(user_data)->StartElement(ns, name, atts);
}

static void expat_EndElement(void *user_data, const char *qname)
{
    string ns, name;
    split_qname(qname, &ns, &name);
    reinterpret_cast<RDD6MetadataExpat*>(user_data)->EndElement(ns, name);
}

static void expat_CharacterData(void *user_data, const char *s, int len)
{
    reinterpret_cast<RDD6MetadataExpat*>(user_data)->CharacterData(s, len);
}

ExpatHandler::ExpatHandler()
{
}

ExpatHandler::~ExpatHandler()
{
}

bool ExpatHandler::ElementNSEquals(const string &ns, const string &left, const string &right) const
{
    return ns == mNamespace && left == right;
}

bool ExpatHandler::HaveAttribute(const string &name, const char **atts)
{
    const char **atts_ptr = atts;
    while (atts_ptr && atts_ptr[0] && atts_ptr[1]) {
        const char *att_name = *atts_ptr++;
        atts_ptr++; // value
        if (name == att_name)
            return true;
    }

    return false;
}

string ExpatHandler::GetAttribute(const string &name, const char **atts)
{
    const char **atts_ptr = atts;
    while (atts_ptr && atts_ptr[0] && atts_ptr[1]) {
        const char *att_name = *atts_ptr++;
        const char *att_value = *atts_ptr++;
        if (name == att_name)
            return att_value;
    }

    throw BMXException("Missing attribute '%s'", name.c_str());
}

IgnoreExpatHandler::IgnoreExpatHandler()
: ExpatHandler()
{
    mLevel = 0;
}

IgnoreExpatHandler::~IgnoreExpatHandler()
{
}

void IgnoreExpatHandler::StartElement(const string &ns, const string &name, const char **atts)
{
    (void)ns;
    (void)name;
    (void)atts;

    mLevel++;
}

bool IgnoreExpatHandler::EndElement(const string &ns, const string &name)
{
    (void)ns;
    (void)name;

    mLevel--;
    return mLevel <= 0;
}

void IgnoreExpatHandler::CharacterData(const char *s, int len)
{
    (void)s;
    (void)len;
}

SimpleTextExpatHandler::SimpleTextExpatHandler()
: ExpatHandler()
{
}

SimpleTextExpatHandler::~SimpleTextExpatHandler()
{
}

void SimpleTextExpatHandler::StartElement(const string &ns, const string &name, const char **atts)
{
    (void)atts;

    if (mName.empty()) {
        mNamespace = ns;
        mName = name;
    } else {
        throw BMXException("Unexpected XML child element '%s' in simple element '%s'", name.c_str(), mName.c_str());
    }
}

bool SimpleTextExpatHandler::EndElement(const string &ns, const string &name)
{
    (void)ns;
    (void)name;

    return true;
}

void SimpleTextExpatHandler::CharacterData(const char *s, int len)
{
    mCData.append(s, len);
}

SimpleChildrenExpatHandler::SimpleChildrenExpatHandler()
: ExpatHandler()
{
    mChildHandler = 0;
}

SimpleChildrenExpatHandler::~SimpleChildrenExpatHandler()
{
    delete mChildHandler;
}

void SimpleChildrenExpatHandler::StartElement(const string &ns, const string &name, const char **atts)
{
    if (mName.empty()) {
        mNamespace = ns;
        mName = name;
    } else if (!mChildHandler) {
        if (ns == mNamespace) {
            mChildHandler = new SimpleTextExpatHandler();
        } else {
            log_warn("Ignoring XML element '%s %s'\n", ns.c_str(), name.c_str());
            mChildHandler = new IgnoreExpatHandler();
        }
    }

    if (mChildHandler)
        mChildHandler->StartElement(ns, name, atts);
}

bool SimpleChildrenExpatHandler::EndElement(const string &ns, const string &name)
{
    if (mChildHandler) {
        if (mChildHandler->EndElement(ns, name)) {
            SimpleTextExpatHandler *text_handler = dynamic_cast<SimpleTextExpatHandler*>(mChildHandler);
            if (text_handler)
                mChildren[text_handler->GetName()] = text_handler->GetCData();
            delete mChildHandler;
            mChildHandler = 0;
        }
        return false;
    } else {
        return true;
    }
}

void SimpleChildrenExpatHandler::CharacterData(const char *s, int len)
{
    if (mChildHandler)
        mChildHandler->CharacterData(s, len);
}

bool SimpleChildrenExpatHandler::HaveChild(const string &name) const
{
    return mChildren.find(name) != mChildren.end();
}

const string& SimpleChildrenExpatHandler::GetChildStr(const string &name) const
{
    map<string, string>::const_iterator res = mChildren.find(name);
    if (res == mChildren.end())
        throw BMXException("Missing '%s' in element '%s'", name.c_str(), mName.c_str());

    return res->second;
}

DataSegmentHandler::DataSegmentHandler()
{
    mDataSegment = new RDD6DataSegment();
}

DataSegmentHandler::~DataSegmentHandler()
{
    delete mDataSegment;
}

void DataSegmentHandler::CompletePayload(RDD6ParsedPayload *payload)
{
    payload->Construct8BitPayload(mDataSegment);
    mDataSegment->CalcChecksum();
}

RDD6DataSegment* DataSegmentHandler::TakeDataSegment()
{
    RDD6DataSegment *ret = mDataSegment;
    mDataSegment = 0;
    return ret;
}

DescriptionTextExpatHandler::DescriptionTextExpatHandler(RDD6DolbyEComplete *payload)
: ExpatHandler()
{
    mPayload = payload;
    mChildHandler = 0;
    mNextProgram = 0;

    uint8_t channel_count;
    get_program_config_info(mPayload->program_config, &mProgramCount, &channel_count);
}

DescriptionTextExpatHandler::~DescriptionTextExpatHandler()
{
    delete mChildHandler;
}

void DescriptionTextExpatHandler::StartElement(const string &ns, const string &name, const char **atts)
{
    if (mName.empty()) {
        mNamespace = ns;
        mName = name;
    } else if (!mChildHandler) {
        if (ElementNSEquals(ns, name, "program")) {
            mChildHandler = new SimpleTextExpatHandler();
        } else {
            log_warn("Ignoring element '%s %s'\n", ns.c_str(), name.c_str());
            mChildHandler = new IgnoreExpatHandler();
        }
    }

    if (mChildHandler)
        mChildHandler->StartElement(ns, name, atts);
}

bool DescriptionTextExpatHandler::EndElement(const string &ns, const string &name)
{
    if (mChildHandler) {
        if (mChildHandler->EndElement(ns, name)) {
            SimpleTextExpatHandler *text_handler = dynamic_cast<SimpleTextExpatHandler*>(mChildHandler);
            if (text_handler) {
                if (ElementNSEquals(ns, name, "program")) {
                    if (mNextProgram >= mProgramCount)
                        throw BMXException("Too many 'program' elements in 'descr_text'");

                    string clean_desc_text = text_handler->GetCData();
                    string::iterator iter = clean_desc_text.begin();
                    while (iter != clean_desc_text.end()) {
                        if (*iter < 0x20 || *iter > 0x7e)
                            iter = clean_desc_text.erase(iter);
                        else
                            iter++;
                    }

                    if (clean_desc_text.empty()) {
                        mPayload->desc_elements[mNextProgram].description_text = 0;
                        mPayload->xml_desc_elements[mNextProgram] = "";
                    } else {
                        mPayload->desc_elements[mNextProgram].description_text = clean_desc_text[0];
                        mPayload->xml_desc_elements[mNextProgram] = clean_desc_text;
                    }

                    mNextProgram++;
                }
            }
            delete mChildHandler;
            mChildHandler = 0;
        }
        return false;
    } else {
        if (mNextProgram != mProgramCount) {
            throw BMXException("Count of 'program' elements, %"PRIszt" does not equal expected value %"PRIszt,
                               mNextProgram, mProgramCount);
        }
        return true;
    }
}

void DescriptionTextExpatHandler::CharacterData(const char *s, int len)
{
    if (mChildHandler)
        mChildHandler->CharacterData(s, len);
}

DolbyECompleteExpatHandler::DolbyECompleteExpatHandler()
: DataSegmentHandler(), ExpatHandler()
{
    mPayload = new RDD6DolbyEComplete();
    mChildHandler = 0;
}

DolbyECompleteExpatHandler::~DolbyECompleteExpatHandler()
{
    delete mChildHandler;
    delete mPayload;
}

void DolbyECompleteExpatHandler::StartElement(const string &ns, const string &name, const char **atts)
{
    if (mName.empty()) {
        mNamespace = ns;
        mName = name;
    } else if (!mChildHandler) {
        if (ElementNSEquals(ns, name, "program_config") ||
            ElementNSEquals(ns, name, "frame_rate") ||
            ElementNSEquals(ns, name, "pitch_shift_code") ||
            ElementNSEquals(ns, name, "smpte_time_code"))
        {
            mChildHandler = new SimpleTextExpatHandler();
        }
        else if (ElementNSEquals(ns, name, "descr_text"))
        {
            mChildHandler = new DescriptionTextExpatHandler(mPayload);
        }
        else
        {
            log_warn("Ignoring element '%s %s'\n", ns.c_str(), name.c_str());
            mChildHandler = new IgnoreExpatHandler();
        }
    }

    if (mChildHandler)
        mChildHandler->StartElement(ns, name, atts);
}

bool DolbyECompleteExpatHandler::EndElement(const string &ns, const string &name)
{
    if (mChildHandler) {
        if (mChildHandler->EndElement(ns, name)) {
            SimpleTextExpatHandler *text_handler = dynamic_cast<SimpleTextExpatHandler*>(mChildHandler);
            if (text_handler) {
                if (ElementNSEquals(ns, name, "program_config")) {
                    mPayload->program_config = parse_xml_enum("program_config", PROGRAM_CONFIG_ENUM,
                                                              text_handler->GetCData());
                } else if (ElementNSEquals(ns, name, "frame_rate")) {
                    mPayload->frame_rate_code = parse_xml_enum("frame_rate", FRAME_RATE_ENUM,
                                                               text_handler->GetCData());
                } else if (ElementNSEquals(ns, name, "pitch_shift_code")) {
                    mPayload->pitch_shift_code = parse_xml_int16("pitch_shift_code", text_handler->GetCData());
                } else if (ElementNSEquals(ns, name, "smpte_time_code")) {
                    mPayload->smpte_time_code = parse_xml_smpte_timecode("smpte_time_code", text_handler->GetCData());
                }
            }
            delete mChildHandler;
            mChildHandler = 0;
        }
        return false;
    } else {
        size_t i;
        for (i = 0; i < BMX_ARRAY_SIZE(mPayload->xml_desc_elements); i++) {
            mDataSegment->xml_desc_elements[i] = mPayload->xml_desc_elements[i];
            mPayload->xml_desc_elements[i].clear();
        }
        CompletePayload(mPayload);
        return true;
    }
}

void DolbyECompleteExpatHandler::CharacterData(const char *s, int len)
{
    if (mChildHandler)
        mChildHandler->CharacterData(s, len);
}

DolbyEEssentialExpatHandler::DolbyEEssentialExpatHandler()
: DataSegmentHandler(), SimpleChildrenExpatHandler()
{
    mPayload = new RDD6DolbyEEssential();
}

DolbyEEssentialExpatHandler::~DolbyEEssentialExpatHandler()
{
    delete mPayload;
}

bool DolbyEEssentialExpatHandler::EndElement(const string &ns, const string &name)
{
    if (!SimpleChildrenExpatHandler::EndElement(ns, name))
        return false;

    mPayload->program_config = parse_xml_enum("program_config", PROGRAM_CONFIG_ENUM, GetChildStr("program_config"));
    mPayload->frame_rate_code = parse_xml_enum("frame_rate", FRAME_RATE_ENUM, GetChildStr("frame_rate"));
    if (HaveChild("pitch_shift_code"))
        mPayload->pitch_shift_code = parse_xml_int16("pitch_shift_code", GetChildStr("pitch_shift_code"));

    CompletePayload(mPayload);

    return true;
}

DolbyDigitalCompleteExtBSIExpatHandler::DolbyDigitalCompleteExtBSIExpatHandler()
: DataSegmentHandler(), SimpleChildrenExpatHandler()
{
    mPayload = new RDD6DolbyDigitalCompleteExtBSI();
}

DolbyDigitalCompleteExtBSIExpatHandler::~DolbyDigitalCompleteExtBSIExpatHandler()
{
    delete mPayload;
}

bool DolbyDigitalCompleteExtBSIExpatHandler::EndElement(const string &ns, const string &name)
{
    if (!SimpleChildrenExpatHandler::EndElement(ns, name))
        return false;

    mPayload->program_id = parse_xml_uint8("program_id", GetChildStr("program_id"));
    if (HaveChild("data_rate"))
        mPayload->ac3_datarate = parse_xml_enum("data_rate", DATARATE_ENUM, GetChildStr("data_rate"));
    mPayload->ac3_acmod = parse_xml_enum("ac_mode", ACMOD_ENUM, GetChildStr("ac_mode"));
    if (mPayload->ac3_acmod <= 1)
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_1_ENUM, GetChildStr("bs_mode"));
    else
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_2_ENUM, GetChildStr("bs_mode"));
    mPayload->ac3_cmixlev = parse_xml_enum("center_mix_level", CMIXLEVEL_ENUM, GetChildStr("center_mix_level"));
    mPayload->ac3_surmixlev = parse_xml_enum("sur_mix_level", SURMIXLEVEL_ENUM, GetChildStr("sur_mix_level"));
    if (HaveChild("sur_encoded"))
        mPayload->ac3_dsurmod = (parse_xml_bool("sur_encoded", GetChildStr("sur_encoded")) ? 2 : 1);
    mPayload->ac3_lfeon = parse_xml_bool("lfe_on", GetChildStr("lfe_on"));
    mPayload->ac3_dialnorm = - parse_xml_int8("dialnorm", GetChildStr("dialnorm"));
    if (HaveChild("lang_code")) {
        mPayload->ac3_langcode = 1;
        mPayload->ac3_langcod = parse_xml_hex_uint8("lang_code", GetChildStr("lang_code"));
    }
    if (HaveChild("mix_level")) {
        mPayload->ac3_audprodie = 1;
        mPayload->ac3_mixlevel = parse_xml_uint8("mix_level", GetChildStr("mix_level"));
        if (HaveChild("room_type"))
            mPayload->ac3_roomtyp = parse_xml_enum("room_type", ROOM_TYPE_ENUM, GetChildStr("room_type"));;
    }
    mPayload->ac3_copyrightb = parse_xml_bool("copyright", GetChildStr("copyright"));
    mPayload->ac3_origbs = parse_xml_bool("orig_bs", GetChildStr("orig_bs"));
    mPayload->ac3_xbsi1e = 1;
    if (HaveChild("downmix_mode"))
        mPayload->ac3_dmixmod = parse_xml_enum("downmix_mode", DMIXMOD_ENUM, GetChildStr("downmix_mode"));
    if (HaveChild("lt_rt_center_mix"))
        mPayload->ac3_ltrtcmixlev = parse_xml_enum("lt_rt_center_mix", LTRTCMIXLEVEL_ENUM, GetChildStr("lt_rt_center_mix"));
    if (HaveChild("lt_rt_sur_mix"))
        mPayload->ac3_ltrtsurmixlev = parse_xml_enum("lt_rt_sur_mix", LTRTSURMIXLEVEL_ENUM, GetChildStr("lt_rt_sur_mix"));
    if (HaveChild("lo_ro_center_mix"))
        mPayload->ac3_lorocmixlev = parse_xml_enum("lo_ro_center_mix", LOROCMIXLEVEL_ENUM, GetChildStr("lo_ro_center_mix"));
    if (HaveChild("lo_ro_sur_mix"))
        mPayload->ac3_lorosurmixlev = parse_xml_enum("lo_ro_sur_mix", LOROSURMIXLEVEL_ENUM, GetChildStr("lo_ro_sur_mix"));
    mPayload->ac3_xbsi2e = 1;
    if (HaveChild("sur_ex_encoded"))
        mPayload->ac3_dsurexmod = (parse_xml_bool("sur_ex_encoded", GetChildStr("sur_ex_encoded")) ? 2 : 1);
    if (HaveChild("headphone_encoded"))
        mPayload->ac3_dheadphonmod = (parse_xml_bool("headphone_encoded", GetChildStr("headphone_encoded")) ? 2 : 1);
    mPayload->ac3_adconvtyp = parse_xml_enum("ad_conv_type", ADCONVTYPE_ENUM, GetChildStr("ad_conv_type"));
    mPayload->ac3_hpfon = parse_xml_bool("hp_filter", GetChildStr("hp_filter"));
    mPayload->ac3_bwlpfon = parse_xml_bool("bw_lp_filter", GetChildStr("bw_lp_filter"));
    mPayload->ac3_lfelpfon = parse_xml_bool("lfe_lp_filter", GetChildStr("lfe_lp_filter"));
    mPayload->ac3_sur90on = parse_xml_bool("sur_90_filter", GetChildStr("sur_90_filter"));
    mPayload->ac3_suratton = parse_xml_bool("sur_att_filter", GetChildStr("sur_att_filter"));
    mPayload->ac3_rfpremphon = parse_xml_bool("rf_preemph_filter", GetChildStr("rf_preemph_filter"));
    if (HaveChild("compr_pf_1")) {
        mPayload->ac3_compr1 = parse_xml_enum("compr_pf_1", COMPR_ENUM, GetChildStr("compr_pf_1"));
    } else {
        mPayload->ac3_compre = 1;
        mPayload->ac3_compr1 = parse_xml_hex_uint8("compr_wd_1", GetChildStr("compr_wd_1"));
    }
    if (HaveChild("dyn_range_pf_1")) {
        mPayload->ac3_dynrng1 = parse_xml_enum("dyn_range_pf_1", DYNRNG_ENUM, GetChildStr("dyn_range_pf_1"));
        mPayload->ac3_dynrng2 = parse_xml_enum("dyn_range_pf_2", DYNRNG_ENUM, GetChildStr("dyn_range_pf_2"));
        mPayload->ac3_dynrng3 = parse_xml_enum("dyn_range_pf_3", DYNRNG_ENUM, GetChildStr("dyn_range_pf_3"));
        mPayload->ac3_dynrng4 = parse_xml_enum("dyn_range_pf_4", DYNRNG_ENUM, GetChildStr("dyn_range_pf_4"));
    } else {
        mPayload->ac3_dynrnge = 1;
        mPayload->ac3_dynrng1 = parse_xml_hex_uint8("dyn_range_wd_1", GetChildStr("dyn_range_wd_1"));
        mPayload->ac3_dynrng2 = parse_xml_hex_uint8("dyn_range_wd_2", GetChildStr("dyn_range_wd_2"));
        mPayload->ac3_dynrng3 = parse_xml_hex_uint8("dyn_range_wd_3", GetChildStr("dyn_range_wd_3"));
        mPayload->ac3_dynrng4 = parse_xml_hex_uint8("dyn_range_wd_4", GetChildStr("dyn_range_wd_4"));
    }

    CompletePayload(mPayload);

    return true;
}

DolbyDigitalEssentialExtBSIExpatHandler::DolbyDigitalEssentialExtBSIExpatHandler()
: DataSegmentHandler(), SimpleChildrenExpatHandler()
{
    mPayload = new RDD6DolbyDigitalEssentialExtBSI();
}

DolbyDigitalEssentialExtBSIExpatHandler::~DolbyDigitalEssentialExtBSIExpatHandler()
{
    delete mPayload;
}

bool DolbyDigitalEssentialExtBSIExpatHandler::EndElement(const string &ns, const string &name)
{
    if (!SimpleChildrenExpatHandler::EndElement(ns, name))
        return false;

    mPayload->program_id = parse_xml_uint8("program_id", GetChildStr("program_id"));
    if (HaveChild("data_rate"))
        mPayload->ac3_datarate = parse_xml_enum("data_rate", DATARATE_ENUM, GetChildStr("data_rate"));
    mPayload->ac3_acmod = parse_xml_enum("ac_mode", ACMOD_ENUM, GetChildStr("ac_mode"));
    if (mPayload->ac3_acmod <= 1)
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_1_ENUM, GetChildStr("bs_mode"));
    else
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_2_ENUM, GetChildStr("bs_mode"));
    mPayload->ac3_lfeon = parse_xml_bool("lfe_on", GetChildStr("lfe_on"));
    mPayload->ac3_dialnorm = - parse_xml_int8("dialnorm", GetChildStr("dialnorm"));
    if (HaveChild("compr_pf_2")) {
        mPayload->ac3_compr2 = parse_xml_enum("compr_pf_2", COMPR_ENUM, GetChildStr("compr_pf_2"));
    } else {
        mPayload->ac3_compre = 1;
        mPayload->ac3_compr2 = parse_xml_hex_uint8("compr_wd_2", GetChildStr("compr_wd_2"));
    }
    if (HaveChild("dyn_range_pf_5")) {
        mPayload->ac3_dynrng5 = parse_xml_enum("dyn_range_pf_5", DYNRNG_ENUM, GetChildStr("dyn_range_pf_5"));
        mPayload->ac3_dynrng6 = parse_xml_enum("dyn_range_pf_6", DYNRNG_ENUM, GetChildStr("dyn_range_pf_6"));
        mPayload->ac3_dynrng7 = parse_xml_enum("dyn_range_pf_7", DYNRNG_ENUM, GetChildStr("dyn_range_pf_7"));
        mPayload->ac3_dynrng8 = parse_xml_enum("dyn_range_pf_8", DYNRNG_ENUM, GetChildStr("dyn_range_pf_8"));
    } else {
        mPayload->ac3_dynrnge = 1;
        mPayload->ac3_dynrng5 = parse_xml_hex_uint8("dyn_range_wd_5", GetChildStr("dyn_range_wd_5"));
        mPayload->ac3_dynrng6 = parse_xml_hex_uint8("dyn_range_wd_6", GetChildStr("dyn_range_wd_6"));
        mPayload->ac3_dynrng7 = parse_xml_hex_uint8("dyn_range_wd_7", GetChildStr("dyn_range_wd_7"));
        mPayload->ac3_dynrng8 = parse_xml_hex_uint8("dyn_range_wd_8", GetChildStr("dyn_range_wd_8"));
    }

    CompletePayload(mPayload);

    return true;
}

DolbyDigitalCompleteExpatHandler::DolbyDigitalCompleteExpatHandler()
: DataSegmentHandler(), SimpleChildrenExpatHandler()
{
    mPayload = new RDD6DolbyDigitalComplete();
}

DolbyDigitalCompleteExpatHandler::~DolbyDigitalCompleteExpatHandler()
{
    delete mPayload;
}

bool DolbyDigitalCompleteExpatHandler::EndElement(const string &ns, const string &name)
{
    if (!SimpleChildrenExpatHandler::EndElement(ns, name))
        return false;

    mPayload->program_id = parse_xml_uint8("program_id", GetChildStr("program_id"));
    mPayload->ac3_acmod = parse_xml_enum("ac_mode", ACMOD_ENUM, GetChildStr("ac_mode"));
    if (mPayload->ac3_acmod <= 1)
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_1_ENUM, GetChildStr("bs_mode"));
    else
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_2_ENUM, GetChildStr("bs_mode"));
    mPayload->ac3_cmixlev = parse_xml_enum("center_mix_level", CMIXLEVEL_ENUM, GetChildStr("center_mix_level"));
    mPayload->ac3_surmixlev = parse_xml_enum("sur_mix_level", SURMIXLEVEL_ENUM, GetChildStr("sur_mix_level"));
    if (HaveChild("sur_encoded"))
        mPayload->ac3_dsurmod = (parse_xml_bool("sur_encoded", GetChildStr("sur_encoded")) ? 2 : 1);
    mPayload->ac3_lfeon = parse_xml_bool("lfe_on", GetChildStr("lfe_on"));
    mPayload->ac3_dialnorm = - parse_xml_int8("dialnorm", GetChildStr("dialnorm"));
    if (HaveChild("lang_code")) {
        mPayload->ac3_langcode = 1;
        mPayload->ac3_langcod = parse_xml_hex_uint8("lang_code", GetChildStr("lang_code"));
    }
    if (HaveChild("mix_level")) {
        mPayload->ac3_audprodie = 1;
        mPayload->ac3_mixlevel = parse_xml_uint8("mix_level", GetChildStr("mix_level"));
        if (HaveChild("room_type"))
            mPayload->ac3_roomtyp = parse_xml_enum("room_type", ROOM_TYPE_ENUM, GetChildStr("room_type"));;
    }
    mPayload->ac3_copyrightb = parse_xml_bool("copyright", GetChildStr("copyright"));
    mPayload->ac3_origbs = parse_xml_bool("orig_bs", GetChildStr("orig_bs"));
    if (HaveChild("timecode")) {
        parse_xml_timecode("timecode", GetChildStr("timecode"),
                           &mPayload->ac3_timecod1e, &mPayload->ac3_timecod2e,
                           &mPayload->ac3_timecod1, &mPayload->ac3_timecod2);
    }
    mPayload->ac3_hpfon = parse_xml_bool("hp_filter", GetChildStr("hp_filter"));
    mPayload->ac3_bwlpfon = parse_xml_bool("bw_lp_filter", GetChildStr("bw_lp_filter"));
    mPayload->ac3_lfelpfon = parse_xml_bool("lfe_lp_filter", GetChildStr("lfe_lp_filter"));
    mPayload->ac3_sur90on = parse_xml_bool("sur_90_filter", GetChildStr("sur_90_filter"));
    mPayload->ac3_suratton = parse_xml_bool("sur_att_filter", GetChildStr("sur_att_filter"));
    mPayload->ac3_rfpremphon = parse_xml_bool("rf_preemph_filter", GetChildStr("rf_preemph_filter"));
    if (HaveChild("compr_pf_1")) {
        mPayload->ac3_compr1 = parse_xml_enum("compr_pf_1", COMPR_ENUM, GetChildStr("compr_pf_1"));
    } else {
        mPayload->ac3_compre = 1;
        mPayload->ac3_compr1 = parse_xml_hex_uint8("compr_wd_1", GetChildStr("compr_wd_1"));
    }
    if (HaveChild("dyn_range_pf_1")) {
        mPayload->ac3_dynrng1 = parse_xml_enum("dyn_range_pf_1", DYNRNG_ENUM, GetChildStr("dyn_range_pf_1"));
        mPayload->ac3_dynrng2 = parse_xml_enum("dyn_range_pf_2", DYNRNG_ENUM, GetChildStr("dyn_range_pf_2"));
        mPayload->ac3_dynrng3 = parse_xml_enum("dyn_range_pf_3", DYNRNG_ENUM, GetChildStr("dyn_range_pf_3"));
        mPayload->ac3_dynrng4 = parse_xml_enum("dyn_range_pf_4", DYNRNG_ENUM, GetChildStr("dyn_range_pf_4"));
    } else {
        mPayload->ac3_dynrnge = 1;
        mPayload->ac3_dynrng1 = parse_xml_hex_uint8("dyn_range_wd_1", GetChildStr("dyn_range_wd_1"));
        mPayload->ac3_dynrng2 = parse_xml_hex_uint8("dyn_range_wd_2", GetChildStr("dyn_range_wd_2"));
        mPayload->ac3_dynrng3 = parse_xml_hex_uint8("dyn_range_wd_3", GetChildStr("dyn_range_wd_3"));
        mPayload->ac3_dynrng4 = parse_xml_hex_uint8("dyn_range_wd_4", GetChildStr("dyn_range_wd_4"));
    }

    CompletePayload(mPayload);

    return true;
}

DolbyDigitalEssentialExpatHandler::DolbyDigitalEssentialExpatHandler()
: DataSegmentHandler(), SimpleChildrenExpatHandler()
{
    mPayload = new RDD6DolbyDigitalEssential();
}

DolbyDigitalEssentialExpatHandler::~DolbyDigitalEssentialExpatHandler()
{
    delete mPayload;
}

bool DolbyDigitalEssentialExpatHandler::EndElement(const string &ns, const string &name)
{
    if (!SimpleChildrenExpatHandler::EndElement(ns, name))
        return false;

    mPayload->program_id = parse_xml_uint8("program_id", GetChildStr("program_id"));
    if (HaveChild("data_rate"))
        mPayload->ac3_datarate = parse_xml_enum("data_rate", DATARATE_ENUM, GetChildStr("data_rate"));
    mPayload->ac3_acmod = parse_xml_enum("ac_mode", ACMOD_ENUM, GetChildStr("ac_mode"));
    if (mPayload->ac3_acmod <= 1)
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_1_ENUM, GetChildStr("bs_mode"));
    else
        mPayload->ac3_bsmod = parse_xml_enum("bs_mode", BSMOD_2_ENUM, GetChildStr("bs_mode"));
    mPayload->ac3_lfeon = parse_xml_bool("lfe_on", GetChildStr("lfe_on"));
    mPayload->ac3_dialnorm = - parse_xml_int8("dialnorm", GetChildStr("dialnorm"));
    if (HaveChild("compr_pf_2")) {
        mPayload->ac3_compr2 = parse_xml_enum("compr_pf_2", COMPR_ENUM, GetChildStr("compr_pf_2"));
    } else {
        mPayload->ac3_compre = 1;
        mPayload->ac3_compr2 = parse_xml_hex_uint8("compr_wd_2", GetChildStr("compr_wd_2"));
    }
    if (HaveChild("dyn_range_pf_5")) {
        mPayload->ac3_dynrng5 = parse_xml_enum("dyn_range_pf_5", DYNRNG_ENUM, GetChildStr("dyn_range_pf_5"));
        mPayload->ac3_dynrng6 = parse_xml_enum("dyn_range_pf_6", DYNRNG_ENUM, GetChildStr("dyn_range_pf_6"));
        mPayload->ac3_dynrng7 = parse_xml_enum("dyn_range_pf_7", DYNRNG_ENUM, GetChildStr("dyn_range_pf_7"));
        mPayload->ac3_dynrng8 = parse_xml_enum("dyn_range_pf_8", DYNRNG_ENUM, GetChildStr("dyn_range_pf_8"));
    } else {
        mPayload->ac3_dynrnge = 1;
        mPayload->ac3_dynrng5 = parse_xml_hex_uint8("dyn_range_wd_5", GetChildStr("dyn_range_wd_5"));
        mPayload->ac3_dynrng6 = parse_xml_hex_uint8("dyn_range_wd_6", GetChildStr("dyn_range_wd_6"));
        mPayload->ac3_dynrng7 = parse_xml_hex_uint8("dyn_range_wd_7", GetChildStr("dyn_range_wd_7"));
        mPayload->ac3_dynrng8 = parse_xml_hex_uint8("dyn_range_wd_8", GetChildStr("dyn_range_wd_8"));
    }

    CompletePayload(mPayload);

    return true;
}

RawDataSegmentExpatHandler::RawDataSegmentExpatHandler()
: DataSegmentHandler(), SimpleTextExpatHandler()
{
}

RawDataSegmentExpatHandler::~RawDataSegmentExpatHandler()
{
}

void RawDataSegmentExpatHandler::StartElement(const string &ns, const string &name, const char **atts)
{
    SimpleTextExpatHandler::StartElement(ns, name, atts);

    mDataSegment->id = parse_xml_uint8("id", GetAttribute("id", atts));
}

bool RawDataSegmentExpatHandler::EndElement(const string &ns, const string &name)
{
    SimpleTextExpatHandler::EndElement(ns, name);

    if (mCData.size() > 1) {
        mDataSegment->payload_buffer.Allocate((uint32_t)(mCData.size() / 2)); // 2 hex digits per byte
        size_t parsed_size = parse_xml_bytes(name, mCData,
                                             mDataSegment->payload_buffer.GetBytesAvailable(),
                                             mDataSegment->payload_buffer.GetSizeAvailable());
        if (parsed_size > 256)
            throw BMXException("Data segment size %"PRIszt" exceeds maximum size 256", parsed_size);

        mDataSegment->size = (uint16_t)parsed_size;
        mDataSegment->payload_buffer.SetSize(mDataSegment->size);
        if (mDataSegment->size > 0)
            mDataSegment->payload = mDataSegment->payload_buffer.GetBytes();
    }
    if (mDataSegment->size == 0)
        log_warn("Failed to parse payload bytes from 'segment' element\n");

    mDataSegment->CalcChecksum();

    return true;
}

SyncExpatHandler::SyncExpatHandler(RDD6SyncSegment *sync_segment)
: SimpleChildrenExpatHandler()
{
    mSyncSegment = sync_segment;
}

SyncExpatHandler::~SyncExpatHandler()
{
}

bool SyncExpatHandler::EndElement(const string &ns, const string &name)
{
    if (!SimpleChildrenExpatHandler::EndElement(ns, name))
        return false;

    mSyncSegment->revision_id = parse_xml_hex_uint8("rev_id", GetChildStr("rev_id"));
    mSyncSegment->originator_id = parse_xml_hex_uint8("orig_id", GetChildStr("orig_id"));
    if (mSyncSegment->originator_id != 0)
        mSyncSegment->originator_address = parse_xml_hex_uint16("orig_addr", GetChildStr("orig_addr"));
    mSyncSegment->frame_count = parse_xml_uint16("frame_count", GetChildStr("frame_count"));

    return true;
}

SubFrameExpatHandler::SubFrameExpatHandler(bool is_first)
: ExpatHandler()
{
    mSubFrame = new RDD6MetadataSubFrame(is_first);
    mChildHandler = 0;
}

SubFrameExpatHandler::~SubFrameExpatHandler()
{
    delete mChildHandler;
    delete mSubFrame;
}

void SubFrameExpatHandler::StartElement(const string &ns, const string &name, const char **atts)
{
    if (mName.empty()) {
        mNamespace = ns;
        mName = name;
    } else if (!mChildHandler) {
        if (ElementNSEquals(ns, name, "sync")) {
            mChildHandler = new SyncExpatHandler(&mSubFrame->sync_segment);
        } else if (ElementNSEquals(ns, name, "segment")) {
            mChildHandler = new RawDataSegmentExpatHandler();
        } else if (ElementNSEquals(ns, name, "dolby_e_complete")) {
            mChildHandler = new DolbyECompleteExpatHandler();
        } else if (ElementNSEquals(ns, name, "dolby_e_essential")) {
            mChildHandler = new DolbyEEssentialExpatHandler();
        } else if (ElementNSEquals(ns, name, "dolby_digital_complete_ext_bsi")) {
            mChildHandler = new DolbyDigitalCompleteExtBSIExpatHandler();
        } else if (ElementNSEquals(ns, name, "dolby_digital_essential_ext_bsi")) {
            mChildHandler = new DolbyDigitalEssentialExtBSIExpatHandler();
        } else if (ElementNSEquals(ns, name, "dolby_digital_complete")) {
            mChildHandler = new DolbyDigitalCompleteExpatHandler();
        } else if (ElementNSEquals(ns, name, "dolby_digital_essential")) {
            mChildHandler = new DolbyDigitalEssentialExpatHandler();
        } else {
            log_warn("Ignoring element '%s %s'\n", ns.c_str(), name.c_str());
            mChildHandler = new IgnoreExpatHandler();
        }
    }

    if (mChildHandler)
        mChildHandler->StartElement(ns, name, atts);
}

bool SubFrameExpatHandler::EndElement(const string &ns, const string &name)
{
    if (mChildHandler) {
        if (mChildHandler->EndElement(ns, name)) {
            DataSegmentHandler *dseg_handler = dynamic_cast<DataSegmentHandler*>(mChildHandler);
            if (dseg_handler)
                mSubFrame->data_segments.push_back(dseg_handler->TakeDataSegment());
            delete mChildHandler;
            mChildHandler = 0;
        }
        return false;
    } else {
        return true;
    }
}

void SubFrameExpatHandler::CharacterData(const char *s, int len)
{
    if (mChildHandler)
        mChildHandler->CharacterData(s, len);
}

RDD6MetadataSubFrame* SubFrameExpatHandler::TakeSubFrame()
{
    RDD6MetadataSubFrame *ret = mSubFrame;
    mSubFrame = 0;
    return ret;
}

RDD6MetadataExpat::RDD6MetadataExpat(RDD6MetadataFrame *rdd6_frame)
: ExpatHandler()
{
    mRDD6Frame = rdd6_frame;
    mParser = 0;
    mChildHandler = 0;
}

RDD6MetadataExpat::~RDD6MetadataExpat()
{
    delete mChildHandler;
}

bool RDD6MetadataExpat::ParseXML(const string &filename)
{
    FILE *file = 0;
    char *buffer = 0;
    const size_t buffer_size = 4096;
    bool result = true;

    try
    {
        file = fopen(filename.c_str(), "rb");
        if (!file)
            throw BMXException("Failed to open XML file '%s': %s", filename.c_str(), strerror(errno));

        mParser = XML_ParserCreateNS(0, NAMESPACE_SEPARATOR);
        if (!mParser)
            throw BMXException("XML_ParserCreate returned NULL");

        XML_SetStartElementHandler(mParser,  expat_StartElement);
        XML_SetEndElementHandler(mParser,    expat_EndElement);
        XML_SetCharacterDataHandler(mParser, expat_CharacterData);
        XML_SetUserData(mParser, this);

        buffer = new char[buffer_size];
        size_t num_read;
        do {
            num_read = fread(buffer, 1, buffer_size, file);
            if (num_read != buffer_size && ferror(file))
                throw BMXException("Failed to read from XML file: %s", bmx_strerror(errno).c_str());

            if (XML_Parse(mParser, buffer, (int)num_read, num_read != buffer_size) == XML_STATUS_ERROR) {
                throw BMXException("XML parse error near line %lu: %s",
                                   XML_GetCurrentLineNumber(mParser), XML_ErrorString(XML_GetErrorCode(mParser)));
            }
        } while (num_read == buffer_size);
    }
    catch (const BMXException &ex)
    {
        log_error("Failed to parse RDD-6 XML file '%s': %s\n", filename.c_str(), ex.what());
        result = false;
    }
    catch (...)
    {
        log_error("Failed to parse RDD-6 XML file '%s': unknown exception thrown\n", filename.c_str());
        result = false;
    }

    delete [] buffer;
    if (file)
        fclose(file);
    if (mParser) {
        XML_ParserFree(mParser);
        mParser = 0;
    }

    return result;
}

void RDD6MetadataExpat::StartElement(const string &ns, const string &name, const char **atts)
{
    START_EXPAT_CALLBACK

    if (mName.empty()) {
        if (name != "rdd6")
            throw BMXException("Root element name should be 'rdd6', not '%s'", name.c_str());
        mNamespace = ns;
        mName = name;
    } else {
        if (!mChildHandler) {
            if (ElementNSEquals(ns, name, "first_subframe")) {
                mChildHandler = new SubFrameExpatHandler(true);
            } else if (ElementNSEquals(ns, name, "second_subframe")) {
                mChildHandler = new SubFrameExpatHandler(false);
            } else {
                log_warn("Ignoring element '%s %s'\n", ns.c_str(), name.c_str());
                mChildHandler = new IgnoreExpatHandler();
            }
        }
        mChildHandler->StartElement(ns, name, atts);
    }

    END_EXPAT_CALLBACK
}

bool RDD6MetadataExpat::EndElement(const string &ns, const string &name)
{
    START_EXPAT_CALLBACK

    if (mChildHandler) {
        if (mChildHandler->EndElement(ns, name)) {
            SubFrameExpatHandler *subframe_handler = dynamic_cast<SubFrameExpatHandler*>(mChildHandler);
            if (subframe_handler) {
                RDD6MetadataSubFrame *subframe = subframe_handler->TakeSubFrame();
                if (subframe->IsFirst()) {
                    delete mRDD6Frame->second_sub_frame;
                    mRDD6Frame->second_sub_frame = 0;
                    delete mRDD6Frame->first_sub_frame;
                    mRDD6Frame->first_sub_frame = subframe;
                } else {
                    delete mRDD6Frame->second_sub_frame;
                    mRDD6Frame->second_sub_frame = subframe;
                }
            }
            delete mChildHandler;
            mChildHandler = 0;
        }
        return false;
    } else {
        if (!mRDD6Frame->first_sub_frame)
            log_warn("Missing first subframe element\n");
        if (!mRDD6Frame->second_sub_frame)
            log_warn("Missing second subframe element\n");
        mRDD6Frame->end_frame_sync_word = RDD6MetadataFrame::END_FRAME_SYNC_WORD;
        return true;
    }

    END_EXPAT_CALLBACK
    return false;
}

void RDD6MetadataExpat::CharacterData(const char *s, int len)
{
    START_EXPAT_CALLBACK

    if (mChildHandler)
        mChildHandler->CharacterData(s, len);

    END_EXPAT_CALLBACK
}


text:
Registration of Birth
Registration of Marriages
Renunciation of Citizenship
Arrest of Malaysians in the Netherlands
Death of Malaysians in The Netherlands
TRAVEL TO MALAYSIA DURING COVID
Travel to The Netherlands during COVID
Termination of MM2H Visa Abroad
E-Magazine Issue 1
Citizens of the Netherlands do not require a visa to visit Malaysia for business or social reasons. Their stay in Malaysia must not exceed 90 days. Please note that Dutch visitors may need to present a valid passport, proof of sufficient funds and a return airline ticket upon arrival at the first point of entry in Malaysia.
Travelers with a Dutch "Reisdocument" (grey/green cover) will need to apply for a visa.
Click the button below to check whether you require a visa with your nationality.
VISA WITHOUT REFERENCE (VTR)
If you are a citizen from a country that requires a visa before entering into Malaysia, please submit the application to the Embassy at least 7 days prior to your date of departure. You will receive a stamped visa in your passport within 3 working days from the time of submission.
If you are unable to visit the Embassy, you can also apply for an eVisa.
(Please note that the link above is the official eVisa website, there are many 3rd party websites that offer the same service but at a much higher price point.)
There are 2 types of VTR visas:
Single Entry Visa
This is issued to foreign nationals who require a visa to enter Malaysia mainly for social or business visits. It is normally valid for a single entry usage and for a period of three (3) months from the date of issuance. The requirements for a Single Entry Visa are as follows:
A passport with a validity of more than 6 months from the intended date of entry
A valid Dutch residence permit (if applicable)
A return ticket to and from Malaysia or to a third country
Proof of accommodation in Malaysia*
Latest bank statement with a minimum of €800 in your current/savings account
One passport photo
Visa Fee (cash only)
*If you are staying with friends or family in Malaysia, please include a guarantee letter and a copy of their passport and visa or IC.
Multiple Entry Visa
This is issued to foreign nationals who require a visa to enter Malaysia mainly for business or government-to-government matters. It is normally valid for a period within three (3) months to twelve (12) months from the date of issuance. Citizens of India and the People's Republic of China who wish to enter Malaysia for the purpose of a Social Visit are eligible to apply for the Multiple Entry Visa. The validity of the Multiple Entry Visa is one (1) year. Each entry is for 30 days only and the extension of stay is not allowed.
Multiple tickets to and from Malaysia or to a third country
Proof of accommodation in Malaysia
Latest bank statement with a minimum of €800 in your current account
VISA WITH REFERENCE
If you are planning to work, study, volunteer or do your internship in Malaysia you will have to apply for a visa through your company/university. Once your application has been approved you will receive a letter from the Malaysian Immigration Department which will instruct you on how to proceed. If you are being instructed to visit the Embassy of Malaysia in The Hague to obtain a Single Entry Visa with reference, please make an appointment and bring the following documents:
Letter from the Malaysian Immigration Department (eVAL)
Ticket to Malaysia
Single Entry Visa with reference
The Consular Officer may request additional documents and proof. Please note that holders of Malaysian visa are still subject to immigration control at the point of entry and therefore their entry into Malaysia is not guaranteed.
*Yellow Fever Certificate is only necessary if you are holding a passport from the following countries:
Angola, Benin, Bolivia, Brazil, Burkina, Faso, Burundi, Cameroon, Central Africa Republic, Chad, Colombia, Congo, Cote d'Ivoire, Democratic Republic of Congo, Ecuador, Equatorial Guinea, Ethiopia, French Guiana, Gabon, Guyana, Gambia, Ghana, Guinea, Guinea-Bissau, Kenya, Liberia, Mali, Mauritania, Niger, Nigeria, Panama, Peru, Rwanda, Sao Tome and Principe, Senegal, Sierra Leone, Somalia, Sudan, Suriname, Tanzania, Togo, Trinidad & Tobago, Uganda and Venezuela.
This website is meant for Consular Services at the Embassy of Malaysia in The Hague. For more information about the Embassy, please visit: The official website of the Embassy.
Rustenburgweg 2
2517 KE, The Hague
consularthehague@kln.gov.my
Lunch break: 13:00 - 13:30
Consulair Dienstcentrum
Wisma Putra
Jabatan Pendaftaran Negara
Education Malaysia Global Services
Expatriate Service Division
Immigration Department Malaysia
© 2023 Embassy of Malaysia Consular Services